From 1eabe8379cf28089a18255aba5e844fe24fe79e4 Mon Sep 17 00:00:00 2001
From: Igor Vaynberg
Date: Tue, 25 Jun 2019 15:23:14 -0700
Subject: [PATCH] initial commit of select2 v5 wip
---
.gitignore | 1 +
CHANGELOG.md | 321 -
Gruntfile.js | 260 -
LICENSE.md | 29 +-
README.md | 140 +-
bower.json | 13 -
bridge/src/ajax.ts | 50 +
bridge/src/select25.tsx | 277 +
bridge/src/store.ts | 29 +
component.json | 19 -
composer.json | 22 -
control/src/abstract-select.tsx | 361 +
control/src/announce.ts | 49 +
control/src/dictionary.ts | 58 +
control/src/dropdown.tsx | 108 +
control/src/icons.tsx | 28 +
control/src/multi-select.tsx | 475 +
control/src/result-list.tsx | 190 +
control/src/select25.scss | 311 +
control/src/single-select.tsx | 368 +
control/src/style.ts | 31 +
control/src/util.ts | 213 +
.../multi-select.unit.test.tsx.snap | 64 +
control/test/countries.ts | 245 +
control/test/multi-select.unit.test.tsx | 42 +
control/test/preact-util.ts | 36 +
control/test/test1.int.test.ts | 9 +
dev/countries-data.js | 246 +
dev/dist/countries-data.fd391f61.js | 1328 ++
dev/dist/countries-data.fd391f61.js.map | 1 +
dev/dist/index.html | 131 +
dev/dist/index.js | 431 +
dev/dist/index.js.map | 1 +
dev/dist/select25.63904fcd.css | 261 +
dev/dist/select25.63904fcd.css.map | 1 +
dev/dist/select25.63904fcd.js | 4346 +++++
dev/dist/select25.63904fcd.js.map | 1 +
dev/dist/select25.e5b29622.css | 261 +
dev/dist/select25.e5b29622.css.map | 1 +
dev/dist/select25.e5b29622.js | 440 +
dev/dist/select25.e5b29622.js.map | 1 +
dev/index.html | 139 +
dist/css/select2.css | 484 -
dist/css/select2.min.css | 1 -
dist/js/i18n/af.js | 3 -
dist/js/i18n/ar.js | 3 -
dist/js/i18n/az.js | 3 -
dist/js/i18n/bg.js | 3 -
dist/js/i18n/bn.js | 3 -
dist/js/i18n/bs.js | 3 -
dist/js/i18n/ca.js | 3 -
dist/js/i18n/cs.js | 3 -
dist/js/i18n/da.js | 3 -
dist/js/i18n/de.js | 3 -
dist/js/i18n/dsb.js | 3 -
dist/js/i18n/el.js | 3 -
dist/js/i18n/en.js | 3 -
dist/js/i18n/es.js | 3 -
dist/js/i18n/et.js | 3 -
dist/js/i18n/eu.js | 3 -
dist/js/i18n/fa.js | 3 -
dist/js/i18n/fi.js | 3 -
dist/js/i18n/fr.js | 3 -
dist/js/i18n/gl.js | 3 -
dist/js/i18n/he.js | 3 -
dist/js/i18n/hi.js | 3 -
dist/js/i18n/hr.js | 3 -
dist/js/i18n/hsb.js | 3 -
dist/js/i18n/hu.js | 3 -
dist/js/i18n/hy.js | 3 -
dist/js/i18n/id.js | 3 -
dist/js/i18n/is.js | 3 -
dist/js/i18n/it.js | 3 -
dist/js/i18n/ja.js | 3 -
dist/js/i18n/ka.js | 3 -
dist/js/i18n/km.js | 3 -
dist/js/i18n/ko.js | 3 -
dist/js/i18n/lt.js | 3 -
dist/js/i18n/lv.js | 3 -
dist/js/i18n/mk.js | 3 -
dist/js/i18n/ms.js | 3 -
dist/js/i18n/nb.js | 3 -
dist/js/i18n/ne.js | 3 -
dist/js/i18n/nl.js | 3 -
dist/js/i18n/pl.js | 3 -
dist/js/i18n/ps.js | 3 -
dist/js/i18n/pt-BR.js | 3 -
dist/js/i18n/pt.js | 3 -
dist/js/i18n/ro.js | 3 -
dist/js/i18n/ru.js | 3 -
dist/js/i18n/sk.js | 3 -
dist/js/i18n/sl.js | 3 -
dist/js/i18n/sq.js | 3 -
dist/js/i18n/sr-Cyrl.js | 3 -
dist/js/i18n/sr.js | 3 -
dist/js/i18n/sv.js | 3 -
dist/js/i18n/th.js | 3 -
dist/js/i18n/tk.js | 3 -
dist/js/i18n/tr.js | 3 -
dist/js/i18n/uk.js | 3 -
dist/js/i18n/vi.js | 3 -
dist/js/i18n/zh-CN.js | 3 -
dist/js/i18n/zh-TW.js | 3 -
dist/js/select2.full.js | 6597 --------
dist/js/select2.full.min.js | 1 -
dist/js/select2.js | 5885 -------
dist/js/select2.min.js | 1 -
dist/select25.css | 259 +
dist/select25.js | 2049 +++
dist/select25.js.map | 1 +
docs/README.md | 1 -
docs/announcements-4.0.html | 12 -
docs/community.html | 12 -
docs/examples.html | 12 -
docs/index.html | 12 -
docs/options-old.html | 12 -
docs/options.html | 12 -
jest.int.config.js | 4 +
jest.unit.config.js | 6 +
package-lock.json | 13487 ++++++++++++++++
package.json | 136 +-
prettier.config.js | 10 +
rollup.config.js | 19 +
src/js/banner.end.js | 6 -
src/js/banner.start.js | 6 -
src/js/jquery.mousewheel.shim.js | 6 -
src/js/jquery.select2.js | 58 -
src/js/jquery.shim.js | 14 -
src/js/select2/compat/containerCss.js | 56 -
src/js/select2/compat/dropdownCss.js | 56 -
src/js/select2/compat/initSelection.js | 42 -
src/js/select2/compat/inputData.js | 128 -
src/js/select2/compat/matcher.js | 42 -
src/js/select2/compat/query.js | 26 -
src/js/select2/compat/utils.js | 43 -
src/js/select2/core.js | 618 -
src/js/select2/data/ajax.js | 110 -
src/js/select2/data/array.js | 79 -
src/js/select2/data/base.js | 40 -
src/js/select2/data/maximumInputLength.js | 31 -
src/js/select2/data/maximumSelectionLength.js | 31 -
src/js/select2/data/minimumInputLength.js | 30 -
src/js/select2/data/select.js | 285 -
src/js/select2/data/tags.js | 128 -
src/js/select2/data/tokenizer.js | 116 -
src/js/select2/defaults.js | 397 -
src/js/select2/diacritics.js | 850 -
src/js/select2/dropdown.js | 42 -
src/js/select2/dropdown/attachBody.js | 222 -
src/js/select2/dropdown/attachContainer.js | 18 -
src/js/select2/dropdown/closeOnSelect.js | 35 -
src/js/select2/dropdown/hidePlaceholder.js | 42 -
src/js/select2/dropdown/infiniteScroll.js | 89 -
.../dropdown/minimumResultsForSearch.js | 39 -
src/js/select2/dropdown/search.js | 102 -
src/js/select2/dropdown/selectOnClose.js | 50 -
src/js/select2/dropdown/stopPropagation.js | 38 -
src/js/select2/i18n/af.js | 47 -
src/js/select2/i18n/ar.js | 33 -
src/js/select2/i18n/az.js | 30 -
src/js/select2/i18n/bg.js | 50 -
src/js/select2/i18n/bn.js | 45 -
src/js/select2/i18n/bs.js | 58 -
src/js/select2/i18n/ca.js | 55 -
src/js/select2/i18n/cs.js | 64 -
src/js/select2/i18n/da.js | 39 -
src/js/select2/i18n/de.js | 43 -
src/js/select2/i18n/dsb.js | 52 -
src/js/select2/i18n/el.js | 55 -
src/js/select2/i18n/en.js | 47 -
src/js/select2/i18n/es.js | 55 -
src/js/select2/i18n/et.js | 56 -
src/js/select2/i18n/eu.js | 54 -
src/js/select2/i18n/fa.js | 41 -
src/js/select2/i18n/fi.js | 33 -
src/js/select2/i18n/fr.js | 36 -
src/js/select2/i18n/gl.js | 42 -
src/js/select2/i18n/he.js | 59 -
src/js/select2/i18n/hi.js | 42 -
src/js/select2/i18n/hr.js | 47 -
src/js/select2/i18n/hsb.js | 52 -
src/js/select2/i18n/hu.js | 33 -
src/js/select2/i18n/hy.js | 41 -
src/js/select2/i18n/id.js | 33 -
src/js/select2/i18n/is.js | 44 -
src/js/select2/i18n/it.js | 51 -
src/js/select2/i18n/ja.js | 39 -
src/js/select2/i18n/ka.js | 40 -
src/js/select2/i18n/km.js | 39 -
src/js/select2/i18n/ko.js | 39 -
src/js/select2/i18n/lt.js | 55 -
src/js/select2/i18n/lv.js | 54 -
src/js/select2/i18n/mk.js | 50 -
src/js/select2/i18n/ms.js | 33 -
src/js/select2/i18n/nb.js | 33 -
src/js/select2/i18n/ne.js | 47 -
src/js/select2/i18n/nl.js | 46 -
src/js/select2/i18n/pl.js | 48 -
src/js/select2/i18n/ps.js | 48 -
src/js/select2/i18n/pt-BR.js | 49 -
src/js/select2/i18n/pt.js | 43 -
src/js/select2/i18n/ro.js | 49 -
src/js/select2/i18n/ru.js | 61 -
src/js/select2/i18n/sk.js | 62 -
src/js/select2/i18n/sl.js | 57 -
src/js/select2/i18n/sq.js | 48 -
src/js/select2/i18n/sr-Cyrl.js | 58 -
src/js/select2/i18n/sr.js | 58 -
src/js/select2/i18n/sv.js | 40 -
src/js/select2/i18n/th.js | 39 -
src/js/select2/i18n/tk.js | 40 -
src/js/select2/i18n/tr.js | 39 -
src/js/select2/i18n/uk.js | 46 -
src/js/select2/i18n/vi.js | 37 -
src/js/select2/i18n/zh-CN.js | 39 -
src/js/select2/i18n/zh-TW.js | 36 -
src/js/select2/keys.js | 25 -
src/js/select2/options.js | 146 -
src/js/select2/results.js | 530 -
src/js/select2/selection/allowClear.js | 113 -
src/js/select2/selection/base.js | 160 -
src/js/select2/selection/clickMask.js | 29 -
src/js/select2/selection/eventRelay.js | 48 -
src/js/select2/selection/multiple.js | 111 -
src/js/select2/selection/placeholder.js | 49 -
src/js/select2/selection/search.js | 228 -
src/js/select2/selection/single.js | 100 -
src/js/select2/selection/stopPropagation.js | 38 -
src/js/select2/translation.js | 36 -
src/js/select2/utils.js | 338 -
src/js/wrapper.end.js | 12 -
src/js/wrapper.start.js | 38 -
src/scss/_dropdown.scss | 73 -
src/scss/_multiple.scss | 35 -
src/scss/_single.scss | 34 -
src/scss/core.scss | 50 -
src/scss/mixins/_gradients.scss | 13 -
src/scss/theme/classic/_defaults.scss | 34 -
src/scss/theme/classic/_multiple.scss | 90 -
src/scss/theme/classic/_single.scss | 124 -
src/scss/theme/classic/layout.scss | 64 -
src/scss/theme/default/_multiple.scss | 98 -
src/scss/theme/default/_single.scss | 83 -
src/scss/theme/default/layout.scss | 97 -
tests/a11y/search-tests.js | 51 -
tests/a11y/selection-tests.js | 154 -
tests/data/array-tests.js | 329 -
tests/data/base-tests.js | 29 -
tests/data/inputData-tests.js | 158 -
tests/data/maximumInputLength-tests.js | 138 -
tests/data/maximumSelectionLength-tests.js | 202 -
tests/data/minimumInputLength-tests.js | 138 -
tests/data/select-tests.js | 554 -
tests/data/tags-tests.js | 276 -
tests/data/tokenizer-tests.js | 219 -
tests/dropdown/dropdownCss-tests.js | 104 -
tests/dropdown/positioning-tests.js | 177 -
tests/dropdown/selectOnClose-tests.js | 137 -
tests/dropdown/stopPropagation-tests.js | 33 -
tests/helpers.js | 46 -
tests/integration-jq1.html | 21 -
tests/integration-jq2.html | 21 -
tests/integration/dom-changes.js | 257 -
tests/integration/jquery-calls.js | 98 -
tests/integration/select2-methods.js | 139 -
tests/options/ajax-tests.js | 50 -
tests/options/data-tests.js | 44 -
tests/options/deprecated-tests.js | 250 -
tests/options/translation-tests.js | 28 -
tests/options/width-tests.js | 66 -
tests/results/focusing-tests.js | 241 -
tests/selection/allowClear-tests.js | 330 -
tests/selection/containerCss-tests.js | 104 -
tests/selection/multiple-tests.js | 151 -
tests/selection/placeholder-tests.js | 74 -
tests/selection/search-tests.js | 191 -
tests/selection/single-tests.js | 119 -
tests/selection/stopPropagation-tests.js | 33 -
tests/unit-jq1.html | 97 -
tests/unit-jq2.html | 97 -
tests/utils/decorator-tests.js | 189 -
tests/utils/escapeMarkup-tests.js | 36 -
tests/vendor/jquery-1.7.2.js | 9404 -----------
tests/vendor/jquery-2.2.4.js | 9814 -----------
tests/vendor/qunit-1.23.1.css | 305 -
tests/vendor/qunit-1.23.1.js | 4334 -----
tsconfig.json | 16 +
tslint.json | 15 +
288 files changed, 26511 insertions(+), 52666 deletions(-)
delete mode 100644 CHANGELOG.md
delete mode 100644 Gruntfile.js
delete mode 100644 bower.json
create mode 100644 bridge/src/ajax.ts
create mode 100644 bridge/src/select25.tsx
create mode 100644 bridge/src/store.ts
delete mode 100644 component.json
delete mode 100644 composer.json
create mode 100644 control/src/abstract-select.tsx
create mode 100644 control/src/announce.ts
create mode 100644 control/src/dictionary.ts
create mode 100644 control/src/dropdown.tsx
create mode 100644 control/src/icons.tsx
create mode 100644 control/src/multi-select.tsx
create mode 100644 control/src/result-list.tsx
create mode 100644 control/src/select25.scss
create mode 100644 control/src/single-select.tsx
create mode 100644 control/src/style.ts
create mode 100644 control/src/util.ts
create mode 100644 control/test/__snapshots__/multi-select.unit.test.tsx.snap
create mode 100644 control/test/countries.ts
create mode 100644 control/test/multi-select.unit.test.tsx
create mode 100644 control/test/preact-util.ts
create mode 100644 control/test/test1.int.test.ts
create mode 100644 dev/countries-data.js
create mode 100644 dev/dist/countries-data.fd391f61.js
create mode 100644 dev/dist/countries-data.fd391f61.js.map
create mode 100644 dev/dist/index.html
create mode 100644 dev/dist/index.js
create mode 100644 dev/dist/index.js.map
create mode 100644 dev/dist/select25.63904fcd.css
create mode 100644 dev/dist/select25.63904fcd.css.map
create mode 100644 dev/dist/select25.63904fcd.js
create mode 100644 dev/dist/select25.63904fcd.js.map
create mode 100644 dev/dist/select25.e5b29622.css
create mode 100644 dev/dist/select25.e5b29622.css.map
create mode 100644 dev/dist/select25.e5b29622.js
create mode 100644 dev/dist/select25.e5b29622.js.map
create mode 100644 dev/index.html
delete mode 100644 dist/css/select2.css
delete mode 100644 dist/css/select2.min.css
delete mode 100644 dist/js/i18n/af.js
delete mode 100644 dist/js/i18n/ar.js
delete mode 100644 dist/js/i18n/az.js
delete mode 100644 dist/js/i18n/bg.js
delete mode 100644 dist/js/i18n/bn.js
delete mode 100644 dist/js/i18n/bs.js
delete mode 100644 dist/js/i18n/ca.js
delete mode 100644 dist/js/i18n/cs.js
delete mode 100644 dist/js/i18n/da.js
delete mode 100644 dist/js/i18n/de.js
delete mode 100644 dist/js/i18n/dsb.js
delete mode 100644 dist/js/i18n/el.js
delete mode 100644 dist/js/i18n/en.js
delete mode 100644 dist/js/i18n/es.js
delete mode 100644 dist/js/i18n/et.js
delete mode 100644 dist/js/i18n/eu.js
delete mode 100644 dist/js/i18n/fa.js
delete mode 100644 dist/js/i18n/fi.js
delete mode 100644 dist/js/i18n/fr.js
delete mode 100644 dist/js/i18n/gl.js
delete mode 100644 dist/js/i18n/he.js
delete mode 100644 dist/js/i18n/hi.js
delete mode 100644 dist/js/i18n/hr.js
delete mode 100644 dist/js/i18n/hsb.js
delete mode 100644 dist/js/i18n/hu.js
delete mode 100644 dist/js/i18n/hy.js
delete mode 100644 dist/js/i18n/id.js
delete mode 100644 dist/js/i18n/is.js
delete mode 100644 dist/js/i18n/it.js
delete mode 100644 dist/js/i18n/ja.js
delete mode 100644 dist/js/i18n/ka.js
delete mode 100644 dist/js/i18n/km.js
delete mode 100644 dist/js/i18n/ko.js
delete mode 100644 dist/js/i18n/lt.js
delete mode 100644 dist/js/i18n/lv.js
delete mode 100644 dist/js/i18n/mk.js
delete mode 100644 dist/js/i18n/ms.js
delete mode 100644 dist/js/i18n/nb.js
delete mode 100644 dist/js/i18n/ne.js
delete mode 100644 dist/js/i18n/nl.js
delete mode 100644 dist/js/i18n/pl.js
delete mode 100644 dist/js/i18n/ps.js
delete mode 100644 dist/js/i18n/pt-BR.js
delete mode 100644 dist/js/i18n/pt.js
delete mode 100644 dist/js/i18n/ro.js
delete mode 100644 dist/js/i18n/ru.js
delete mode 100644 dist/js/i18n/sk.js
delete mode 100644 dist/js/i18n/sl.js
delete mode 100644 dist/js/i18n/sq.js
delete mode 100644 dist/js/i18n/sr-Cyrl.js
delete mode 100644 dist/js/i18n/sr.js
delete mode 100644 dist/js/i18n/sv.js
delete mode 100644 dist/js/i18n/th.js
delete mode 100644 dist/js/i18n/tk.js
delete mode 100644 dist/js/i18n/tr.js
delete mode 100644 dist/js/i18n/uk.js
delete mode 100644 dist/js/i18n/vi.js
delete mode 100644 dist/js/i18n/zh-CN.js
delete mode 100644 dist/js/i18n/zh-TW.js
delete mode 100644 dist/js/select2.full.js
delete mode 100644 dist/js/select2.full.min.js
delete mode 100644 dist/js/select2.js
delete mode 100644 dist/js/select2.min.js
create mode 100644 dist/select25.css
create mode 100644 dist/select25.js
create mode 100644 dist/select25.js.map
delete mode 100644 docs/README.md
delete mode 100644 docs/announcements-4.0.html
delete mode 100644 docs/community.html
delete mode 100644 docs/examples.html
delete mode 100644 docs/index.html
delete mode 100644 docs/options-old.html
delete mode 100644 docs/options.html
create mode 100644 jest.int.config.js
create mode 100644 jest.unit.config.js
create mode 100644 package-lock.json
create mode 100644 prettier.config.js
create mode 100644 rollup.config.js
delete mode 100644 src/js/banner.end.js
delete mode 100644 src/js/banner.start.js
delete mode 100644 src/js/jquery.mousewheel.shim.js
delete mode 100644 src/js/jquery.select2.js
delete mode 100644 src/js/jquery.shim.js
delete mode 100644 src/js/select2/compat/containerCss.js
delete mode 100644 src/js/select2/compat/dropdownCss.js
delete mode 100644 src/js/select2/compat/initSelection.js
delete mode 100644 src/js/select2/compat/inputData.js
delete mode 100644 src/js/select2/compat/matcher.js
delete mode 100644 src/js/select2/compat/query.js
delete mode 100644 src/js/select2/compat/utils.js
delete mode 100644 src/js/select2/core.js
delete mode 100644 src/js/select2/data/ajax.js
delete mode 100644 src/js/select2/data/array.js
delete mode 100644 src/js/select2/data/base.js
delete mode 100644 src/js/select2/data/maximumInputLength.js
delete mode 100644 src/js/select2/data/maximumSelectionLength.js
delete mode 100644 src/js/select2/data/minimumInputLength.js
delete mode 100644 src/js/select2/data/select.js
delete mode 100644 src/js/select2/data/tags.js
delete mode 100644 src/js/select2/data/tokenizer.js
delete mode 100644 src/js/select2/defaults.js
delete mode 100644 src/js/select2/diacritics.js
delete mode 100644 src/js/select2/dropdown.js
delete mode 100644 src/js/select2/dropdown/attachBody.js
delete mode 100644 src/js/select2/dropdown/attachContainer.js
delete mode 100644 src/js/select2/dropdown/closeOnSelect.js
delete mode 100644 src/js/select2/dropdown/hidePlaceholder.js
delete mode 100644 src/js/select2/dropdown/infiniteScroll.js
delete mode 100644 src/js/select2/dropdown/minimumResultsForSearch.js
delete mode 100644 src/js/select2/dropdown/search.js
delete mode 100644 src/js/select2/dropdown/selectOnClose.js
delete mode 100644 src/js/select2/dropdown/stopPropagation.js
delete mode 100644 src/js/select2/i18n/af.js
delete mode 100644 src/js/select2/i18n/ar.js
delete mode 100644 src/js/select2/i18n/az.js
delete mode 100644 src/js/select2/i18n/bg.js
delete mode 100644 src/js/select2/i18n/bn.js
delete mode 100644 src/js/select2/i18n/bs.js
delete mode 100644 src/js/select2/i18n/ca.js
delete mode 100644 src/js/select2/i18n/cs.js
delete mode 100644 src/js/select2/i18n/da.js
delete mode 100644 src/js/select2/i18n/de.js
delete mode 100644 src/js/select2/i18n/dsb.js
delete mode 100644 src/js/select2/i18n/el.js
delete mode 100644 src/js/select2/i18n/en.js
delete mode 100644 src/js/select2/i18n/es.js
delete mode 100644 src/js/select2/i18n/et.js
delete mode 100644 src/js/select2/i18n/eu.js
delete mode 100644 src/js/select2/i18n/fa.js
delete mode 100644 src/js/select2/i18n/fi.js
delete mode 100644 src/js/select2/i18n/fr.js
delete mode 100644 src/js/select2/i18n/gl.js
delete mode 100644 src/js/select2/i18n/he.js
delete mode 100644 src/js/select2/i18n/hi.js
delete mode 100644 src/js/select2/i18n/hr.js
delete mode 100644 src/js/select2/i18n/hsb.js
delete mode 100644 src/js/select2/i18n/hu.js
delete mode 100644 src/js/select2/i18n/hy.js
delete mode 100644 src/js/select2/i18n/id.js
delete mode 100644 src/js/select2/i18n/is.js
delete mode 100644 src/js/select2/i18n/it.js
delete mode 100644 src/js/select2/i18n/ja.js
delete mode 100644 src/js/select2/i18n/ka.js
delete mode 100644 src/js/select2/i18n/km.js
delete mode 100644 src/js/select2/i18n/ko.js
delete mode 100644 src/js/select2/i18n/lt.js
delete mode 100644 src/js/select2/i18n/lv.js
delete mode 100644 src/js/select2/i18n/mk.js
delete mode 100644 src/js/select2/i18n/ms.js
delete mode 100644 src/js/select2/i18n/nb.js
delete mode 100644 src/js/select2/i18n/ne.js
delete mode 100644 src/js/select2/i18n/nl.js
delete mode 100644 src/js/select2/i18n/pl.js
delete mode 100644 src/js/select2/i18n/ps.js
delete mode 100644 src/js/select2/i18n/pt-BR.js
delete mode 100644 src/js/select2/i18n/pt.js
delete mode 100644 src/js/select2/i18n/ro.js
delete mode 100644 src/js/select2/i18n/ru.js
delete mode 100644 src/js/select2/i18n/sk.js
delete mode 100644 src/js/select2/i18n/sl.js
delete mode 100644 src/js/select2/i18n/sq.js
delete mode 100644 src/js/select2/i18n/sr-Cyrl.js
delete mode 100644 src/js/select2/i18n/sr.js
delete mode 100644 src/js/select2/i18n/sv.js
delete mode 100644 src/js/select2/i18n/th.js
delete mode 100644 src/js/select2/i18n/tk.js
delete mode 100644 src/js/select2/i18n/tr.js
delete mode 100644 src/js/select2/i18n/uk.js
delete mode 100644 src/js/select2/i18n/vi.js
delete mode 100644 src/js/select2/i18n/zh-CN.js
delete mode 100644 src/js/select2/i18n/zh-TW.js
delete mode 100644 src/js/select2/keys.js
delete mode 100644 src/js/select2/options.js
delete mode 100644 src/js/select2/results.js
delete mode 100644 src/js/select2/selection/allowClear.js
delete mode 100644 src/js/select2/selection/base.js
delete mode 100644 src/js/select2/selection/clickMask.js
delete mode 100644 src/js/select2/selection/eventRelay.js
delete mode 100644 src/js/select2/selection/multiple.js
delete mode 100644 src/js/select2/selection/placeholder.js
delete mode 100644 src/js/select2/selection/search.js
delete mode 100644 src/js/select2/selection/single.js
delete mode 100644 src/js/select2/selection/stopPropagation.js
delete mode 100644 src/js/select2/translation.js
delete mode 100644 src/js/select2/utils.js
delete mode 100644 src/js/wrapper.end.js
delete mode 100644 src/js/wrapper.start.js
delete mode 100644 src/scss/_dropdown.scss
delete mode 100644 src/scss/_multiple.scss
delete mode 100644 src/scss/_single.scss
delete mode 100644 src/scss/core.scss
delete mode 100644 src/scss/mixins/_gradients.scss
delete mode 100644 src/scss/theme/classic/_defaults.scss
delete mode 100644 src/scss/theme/classic/_multiple.scss
delete mode 100644 src/scss/theme/classic/_single.scss
delete mode 100644 src/scss/theme/classic/layout.scss
delete mode 100644 src/scss/theme/default/_multiple.scss
delete mode 100644 src/scss/theme/default/_single.scss
delete mode 100644 src/scss/theme/default/layout.scss
delete mode 100644 tests/a11y/search-tests.js
delete mode 100644 tests/a11y/selection-tests.js
delete mode 100644 tests/data/array-tests.js
delete mode 100644 tests/data/base-tests.js
delete mode 100644 tests/data/inputData-tests.js
delete mode 100644 tests/data/maximumInputLength-tests.js
delete mode 100644 tests/data/maximumSelectionLength-tests.js
delete mode 100644 tests/data/minimumInputLength-tests.js
delete mode 100644 tests/data/select-tests.js
delete mode 100644 tests/data/tags-tests.js
delete mode 100644 tests/data/tokenizer-tests.js
delete mode 100644 tests/dropdown/dropdownCss-tests.js
delete mode 100644 tests/dropdown/positioning-tests.js
delete mode 100644 tests/dropdown/selectOnClose-tests.js
delete mode 100644 tests/dropdown/stopPropagation-tests.js
delete mode 100644 tests/helpers.js
delete mode 100644 tests/integration-jq1.html
delete mode 100644 tests/integration-jq2.html
delete mode 100644 tests/integration/dom-changes.js
delete mode 100644 tests/integration/jquery-calls.js
delete mode 100644 tests/integration/select2-methods.js
delete mode 100644 tests/options/ajax-tests.js
delete mode 100644 tests/options/data-tests.js
delete mode 100644 tests/options/deprecated-tests.js
delete mode 100644 tests/options/translation-tests.js
delete mode 100644 tests/options/width-tests.js
delete mode 100644 tests/results/focusing-tests.js
delete mode 100644 tests/selection/allowClear-tests.js
delete mode 100644 tests/selection/containerCss-tests.js
delete mode 100644 tests/selection/multiple-tests.js
delete mode 100644 tests/selection/placeholder-tests.js
delete mode 100644 tests/selection/search-tests.js
delete mode 100644 tests/selection/single-tests.js
delete mode 100644 tests/selection/stopPropagation-tests.js
delete mode 100644 tests/unit-jq1.html
delete mode 100644 tests/unit-jq2.html
delete mode 100644 tests/utils/decorator-tests.js
delete mode 100644 tests/utils/escapeMarkup-tests.js
delete mode 100644 tests/vendor/jquery-1.7.2.js
delete mode 100644 tests/vendor/jquery-2.2.4.js
delete mode 100644 tests/vendor/qunit-1.23.1.css
delete mode 100644 tests/vendor/qunit-1.23.1.js
create mode 100644 tsconfig.json
create mode 100644 tslint.json
diff --git a/.gitignore b/.gitignore
index aa970da6..2f0efe8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.idea
node_modules
dist/js/i18n/build.txt
.sass-cache
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 71f68fb0..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,321 +0,0 @@
-# Change Log
-
-## 4.0.7
-
-### New features/improvements
-- Do not close on select if Ctrl or Meta (Cmd) keys being held (#5222)
-
-### Bug fixes
-- Fixed issue where single select boxes would automatically reopen when they were closed (#5490, #5492)
-
-### Miscellaneous
-- Move almost and jquery-mousewheel to devDependencies (#5489)
-
-## 4.0.6
-
-### New features/improvements
-- Add style property to package.json (#5019)
-- Implement `clear` and `clearing` events (#5058)
-- Add `scrollAfterSelect` option (#5150)
-- Add missing diacritics (#4118, #4337, #5464)
-
-### Bug fixes
-- Fix up arrow error when there are no options in dropdown (#5127)
-- Add `;` before beginning of factory wrapper (#5089)
-- Fix IE11 issue with select losing focus after selecting an item (#4860)
-- Clear tooltip from `select2-selection__rendered` when selection is cleared (#4640, #4746)
-- Fix keyboard not closing when closing dropdown on iOS 10 (#4680)
-- User-defined types not normalized properly when passed in as data (#4632)
-- Perform deep merge for `Defaults.set()` (#4364)
-- Fix "the results could not be loaded" displaying during AJAX request (#4356)
-- Cache objects in `Utils.__cache` instead of using `$.data` (#4346, #5486)
-- Removing the double event binding registration of `selection:update` (#4306)
-
-#### Accessibility
-- Improve `.select2-hidden-accessible` (#4908)
-- Add role and aria-readonly attributes to single selection dropdown value (#4881)
-
-### Translations
-- Add Turkmen translations (`tk`) (#5125)
-- Fix error in French translations (#5122)
-- Add Albanian translation (`sq`) (#5199)
-- Add Georgian translation (`ka`) (#5179)
-- Add Nepali translation (`ne`) (#5295)
-- Add Bangla translation (`bn`) (#5248)
-- Add `removeAllItems` translation for clear "x" title (#5291)
-- Fix wording in Vietnamese translations (#5387)
-- Fix error in Russian translation (#5401)
-
-### Miscellaneous
-- Remove duplicate CSS selector in classic theme (#5115)
-
-## 4.0.5
-
-### Bug fixes
-- Replace `autocapitalize=off` with `autocapitalize=none` (#4994)
-
-### Translations
-- Vietnamese: remove an unnecessary quote mark (#5059)
-- Czech: Add missing commas and periods (#5052)
-- Spanish: Update the 'errorLoading' message (#5032)
-- Fix typo in Romanian (#5005)
-- Improve French translation (#4988)
-- Add Pashto translation (`ps`) (#4960)
-- Add translations for lower and upper Sorbian (`dsb` and `hsb`) (#4949)
-- Updates to Slovak (#4915)
-- Fixed Norwegian `inputTooShort` message (#4817, 4896)
-- Add Afrikaans translation (`af`) (#4850)
-- Add Bosnian translation (`bs`) (#4504)
-
-## 4.0.4
-
-### New features / Improvements
-- Make tag matching case insensitive [https://github.com/select2/select2/commit/cb9a90457867ffb14c7b1550bb67e872e0a5c2dd, https://github.com/select2/select2/commit/1167bace78cd3b1a918c1b04f3bac54674eab62b]
-- Support selecting options with blank or `0` option values [https://github.com/select2/select2/commit/16b4840c0e2df0461998e3b464ee0a546173950d, https://github.com/select2/select2/commit/0358ee528765157234643d289bce6b8ca5889c72]
-
-### Bug fixes
-- Fix issue with entire form losing focus when tabbing away from a Select2 control (#4419)
-- Fix UMD support for CommonJS [https://github.com/select2/select2/commit/45a877345482956021161203ac789c25f40a7d5e]
-
-### Documentation
-- Github Pages documentation has been deprecated, replaced with https://github.com/select2/docs
-- Add django-autocomplete-light to integrations [https://github.com/select2/select2/pull/4597]
-- Correct typo in options page [https://github.com/select2/select2/pull/4389]
-- Correct misspelling in AJAX query parameters example [https://github.com/select2/select2/pull/4435]
-- "highlight" should be "focus" in focus example [https://github.com/select2/select2/pull/4441]
-- Correct misspelling in `
+`;
diff --git a/control/test/countries.ts b/control/test/countries.ts
new file mode 100644
index 00000000..e88387a7
--- /dev/null
+++ b/control/test/countries.ts
@@ -0,0 +1,245 @@
+export const countries = [
+ { name: 'United States', code: 'US' },
+ { name: 'Mexico', code: 'MX' },
+ { name: 'Afghanistan', code: 'AF' },
+ { name: 'Aland Islands', code: 'AX' },
+ { name: 'Albania', code: 'AL' },
+ { name: 'Algeria', code: 'DZ' },
+ { name: 'American Samoa', code: 'AS' },
+ { name: 'Andorra', code: 'AD' },
+ { name: 'Angola', code: 'AO' },
+ { name: 'Anguilla', code: 'AI' },
+ { name: 'Antarctica', code: 'AQ' },
+ { name: 'Antigua and Barbuda', code: 'AG' },
+ { name: 'Argentina', code: 'AR' },
+ { name: 'Armenia', code: 'AM' },
+ { name: 'Aruba', code: 'AW' },
+ { name: 'Australia', code: 'AU' },
+ { name: 'Austria', code: 'AT' },
+ { name: 'Azerbaijan', code: 'AZ' },
+ { name: 'Bahamas', code: 'BS' },
+ { name: 'Bahrain', code: 'BH' },
+ { name: 'Bangladesh', code: 'BD' },
+ { name: 'Barbados', code: 'BB' },
+ { name: 'Belarus', code: 'BY' },
+ { name: 'Belgium', code: 'BE' },
+ { name: 'Belize', code: 'BZ' },
+ { name: 'Benin', code: 'BJ' },
+ { name: 'Bermuda', code: 'BM' },
+ { name: 'Bhutan', code: 'BT' },
+ { name: 'Bolivia', code: 'BO' },
+ { name: 'Bosnia and Herzegovina', code: 'BA' },
+ { name: 'Botswana', code: 'BW' },
+ { name: 'Bouvet Island', code: 'BV' },
+ { name: 'Brazil', code: 'BR' },
+ { name: 'British Indian Ocean Territory', code: 'IO' },
+ { name: 'Brunei Darussalam', code: 'BN' },
+ { name: 'Bulgaria', code: 'BG' },
+ { name: 'Burkina Faso', code: 'BF' },
+ { name: 'Burundi', code: 'BI' },
+ { name: 'Cambodia', code: 'KH' },
+ { name: 'Cameroon', code: 'CM' },
+ { name: 'Canada', code: 'CA' },
+ { name: 'Cape Verde', code: 'CV' },
+ { name: 'Cayman Islands', code: 'KY' },
+ { name: 'Central African Republic', code: 'CF' },
+ { name: 'Chad', code: 'TD' },
+ { name: 'Chile', code: 'CL' },
+ { name: 'China', code: 'CN' },
+ { name: 'Christmas Island', code: 'CX' },
+ { name: 'Cocos (Keeling) Islands', code: 'CC' },
+ { name: 'Colombia', code: 'CO' },
+ { name: 'Comoros', code: 'KM' },
+ { name: 'Congo', code: 'CG' },
+ { name: 'Congo, The Democratic Republic of the', code: 'CD' },
+ { name: 'Cook Islands', code: 'CK' },
+ { name: 'Costa Rica', code: 'CR' },
+ { name: "Cote D'Ivoire", code: 'CI' },
+ { name: 'Croatia', code: 'HR' },
+ { name: 'Cuba', code: 'CU' },
+ { name: 'Cyprus', code: 'CY' },
+ { name: 'Czech Republic', code: 'CZ' },
+ { name: 'Denmark', code: 'DK' },
+ { name: 'Djibouti', code: 'DJ' },
+ { name: 'Dominica', code: 'DM' },
+ { name: 'Dominican Republic', code: 'DO' },
+ { name: 'Ecuador', code: 'EC' },
+ { name: 'Egypt', code: 'EG' },
+ { name: 'El Salvador', code: 'SV' },
+ { name: 'Equatorial Guinea', code: 'GQ' },
+ { name: 'Eritrea', code: 'ER' },
+ { name: 'Estonia', code: 'EE' },
+ { name: 'Ethiopia', code: 'ET' },
+ { name: 'Falkland Islands (Malvinas)', code: 'FK' },
+ { name: 'Faroe Islands', code: 'FO' },
+ { name: 'Fiji', code: 'FJ' },
+ { name: 'Finland', code: 'FI' },
+ { name: 'France', code: 'FR' },
+ { name: 'French Guiana', code: 'GF' },
+ { name: 'French Polynesia', code: 'PF' },
+ { name: 'French Southern Territories', code: 'TF' },
+ { name: 'Gabon', code: 'GA' },
+ { name: 'Gambia', code: 'GM' },
+ { name: 'Georgia', code: 'GE' },
+ { name: 'Germany', code: 'DE' },
+ { name: 'Ghana', code: 'GH' },
+ { name: 'Gibraltar', code: 'GI' },
+ { name: 'Greece', code: 'GR' },
+ { name: 'Greenland', code: 'GL' },
+ { name: 'Grenada', code: 'GD' },
+ { name: 'Guadeloupe', code: 'GP' },
+ { name: 'Guam', code: 'GU' },
+ { name: 'Guatemala', code: 'GT' },
+ { name: 'Guernsey', code: 'GG' },
+ { name: 'Guinea', code: 'GN' },
+ { name: 'Guinea-Bissau', code: 'GW' },
+ { name: 'Guyana', code: 'GY' },
+ { name: 'Haiti', code: 'HT' },
+ { name: 'Heard Island and Mcdonald Islands', code: 'HM' },
+ { name: 'Holy See (Vatican City State)', code: 'VA' },
+ { name: 'Honduras', code: 'HN' },
+ { name: 'Hong Kong', code: 'HK' },
+ { name: 'Hungary', code: 'HU' },
+ { name: 'Iceland', code: 'IS' },
+ { name: 'India', code: 'IN' },
+ { name: 'Indonesia', code: 'ID' },
+ { name: 'Iran, Islamic Republic Of', code: 'IR' },
+ { name: 'Iraq', code: 'IQ' },
+ { name: 'Ireland', code: 'IE' },
+ { name: 'Isle of Man', code: 'IM' },
+ { name: 'Israel', code: 'IL' },
+ { name: 'Italy', code: 'IT' },
+ { name: 'Jamaica', code: 'JM' },
+ { name: 'Japan', code: 'JP' },
+ { name: 'Jersey', code: 'JE' },
+ { name: 'Jordan', code: 'JO' },
+ { name: 'Kazakhstan', code: 'KZ' },
+ { name: 'Kenya', code: 'KE' },
+ { name: 'Kiribati', code: 'KI' },
+ { name: "Korea, Democratic People'S Republic of", code: 'KP' },
+ { name: 'Korea, Republic of', code: 'KR' },
+ { name: 'Kuwait', code: 'KW' },
+ { name: 'Kyrgyzstan', code: 'KG' },
+ { name: "Lao People'S Democratic Republic", code: 'LA' },
+ { name: 'Latvia', code: 'LV' },
+ { name: 'Lebanon', code: 'LB' },
+ { name: 'Lesotho', code: 'LS' },
+ { name: 'Liberia', code: 'LR' },
+ { name: 'Libyan Arab Jamahiriya', code: 'LY' },
+ { name: 'Liechtenstein', code: 'LI' },
+ { name: 'Lithuania', code: 'LT' },
+ { name: 'Luxembourg', code: 'LU' },
+ { name: 'Macao', code: 'MO' },
+ { name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK' },
+ { name: 'Madagascar', code: 'MG' },
+ { name: 'Malawi', code: 'MW' },
+ { name: 'Malaysia', code: 'MY' },
+ { name: 'Maldives', code: 'MV' },
+ { name: 'Mali', code: 'ML' },
+ { name: 'Malta', code: 'MT' },
+ { name: 'Marshall Islands', code: 'MH' },
+ { name: 'Martinique', code: 'MQ' },
+ { name: 'Mauritania', code: 'MR' },
+ { name: 'Mauritius', code: 'MU' },
+ { name: 'Mayotte', code: 'YT' },
+ { name: 'Micronesia, Federated States of', code: 'FM' },
+ { name: 'Moldova, Republic of', code: 'MD' },
+ { name: 'Monaco', code: 'MC' },
+ { name: 'Mongolia', code: 'MN' },
+ { name: 'Montserrat', code: 'MS' },
+ { name: 'Morocco', code: 'MA' },
+ { name: 'Mozambique', code: 'MZ' },
+ { name: 'Myanmar', code: 'MM' },
+ { name: 'Namibia', code: 'NA' },
+ { name: 'Nauru', code: 'NR' },
+ { name: 'Nepal', code: 'NP' },
+ { name: 'Netherlands', code: 'NL' },
+ { name: 'Netherlands Antilles', code: 'AN' },
+ { name: 'New Caledonia', code: 'NC' },
+ { name: 'New Zealand', code: 'NZ' },
+ { name: 'Nicaragua', code: 'NI' },
+ { name: 'Niger', code: 'NE' },
+ { name: 'Nigeria', code: 'NG' },
+ { name: 'Niue', code: 'NU' },
+ { name: 'Norfolk Island', code: 'NF' },
+ { name: 'Northern Mariana Islands', code: 'MP' },
+ { name: 'Norway', code: 'NO' },
+ { name: 'Oman', code: 'OM' },
+ { name: 'Pakistan', code: 'PK' },
+ { name: 'Palau', code: 'PW' },
+ { name: 'Palestinian Territory, Occupied', code: 'PS' },
+ { name: 'Panama', code: 'PA' },
+ { name: 'Papua New Guinea', code: 'PG' },
+ { name: 'Paraguay', code: 'PY' },
+ { name: 'Peru', code: 'PE' },
+ { name: 'Philippines', code: 'PH' },
+ { name: 'Pitcairn', code: 'PN' },
+ { name: 'Poland', code: 'PL' },
+ { name: 'Portugal', code: 'PT' },
+ { name: 'Puerto Rico', code: 'PR' },
+ { name: 'Qatar', code: 'QA' },
+ { name: 'Reunion', code: 'RE' },
+ { name: 'Romania', code: 'RO' },
+ { name: 'Russian Federation', code: 'RU' },
+ { name: 'RWANDA', code: 'RW' },
+ { name: 'Saint Helena', code: 'SH' },
+ { name: 'Saint Kitts and Nevis', code: 'KN' },
+ { name: 'Saint Lucia', code: 'LC' },
+ { name: 'Saint Pierre and Miquelon', code: 'PM' },
+ { name: 'Saint Vincent and the Grenadines', code: 'VC' },
+ { name: 'Samoa', code: 'WS' },
+ { name: 'San Marino', code: 'SM' },
+ { name: 'Sao Tome and Principe', code: 'ST' },
+ { name: 'Saudi Arabia', code: 'SA' },
+ { name: 'Senegal', code: 'SN' },
+ { name: 'Serbia and Montenegro', code: 'CS' },
+ { name: 'Seychelles', code: 'SC' },
+ { name: 'Sierra Leone', code: 'SL' },
+ { name: 'Singapore', code: 'SG' },
+ { name: 'Slovakia', code: 'SK' },
+ { name: 'Slovenia', code: 'SI' },
+ { name: 'Solomon Islands', code: 'SB' },
+ { name: 'Somalia', code: 'SO' },
+ { name: 'South Africa', code: 'ZA' },
+ { name: 'South Georgia and the South Sandwich Islands', code: 'GS' },
+ { name: 'Spain', code: 'ES' },
+ { name: 'Sri Lanka', code: 'LK' },
+ { name: 'Sudan', code: 'SD' },
+ { name: 'Suriname', code: 'SR' },
+ { name: 'Svalbard and Jan Mayen', code: 'SJ' },
+ { name: 'Swaziland', code: 'SZ' },
+ { name: 'Sweden', code: 'SE' },
+ { name: 'Switzerland', code: 'CH' },
+ { name: 'Syrian Arab Republic', code: 'SY' },
+ { name: 'Taiwan, Province of China', code: 'TW' },
+ { name: 'Tajikistan', code: 'TJ' },
+ { name: 'Tanzania, United Republic of', code: 'TZ' },
+ { name: 'Thailand', code: 'TH' },
+ { name: 'Timor-Leste', code: 'TL' },
+ { name: 'Togo', code: 'TG' },
+ { name: 'Tokelau', code: 'TK' },
+ { name: 'Tonga', code: 'TO' },
+ { name: 'Trinidad and Tobago', code: 'TT' },
+ { name: 'Tunisia', code: 'TN' },
+ { name: 'Turkey', code: 'TR' },
+ { name: 'Turkmenistan', code: 'TM' },
+ { name: 'Turks and Caicos Islands', code: 'TC' },
+ { name: 'Tuvalu', code: 'TV' },
+ { name: 'Uganda', code: 'UG' },
+ { name: 'Ukraine', code: 'UA' },
+ { name: 'United Arab Emirates', code: 'AE' },
+ { name: 'United Kingdom', code: 'GB' },
+ { name: 'United States Minor Outlying Islands', code: 'UM' },
+ { name: 'Uruguay', code: 'UY' },
+ { name: 'Uzbekistan', code: 'UZ' },
+ { name: 'Vanuatu', code: 'VU' },
+ { name: 'Venezuela', code: 'VE' },
+ { name: 'Viet Nam', code: 'VN' },
+ { name: 'Virgin Islands, British', code: 'VG' },
+ { name: 'Virgin Islands, U.S.', code: 'VI' },
+ { name: 'Wallis and Futuna', code: 'WF' },
+ { name: 'Western Sahara', code: 'EH' },
+ { name: 'Yemen', code: 'YE' },
+ { name: 'Zambia', code: 'ZM' },
+ { name: 'Zimbabwe', code: 'ZW' }
+];
diff --git a/control/test/multi-select.unit.test.tsx b/control/test/multi-select.unit.test.tsx
new file mode 100644
index 00000000..03b65352
--- /dev/null
+++ b/control/test/multi-select.unit.test.tsx
@@ -0,0 +1,42 @@
+import { h } from 'preact';
+import { MultiSelect } from '../src/multi-select';
+import { countries } from './countries';
+import { query, shallow } from './preact-util';
+
+const forceImportOfH = h;
+
+describe('MultiSelect', () => {
+ it('renders with empty values', () => {
+ const tree = shallow(
+ {
+ /* noop */
+ }}
+ />
+ );
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('renders with values', () => {
+ const tree = shallow(
+ {
+ /* noop */
+ }}
+ />
+ );
+ expect(tree).toMatchSnapshot();
+ });
+});
diff --git a/control/test/preact-util.ts b/control/test/preact-util.ts
new file mode 100644
index 00000000..514090c2
--- /dev/null
+++ b/control/test/preact-util.ts
@@ -0,0 +1,36 @@
+import { VNode } from 'preact';
+import { render as renderToString, shallowRender as shallowRenderToString } from 'preact-render-to-string';
+import * as pretty from 'pretty';
+import { QueryFunction } from '../src/abstract-select';
+import { countries } from './countries';
+
+export function shallow(component: VNode): string {
+ return pretty(shallowRenderToString(component), { ocd: true });
+}
+export function deep(component: VNode): string {
+ return pretty(renderToString(component), { ocd: true });
+}
+
+export const query: QueryFunction = (search, page, token) =>
+ new Promise((resolve, reject) => {
+ const results: any[] = [];
+ let count = 0;
+ const limit = 10;
+ const offset = page * limit;
+ for (const country of countries) {
+ if (country.name.toLowerCase().indexOf(search.toLowerCase()) >= 0) {
+ if (count >= offset) {
+ results.push(country);
+ }
+ count++;
+ if (count >= offset + limit) {
+ break;
+ }
+ }
+ }
+ resolve({
+ more: results.length >= limit,
+ token,
+ values: results
+ });
+ });
diff --git a/control/test/test1.int.test.ts b/control/test/test1.int.test.ts
new file mode 100644
index 00000000..a12b562c
--- /dev/null
+++ b/control/test/test1.int.test.ts
@@ -0,0 +1,9 @@
+describe('Google', () => {
+ beforeAll(async () => {
+ await page.goto('https://google.com');
+ });
+
+ it('should be titled "Google"', async () => {
+ await expect(page.title()).resolves.toMatch('Google');
+ });
+});
diff --git a/dev/countries-data.js b/dev/countries-data.js
new file mode 100644
index 00000000..528ed16c
--- /dev/null
+++ b/dev/countries-data.js
@@ -0,0 +1,246 @@
+window.select2countries = [
+ { name: 'United States', code: 'US' },
+ { name: 'Mexico', code: 'MX' },
+
+ { name: 'Afghanistan', code: 'AF' },
+ { name: 'Aland Islands', code: 'AX' },
+ { name: 'Albania', code: 'AL' },
+ { name: 'Algeria', code: 'DZ' },
+ { name: 'American Samoa', code: 'AS' },
+ { name: 'Andorra', code: 'AD' },
+ { name: 'Angola', code: 'AO' },
+ { name: 'Anguilla', code: 'AI' },
+ { name: 'Antarctica', code: 'AQ' },
+ { name: 'Antigua and Barbuda', code: 'AG' },
+ { name: 'Argentina', code: 'AR' },
+ { name: 'Armenia', code: 'AM' },
+ { name: 'Aruba', code: 'AW' },
+ { name: 'Australia', code: 'AU' },
+ { name: 'Austria', code: 'AT' },
+ { name: 'Azerbaijan', code: 'AZ' },
+ { name: 'Bahamas', code: 'BS' },
+ { name: 'Bahrain', code: 'BH' },
+ { name: 'Bangladesh', code: 'BD' },
+ { name: 'Barbados', code: 'BB' },
+ { name: 'Belarus', code: 'BY' },
+ { name: 'Belgium', code: 'BE' },
+ { name: 'Belize', code: 'BZ' },
+ { name: 'Benin', code: 'BJ' },
+ { name: 'Bermuda', code: 'BM' },
+ { name: 'Bhutan', code: 'BT' },
+ { name: 'Bolivia', code: 'BO' },
+ { name: 'Bosnia and Herzegovina', code: 'BA' },
+ { name: 'Botswana', code: 'BW' },
+ { name: 'Bouvet Island', code: 'BV' },
+ { name: 'Brazil', code: 'BR' },
+ { name: 'British Indian Ocean Territory', code: 'IO' },
+ { name: 'Brunei Darussalam', code: 'BN' },
+ { name: 'Bulgaria', code: 'BG' },
+ { name: 'Burkina Faso', code: 'BF' },
+ { name: 'Burundi', code: 'BI' },
+ { name: 'Cambodia', code: 'KH' },
+ { name: 'Cameroon', code: 'CM' },
+ { name: 'Canada', code: 'CA' },
+ { name: 'Cape Verde', code: 'CV' },
+ { name: 'Cayman Islands', code: 'KY' },
+ { name: 'Central African Republic', code: 'CF' },
+ { name: 'Chad', code: 'TD' },
+ { name: 'Chile', code: 'CL' },
+ { name: 'China', code: 'CN' },
+ { name: 'Christmas Island', code: 'CX' },
+ { name: 'Cocos (Keeling) Islands', code: 'CC' },
+ { name: 'Colombia', code: 'CO' },
+ { name: 'Comoros', code: 'KM' },
+ { name: 'Congo', code: 'CG' },
+ { name: 'Congo, The Democratic Republic of the', code: 'CD' },
+ { name: 'Cook Islands', code: 'CK' },
+ { name: 'Costa Rica', code: 'CR' },
+ { name: "Cote D'Ivoire", code: 'CI' },
+ { name: 'Croatia', code: 'HR' },
+ { name: 'Cuba', code: 'CU' },
+ { name: 'Cyprus', code: 'CY' },
+ { name: 'Czech Republic', code: 'CZ' },
+ { name: 'Denmark', code: 'DK' },
+ { name: 'Djibouti', code: 'DJ' },
+ { name: 'Dominica', code: 'DM' },
+ { name: 'Dominican Republic', code: 'DO' },
+ { name: 'Ecuador', code: 'EC' },
+ { name: 'Egypt', code: 'EG' },
+ { name: 'El Salvador', code: 'SV' },
+ { name: 'Equatorial Guinea', code: 'GQ' },
+ { name: 'Eritrea', code: 'ER' },
+ { name: 'Estonia', code: 'EE' },
+ { name: 'Ethiopia', code: 'ET' },
+ { name: 'Falkland Islands (Malvinas)', code: 'FK' },
+ { name: 'Faroe Islands', code: 'FO' },
+ { name: 'Fiji', code: 'FJ' },
+ { name: 'Finland', code: 'FI' },
+ { name: 'France', code: 'FR' },
+ { name: 'French Guiana', code: 'GF' },
+ { name: 'French Polynesia', code: 'PF' },
+ { name: 'French Southern Territories', code: 'TF' },
+ { name: 'Gabon', code: 'GA' },
+ { name: 'Gambia', code: 'GM' },
+ { name: 'Georgia', code: 'GE' },
+ { name: 'Germany', code: 'DE' },
+ { name: 'Ghana', code: 'GH' },
+ { name: 'Gibraltar', code: 'GI' },
+ { name: 'Greece', code: 'GR' },
+ { name: 'Greenland', code: 'GL' },
+ { name: 'Grenada', code: 'GD' },
+ { name: 'Guadeloupe', code: 'GP' },
+ { name: 'Guam', code: 'GU' },
+ { name: 'Guatemala', code: 'GT' },
+ { name: 'Guernsey', code: 'GG' },
+ { name: 'Guinea', code: 'GN' },
+ { name: 'Guinea-Bissau', code: 'GW' },
+ { name: 'Guyana', code: 'GY' },
+ { name: 'Haiti', code: 'HT' },
+ { name: 'Heard Island and Mcdonald Islands', code: 'HM' },
+ { name: 'Holy See (Vatican City State)', code: 'VA' },
+ { name: 'Honduras', code: 'HN' },
+ { name: 'Hong Kong', code: 'HK' },
+ { name: 'Hungary', code: 'HU' },
+ { name: 'Iceland', code: 'IS' },
+ { name: 'India', code: 'IN' },
+ { name: 'Indonesia', code: 'ID' },
+ { name: 'Iran, Islamic Republic Of', code: 'IR' },
+ { name: 'Iraq', code: 'IQ' },
+ { name: 'Ireland', code: 'IE' },
+ { name: 'Isle of Man', code: 'IM' },
+ { name: 'Israel', code: 'IL' },
+ { name: 'Italy', code: 'IT' },
+ { name: 'Jamaica', code: 'JM' },
+ { name: 'Japan', code: 'JP' },
+ { name: 'Jersey', code: 'JE' },
+ { name: 'Jordan', code: 'JO' },
+ { name: 'Kazakhstan', code: 'KZ' },
+ { name: 'Kenya', code: 'KE' },
+ { name: 'Kiribati', code: 'KI' },
+ { name: "Korea, Democratic People'S Republic of", code: 'KP' },
+ { name: 'Korea, Republic of', code: 'KR' },
+ { name: 'Kuwait', code: 'KW' },
+ { name: 'Kyrgyzstan', code: 'KG' },
+ { name: "Lao People'S Democratic Republic", code: 'LA' },
+ { name: 'Latvia', code: 'LV' },
+ { name: 'Lebanon', code: 'LB' },
+ { name: 'Lesotho', code: 'LS' },
+ { name: 'Liberia', code: 'LR' },
+ { name: 'Libyan Arab Jamahiriya', code: 'LY' },
+ { name: 'Liechtenstein', code: 'LI' },
+ { name: 'Lithuania', code: 'LT' },
+ { name: 'Luxembourg', code: 'LU' },
+ { name: 'Macao', code: 'MO' },
+ { name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK' },
+ { name: 'Madagascar', code: 'MG' },
+ { name: 'Malawi', code: 'MW' },
+ { name: 'Malaysia', code: 'MY' },
+ { name: 'Maldives', code: 'MV' },
+ { name: 'Mali', code: 'ML' },
+ { name: 'Malta', code: 'MT' },
+ { name: 'Marshall Islands', code: 'MH' },
+ { name: 'Martinique', code: 'MQ' },
+ { name: 'Mauritania', code: 'MR' },
+ { name: 'Mauritius', code: 'MU' },
+ { name: 'Mayotte', code: 'YT' },
+ { name: 'Micronesia, Federated States of', code: 'FM' },
+ { name: 'Moldova, Republic of', code: 'MD' },
+ { name: 'Monaco', code: 'MC' },
+ { name: 'Mongolia', code: 'MN' },
+ { name: 'Montserrat', code: 'MS' },
+ { name: 'Morocco', code: 'MA' },
+ { name: 'Mozambique', code: 'MZ' },
+ { name: 'Myanmar', code: 'MM' },
+ { name: 'Namibia', code: 'NA' },
+ { name: 'Nauru', code: 'NR' },
+ { name: 'Nepal', code: 'NP' },
+ { name: 'Netherlands', code: 'NL' },
+ { name: 'Netherlands Antilles', code: 'AN' },
+ { name: 'New Caledonia', code: 'NC' },
+ { name: 'New Zealand', code: 'NZ' },
+ { name: 'Nicaragua', code: 'NI' },
+ { name: 'Niger', code: 'NE' },
+ { name: 'Nigeria', code: 'NG' },
+ { name: 'Niue', code: 'NU' },
+ { name: 'Norfolk Island', code: 'NF' },
+ { name: 'Northern Mariana Islands', code: 'MP' },
+ { name: 'Norway', code: 'NO' },
+ { name: 'Oman', code: 'OM' },
+ { name: 'Pakistan', code: 'PK' },
+ { name: 'Palau', code: 'PW' },
+ { name: 'Palestinian Territory, Occupied', code: 'PS' },
+ { name: 'Panama', code: 'PA' },
+ { name: 'Papua New Guinea', code: 'PG' },
+ { name: 'Paraguay', code: 'PY' },
+ { name: 'Peru', code: 'PE' },
+ { name: 'Philippines', code: 'PH' },
+ { name: 'Pitcairn', code: 'PN' },
+ { name: 'Poland', code: 'PL' },
+ { name: 'Portugal', code: 'PT' },
+ { name: 'Puerto Rico', code: 'PR' },
+ { name: 'Qatar', code: 'QA' },
+ { name: 'Reunion', code: 'RE' },
+ { name: 'Romania', code: 'RO' },
+ { name: 'Russian Federation', code: 'RU' },
+ { name: 'RWANDA', code: 'RW' },
+ { name: 'Saint Helena', code: 'SH' },
+ { name: 'Saint Kitts and Nevis', code: 'KN' },
+ { name: 'Saint Lucia', code: 'LC' },
+ { name: 'Saint Pierre and Miquelon', code: 'PM' },
+ { name: 'Saint Vincent and the Grenadines', code: 'VC' },
+ { name: 'Samoa', code: 'WS' },
+ { name: 'San Marino', code: 'SM' },
+ { name: 'Sao Tome and Principe', code: 'ST' },
+ { name: 'Saudi Arabia', code: 'SA' },
+ { name: 'Senegal', code: 'SN' },
+ { name: 'Serbia and Montenegro', code: 'CS' },
+ { name: 'Seychelles', code: 'SC' },
+ { name: 'Sierra Leone', code: 'SL' },
+ { name: 'Singapore', code: 'SG' },
+ { name: 'Slovakia', code: 'SK' },
+ { name: 'Slovenia', code: 'SI' },
+ { name: 'Solomon Islands', code: 'SB' },
+ { name: 'Somalia', code: 'SO' },
+ { name: 'South Africa', code: 'ZA' },
+ { name: 'South Georgia and the South Sandwich Islands', code: 'GS' },
+ { name: 'Spain', code: 'ES' },
+ { name: 'Sri Lanka', code: 'LK' },
+ { name: 'Sudan', code: 'SD' },
+ { name: 'Suriname', code: 'SR' },
+ { name: 'Svalbard and Jan Mayen', code: 'SJ' },
+ { name: 'Swaziland', code: 'SZ' },
+ { name: 'Sweden', code: 'SE' },
+ { name: 'Switzerland', code: 'CH' },
+ { name: 'Syrian Arab Republic', code: 'SY' },
+ { name: 'Taiwan, Province of China', code: 'TW' },
+ { name: 'Tajikistan', code: 'TJ' },
+ { name: 'Tanzania, United Republic of', code: 'TZ' },
+ { name: 'Thailand', code: 'TH' },
+ { name: 'Timor-Leste', code: 'TL' },
+ { name: 'Togo', code: 'TG' },
+ { name: 'Tokelau', code: 'TK' },
+ { name: 'Tonga', code: 'TO' },
+ { name: 'Trinidad and Tobago', code: 'TT' },
+ { name: 'Tunisia', code: 'TN' },
+ { name: 'Turkey', code: 'TR' },
+ { name: 'Turkmenistan', code: 'TM' },
+ { name: 'Turks and Caicos Islands', code: 'TC' },
+ { name: 'Tuvalu', code: 'TV' },
+ { name: 'Uganda', code: 'UG' },
+ { name: 'Ukraine', code: 'UA' },
+ { name: 'United Arab Emirates', code: 'AE' },
+ { name: 'United Kingdom', code: 'GB' },
+ { name: 'United States Minor Outlying Islands', code: 'UM' },
+ { name: 'Uruguay', code: 'UY' },
+ { name: 'Uzbekistan', code: 'UZ' },
+ { name: 'Vanuatu', code: 'VU' },
+ { name: 'Venezuela', code: 'VE' },
+ { name: 'Viet Nam', code: 'VN' },
+ { name: 'Virgin Islands, British', code: 'VG' },
+ { name: 'Virgin Islands, U.S.', code: 'VI' },
+ { name: 'Wallis and Futuna', code: 'WF' },
+ { name: 'Western Sahara', code: 'EH' },
+ { name: 'Yemen', code: 'YE' },
+ { name: 'Zambia', code: 'ZM' },
+ { name: 'Zimbabwe', code: 'ZW' }
+];
diff --git a/dev/dist/countries-data.fd391f61.js b/dev/dist/countries-data.fd391f61.js
new file mode 100644
index 00000000..fc687e69
--- /dev/null
+++ b/dev/dist/countries-data.fd391f61.js
@@ -0,0 +1,1328 @@
+// modules are defined as an array
+// [ module function, map of requires ]
+//
+// map of requires is short require name -> numeric require
+//
+// anything defined in a previous bundle is accessed via the
+// orig method which is the require for previous bundles
+parcelRequire = (function(modules, cache, entry, globalName) {
+ // Save the require from previous bundle to this closure if any
+ var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
+ var nodeRequire = typeof require === 'function' && require;
+
+ function newRequire(name, jumped) {
+ if (!cache[name]) {
+ if (!modules[name]) {
+ // if we cannot find the module within our internal map or
+ // cache jump to the current global require ie. the last bundle
+ // that was added to the page.
+ var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
+ if (!jumped && currentRequire) {
+ return currentRequire(name, true);
+ }
+
+ // If there are other bundles on this page the require from the
+ // previous one is saved to 'previousRequire'. Repeat this as
+ // many times as there are bundles until the module is found or
+ // we exhaust the require chain.
+ if (previousRequire) {
+ return previousRequire(name, true);
+ }
+
+ // Try the node require function if it exists.
+ if (nodeRequire && typeof name === 'string') {
+ return nodeRequire(name);
+ }
+
+ var err = new Error("Cannot find module '" + name + "'");
+ err.code = 'MODULE_NOT_FOUND';
+ throw err;
+ }
+
+ localRequire.resolve = resolve;
+ localRequire.cache = {};
+
+ var module = (cache[name] = new newRequire.Module(name));
+
+ modules[name][0].call(module.exports, localRequire, module, module.exports, this);
+ }
+
+ return cache[name].exports;
+
+ function localRequire(x) {
+ return newRequire(localRequire.resolve(x));
+ }
+
+ function resolve(x) {
+ return modules[name][1][x] || x;
+ }
+ }
+
+ function Module(moduleName) {
+ this.id = moduleName;
+ this.bundle = newRequire;
+ this.exports = {};
+ }
+
+ newRequire.isParcelRequire = true;
+ newRequire.Module = Module;
+ newRequire.modules = modules;
+ newRequire.cache = cache;
+ newRequire.parent = previousRequire;
+ newRequire.register = function(id, exports) {
+ modules[id] = [
+ function(require, module) {
+ module.exports = exports;
+ },
+ {}
+ ];
+ };
+
+ var error;
+ for (var i = 0; i < entry.length; i++) {
+ try {
+ newRequire(entry[i]);
+ } catch (e) {
+ // Save first error but execute all entries
+ if (!error) {
+ error = e;
+ }
+ }
+ }
+
+ if (entry.length) {
+ // Expose entry point to Node, AMD or browser globals
+ // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
+ var mainExports = newRequire(entry[entry.length - 1]);
+
+ // CommonJS
+ if (typeof exports === 'object' && typeof module !== 'undefined') {
+ module.exports = mainExports;
+
+ // RequireJS
+ } else if (typeof define === 'function' && define.amd) {
+ define(function() {
+ return mainExports;
+ });
+
+ //
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select Single
+
+
+
+
+
+
+
+
+ Select Multiple
+
+
+
+
+
+
+
+
+
+
+
+