From 902bc7dac5f2ede77524169c3ecbef50bb36cbc3 Mon Sep 17 00:00:00 2001 From: Alexander Agnarson Date: Sun, 17 Dec 2017 12:32:54 +0100 Subject: [PATCH] OptionTree to Kirki change --- archive.php | 4 +- footer.php | 14 +- functions.php | 137 +- functions/documentation/documentation.html | 10 +- functions/dynamic-styles.php | 110 +- functions/kirki/LICENSE | 21 + functions/kirki/assets/css/kirki-styles.css | 0 functions/kirki/assets/images/1c.png | Bin 0 -> 786 bytes functions/kirki/assets/images/2cl.png | Bin 0 -> 866 bytes functions/kirki/assets/images/2cr.png | Bin 0 -> 869 bytes functions/kirki/assets/images/3cl.png | Bin 0 -> 929 bytes functions/kirki/assets/images/3cm.png | Bin 0 -> 932 bytes functions/kirki/assets/images/3cr.png | Bin 0 -> 935 bytes .../images/jquery.fs.stepper-arrows.png | Bin 0 -> 306 bytes .../kirki/assets/images/kirki-bottom.png | Bin 0 -> 1549 bytes .../kirki/assets/images/kirki-bottom.svg | 91 + functions/kirki/assets/images/kirki-logo.svg | 48 + .../vendor/fontawesome/css/font-awesome.css | 2337 +++++ .../fontawesome/css/font-awesome.min.css | 4 + .../vendor/fontawesome/fontawesome.json | 8315 +++++++++++++++++ .../vendor/fontawesome/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fontawesome/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fontawesome/fonts/fontawesome-webfont.svg | 2671 ++++++ .../fontawesome/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../assets/vendor/selectWoo/css/select2.css | 484 + .../vendor/selectWoo/css/select2.min.css | 1 + .../assets/vendor/selectWoo/css/selectWoo.css | 484 + .../vendor/selectWoo/css/selectWoo.min.css | 1 + .../assets/vendor/selectWoo/js/i18n/ar.js | 3 + .../assets/vendor/selectWoo/js/i18n/az.js | 3 + .../assets/vendor/selectWoo/js/i18n/bg.js | 3 + .../assets/vendor/selectWoo/js/i18n/ca.js | 3 + .../assets/vendor/selectWoo/js/i18n/cs.js | 3 + .../assets/vendor/selectWoo/js/i18n/da.js | 3 + .../assets/vendor/selectWoo/js/i18n/de.js | 3 + .../assets/vendor/selectWoo/js/i18n/el.js | 3 + .../assets/vendor/selectWoo/js/i18n/en.js | 3 + .../assets/vendor/selectWoo/js/i18n/es.js | 3 + .../assets/vendor/selectWoo/js/i18n/et.js | 3 + .../assets/vendor/selectWoo/js/i18n/eu.js | 3 + .../assets/vendor/selectWoo/js/i18n/fa.js | 3 + .../assets/vendor/selectWoo/js/i18n/fi.js | 3 + .../assets/vendor/selectWoo/js/i18n/fr.js | 3 + .../assets/vendor/selectWoo/js/i18n/gl.js | 3 + .../assets/vendor/selectWoo/js/i18n/he.js | 3 + .../assets/vendor/selectWoo/js/i18n/hi.js | 3 + .../assets/vendor/selectWoo/js/i18n/hr.js | 3 + .../assets/vendor/selectWoo/js/i18n/hu.js | 3 + .../assets/vendor/selectWoo/js/i18n/hy.js | 3 + .../assets/vendor/selectWoo/js/i18n/id.js | 3 + .../assets/vendor/selectWoo/js/i18n/is.js | 3 + .../assets/vendor/selectWoo/js/i18n/it.js | 3 + .../assets/vendor/selectWoo/js/i18n/ja.js | 3 + .../assets/vendor/selectWoo/js/i18n/km.js | 3 + .../assets/vendor/selectWoo/js/i18n/ko.js | 3 + .../assets/vendor/selectWoo/js/i18n/lt.js | 3 + .../assets/vendor/selectWoo/js/i18n/lv.js | 3 + .../assets/vendor/selectWoo/js/i18n/mk.js | 3 + .../assets/vendor/selectWoo/js/i18n/ms.js | 3 + .../assets/vendor/selectWoo/js/i18n/nb.js | 3 + .../assets/vendor/selectWoo/js/i18n/nl.js | 3 + .../assets/vendor/selectWoo/js/i18n/pl.js | 3 + .../assets/vendor/selectWoo/js/i18n/pt-BR.js | 3 + .../assets/vendor/selectWoo/js/i18n/pt.js | 3 + .../assets/vendor/selectWoo/js/i18n/ro.js | 3 + .../assets/vendor/selectWoo/js/i18n/ru.js | 3 + .../assets/vendor/selectWoo/js/i18n/sk.js | 3 + .../assets/vendor/selectWoo/js/i18n/sl.js | 3 + .../vendor/selectWoo/js/i18n/sr-Cyrl.js | 3 + .../assets/vendor/selectWoo/js/i18n/sr.js | 3 + .../assets/vendor/selectWoo/js/i18n/sv.js | 3 + .../assets/vendor/selectWoo/js/i18n/th.js | 3 + .../assets/vendor/selectWoo/js/i18n/tr.js | 3 + .../assets/vendor/selectWoo/js/i18n/uk.js | 3 + .../assets/vendor/selectWoo/js/i18n/vi.js | 3 + .../assets/vendor/selectWoo/js/i18n/zh-CN.js | 3 + .../assets/vendor/selectWoo/js/i18n/zh-TW.js | 3 + .../vendor/selectWoo/js/select2.full.js | 6553 +++++++++++++ .../vendor/selectWoo/js/select2.full.min.js | 1 + .../assets/vendor/selectWoo/js/select2.js | 5842 ++++++++++++ .../assets/vendor/selectWoo/js/select2.min.js | 1 + .../vendor/selectWoo/js/selectWoo.full.js | 6553 +++++++++++++ .../vendor/selectWoo/js/selectWoo.full.min.js | 1 + .../assets/vendor/selectWoo/js/selectWoo.js | 5842 ++++++++++++ .../vendor/selectWoo/js/selectWoo.min.js | 1 + .../kirki/assets/vendor/selectWoo/kirki.css | 28 + .../assets/vendor/selectWoo/kirki.css.map | 7 + .../kirki/assets/vendor/selectWoo/kirki.scss | 53 + .../wp-color-picker-alpha.js | 477 + functions/kirki/class-kirki-autoload.php | 121 + .../kirki/controls/class-kirki-controls.php | 71 + .../kirki/controls/css/styles-legacy.css | 672 ++ functions/kirki/controls/css/styles.css | 657 ++ .../kirki/controls/js/dist/script-legacy.js | 3696 ++++++++ .../controls/js/dist/script-legacy.min.js | 1 + functions/kirki/controls/js/dist/script.js | 3639 ++++++++ .../kirki/controls/js/dist/script.min.js | 1 + .../php/class-kirki-control-background.php | 131 + .../controls/php/class-kirki-control-base.php | 195 + .../controls/php/class-kirki-control-code.php | 62 + .../php/class-kirki-control-color-palette.php | 79 + .../php/class-kirki-control-color.php | 60 + .../php/class-kirki-control-custom.php | 62 + .../php/class-kirki-control-dashicons.php | 157 + .../controls/php/class-kirki-control-date.php | 60 + .../php/class-kirki-control-dimension.php | 65 + .../php/class-kirki-control-dimensions.php | 143 + .../php/class-kirki-control-editor.php | 55 + .../php/class-kirki-control-fontawesome.php | 67 + .../php/class-kirki-control-generic.php | 30 + .../php/class-kirki-control-image.php | 81 + .../php/class-kirki-control-multicheck.php | 57 + .../php/class-kirki-control-multicolor.php | 107 + .../php/class-kirki-control-number.php | 29 + .../php/class-kirki-control-palette.php | 62 + .../php/class-kirki-control-preset.php | 56 + .../class-kirki-control-radio-buttonset.php | 53 + .../php/class-kirki-control-radio-image.php | 82 + .../php/class-kirki-control-radio.php | 29 + .../php/class-kirki-control-repeater.php | 471 + .../php/class-kirki-control-select.php | 49 + .../php/class-kirki-control-slider.php | 74 + .../php/class-kirki-control-sortable.php | 72 + .../php/class-kirki-control-switch.php | 63 + .../php/class-kirki-control-toggle.php | 54 + .../php/class-kirki-control-typography.php | 397 + .../class-kirki-settings-repeater-setting.php | 84 + functions/kirki/controls/views/code.php | 24 + functions/kirki/controls/views/color.php | 35 + functions/kirki/controls/views/generic.php | 31 + functions/kirki/controls/views/radio.php | 36 + functions/kirki/controls/views/select.php | 56 + functions/kirki/controls/views/textarea.php | 29 + functions/kirki/core/class-kirki-config.php | 163 + functions/kirki/core/class-kirki-control.php | 137 + functions/kirki/core/class-kirki-field.php | 685 ++ functions/kirki/core/class-kirki-helper.php | 412 + functions/kirki/core/class-kirki-init.php | 323 + functions/kirki/core/class-kirki-l10n.php | 156 + functions/kirki/core/class-kirki-modules.php | 155 + functions/kirki/core/class-kirki-panel.php | 57 + .../core/class-kirki-sanitize-values.php | 213 + functions/kirki/core/class-kirki-section.php | 64 + functions/kirki/core/class-kirki-sections.php | 48 + .../core/class-kirki-setting-site-option.php | 73 + .../core/class-kirki-setting-user-meta.php | 97 + functions/kirki/core/class-kirki-settings.php | 148 + functions/kirki/core/class-kirki-toolkit.php | 45 + functions/kirki/core/class-kirki-util.php | 192 + functions/kirki/core/class-kirki-values.php | 158 + functions/kirki/core/class-kirki.php | 285 + functions/kirki/core/deprecated.php | 86 + functions/kirki/core/dynamic-css.php | 41 + .../field/class-kirki-field-background.php | 122 + .../field/class-kirki-field-checkbox.php | 68 + .../kirki/field/class-kirki-field-code.php | 111 + .../field/class-kirki-field-color-alpha.php | 30 + .../field/class-kirki-field-color-palette.php | 27 + .../kirki/field/class-kirki-field-color.php | 89 + .../kirki/field/class-kirki-field-custom.php | 45 + .../field/class-kirki-field-dashicons.php | 42 + .../kirki/field/class-kirki-field-date.php | 43 + .../field/class-kirki-field-dimension.php | 38 + .../field/class-kirki-field-dimensions.php | 76 + .../kirki/field/class-kirki-field-editor.php | 54 + .../field/class-kirki-field-fontawesome.php | 43 + .../kirki/field/class-kirki-field-generic.php | 15 + .../field/class-kirki-field-group-title.php | 16 + .../kirki/field/class-kirki-field-image.php | 83 + .../field/class-kirki-field-kirki-generic.php | 60 + .../kirki/field/class-kirki-field-link.php | 15 + .../field/class-kirki-field-multicheck.php | 55 + .../field/class-kirki-field-multicolor.php | 69 + .../kirki/field/class-kirki-field-number.php | 85 + .../kirki/field/class-kirki-field-palette.php | 27 + .../kirki/field/class-kirki-field-preset.php | 38 + .../class-kirki-field-radio-buttonset.php | 27 + .../field/class-kirki-field-radio-image.php | 27 + .../kirki/field/class-kirki-field-radio.php | 58 + .../field/class-kirki-field-repeater.php | 175 + .../kirki/field/class-kirki-field-select.php | 101 + .../class-kirki-field-select2-multiple.php | 29 + .../kirki/field/class-kirki-field-select2.php | 17 + .../kirki/field/class-kirki-field-slider.php | 27 + .../field/class-kirki-field-sortable.php | 62 + .../kirki/field/class-kirki-field-spacing.php | 87 + .../kirki/field/class-kirki-field-switch.php | 48 + .../kirki/field/class-kirki-field-text.php | 47 + .../field/class-kirki-field-textarea.php | 29 + .../kirki/field/class-kirki-field-toggle.php | 27 + .../field/class-kirki-field-typography.php | 245 + .../kirki/field/class-kirki-field-upload.php | 43 + .../kirki/field/class-kirki-field-url.php | 47 + functions/kirki/kirki.php | 106 + functions/kirki/lib/class-aricolor.php | 982 ++ functions/kirki/lib/class-kirki-color.php | 342 + .../class-kirki-modules-collapsible.php | 83 + .../kirki/modules/collapsible/collapsible.css | 13 + .../kirki/modules/collapsible/collapsible.js | 53 + .../modules/css/class-kirki-css-to-file.php | 160 + .../css/class-kirki-modules-css-generator.php | 276 + .../modules/css/class-kirki-modules-css.php | 287 + .../kirki/modules/css/class-kirki-output.php | 337 + .../class-kirki-output-field-background.php | 42 + .../class-kirki-output-field-dimensions.php | 56 + .../field/class-kirki-output-field-image.php | 48 + .../class-kirki-output-field-multicolor.php | 54 + .../class-kirki-output-field-typography.php | 94 + ...kirki-output-property-background-image.php | 40 + ...ki-output-property-background-position.php | 72 + ...lass-kirki-output-property-font-family.php | 65 + .../property/class-kirki-output-property.php | 64 + .../class-kirki-modules-custom-sections.php | 162 + .../class-kirki-panels-nested-panel.php | 59 + .../modules/custom-sections/sections.css | 20 + .../kirki/modules/custom-sections/sections.js | 256 + .../class-kirki-sections-default-section.php | 25 + .../class-kirki-sections-expanded-section.php | 25 + .../class-kirki-sections-nested-section.php | 66 + .../modules/customizer-branding/branding.js | 14 + ...lass-kirki-modules-customizer-branding.php | 89 + ...class-kirki-modules-customizer-styling.php | 425 + ...class-kirki-modules-field-dependencies.php | 71 + .../field-dependencies/field-dependencies.js | 139 + .../icons/class-kirki-modules-icons.php | 108 + functions/kirki/modules/icons/icons.js | 30 + .../loading/class-kirki-modules-loading.php | 169 + .../class-kirki-modules-post-meta.php | 91 + .../modules/post-meta/customize-controls.js | 23 + .../modules/post-meta/customize-preview.js | 19 + .../class-kirki-modules-postmessage.php | 518 + .../kirki/modules/postmessage/postmessage.js | 4 + .../class-kirki-modules-selective-refresh.php | 86 + .../tooltips/class-kirki-modules-tooltips.php | 121 + functions/kirki/modules/tooltips/tooltip.css | 30 + functions/kirki/modules/tooltips/tooltip.js | 55 + .../webfonts/class-kirki-fonts-google.php | 282 + .../modules/webfonts/class-kirki-fonts.php | 246 + .../class-kirki-modules-webfonts-async.php | 101 + .../class-kirki-modules-webfonts-embed.php | 175 + .../class-kirki-modules-webfonts-link.php | 150 + .../webfonts/class-kirki-modules-webfonts.php | 192 + .../kirki/modules/webfonts/webfonts.json | 1 + functions/kirki/modules/webfonts/webfonts.php | 5 + functions/kirki/readme.txt | 1042 +++ functions/kirki/upgrade-notifications.php | 38 + functions/meta-boxes.php | 287 +- functions/shortcodes.php | 60 - functions/theme-options.php | 1647 ++-- header.php | 2 +- inc/featured.php | 6 +- inc/frontpage-top.php | 10 +- inc/sharrre.php | 37 +- index.php | 4 +- js/sharrre.php | 69 - option-tree/assets/css/ot-admin-rtl.css | 635 -- option-tree/assets/css/ot-admin.css | 3973 -------- option-tree/assets/fonts/option-tree-font.eot | Bin 95152 -> 0 bytes option-tree/assets/fonts/option-tree-font.svg | 379 - option-tree/assets/fonts/option-tree-font.ttf | Bin 94952 -> 0 bytes .../assets/fonts/option-tree-font.woff | Bin 108108 -> 0 bytes .../assets/images/layout/dual-sidebar.png | Bin 3974 -> 0 bytes .../assets/images/layout/full-width.png | Bin 3982 -> 0 bytes .../images/layout/left-dual-sidebar.png | Bin 3923 -> 0 bytes .../assets/images/layout/left-sidebar.png | Bin 3995 -> 0 bytes .../images/layout/right-dual-sidebar.png | Bin 3948 -> 0 bytes .../assets/images/layout/right-sidebar.png | Bin 3992 -> 0 bytes option-tree/assets/images/ot-pre-bg.gif | Bin 48 -> 0 bytes .../assets/images/ot-select-hover-rtl.png | Bin 1043 -> 0 bytes option-tree/assets/images/ot-select-hover.png | Bin 1044 -> 0 bytes option-tree/assets/images/ot-select-rtl.png | Bin 1047 -> 0 bytes option-tree/assets/images/ot-select.png | Bin 1052 -> 0 bytes option-tree/assets/js/ot-admin.js | 1293 --- option-tree/assets/js/ot-postformats.js | 119 - .../js/vendor/jquery/jquery-ui-timepicker.js | 5 - option-tree/composer.json | 19 - option-tree/includes/ot-cleanup-api.php | 295 - option-tree/includes/ot-functions-admin.php | 6124 ------------ option-tree/includes/ot-functions-compat.php | 364 - .../includes/ot-functions-deprecated.php | 99 - .../includes/ot-functions-docs-page.php | 1020 -- .../includes/ot-functions-option-types.php | 3233 ------- .../includes/ot-functions-settings-page.php | 572 -- option-tree/includes/ot-functions.php | 397 - option-tree/includes/ot-meta-box-api.php | 363 - option-tree/includes/ot-post-formats-api.php | 131 - option-tree/includes/ot-settings-api.php | 1052 --- option-tree/languages/option-tree-et.mo | Bin 82270 -> 0 bytes option-tree/languages/option-tree-et.po | 3021 ------ option-tree/languages/option-tree.po | 2461 ----- option-tree/license.txt | 674 -- option-tree/ot-loader.php | 806 -- option-tree/readme.txt | 636 -- page-templates/child-menu.php | 2 +- page.php | 2 +- search.php | 4 +- single.php | 10 +- style.css | 12 +- 300 files changed, 66976 insertions(+), 29036 deletions(-) create mode 100644 functions/kirki/LICENSE create mode 100644 functions/kirki/assets/css/kirki-styles.css create mode 100644 functions/kirki/assets/images/1c.png create mode 100644 functions/kirki/assets/images/2cl.png create mode 100644 functions/kirki/assets/images/2cr.png create mode 100644 functions/kirki/assets/images/3cl.png create mode 100644 functions/kirki/assets/images/3cm.png create mode 100644 functions/kirki/assets/images/3cr.png create mode 100644 functions/kirki/assets/images/jquery.fs.stepper-arrows.png create mode 100644 functions/kirki/assets/images/kirki-bottom.png create mode 100644 functions/kirki/assets/images/kirki-bottom.svg create mode 100644 functions/kirki/assets/images/kirki-logo.svg create mode 100644 functions/kirki/assets/vendor/fontawesome/css/font-awesome.css create mode 100644 functions/kirki/assets/vendor/fontawesome/css/font-awesome.min.css create mode 100644 functions/kirki/assets/vendor/fontawesome/fontawesome.json create mode 100644 functions/kirki/assets/vendor/fontawesome/fonts/FontAwesome.otf create mode 100644 functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.eot create mode 100644 functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.svg create mode 100644 functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.ttf create mode 100644 functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.woff create mode 100644 functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.woff2 create mode 100644 functions/kirki/assets/vendor/selectWoo/css/select2.css create mode 100644 functions/kirki/assets/vendor/selectWoo/css/select2.min.css create mode 100644 functions/kirki/assets/vendor/selectWoo/css/selectWoo.css create mode 100644 functions/kirki/assets/vendor/selectWoo/css/selectWoo.min.css create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ar.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/az.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/bg.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ca.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/cs.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/da.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/de.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/el.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/en.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/es.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/et.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/eu.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/fa.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/fi.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/fr.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/gl.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/he.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/hi.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/hr.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/hu.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/hy.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/id.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/is.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/it.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ja.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/km.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ko.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/lt.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/lv.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/mk.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ms.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/nb.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/nl.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/pl.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/pt.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ro.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/ru.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/sk.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/sl.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/sr.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/sv.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/th.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/tr.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/uk.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/vi.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/select2.full.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/select2.full.min.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/select2.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/select2.min.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/selectWoo.full.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/selectWoo.full.min.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/selectWoo.js create mode 100644 functions/kirki/assets/vendor/selectWoo/js/selectWoo.min.js create mode 100644 functions/kirki/assets/vendor/selectWoo/kirki.css create mode 100644 functions/kirki/assets/vendor/selectWoo/kirki.css.map create mode 100644 functions/kirki/assets/vendor/selectWoo/kirki.scss create mode 100644 functions/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js create mode 100644 functions/kirki/class-kirki-autoload.php create mode 100644 functions/kirki/controls/class-kirki-controls.php create mode 100644 functions/kirki/controls/css/styles-legacy.css create mode 100644 functions/kirki/controls/css/styles.css create mode 100644 functions/kirki/controls/js/dist/script-legacy.js create mode 100644 functions/kirki/controls/js/dist/script-legacy.min.js create mode 100644 functions/kirki/controls/js/dist/script.js create mode 100644 functions/kirki/controls/js/dist/script.min.js create mode 100644 functions/kirki/controls/php/class-kirki-control-background.php create mode 100644 functions/kirki/controls/php/class-kirki-control-base.php create mode 100644 functions/kirki/controls/php/class-kirki-control-code.php create mode 100644 functions/kirki/controls/php/class-kirki-control-color-palette.php create mode 100644 functions/kirki/controls/php/class-kirki-control-color.php create mode 100644 functions/kirki/controls/php/class-kirki-control-custom.php create mode 100644 functions/kirki/controls/php/class-kirki-control-dashicons.php create mode 100644 functions/kirki/controls/php/class-kirki-control-date.php create mode 100644 functions/kirki/controls/php/class-kirki-control-dimension.php create mode 100644 functions/kirki/controls/php/class-kirki-control-dimensions.php create mode 100644 functions/kirki/controls/php/class-kirki-control-editor.php create mode 100644 functions/kirki/controls/php/class-kirki-control-fontawesome.php create mode 100644 functions/kirki/controls/php/class-kirki-control-generic.php create mode 100644 functions/kirki/controls/php/class-kirki-control-image.php create mode 100644 functions/kirki/controls/php/class-kirki-control-multicheck.php create mode 100644 functions/kirki/controls/php/class-kirki-control-multicolor.php create mode 100644 functions/kirki/controls/php/class-kirki-control-number.php create mode 100644 functions/kirki/controls/php/class-kirki-control-palette.php create mode 100644 functions/kirki/controls/php/class-kirki-control-preset.php create mode 100644 functions/kirki/controls/php/class-kirki-control-radio-buttonset.php create mode 100644 functions/kirki/controls/php/class-kirki-control-radio-image.php create mode 100644 functions/kirki/controls/php/class-kirki-control-radio.php create mode 100644 functions/kirki/controls/php/class-kirki-control-repeater.php create mode 100644 functions/kirki/controls/php/class-kirki-control-select.php create mode 100644 functions/kirki/controls/php/class-kirki-control-slider.php create mode 100644 functions/kirki/controls/php/class-kirki-control-sortable.php create mode 100644 functions/kirki/controls/php/class-kirki-control-switch.php create mode 100644 functions/kirki/controls/php/class-kirki-control-toggle.php create mode 100644 functions/kirki/controls/php/class-kirki-control-typography.php create mode 100644 functions/kirki/controls/php/class-kirki-settings-repeater-setting.php create mode 100644 functions/kirki/controls/views/code.php create mode 100644 functions/kirki/controls/views/color.php create mode 100644 functions/kirki/controls/views/generic.php create mode 100644 functions/kirki/controls/views/radio.php create mode 100644 functions/kirki/controls/views/select.php create mode 100644 functions/kirki/controls/views/textarea.php create mode 100644 functions/kirki/core/class-kirki-config.php create mode 100644 functions/kirki/core/class-kirki-control.php create mode 100644 functions/kirki/core/class-kirki-field.php create mode 100644 functions/kirki/core/class-kirki-helper.php create mode 100644 functions/kirki/core/class-kirki-init.php create mode 100644 functions/kirki/core/class-kirki-l10n.php create mode 100644 functions/kirki/core/class-kirki-modules.php create mode 100644 functions/kirki/core/class-kirki-panel.php create mode 100644 functions/kirki/core/class-kirki-sanitize-values.php create mode 100644 functions/kirki/core/class-kirki-section.php create mode 100644 functions/kirki/core/class-kirki-sections.php create mode 100644 functions/kirki/core/class-kirki-setting-site-option.php create mode 100644 functions/kirki/core/class-kirki-setting-user-meta.php create mode 100644 functions/kirki/core/class-kirki-settings.php create mode 100644 functions/kirki/core/class-kirki-toolkit.php create mode 100644 functions/kirki/core/class-kirki-util.php create mode 100644 functions/kirki/core/class-kirki-values.php create mode 100644 functions/kirki/core/class-kirki.php create mode 100644 functions/kirki/core/deprecated.php create mode 100644 functions/kirki/core/dynamic-css.php create mode 100644 functions/kirki/field/class-kirki-field-background.php create mode 100644 functions/kirki/field/class-kirki-field-checkbox.php create mode 100644 functions/kirki/field/class-kirki-field-code.php create mode 100644 functions/kirki/field/class-kirki-field-color-alpha.php create mode 100644 functions/kirki/field/class-kirki-field-color-palette.php create mode 100644 functions/kirki/field/class-kirki-field-color.php create mode 100644 functions/kirki/field/class-kirki-field-custom.php create mode 100644 functions/kirki/field/class-kirki-field-dashicons.php create mode 100644 functions/kirki/field/class-kirki-field-date.php create mode 100644 functions/kirki/field/class-kirki-field-dimension.php create mode 100644 functions/kirki/field/class-kirki-field-dimensions.php create mode 100644 functions/kirki/field/class-kirki-field-editor.php create mode 100644 functions/kirki/field/class-kirki-field-fontawesome.php create mode 100644 functions/kirki/field/class-kirki-field-generic.php create mode 100644 functions/kirki/field/class-kirki-field-group-title.php create mode 100644 functions/kirki/field/class-kirki-field-image.php create mode 100644 functions/kirki/field/class-kirki-field-kirki-generic.php create mode 100644 functions/kirki/field/class-kirki-field-link.php create mode 100644 functions/kirki/field/class-kirki-field-multicheck.php create mode 100644 functions/kirki/field/class-kirki-field-multicolor.php create mode 100644 functions/kirki/field/class-kirki-field-number.php create mode 100644 functions/kirki/field/class-kirki-field-palette.php create mode 100644 functions/kirki/field/class-kirki-field-preset.php create mode 100644 functions/kirki/field/class-kirki-field-radio-buttonset.php create mode 100644 functions/kirki/field/class-kirki-field-radio-image.php create mode 100644 functions/kirki/field/class-kirki-field-radio.php create mode 100644 functions/kirki/field/class-kirki-field-repeater.php create mode 100644 functions/kirki/field/class-kirki-field-select.php create mode 100644 functions/kirki/field/class-kirki-field-select2-multiple.php create mode 100644 functions/kirki/field/class-kirki-field-select2.php create mode 100644 functions/kirki/field/class-kirki-field-slider.php create mode 100644 functions/kirki/field/class-kirki-field-sortable.php create mode 100644 functions/kirki/field/class-kirki-field-spacing.php create mode 100644 functions/kirki/field/class-kirki-field-switch.php create mode 100644 functions/kirki/field/class-kirki-field-text.php create mode 100644 functions/kirki/field/class-kirki-field-textarea.php create mode 100644 functions/kirki/field/class-kirki-field-toggle.php create mode 100644 functions/kirki/field/class-kirki-field-typography.php create mode 100644 functions/kirki/field/class-kirki-field-upload.php create mode 100644 functions/kirki/field/class-kirki-field-url.php create mode 100644 functions/kirki/kirki.php create mode 100644 functions/kirki/lib/class-aricolor.php create mode 100644 functions/kirki/lib/class-kirki-color.php create mode 100644 functions/kirki/modules/collapsible/class-kirki-modules-collapsible.php create mode 100644 functions/kirki/modules/collapsible/collapsible.css create mode 100644 functions/kirki/modules/collapsible/collapsible.js create mode 100644 functions/kirki/modules/css/class-kirki-css-to-file.php create mode 100644 functions/kirki/modules/css/class-kirki-modules-css-generator.php create mode 100644 functions/kirki/modules/css/class-kirki-modules-css.php create mode 100644 functions/kirki/modules/css/class-kirki-output.php create mode 100644 functions/kirki/modules/css/field/class-kirki-output-field-background.php create mode 100644 functions/kirki/modules/css/field/class-kirki-output-field-dimensions.php create mode 100644 functions/kirki/modules/css/field/class-kirki-output-field-image.php create mode 100644 functions/kirki/modules/css/field/class-kirki-output-field-multicolor.php create mode 100644 functions/kirki/modules/css/field/class-kirki-output-field-typography.php create mode 100644 functions/kirki/modules/css/property/class-kirki-output-property-background-image.php create mode 100644 functions/kirki/modules/css/property/class-kirki-output-property-background-position.php create mode 100644 functions/kirki/modules/css/property/class-kirki-output-property-font-family.php create mode 100644 functions/kirki/modules/css/property/class-kirki-output-property.php create mode 100644 functions/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php create mode 100644 functions/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php create mode 100644 functions/kirki/modules/custom-sections/sections.css create mode 100644 functions/kirki/modules/custom-sections/sections.js create mode 100644 functions/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php create mode 100644 functions/kirki/modules/custom-sections/sections/class-kirki-sections-expanded-section.php create mode 100644 functions/kirki/modules/custom-sections/sections/class-kirki-sections-nested-section.php create mode 100644 functions/kirki/modules/customizer-branding/branding.js create mode 100644 functions/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php create mode 100644 functions/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php create mode 100644 functions/kirki/modules/field-dependencies/class-kirki-modules-field-dependencies.php create mode 100644 functions/kirki/modules/field-dependencies/field-dependencies.js create mode 100644 functions/kirki/modules/icons/class-kirki-modules-icons.php create mode 100644 functions/kirki/modules/icons/icons.js create mode 100644 functions/kirki/modules/loading/class-kirki-modules-loading.php create mode 100644 functions/kirki/modules/post-meta/class-kirki-modules-post-meta.php create mode 100644 functions/kirki/modules/post-meta/customize-controls.js create mode 100644 functions/kirki/modules/post-meta/customize-preview.js create mode 100644 functions/kirki/modules/postmessage/class-kirki-modules-postmessage.php create mode 100644 functions/kirki/modules/postmessage/postmessage.js create mode 100644 functions/kirki/modules/selective-refresh/class-kirki-modules-selective-refresh.php create mode 100644 functions/kirki/modules/tooltips/class-kirki-modules-tooltips.php create mode 100644 functions/kirki/modules/tooltips/tooltip.css create mode 100644 functions/kirki/modules/tooltips/tooltip.js create mode 100644 functions/kirki/modules/webfonts/class-kirki-fonts-google.php create mode 100644 functions/kirki/modules/webfonts/class-kirki-fonts.php create mode 100644 functions/kirki/modules/webfonts/class-kirki-modules-webfonts-async.php create mode 100644 functions/kirki/modules/webfonts/class-kirki-modules-webfonts-embed.php create mode 100644 functions/kirki/modules/webfonts/class-kirki-modules-webfonts-link.php create mode 100644 functions/kirki/modules/webfonts/class-kirki-modules-webfonts.php create mode 100644 functions/kirki/modules/webfonts/webfonts.json create mode 100644 functions/kirki/modules/webfonts/webfonts.php create mode 100644 functions/kirki/readme.txt create mode 100644 functions/kirki/upgrade-notifications.php delete mode 100644 functions/shortcodes.php delete mode 100644 js/sharrre.php delete mode 100644 option-tree/assets/css/ot-admin-rtl.css delete mode 100644 option-tree/assets/css/ot-admin.css delete mode 100644 option-tree/assets/fonts/option-tree-font.eot delete mode 100644 option-tree/assets/fonts/option-tree-font.svg delete mode 100644 option-tree/assets/fonts/option-tree-font.ttf delete mode 100644 option-tree/assets/fonts/option-tree-font.woff delete mode 100644 option-tree/assets/images/layout/dual-sidebar.png delete mode 100644 option-tree/assets/images/layout/full-width.png delete mode 100644 option-tree/assets/images/layout/left-dual-sidebar.png delete mode 100644 option-tree/assets/images/layout/left-sidebar.png delete mode 100644 option-tree/assets/images/layout/right-dual-sidebar.png delete mode 100644 option-tree/assets/images/layout/right-sidebar.png delete mode 100644 option-tree/assets/images/ot-pre-bg.gif delete mode 100644 option-tree/assets/images/ot-select-hover-rtl.png delete mode 100644 option-tree/assets/images/ot-select-hover.png delete mode 100644 option-tree/assets/images/ot-select-rtl.png delete mode 100644 option-tree/assets/images/ot-select.png delete mode 100644 option-tree/assets/js/ot-admin.js delete mode 100644 option-tree/assets/js/ot-postformats.js delete mode 100644 option-tree/assets/js/vendor/jquery/jquery-ui-timepicker.js delete mode 100644 option-tree/composer.json delete mode 100644 option-tree/includes/ot-cleanup-api.php delete mode 100644 option-tree/includes/ot-functions-admin.php delete mode 100644 option-tree/includes/ot-functions-compat.php delete mode 100644 option-tree/includes/ot-functions-deprecated.php delete mode 100644 option-tree/includes/ot-functions-docs-page.php delete mode 100644 option-tree/includes/ot-functions-option-types.php delete mode 100644 option-tree/includes/ot-functions-settings-page.php delete mode 100644 option-tree/includes/ot-functions.php delete mode 100644 option-tree/includes/ot-meta-box-api.php delete mode 100644 option-tree/includes/ot-post-formats-api.php delete mode 100644 option-tree/includes/ot-settings-api.php delete mode 100644 option-tree/languages/option-tree-et.mo delete mode 100644 option-tree/languages/option-tree-et.po delete mode 100644 option-tree/languages/option-tree.po delete mode 100644 option-tree/license.txt delete mode 100644 option-tree/ot-loader.php delete mode 100644 option-tree/readme.txt diff --git a/archive.php b/archive.php index 5349e2a..89a3c32 100644 --- a/archive.php +++ b/archive.php @@ -13,7 +13,7 @@ - + - +
diff --git a/footer.php b/footer.php index adcde4c..9fc8d3d 100644 --- a/footer.php +++ b/footer.php @@ -8,9 +8,9 @@
- - + + - + diff --git a/functions.php b/functions.php index 13ac446..27d2f77 100644 --- a/functions.php +++ b/functions.php @@ -7,16 +7,6 @@ // http://codex.wordpress.org/Child_Themes -/* ------------------------------------------------------------------------- * - * OptionTree framework integration: Use in theme mode -/* ------------------------------------------------------------------------- */ - - add_filter( 'ot_show_pages', '__return_false' ); - add_filter( 'ot_show_new_layout', '__return_false' ); - add_filter( 'ot_theme_mode', '__return_true' ); - include( get_template_directory() . '/option-tree/ot-loader.php' ); - - /* ------------------------------------------------------------------------- * * Load theme files /* ------------------------------------------------------------------------- */ @@ -28,6 +18,7 @@ if ( ! function_exists( 'alx_load' ) ) { load_theme_textdomain( 'blogrow', get_template_directory().'/languages' ); // Load theme options and meta boxes + include( get_template_directory() . '/functions/kirki/kirki.php' ); include( get_template_directory() . '/functions/theme-options.php' ); include( get_template_directory() . '/functions/meta-boxes.php' ); @@ -35,9 +26,6 @@ if ( ! function_exists( 'alx_load' ) ) { include( get_template_directory() . '/functions/widgets/alx-tabs.php' ); include( get_template_directory() . '/functions/widgets/alx-video.php' ); include( get_template_directory() . '/functions/widgets/alx-posts.php' ); - - // Load custom shortcodes - include( get_template_directory() . '/functions/shortcodes.php' ); // Load dynamic styles include( get_template_directory() . '/functions/dynamic-styles.php' ); @@ -112,10 +100,10 @@ if ( ! function_exists( 'alx_sidebars' ) ) { function alx_sidebars() { register_sidebar(array( 'name' => 'Primary','id' => 'primary','description' => "Normal full width sidebar", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); - if ( ot_get_option('footer-widgets') >= '1' ) { register_sidebar(array( 'name' => 'Footer 1','id' => 'footer-1', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } - if ( ot_get_option('footer-widgets') >= '2' ) { register_sidebar(array( 'name' => 'Footer 2','id' => 'footer-2', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } - if ( ot_get_option('footer-widgets') >= '3' ) { register_sidebar(array( 'name' => 'Footer 3','id' => 'footer-3', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } - if ( ot_get_option('footer-widgets') >= '4' ) { register_sidebar(array( 'name' => 'Footer 4','id' => 'footer-4', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } + if ( get_theme_mod('footer-widgets') >= '1' ) { register_sidebar(array( 'name' => 'Footer 1','id' => 'footer-1', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } + if ( get_theme_mod('footer-widgets') >= '2' ) { register_sidebar(array( 'name' => 'Footer 2','id' => 'footer-2', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } + if ( get_theme_mod('footer-widgets') >= '3' ) { register_sidebar(array( 'name' => 'Footer 3','id' => 'footer-3', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } + if ( get_theme_mod('footer-widgets') >= '4' ) { register_sidebar(array( 'name' => 'Footer 4','id' => 'footer-4', 'description' => "Widgetized footer", 'before_widget' => '
','after_widget' => '
','before_title' => '

','after_title' => '

')); } } } @@ -145,8 +133,8 @@ if ( ! function_exists( 'alx_styles' ) ) { function alx_styles() { wp_enqueue_style( 'style', get_stylesheet_uri() ); - if ( ot_get_option('responsive') != 'off' ) { wp_enqueue_style( 'responsive', get_template_directory_uri().'/responsive.css' ); } - if ( ot_get_option('custom') == 'on' ) { wp_enqueue_style( 'custom', get_template_directory_uri().'/custom.css' ); } + if ( get_theme_mod('responsive','on') =='on' ) { wp_enqueue_style( 'responsive', get_template_directory_uri().'/responsive.css' ); } + if ( get_theme_mod('custom','off') == 'on' ) { wp_enqueue_style( 'custom', get_template_directory_uri().'/custom.css' ); } wp_enqueue_style( 'font-awesome', get_template_directory_uri().'/fonts/font-awesome.min.css' ); } @@ -159,9 +147,9 @@ add_action( 'wp_enqueue_scripts', 'alx_styles' ); if ( ! function_exists( 'alx_custom_sidebars' ) ) { function alx_custom_sidebars() { - if ( !ot_get_option('sidebar-areas') =='' ) { + if ( !get_theme_mod('sidebar-areas') =='' ) { - $sidebars = ot_get_option('sidebar-areas', array()); + $sidebars = get_theme_mod('sidebar-areas', array()); if ( !empty( $sidebars ) ) { foreach( $sidebars as $sidebar ) { @@ -200,21 +188,21 @@ if ( ! function_exists( 'alx_layout_class' ) ) { // Get if set and not set to inherit if ( isset($meta) && !empty($meta) && $meta != 'inherit' ) { $layout = $meta; } // Else check for page-global / single-global - elseif ( is_single() && ( ot_get_option('layout-single') !='inherit' ) ) $layout = ot_get_option('layout-single',''.$default.''); - elseif ( is_page() && ( ot_get_option('layout-page') !='inherit' ) ) $layout = ot_get_option('layout-page',''.$default.''); + elseif ( is_single() && ( get_theme_mod('layout-single') !='inherit' ) ) $layout = get_theme_mod('layout-single',''.$default.''); + elseif ( is_page() && ( get_theme_mod('layout-page') !='inherit' ) ) $layout = get_theme_mod('layout-page',''.$default.''); // Else get global option - else $layout = ot_get_option('layout-global',''.$default.''); + else $layout = get_theme_mod('layout-global',''.$default.''); } // Set layout based on page - elseif ( is_home() && ( ot_get_option('layout-home') !='inherit' ) ) $layout = ot_get_option('layout-home',''.$default.''); - elseif ( is_category() && ( ot_get_option('layout-archive-category') !='inherit' ) ) $layout = ot_get_option('layout-archive-category',''.$default.''); - elseif ( is_archive() && ( ot_get_option('layout-archive') !='inherit' ) ) $layout = ot_get_option('layout-archive',''.$default.''); - elseif ( is_search() && ( ot_get_option('layout-search') !='inherit' ) ) $layout = ot_get_option('layout-search',''.$default.''); - elseif ( is_404() && ( ot_get_option('layout-404') !='inherit' ) ) $layout = ot_get_option('layout-404',''.$default.''); + elseif ( is_home() && ( get_theme_mod('layout-home') !='inherit' ) ) $layout = get_theme_mod('layout-home',''.$default.''); + elseif ( is_category() && ( get_theme_mod('layout-archive-category') !='inherit' ) ) $layout = get_theme_mod('layout-archive-category',''.$default.''); + elseif ( is_archive() && ( get_theme_mod('layout-archive') !='inherit' ) ) $layout = get_theme_mod('layout-archive',''.$default.''); + elseif ( is_search() && ( get_theme_mod('layout-search') !='inherit' ) ) $layout = get_theme_mod('layout-search',''.$default.''); + elseif ( is_404() && ( get_theme_mod('layout-404') !='inherit' ) ) $layout = get_theme_mod('layout-404',''.$default.''); // Global option - else $layout = ot_get_option('layout-global',''.$default.''); + else $layout = get_theme_mod('layout-global',''.$default.''); // Return layout class return $layout; @@ -232,13 +220,13 @@ if ( ! function_exists( 'alx_sidebar_primary' ) ) { $sidebar = 'primary'; // Set sidebar based on page - if ( is_home() && ot_get_option('s1-home') ) $sidebar = ot_get_option('s1-home'); - if ( is_single() && ot_get_option('s1-single') ) $sidebar = ot_get_option('s1-single'); - if ( is_archive() && ot_get_option('s1-archive') ) $sidebar = ot_get_option('s1-archive'); - if ( is_category() && ot_get_option('s1-archive-category') ) $sidebar = ot_get_option('s1-archive-category'); - if ( is_search() && ot_get_option('s1-search') ) $sidebar = ot_get_option('s1-search'); - if ( is_404() && ot_get_option('s1-404') ) $sidebar = ot_get_option('s1-404'); - if ( is_page() && ot_get_option('s1-page') ) $sidebar = ot_get_option('s1-page'); + if ( is_home() && get_theme_mod('s1-home') ) $sidebar = get_theme_mod('s1-home'); + if ( is_single() && get_theme_mod('s1-single') ) $sidebar = get_theme_mod('s1-single'); + if ( is_archive() && get_theme_mod('s1-archive') ) $sidebar = get_theme_mod('s1-archive'); + if ( is_category() && get_theme_mod('s1-archive-category') ) $sidebar = get_theme_mod('s1-archive-category'); + if ( is_search() && get_theme_mod('s1-search') ) $sidebar = get_theme_mod('s1-search'); + if ( is_404() && get_theme_mod('s1-404') ) $sidebar = get_theme_mod('s1-404'); + if ( is_page() && get_theme_mod('s1-page') ) $sidebar = get_theme_mod('s1-page'); // Check for page/post specific sidebar if ( is_page() || is_single() ) { @@ -266,13 +254,13 @@ if ( ! function_exists( 'alx_sidebar_secondary' ) ) { $sidebar = 'secondary'; // Set sidebar based on page - if ( is_home() && ot_get_option('s2-home') ) $sidebar = ot_get_option('s2-home'); - if ( is_single() && ot_get_option('s2-single') ) $sidebar = ot_get_option('s2-single'); - if ( is_archive() && ot_get_option('s2-archive') ) $sidebar = ot_get_option('s2-archive'); - if ( is_category() && ot_get_option('s2-archive-category') ) $sidebar = ot_get_option('s2-archive-category'); - if ( is_search() && ot_get_option('s2-search') ) $sidebar = ot_get_option('s2-search'); - if ( is_404() && ot_get_option('s2-404') ) $sidebar = ot_get_option('s2-404'); - if ( is_page() && ot_get_option('s2-page') ) $sidebar = ot_get_option('s2-page'); + if ( is_home() && get_theme_mod('s2-home') ) $sidebar = get_theme_mod('s2-home'); + if ( is_single() && get_theme_mod('s2-single') ) $sidebar = get_theme_mod('s2-single'); + if ( is_archive() && get_theme_mod('s2-archive') ) $sidebar = get_theme_mod('s2-archive'); + if ( is_category() && get_theme_mod('s2-archive-category') ) $sidebar = get_theme_mod('s2-archive-category'); + if ( is_search() && get_theme_mod('s2-search') ) $sidebar = get_theme_mod('s2-search'); + if ( is_404() && get_theme_mod('s2-404') ) $sidebar = get_theme_mod('s2-404'); + if ( is_page() && get_theme_mod('s2-page') ) $sidebar = get_theme_mod('s2-page'); // Check for page/post specific sidebar if ( is_page() || is_single() ) { @@ -296,15 +284,15 @@ if ( ! function_exists( 'alx_sidebar_secondary' ) ) { if ( ! function_exists( 'alx_social_links' ) ) { function alx_social_links() { - if ( !ot_get_option('social-links') =='' ) { - $links = ot_get_option('social-links', array()); + if ( !get_theme_mod('social-links') =='' ) { + $links = get_theme_mod('social-links', array()); if ( !empty( $links ) ) { echo '
diff --git a/functions/dynamic-styles.php b/functions/dynamic-styles.php index 4a4229f..97f8258 100644 --- a/functions/dynamic-styles.php +++ b/functions/dynamic-styles.php @@ -33,26 +33,26 @@ if ( ! function_exists( 'alx_hex2rgb' ) ) { if ( ! function_exists( 'alx_google_fonts' ) ) { function alx_google_fonts () { - if ( ot_get_option('dynamic-styles') != 'off' ) { - if ( ot_get_option( 'font' ) == 'titillium-web-ext' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'droid-serif' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'source-sans-pro' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'lato' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'raleway' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'ubuntu' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'ubuntu-cyr' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'roboto' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'roboto-cyr' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'roboto-condensed' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'roboto-condensed-cyr' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'roboto-slab' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'roboto-slab-cyr' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'playfair-display' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'playfair-display-cyr' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'open-sans' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'open-sans-cyr' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'pt-serif' ) { echo ''. "\n"; } - if ( ot_get_option( 'font' ) == 'pt-serif-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod('dynamic-styles', 'on') == 'on' ) { + if ( get_theme_mod( 'font' ) == 'titillium-web-ext' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'droid-serif' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'source-sans-pro' ) { echo ''. "\n"; } + /*default*/ if ( ( get_theme_mod( 'font' ) == '' ) || ( get_theme_mod( 'font' ) == 'lato' ) ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'raleway' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'ubuntu' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'ubuntu-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'roboto' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'roboto-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'roboto-condensed' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'roboto-condensed-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'roboto-slab' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'roboto-slab-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'playfair-display' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'playfair-display-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'open-sans' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'open-sans-cyr' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'pt-serif' ) { echo ''. "\n"; } + if ( get_theme_mod( 'font' ) == 'pt-serif-cyr' ) { echo ''. "\n"; } } } @@ -65,10 +65,10 @@ add_action( 'wp_head', 'alx_google_fonts', 2 ); if ( ! function_exists( 'alx_dynamic_css' ) ) { function alx_dynamic_css() { - if ( ot_get_option('dynamic-styles') != 'off' ) { + if ( get_theme_mod('dynamic-styles', 'on') == 'on' ) { // rgb values - $color_1 = ot_get_option('color-1'); + $color_1 = get_theme_mod('color-1'); $color_1_rgb = alx_hex2rgb($color_1); // start output @@ -76,37 +76,37 @@ if ( ! function_exists( 'alx_dynamic_css' ) ) { $styles .= '/* Dynamic CSS: For no styles in head, copy and put the css below in your custom.css or child theme\'s style.css, disable dynamic styles */'."\n"; // google fonts - if ( ot_get_option( 'font' ) == 'titillium-web-ext' ) { $styles .= 'body { font-family: "Titillium Web", Arial, sans-serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'droid-serif' ) { $styles .= 'body { font-family: "Droid Serif", serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'source-sans-pro' ) { $styles .= 'body { font-family: "Source Sans Pro", Arial, sans-serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'lato' ) { $styles .= 'body { font-family: "Lato", Arial, sans-serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'raleway' ) { $styles .= 'body { font-family: "Raleway", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'ubuntu' ) || ( ot_get_option( 'font' ) == 'ubuntu-cyr' ) ) { $styles .= 'body { font-family: "Ubuntu", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'roboto' ) || ( ot_get_option( 'font' ) == 'roboto-cyr' ) ) { $styles .= 'body { font-family: "Roboto", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'roboto-condensed' ) || ( ot_get_option( 'font' ) == 'roboto-condensed-cyr' ) ) { $styles .= 'body { font-family: "Roboto Condensed", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'roboto-slab' ) || ( ot_get_option( 'font' ) == 'roboto-slab-cyr' ) ) { $styles .= 'body { font-family: "Roboto Slab", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'playfair-display' ) || ( ot_get_option( 'font' ) == 'playfair-display-cyr' ) ) { $styles .= 'body { font-family: "Playfair Display", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'open-sans' ) || ( ot_get_option( 'font' ) == 'open-sans-cyr' ) ) { $styles .= 'body { font-family: "Open Sans", Arial, sans-serif; }'."\n"; } - if ( ( ot_get_option( 'font' ) == 'pt-serif' ) || ( ot_get_option( 'font' ) == 'pt-serif-cyr' ) ) { $styles .= 'body { font-family: "PT Serif", serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'arial' ) { $styles .= 'body { font-family: Arial, sans-serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'georgia' ) { $styles .= 'body { font-family: Georgia, serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'verdana' ) { $styles .= 'body { font-family: Verdana, sans-serif; }'."\n"; } - if ( ot_get_option( 'font' ) == 'tahoma' ) { $styles .= 'body { font-family: Tahoma, sans-serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'titillium-web-ext' ) { $styles .= 'body { font-family: "Titillium Web", Arial, sans-serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'droid-serif' ) { $styles .= 'body { font-family: "Droid Serif", serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'source-sans-pro' ) { $styles .= 'body { font-family: "Source Sans Pro", Arial, sans-serif; }'."\n"; } + /*default*/ if ( ( get_theme_mod( 'font' ) == '' ) || ( get_theme_mod( 'font' ) == 'lato' ) ) { $styles .= 'body { font-family: "Lato", Arial, sans-serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'raleway' ) { $styles .= 'body { font-family: "Raleway", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'ubuntu' ) || ( get_theme_mod( 'font' ) == 'ubuntu-cyr' ) ) { $styles .= 'body { font-family: "Ubuntu", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'roboto' ) || ( get_theme_mod( 'font' ) == 'roboto-cyr' ) ) { $styles .= 'body { font-family: "Roboto", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'roboto-condensed' ) || ( get_theme_mod( 'font' ) == 'roboto-condensed-cyr' ) ) { $styles .= 'body { font-family: "Roboto Condensed", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'roboto-slab' ) || ( get_theme_mod( 'font' ) == 'roboto-slab-cyr' ) ) { $styles .= 'body { font-family: "Roboto Slab", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'playfair-display' ) || ( get_theme_mod( 'font' ) == 'playfair-display-cyr' ) ) { $styles .= 'body { font-family: "Playfair Display", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'open-sans' ) || ( get_theme_mod( 'font' ) == 'open-sans-cyr' ) ) { $styles .= 'body { font-family: "Open Sans", Arial, sans-serif; }'."\n"; } + if ( ( get_theme_mod( 'font' ) == 'pt-serif' ) || ( get_theme_mod( 'font' ) == 'pt-serif-cyr' ) ) { $styles .= 'body { font-family: "PT Serif", serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'arial' ) { $styles .= 'body { font-family: Arial, sans-serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'georgia' ) { $styles .= 'body { font-family: Georgia, serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'verdana' ) { $styles .= 'body { font-family: Verdana, sans-serif; }'."\n"; } + if ( get_theme_mod( 'font' ) == 'tahoma' ) { $styles .= 'body { font-family: Tahoma, sans-serif; }'."\n"; } // container width - if ( ot_get_option('container-width') != '1380' ) { - if ( ot_get_option( 'boxed' ) ) { - $styles .= '.boxed #wrapper, .container { max-width: '.ot_get_option('container-width').'px; }'."\n"; + if ( get_theme_mod('container-width', '1160') != '1160' ) { + if ( get_theme_mod( 'boxed' ) ) { + $styles .= '.boxed #wrapper, .container { max-width: '.get_theme_mod('container-width').'px; }'."\n"; } else { - $styles .= '.container { max-width: '.ot_get_option('container-width').'px; }'."\n"; + $styles .= '.container { max-width: '.get_theme_mod('container-width').'px; }'."\n"; } } // primary color - if ( ot_get_option('color-1') != '#ceac41' ) { + if ( get_theme_mod('color-1','#ceac41') != '#ceac41' ) { $styles .= ' -::selection { background-color: '.ot_get_option('color-1').'; } -::-moz-selection { background-color: '.ot_get_option('color-1').'; } +::selection { background-color: '.get_theme_mod('color-1').'; } +::-moz-selection { background-color: '.get_theme_mod('color-1').'; } a, .themeform label .required, @@ -124,7 +124,7 @@ a, .comment-awaiting-moderation, .child-menu a:hover, .child-menu .current_page_item > a, -.wp-pagenavi a { color: '.ot_get_option('color-1').'; } +.wp-pagenavi a { color: '.get_theme_mod('color-1').'; } .themeform input[type="submit"], .themeform button[type="submit"], @@ -136,29 +136,29 @@ a, .widget_calendar caption, .commentlist li.bypostauthor > .comment-body:after, .commentlist li.comment-author-admin > .comment-body:after, -.front-button a span { background-color: '.ot_get_option('color-1').'; } +.front-button a span { background-color: '.get_theme_mod('color-1').'; } -.post-format .format-container { border-color: '.ot_get_option('color-1').'; } +.post-format .format-container { border-color: '.get_theme_mod('color-1').'; } .alx-tabs-nav li.active a, .comment-tabs li.active a, .wp-pagenavi a:hover, .wp-pagenavi a:active, -.wp-pagenavi span.current { border-bottom-color: '.ot_get_option('color-1').'!important; } +.wp-pagenavi span.current { border-bottom-color: '.get_theme_mod('color-1').'!important; } '."\n"; } // header logo max-height - if ( ot_get_option('logo-max-height') != '60' ) { - $styles .= '.site-title a img { max-height: '.ot_get_option('logo-max-height').'px; }'."\n"; + if ( get_theme_mod('logo-max-height','60') != '60' ) { + $styles .= '.site-title a img { max-height: '.get_theme_mod('logo-max-height').'px; }'."\n"; } // image border radius - if ( ot_get_option('image-border-radius') != '0' ) { - $styles .= 'img { -webkit-border-radius: '.ot_get_option('image-border-radius').'px; border-radius: '.ot_get_option('image-border-radius').'px; }'."\n"; + if ( get_theme_mod('image-border-radius') != '0' ) { + $styles .= 'img { -webkit-border-radius: '.get_theme_mod('image-border-radius').'px; border-radius: '.get_theme_mod('image-border-radius').'px; }'."\n"; } // body background - if ( ot_get_option('body-background') != '' ) { + if ( get_theme_mod('body-background','') != '' ) { - $body_background = ot_get_option('body-background'); + $body_background = get_theme_mod('body-background'); $body_color = $body_background['background-color']; $body_image = $body_background['background-image']; $body_position = $body_background['background-position']; diff --git a/functions/kirki/LICENSE b/functions/kirki/LICENSE new file mode 100644 index 0000000..a13701d --- /dev/null +++ b/functions/kirki/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Aristeides Stathopoulos + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/functions/kirki/assets/css/kirki-styles.css b/functions/kirki/assets/css/kirki-styles.css new file mode 100644 index 0000000..e69de29 diff --git a/functions/kirki/assets/images/1c.png b/functions/kirki/assets/images/1c.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc252080a672b75a93b00e4ce0c85a66a6456d0 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^(||aOgAGW=1+HjdU|=lCbaoE#a8WQfu+(*AV9=PD zoRCm-!tf#5|A?cyPEuxMugU z100L=UpJlc`uwNz^0KWp|HRDJ&nya4wc7Euk+Iw>tI&vTxMoXX9(k*ArxnY)>(*|M3jS+!ZOS=oar zwl*s+!{CHZ&MWUAZ7&C|xu3bUx{WRydx^+!a}@=N&iP!-?d2WRT_R%hdD7Pskscl% zUWZo>5BUv$6${)baohNrW89!y`Xrx)V9>de+1immSsclJnM zC@MH};Q4a>8~wTQ&E~uJ{yV?z`Ap{>J-@d-)?f2{+k4^T1+x9Q$DiNS-l3K_Q9z7y wBodvsU*F$udrsz1>YeTXH}qXU82yJyQJ+ok_ufo-U|MJJboFyt=akR{04%8-jQ{`u literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/images/2cl.png b/functions/kirki/assets/images/2cl.png new file mode 100644 index 0000000000000000000000000000000000000000..69da9e604ed14ef6a6ea3c660fafc602739358c8 GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0vp^(||aOgAGW=1+HjdU|=lCbaoE#a8WQfu+(*AV9=PD zoRCm-!tf#5|A?cyPEuxMugU z100L=UpJlc`uwNz^0KWp|HRDJ&nya4wc7Euk+Iw>tI&vTxMoXX9(k*ArxnY)>(*|M3jS+!ZOS=oar zwl*s+!{CHZ&MWUAZ7&C|xu3bUx{WRydx^+!a}@=N&iP!-?d2WRT_R%hdD7Pskscl% zUWZo>5BUv$6${)baohNrW8FSZ?7okO%0TAy~v!I#W^*kOiGre%h9M)%8fxv zU`fP<4mL;5XA^CXoV!0^>!jJ| z`7N$a5h^2+(35-rb(^_6pXI}>+fTQ(=Wf3pCj$(byE*lTs(${MH>>^cuh9B8neQI! b*D)yv3w_*tC(;O*cNjcf{an^LB{Ts5Dl%I{ literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/images/2cr.png b/functions/kirki/assets/images/2cr.png new file mode 100644 index 0000000000000000000000000000000000000000..02da48fe16b2e347887030b40987ae2d59bb1b50 GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0vp^(||aOgAGW=1+HjdU|=lCbaoE#a8WQfu+(*AV9=PD zoRCm-!tf#5|A?cyPEuxMugU z100L=UpJlc`uwNz^0KWp|HRDJ&nya4wc7Euk+Iw>tI&vTxMoXX9(k*ArxnY)>(*|M3jS+!ZOS=oar zwl*s+!{CHZ&MWUAZ7&C|xu3bUx{WRydx^+!a}@=N&iP!-?d2WRT_R%hdD7Pskscl% zUWZo>5BUv$6${)baohNrW8FSZ?76=g$6RXUR=!b`iR$`Wf!fAHx@dX&;4EVL}1?AwDSM2?{3?E`yMD{E`O7__VOWf`unQe?YYx;R~Mes dU6Xs;J~50}ag*NMR$%sF@O1TaS?83{1OSchOFRGo literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/images/3cl.png b/functions/kirki/assets/images/3cl.png new file mode 100644 index 0000000000000000000000000000000000000000..59506886b2f52de74d72935b9999b2e77c11cb20 GIT binary patch literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^(||aOgAGW=1+HjdU|=lCbaoE#a8WQfu+(*AV9=PD zoRCm-!tf#5|A?cyPEuxMugU z100L=UpJlc`uwNz^0KWp|HRDJ&nya4wc7Euk+Iw>tI&vTxMoXX9(k*ArxnY)>(*|M3jS+!ZOS=oar zwl*s+!{CHZ&MWUAZ7&C|xu3bUx{WRydx^+!a}@=N&iP!-?d2WRT_R%hdD7Pskscl% zUWZo>5BUv$6${)baohNrW8FSZ?71x3QL!8yZF4z%<;{dbsh)QEV@Eg2B$Je z&Qsn{!ZPhv4)? zz4q?6y4%wyZ;zSUe*ACw?c>JnF&}PkQ$POu^0s=vJ4GiiKd!s?t?YKY@b;L=;ius|pNw92sy_Ux%%cejd;Nh~kHOQ`&t;ucLK6T7t)>?M literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/images/3cm.png b/functions/kirki/assets/images/3cm.png new file mode 100644 index 0000000000000000000000000000000000000000..97e0b093999c8c268ae179b8b5fd1718d5371f4d GIT binary patch literal 932 zcmeAS@N?(olHy`uVBq!ia0vp^(||aOgAGW=1+HjdU|=lCbaoE#a8WQfu+(*AV9=PD zoRCm-!tf#5|A?cyPEuxMugU z100L=UpJlc`uwNz^0KWp|HRDJ&nya4wc7Euk+Iw>tI&vTxMoXX9(k*ArxnY)>(*|M3jS+!ZOS=oar zwl*s+!{CHZ&MWUAZ7&C|xu3bUx{WRydx^+!a}@=N&iP!-?d2WRT_R%hdD7Pskscl% zUWZo>5BUv$6${)baohNrW8FSZ?72UiKR=lUQ`!cbaa`Mg^A}|*$sSRGkuqw z!JH6fe2BC49YHt$oP)==`n!4ioTIZ}J%6?8 z*T)CC_rJXP_ipy9EPHS3l~=BKx4QrMxu2(eOaEG~;lH|` zy|41r?N_B=!@pL4y}hy6@A3XuyH019UVmzq{%PGVySKrozWYY_aCCDf8Y=3jwH$5P zFhf90_)wD5h!dP=`!9c0xjSFwq0_G_zXt4G8z*D^+$3*x{HpNSyf43QSjO*Msh=2Y zUzh&*!qd>b@8|sP`>^cS%3ZIDW^Zl{z4|}7O7cn0nFV&h+{fVQ>gTe~DWM4f0Stf#5|A?cyPEuxMugU z100L=UpJlc`uwNz^0KWp|HRDJ&nya4wc7Euk+Iw>tI&vTxMoXX9(k*ArxnY)>(*|M3jS+!ZOS=oar zwl*s+!{CHZ&MWUAZ7&C|xu3bUx{WRydx^+!a}@=N&iP!-?d2WRT_R%hdD7Pskscl% zUWZo>5BUv$6${)baohNrW8FSZ?En>C6dn2_VD<8Cze2I=DM&b)}W^vI%{oo z_>X9no>OUE8oH`sYSWS%g3OVpXaAh=x+(SE%~y%f(!QVDR{nVZyxiZVw;$(z_q$hg zwmFx-|MT*oo;%+%Zcl&w@4fK$n9oVKKR^C+e%pS(J4I*D zZd-o;(60?|`-P9+QQQCi)2Ds!K4pJ+zO(q>^RL^~kN{ha%t*!a&R*Ch1$uXAJ>Fat7py85}Sb4q9e0Af**OaK4? literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/images/jquery.fs.stepper-arrows.png b/functions/kirki/assets/images/jquery.fs.stepper-arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..3da69ca0b3fc17e46ab5fdea1a757d31af60d8e9 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^96+qh!3HE(rg+x@DVAa<&kznEsNqQI0P;BtJR*x3 z7`WzuFyog?_l1Chq9v{oCC){ui6xo&c?uz!xv321`bNh3hDOdSHmCy?$bb|C=ckpF zCl;kLIHu$$r7E~(7NwTw7iAYKI0u`(*t4kzsIJ@7#WBR9_wA&;T+Ivu&HFpDZ=L#bDC6 zSf$iqv(Ovk&p}>B1@{VaROXg+`2XXK7dn+WOKsa{h7Vdwizr-nhptBe}UHx3vIVCg!00qfvjQ{`u literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/images/kirki-bottom.png b/functions/kirki/assets/images/kirki-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a9aca7f6b3df5996d8cd46502413f80c3eb714 GIT binary patch literal 1549 zcmV+o2J-odP)000>X1^@s6c?i=M00004b3#c}2nYxW zdTK~z|Uy_s8Y8$}eyf4g?<#Bt)JAt2H=C{<}eqA3DIg+Sr~ zz5!p7Cq4q=A{D9%LJ^lz5P~+)HYIK1OXH-mmxptXW_CS$aftX!k#}d$%sF%JGl?ih z6L=knfU*9Pc^&~H*&rY_1H4h-Vqz zo^pPq!bONey2a!Z7~#V12;aT^7r%BLd=mTde(nh#Y0@wqNPr$Q*7%4)$$~-h=v^cl*10 zIt^?AS1Z!`RVuIOl%aumih1Z5Q9_=#OwBV!67!&7(UYQ!B-AQ+gm@#!X0vTY6&xbU z+1KY7N!%etjFsn8k7u^6m_Us5QMXPYTowERTr8nUkZ|eY60{}yY48l$`~Y~2>jkrY zn@_)wgnR@nm+`bPJZ-Ns>{2~(tc$gVaaEaK*C_wAu2Zv*cGKO)D9swfKm(tf9a_C-WN39y1B`-x2>Ay`KeydAttQI!0y0y{{*l!rd> zIdF;mhP#Wx8}o4ixR=A%I_w2tTgMu}3&3rhG1`dt{;KPrLrw)|$X&#He=gc2 za8~E+1ioz}26;%yO^LbjEnJ9!#It`Yzp29hq3<^kud&1TCETWM-Lt^ml1=znLN@PL z%06OH3r#zo7=}pr7lqF%VuSD76EzkA;joY!q4iZm~Zkz3d6 zQ_9jn4!~IqaaX*d?}y|cyw8)L3Z{l%y7z$}kn5Toh(bO?^1?;Lq7RS;@p;73H6#R{ zc_$baM2ke)pty| z;|Idpd_x6U2R=~-Yf5WJ17FE^bfX{X`^Qwj@>xd0`7!RSxQw(GBP2Cs&xIY_VYf@# z!&h{zMClGl|FdEhNf}l&Y;FxPcpdnQoN)aY^`%LoNHGW+00000NkvXXu0mjfD +image/svg+xmltoolkit +KIRKI + \ No newline at end of file diff --git a/functions/kirki/assets/images/kirki-logo.svg b/functions/kirki/assets/images/kirki-logo.svg new file mode 100644 index 0000000..70af324 --- /dev/null +++ b/functions/kirki/assets/images/kirki-logo.svg @@ -0,0 +1,48 @@ + +image/svg+xml \ No newline at end of file diff --git a/functions/kirki/assets/vendor/fontawesome/css/font-awesome.css b/functions/kirki/assets/vendor/fontawesome/css/font-awesome.css new file mode 100644 index 0000000..ee906a8 --- /dev/null +++ b/functions/kirki/assets/vendor/fontawesome/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/functions/kirki/assets/vendor/fontawesome/css/font-awesome.min.css b/functions/kirki/assets/vendor/fontawesome/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/functions/kirki/assets/vendor/fontawesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/functions/kirki/assets/vendor/fontawesome/fontawesome.json b/functions/kirki/assets/vendor/fontawesome/fontawesome.json new file mode 100644 index 0000000..5986779 --- /dev/null +++ b/functions/kirki/assets/vendor/fontawesome/fontawesome.json @@ -0,0 +1,8315 @@ +{ + "icons": [ + { + "name": "Glass", + "id": "glass", + "unicode": "f000", + "created": 1, + "filter": [ + "martini", + "drink", + "bar", + "alcohol", + "liquor" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Music", + "id": "music", + "unicode": "f001", + "created": 1, + "filter": [ + "note", + "sound" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Search", + "id": "search", + "unicode": "f002", + "created": 1, + "filter": [ + "magnify", + "zoom", + "enlarge", + "bigger" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Envelope Outlined", + "id": "envelope-o", + "unicode": "f003", + "created": 1, + "filter": [ + "email", + "e-mail", + "letter", + "support", + "mail", + "message", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Heart", + "id": "heart", + "unicode": "f004", + "created": 1, + "filter": [ + "love", + "like", + "favorite" + ], + "categories": [ + "Web Application Icons", + "Medical Icons" + ] + }, + { + "name": "Star", + "id": "star", + "unicode": "f005", + "created": 1, + "filter": [ + "award", + "achievement", + "night", + "rating", + "score", + "favorite" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Star Outlined", + "id": "star-o", + "unicode": "f006", + "created": 1, + "filter": [ + "award", + "achievement", + "night", + "rating", + "score", + "favorite" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "User", + "id": "user", + "unicode": "f007", + "created": 1, + "filter": [ + "person", + "man", + "head", + "profile" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Film", + "id": "film", + "unicode": "f008", + "created": 1, + "filter": [ + "movie" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "th-large", + "id": "th-large", + "unicode": "f009", + "created": 1, + "filter": [ + "blocks", + "squares", + "boxes", + "grid" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "th", + "id": "th", + "unicode": "f00a", + "created": 1, + "filter": [ + "blocks", + "squares", + "boxes", + "grid" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "th-list", + "id": "th-list", + "unicode": "f00b", + "created": 1, + "filter": [ + "ul", + "ol", + "checklist", + "finished", + "completed", + "done", + "todo" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Check", + "id": "check", + "unicode": "f00c", + "created": 1, + "filter": [ + "checkmark", + "done", + "todo", + "agree", + "accept", + "confirm", + "tick", + "ok" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Times", + "id": "times", + "unicode": "f00d", + "created": 1, + "aliases": [ + "remove", + "close" + ], + "filter": [ + "close", + "exit", + "x", + "cross" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Search Plus", + "id": "search-plus", + "unicode": "f00e", + "created": 1, + "filter": [ + "magnify", + "zoom", + "enlarge", + "bigger" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Search Minus", + "id": "search-minus", + "unicode": "f010", + "created": 1, + "filter": [ + "magnify", + "minify", + "zoom", + "smaller" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Power Off", + "id": "power-off", + "unicode": "f011", + "created": 1, + "filter": [ + "on" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "signal", + "id": "signal", + "unicode": "f012", + "created": 1, + "filter": [ + "graph", + "bars" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "cog", + "id": "cog", + "unicode": "f013", + "created": 1, + "filter": [ + "settings" + ], + "aliases": [ + "gear" + ], + "categories": [ + "Web Application Icons", + "Spinner Icons" + ] + }, + { + "name": "Trash Outlined", + "id": "trash-o", + "unicode": "f014", + "created": 1, + "filter": [ + "garbage", + "delete", + "remove", + "trash", + "hide" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "home", + "id": "home", + "unicode": "f015", + "created": 1, + "filter": [ + "main", + "house" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "File Outlined", + "id": "file-o", + "unicode": "f016", + "created": 1, + "filter": [ + "new", + "page", + "pdf", + "document" + ], + "categories": [ + "Text Editor Icons", + "File Type Icons" + ] + }, + { + "name": "Clock Outlined", + "id": "clock-o", + "unicode": "f017", + "created": 1, + "filter": [ + "watch", + "timer", + "late", + "timestamp" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "road", + "id": "road", + "unicode": "f018", + "created": 1, + "filter": [ + "street" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Download", + "id": "download", + "unicode": "f019", + "created": 1, + "filter": [ + "import" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Arrow Circle Outlined Down", + "id": "arrow-circle-o-down", + "unicode": "f01a", + "created": 1, + "filter": [ + "download" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Arrow Circle Outlined Up", + "id": "arrow-circle-o-up", + "unicode": "f01b", + "created": 1, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "inbox", + "id": "inbox", + "unicode": "f01c", + "created": 1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Play Circle Outlined", + "id": "play-circle-o", + "unicode": "f01d", + "created": 1, + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Repeat", + "id": "repeat", + "unicode": "f01e", + "created": 1, + "filter": [ + "redo", + "forward" + ], + "aliases": [ + "rotate-right" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "refresh", + "id": "refresh", + "unicode": "f021", + "created": 1, + "filter": [ + "reload", + "sync" + ], + "categories": [ + "Web Application Icons", + "Spinner Icons" + ] + }, + { + "name": "list-alt", + "id": "list-alt", + "unicode": "f022", + "created": 1, + "filter": [ + "ul", + "ol", + "checklist", + "finished", + "completed", + "done", + "todo" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "lock", + "id": "lock", + "unicode": "f023", + "created": 1, + "filter": [ + "protect", + "admin", + "security" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "flag", + "id": "flag", + "unicode": "f024", + "created": 1, + "filter": [ + "report", + "notification", + "notify" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "headphones", + "id": "headphones", + "unicode": "f025", + "created": 1, + "filter": [ + "sound", + "listen", + "music", + "audio" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "volume-off", + "id": "volume-off", + "unicode": "f026", + "created": 1, + "filter": [ + "audio", + "mute", + "sound", + "music" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "volume-down", + "id": "volume-down", + "unicode": "f027", + "created": 1, + "filter": [ + "audio", + "lower", + "quieter", + "sound", + "music" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "volume-up", + "id": "volume-up", + "unicode": "f028", + "created": 1, + "filter": [ + "audio", + "higher", + "louder", + "sound", + "music" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "qrcode", + "id": "qrcode", + "unicode": "f029", + "created": 1, + "filter": [ + "scan" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "barcode", + "id": "barcode", + "unicode": "f02a", + "created": 1, + "filter": [ + "scan" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "tag", + "id": "tag", + "unicode": "f02b", + "created": 1, + "filter": [ + "label" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "tags", + "id": "tags", + "unicode": "f02c", + "created": 1, + "filter": [ + "labels" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "book", + "id": "book", + "unicode": "f02d", + "created": 1, + "filter": [ + "read", + "documentation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "bookmark", + "id": "bookmark", + "unicode": "f02e", + "created": 1, + "filter": [ + "save" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "print", + "id": "print", + "unicode": "f02f", + "created": 1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "camera", + "id": "camera", + "unicode": "f030", + "created": 1, + "filter": [ + "photo", + "picture", + "record" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "font", + "id": "font", + "unicode": "f031", + "created": 1, + "filter": [ + "text" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "bold", + "id": "bold", + "unicode": "f032", + "created": 1, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "italic", + "id": "italic", + "unicode": "f033", + "created": 1, + "filter": [ + "italics" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "text-height", + "id": "text-height", + "unicode": "f034", + "created": 1, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "text-width", + "id": "text-width", + "unicode": "f035", + "created": 1, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "align-left", + "id": "align-left", + "unicode": "f036", + "created": 1, + "filter": [ + "text" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "align-center", + "id": "align-center", + "unicode": "f037", + "created": 1, + "filter": [ + "middle", + "text" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "align-right", + "id": "align-right", + "unicode": "f038", + "created": 1, + "filter": [ + "text" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "align-justify", + "id": "align-justify", + "unicode": "f039", + "created": 1, + "filter": [ + "text" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "list", + "id": "list", + "unicode": "f03a", + "created": 1, + "filter": [ + "ul", + "ol", + "checklist", + "finished", + "completed", + "done", + "todo" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Outdent", + "id": "outdent", + "unicode": "f03b", + "created": 1, + "aliases": [ + "dedent" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Indent", + "id": "indent", + "unicode": "f03c", + "created": 1, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Video Camera", + "id": "video-camera", + "unicode": "f03d", + "created": 1, + "filter": [ + "film", + "movie", + "record" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Picture Outlined", + "id": "picture-o", + "unicode": "f03e", + "created": 1, + "aliases": [ + "photo", + "image" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "pencil", + "id": "pencil", + "unicode": "f040", + "created": 1, + "filter": [ + "write", + "edit", + "update" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "map-marker", + "id": "map-marker", + "unicode": "f041", + "created": 1, + "filter": [ + "map", + "pin", + "location", + "coordinates", + "localize", + "address", + "travel", + "where", + "place" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "adjust", + "id": "adjust", + "unicode": "f042", + "created": 1, + "filter": [ + "contrast" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "tint", + "id": "tint", + "unicode": "f043", + "created": 1, + "filter": [ + "raindrop", + "waterdrop", + "drop", + "droplet" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Pencil Square Outlined", + "id": "pencil-square-o", + "unicode": "f044", + "created": 1, + "filter": [ + "write", + "edit", + "update" + ], + "aliases": [ + "edit" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Share Square Outlined", + "id": "share-square-o", + "unicode": "f045", + "created": 1, + "filter": [ + "social", + "send", + "arrow" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Check Square Outlined", + "id": "check-square-o", + "unicode": "f046", + "created": 1, + "filter": [ + "todo", + "done", + "agree", + "accept", + "confirm", + "ok" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Arrows", + "id": "arrows", + "unicode": "f047", + "created": 1, + "filter": [ + "move", + "reorder", + "resize" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "step-backward", + "id": "step-backward", + "unicode": "f048", + "created": 1, + "filter": [ + "rewind", + "previous", + "beginning", + "start", + "first" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "fast-backward", + "id": "fast-backward", + "unicode": "f049", + "created": 1, + "filter": [ + "rewind", + "previous", + "beginning", + "start", + "first" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "backward", + "id": "backward", + "unicode": "f04a", + "created": 1, + "filter": [ + "rewind", + "previous" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "play", + "id": "play", + "unicode": "f04b", + "created": 1, + "filter": [ + "start", + "playing", + "music", + "sound" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "pause", + "id": "pause", + "unicode": "f04c", + "created": 1, + "filter": [ + "wait" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "stop", + "id": "stop", + "unicode": "f04d", + "created": 1, + "filter": [ + "block", + "box", + "square" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "forward", + "id": "forward", + "unicode": "f04e", + "created": 1, + "filter": [ + "forward", + "next" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "fast-forward", + "id": "fast-forward", + "unicode": "f050", + "created": 1, + "filter": [ + "next", + "end", + "last" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "step-forward", + "id": "step-forward", + "unicode": "f051", + "created": 1, + "filter": [ + "next", + "end", + "last" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "eject", + "id": "eject", + "unicode": "f052", + "created": 1, + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "chevron-left", + "id": "chevron-left", + "unicode": "f053", + "created": 1, + "filter": [ + "bracket", + "previous", + "back" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "chevron-right", + "id": "chevron-right", + "unicode": "f054", + "created": 1, + "filter": [ + "bracket", + "next", + "forward" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Plus Circle", + "id": "plus-circle", + "unicode": "f055", + "created": 1, + "filter": [ + "add", + "new", + "create", + "expand" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Minus Circle", + "id": "minus-circle", + "unicode": "f056", + "created": 1, + "filter": [ + "delete", + "remove", + "trash", + "hide" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Times Circle", + "id": "times-circle", + "unicode": "f057", + "created": 1, + "filter": [ + "close", + "exit", + "x" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Check Circle", + "id": "check-circle", + "unicode": "f058", + "created": 1, + "filter": [ + "todo", + "done", + "agree", + "accept", + "confirm", + "ok" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Question Circle", + "id": "question-circle", + "unicode": "f059", + "filter": [ + "help", + "information", + "unknown", + "support" + ], + "created": 1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Info Circle", + "id": "info-circle", + "unicode": "f05a", + "created": 1, + "filter": [ + "help", + "information", + "more", + "details" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Crosshairs", + "id": "crosshairs", + "unicode": "f05b", + "created": 1, + "filter": [ + "picker" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Times Circle Outlined", + "id": "times-circle-o", + "unicode": "f05c", + "created": 1, + "filter": [ + "close", + "exit", + "x" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Check Circle Outlined", + "id": "check-circle-o", + "unicode": "f05d", + "created": 1, + "filter": [ + "todo", + "done", + "agree", + "accept", + "confirm", + "ok" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "ban", + "id": "ban", + "unicode": "f05e", + "created": 1, + "filter": [ + "delete", + "remove", + "trash", + "hide", + "block", + "stop", + "abort", + "cancel" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "arrow-left", + "id": "arrow-left", + "unicode": "f060", + "created": 1, + "filter": [ + "previous", + "back" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "arrow-right", + "id": "arrow-right", + "unicode": "f061", + "created": 1, + "filter": [ + "next", + "forward" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "arrow-up", + "id": "arrow-up", + "unicode": "f062", + "created": 1, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "arrow-down", + "id": "arrow-down", + "unicode": "f063", + "created": 1, + "filter": [ + "download" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Share", + "id": "share", + "unicode": "f064", + "created": 1, + "aliases": [ + "mail-forward" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Expand", + "id": "expand", + "unicode": "f065", + "created": 1, + "filter": [ + "enlarge", + "bigger", + "resize" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Compress", + "id": "compress", + "unicode": "f066", + "created": 1, + "filter": [ + "collapse", + "combine", + "contract", + "merge", + "smaller" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "plus", + "id": "plus", + "unicode": "f067", + "created": 1, + "filter": [ + "add", + "new", + "create", + "expand" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "minus", + "id": "minus", + "unicode": "f068", + "created": 1, + "filter": [ + "hide", + "minify", + "delete", + "remove", + "trash", + "hide", + "collapse" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "asterisk", + "id": "asterisk", + "unicode": "f069", + "created": 1, + "filter": [ + "details" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Exclamation Circle", + "id": "exclamation-circle", + "unicode": "f06a", + "created": 1, + "filter": [ + "warning", + "error", + "problem", + "notification", + "alert" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "gift", + "id": "gift", + "unicode": "f06b", + "created": 1, + "filter": [ + "present" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "leaf", + "id": "leaf", + "unicode": "f06c", + "created": 1, + "filter": [ + "eco", + "nature", + "plant" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "fire", + "id": "fire", + "unicode": "f06d", + "created": 1, + "filter": [ + "flame", + "hot", + "popular" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Eye", + "id": "eye", + "unicode": "f06e", + "created": 1, + "filter": [ + "show", + "visible", + "views" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Eye Slash", + "id": "eye-slash", + "unicode": "f070", + "created": 1, + "filter": [ + "toggle", + "show", + "hide", + "visible", + "visiblity", + "views" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Exclamation Triangle", + "id": "exclamation-triangle", + "unicode": "f071", + "created": 1, + "filter": [ + "warning", + "error", + "problem", + "notification", + "alert" + ], + "aliases": [ + "warning" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "plane", + "id": "plane", + "unicode": "f072", + "created": 1, + "filter": [ + "travel", + "trip", + "location", + "destination", + "airplane", + "fly", + "mode" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "calendar", + "id": "calendar", + "unicode": "f073", + "created": 1, + "filter": [ + "date", + "time", + "when", + "event" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "random", + "id": "random", + "unicode": "f074", + "created": 1, + "filter": [ + "sort", + "shuffle" + ], + "categories": [ + "Web Application Icons", + "Video Player Icons" + ] + }, + { + "name": "comment", + "id": "comment", + "unicode": "f075", + "created": 1, + "filter": [ + "speech", + "notification", + "note", + "chat", + "bubble", + "feedback", + "message", + "texting", + "sms", + "conversation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "magnet", + "id": "magnet", + "unicode": "f076", + "created": 1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "chevron-up", + "id": "chevron-up", + "unicode": "f077", + "created": 1, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "chevron-down", + "id": "chevron-down", + "unicode": "f078", + "created": 1, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "retweet", + "id": "retweet", + "unicode": "f079", + "created": 1, + "filter": [ + "refresh", + "reload", + "share" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "shopping-cart", + "id": "shopping-cart", + "unicode": "f07a", + "created": 1, + "filter": [ + "checkout", + "buy", + "purchase", + "payment" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Folder", + "id": "folder", + "unicode": "f07b", + "created": 1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Folder Open", + "id": "folder-open", + "unicode": "f07c", + "created": 1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Arrows Vertical", + "id": "arrows-v", + "unicode": "f07d", + "created": 1, + "filter": [ + "resize" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Arrows Horizontal", + "id": "arrows-h", + "unicode": "f07e", + "created": 1, + "filter": [ + "resize" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Bar Chart", + "id": "bar-chart", + "unicode": "f080", + "created": 1, + "aliases": [ + "bar-chart-o" + ], + "filter": [ + "graph", + "analytics" + ], + "categories": [ + "Web Application Icons", + "Chart Icons" + ] + }, + { + "name": "Twitter Square", + "id": "twitter-square", + "unicode": "f081", + "created": 1, + "filter": [ + "tweet", + "social network" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Facebook Square", + "id": "facebook-square", + "unicode": "f082", + "created": 1, + "filter": [ + "social network" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "camera-retro", + "id": "camera-retro", + "unicode": "f083", + "created": 1, + "filter": [ + "photo", + "picture", + "record" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "key", + "id": "key", + "unicode": "f084", + "created": 1, + "filter": [ + "unlock", + "password" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "cogs", + "id": "cogs", + "unicode": "f085", + "created": 1, + "aliases": [ + "gears" + ], + "filter": [ + "settings" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "comments", + "id": "comments", + "unicode": "f086", + "created": 1, + "filter": [ + "speech", + "notification", + "note", + "chat", + "bubble", + "feedback", + "message", + "texting", + "sms", + "conversation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Thumbs Up Outlined", + "id": "thumbs-o-up", + "unicode": "f087", + "created": 1, + "filter": [ + "like", + "approve", + "favorite", + "agree", + "hand" + ], + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Thumbs Down Outlined", + "id": "thumbs-o-down", + "unicode": "f088", + "created": 1, + "filter": [ + "dislike", + "disapprove", + "disagree", + "hand" + ], + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "star-half", + "id": "star-half", + "unicode": "f089", + "created": 1, + "filter": [ + "award", + "achievement", + "rating", + "score" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Heart Outlined", + "id": "heart-o", + "unicode": "f08a", + "created": 1, + "filter": [ + "love", + "like", + "favorite" + ], + "categories": [ + "Web Application Icons", + "Medical Icons" + ] + }, + { + "name": "Sign Out", + "id": "sign-out", + "unicode": "f08b", + "created": 1, + "filter": [ + "log out", + "logout", + "leave", + "exit", + "arrow" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "LinkedIn Square", + "id": "linkedin-square", + "unicode": "f08c", + "created": 1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Thumb Tack", + "id": "thumb-tack", + "unicode": "f08d", + "created": 1, + "filter": [ + "marker", + "pin", + "location", + "coordinates" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "External Link", + "id": "external-link", + "unicode": "f08e", + "created": 1, + "filter": [ + "open", + "new" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sign In", + "id": "sign-in", + "unicode": "f090", + "created": 1, + "filter": [ + "enter", + "join", + "log in", + "login", + "sign up", + "sign in", + "signin", + "signup", + "arrow" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "trophy", + "id": "trophy", + "unicode": "f091", + "created": 1, + "filter": [ + "award", + "achievement", + "cup", + "winner", + "game" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "GitHub Square", + "id": "github-square", + "unicode": "f092", + "created": 1, + "url": "github.com/logos", + "filter": [ + "octocat" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Upload", + "id": "upload", + "unicode": "f093", + "created": 1, + "filter": [ + "import" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Lemon Outlined", + "id": "lemon-o", + "unicode": "f094", + "created": 1, + "filter": [ + "food" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Phone", + "id": "phone", + "unicode": "f095", + "created": 2, + "filter": [ + "call", + "voice", + "number", + "support", + "earphone", + "telephone" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Square Outlined", + "id": "square-o", + "unicode": "f096", + "created": 2, + "filter": [ + "block", + "square", + "box" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Bookmark Outlined", + "id": "bookmark-o", + "unicode": "f097", + "created": 2, + "filter": [ + "save" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Phone Square", + "id": "phone-square", + "unicode": "f098", + "created": 2, + "filter": [ + "call", + "voice", + "number", + "support", + "telephone" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Twitter", + "id": "twitter", + "unicode": "f099", + "created": 2, + "filter": [ + "tweet", + "social network" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Facebook", + "id": "facebook", + "unicode": "f09a", + "created": 2, + "aliases": [ + "facebook-f" + ], + "filter": [ + "social network" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "GitHub", + "id": "github", + "unicode": "f09b", + "created": 2, + "url": "github.com/logos", + "filter": [ + "octocat" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "unlock", + "id": "unlock", + "unicode": "f09c", + "created": 2, + "filter": [ + "protect", + "admin", + "password", + "lock" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "credit-card", + "id": "credit-card", + "unicode": "f09d", + "created": 2, + "filter": [ + "money", + "buy", + "debit", + "checkout", + "purchase", + "payment" + ], + "categories": [ + "Web Application Icons", + "Payment Icons" + ] + }, + { + "name": "rss", + "id": "rss", + "unicode": "f09e", + "created": 2, + "filter": [ + "blog" + ], + "aliases": [ + "feed" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "HDD", + "id": "hdd-o", + "unicode": "f0a0", + "created": 2, + "filter": [ + "harddrive", + "hard drive", + "storage", + "save" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "bullhorn", + "id": "bullhorn", + "unicode": "f0a1", + "created": 2, + "filter": [ + "announcement", + "share", + "broadcast", + "louder", + "megaphone" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "bell", + "id": "bell", + "unicode": "f0f3", + "created": 2, + "filter": [ + "alert", + "reminder", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "certificate", + "id": "certificate", + "unicode": "f0a3", + "created": 2, + "filter": [ + "badge", + "star" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hand Outlined Right", + "id": "hand-o-right", + "unicode": "f0a4", + "created": 2, + "filter": [ + "point", + "right", + "next", + "forward", + "finger" + ], + "categories": [ + "Directional Icons", + "Hand Icons" + ] + }, + { + "name": "Hand Outlined Left", + "id": "hand-o-left", + "unicode": "f0a5", + "created": 2, + "filter": [ + "point", + "left", + "previous", + "back", + "finger" + ], + "categories": [ + "Directional Icons", + "Hand Icons" + ] + }, + { + "name": "Hand Outlined Up", + "id": "hand-o-up", + "unicode": "f0a6", + "created": 2, + "filter": [ + "point", + "finger" + ], + "categories": [ + "Directional Icons", + "Hand Icons" + ] + }, + { + "name": "Hand Outlined Down", + "id": "hand-o-down", + "unicode": "f0a7", + "created": 2, + "filter": [ + "point", + "finger" + ], + "categories": [ + "Directional Icons", + "Hand Icons" + ] + }, + { + "name": "Arrow Circle Left", + "id": "arrow-circle-left", + "unicode": "f0a8", + "created": 2, + "filter": [ + "previous", + "back" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Arrow Circle Right", + "id": "arrow-circle-right", + "unicode": "f0a9", + "created": 2, + "filter": [ + "next", + "forward" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Arrow Circle Up", + "id": "arrow-circle-up", + "unicode": "f0aa", + "created": 2, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Arrow Circle Down", + "id": "arrow-circle-down", + "unicode": "f0ab", + "created": 2, + "filter": [ + "download" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Globe", + "id": "globe", + "unicode": "f0ac", + "created": 2, + "filter": [ + "world", + "planet", + "map", + "place", + "travel", + "earth", + "global", + "translate", + "all", + "language", + "localize", + "location", + "coordinates", + "country" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Wrench", + "id": "wrench", + "unicode": "f0ad", + "created": 2, + "filter": [ + "settings", + "fix", + "update", + "spanner" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Tasks", + "id": "tasks", + "unicode": "f0ae", + "created": 2, + "filter": [ + "progress", + "loading", + "downloading", + "downloads", + "settings" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Filter", + "id": "filter", + "unicode": "f0b0", + "created": 2, + "filter": [ + "funnel", + "options" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Briefcase", + "id": "briefcase", + "unicode": "f0b1", + "created": 2, + "filter": [ + "work", + "business", + "office", + "luggage", + "bag" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Arrows Alt", + "id": "arrows-alt", + "unicode": "f0b2", + "created": 2, + "filter": [ + "expand", + "enlarge", + "fullscreen", + "bigger", + "move", + "reorder", + "resize", + "arrow" + ], + "categories": [ + "Video Player Icons", + "Directional Icons" + ] + }, + { + "name": "Users", + "id": "users", + "unicode": "f0c0", + "created": 2, + "filter": [ + "people", + "profiles", + "persons" + ], + "aliases": [ + "group" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Link", + "id": "link", + "unicode": "f0c1", + "created": 2, + "filter": [ + "chain" + ], + "aliases": [ + "chain" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Cloud", + "id": "cloud", + "filter": [ + "save" + ], + "unicode": "f0c2", + "created": 2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Flask", + "id": "flask", + "unicode": "f0c3", + "created": 2, + "filter": [ + "science", + "beaker", + "experimental", + "labs" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Scissors", + "id": "scissors", + "unicode": "f0c4", + "created": 2, + "aliases": [ + "cut" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Files Outlined", + "id": "files-o", + "unicode": "f0c5", + "created": 2, + "filter": [ + "duplicate", + "clone", + "copy" + ], + "aliases": [ + "copy" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Paperclip", + "id": "paperclip", + "unicode": "f0c6", + "created": 2, + "filter": [ + "attachment" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Floppy Outlined", + "id": "floppy-o", + "unicode": "f0c7", + "created": 2, + "aliases": [ + "save" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Square", + "id": "square", + "unicode": "f0c8", + "created": 2, + "filter": [ + "block", + "box" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Bars", + "id": "bars", + "unicode": "f0c9", + "created": 2, + "aliases": [ + "navicon", + "reorder" + ], + "filter": [ + "menu", + "drag", + "reorder", + "settings", + "list", + "ul", + "ol", + "checklist", + "todo", + "list", + "hamburger" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "list-ul", + "id": "list-ul", + "unicode": "f0ca", + "created": 2, + "filter": [ + "ul", + "ol", + "checklist", + "todo", + "list" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "list-ol", + "id": "list-ol", + "unicode": "f0cb", + "created": 2, + "filter": [ + "ul", + "ol", + "checklist", + "list", + "todo", + "list", + "numbers" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Strikethrough", + "id": "strikethrough", + "unicode": "f0cc", + "created": 2, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Underline", + "id": "underline", + "unicode": "f0cd", + "created": 2, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "table", + "id": "table", + "unicode": "f0ce", + "created": 2, + "filter": [ + "data", + "excel", + "spreadsheet" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "magic", + "id": "magic", + "unicode": "f0d0", + "created": 2, + "filter": [ + "wizard", + "automatic", + "autocomplete" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "truck", + "id": "truck", + "unicode": "f0d1", + "created": 2, + "filter": [ + "shipping" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "Pinterest", + "id": "pinterest", + "unicode": "f0d2", + "created": 2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pinterest Square", + "id": "pinterest-square", + "unicode": "f0d3", + "created": 2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Google Plus Square", + "id": "google-plus-square", + "unicode": "f0d4", + "created": 2, + "filter": [ + "social network" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Google Plus", + "id": "google-plus", + "unicode": "f0d5", + "created": 2, + "filter": [ + "social network" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Money", + "id": "money", + "unicode": "f0d6", + "created": 2, + "filter": [ + "cash", + "money", + "buy", + "checkout", + "purchase", + "payment" + ], + "categories": [ + "Web Application Icons", + "Currency Icons" + ] + }, + { + "name": "Caret Down", + "id": "caret-down", + "unicode": "f0d7", + "created": 2, + "filter": [ + "more", + "dropdown", + "menu", + "triangle down", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Caret Up", + "id": "caret-up", + "unicode": "f0d8", + "created": 2, + "filter": [ + "triangle up", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Caret Left", + "id": "caret-left", + "unicode": "f0d9", + "created": 2, + "filter": [ + "previous", + "back", + "triangle left", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Caret Right", + "id": "caret-right", + "unicode": "f0da", + "created": 2, + "filter": [ + "next", + "forward", + "triangle right", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Columns", + "id": "columns", + "unicode": "f0db", + "created": 2, + "filter": [ + "split", + "panes" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Sort", + "id": "sort", + "unicode": "f0dc", + "created": 2, + "filter": [ + "order" + ], + "aliases": [ + "unsorted" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Descending", + "id": "sort-desc", + "unicode": "f0dd", + "created": 2, + "filter": [ + "dropdown", + "more", + "menu", + "arrow" + ], + "aliases": [ + "sort-down" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Ascending", + "id": "sort-asc", + "unicode": "f0de", + "created": 2, + "aliases": [ + "sort-up" + ], + "filter": [ + "arrow" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Envelope", + "id": "envelope", + "unicode": "f0e0", + "created": 2, + "filter": [ + "email", + "e-mail", + "letter", + "support", + "mail", + "message", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "LinkedIn", + "id": "linkedin", + "unicode": "f0e1", + "created": 2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Undo", + "id": "undo", + "unicode": "f0e2", + "created": 2, + "filter": [ + "back" + ], + "aliases": [ + "rotate-left" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Gavel", + "id": "gavel", + "unicode": "f0e3", + "created": 2, + "filter": [ + "judge", + "lawyer", + "opinion" + ], + "aliases": [ + "legal" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Tachometer", + "id": "tachometer", + "unicode": "f0e4", + "created": 2, + "filter": [ + "speedometer", + "fast" + ], + "aliases": [ + "dashboard" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "comment-o", + "id": "comment-o", + "unicode": "f0e5", + "created": 2, + "filter": [ + "speech", + "notification", + "note", + "chat", + "bubble", + "feedback", + "message", + "texting", + "sms", + "conversation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "comments-o", + "id": "comments-o", + "unicode": "f0e6", + "created": 2, + "filter": [ + "speech", + "notification", + "note", + "chat", + "bubble", + "feedback", + "message", + "texting", + "sms", + "conversation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Lightning Bolt", + "id": "bolt", + "unicode": "f0e7", + "created": 2, + "filter": [ + "lightning", + "weather" + ], + "aliases": [ + "flash" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sitemap", + "id": "sitemap", + "unicode": "f0e8", + "created": 2, + "filter": [ + "directory", + "hierarchy", + "organization" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Umbrella", + "id": "umbrella", + "unicode": "f0e9", + "created": 2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Clipboard", + "id": "clipboard", + "unicode": "f0ea", + "created": 2, + "filter": [ + "copy" + ], + "aliases": [ + "paste" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Lightbulb Outlined", + "id": "lightbulb-o", + "unicode": "f0eb", + "created": 3, + "filter": [ + "idea", + "inspiration" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Exchange", + "id": "exchange", + "unicode": "f0ec", + "created": 3, + "filter": [ + "transfer", + "arrows", + "arrow" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Cloud Download", + "id": "cloud-download", + "unicode": "f0ed", + "created": 3, + "filter": [ + "import" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Cloud Upload", + "id": "cloud-upload", + "unicode": "f0ee", + "created": 3, + "filter": [ + "import" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "user-md", + "id": "user-md", + "unicode": "f0f0", + "created": 2, + "filter": [ + "doctor", + "profile", + "medical", + "nurse" + ], + "categories": [ + "Medical Icons" + ] + }, + { + "name": "Stethoscope", + "id": "stethoscope", + "unicode": "f0f1", + "created": 3, + "categories": [ + "Medical Icons" + ] + }, + { + "name": "Suitcase", + "id": "suitcase", + "unicode": "f0f2", + "created": 3, + "filter": [ + "trip", + "luggage", + "travel", + "move", + "baggage" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bell Outlined", + "id": "bell-o", + "unicode": "f0a2", + "created": 3, + "filter": [ + "alert", + "reminder", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Coffee", + "id": "coffee", + "unicode": "f0f4", + "created": 3, + "filter": [ + "morning", + "mug", + "breakfast", + "tea", + "drink", + "cafe" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Cutlery", + "id": "cutlery", + "unicode": "f0f5", + "created": 3, + "filter": [ + "food", + "restaurant", + "spoon", + "knife", + "dinner", + "eat" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "File Text Outlined", + "id": "file-text-o", + "unicode": "f0f6", + "created": 3, + "filter": [ + "new", + "page", + "pdf", + "document" + ], + "categories": [ + "Text Editor Icons", + "File Type Icons" + ] + }, + { + "name": "Building Outlined", + "id": "building-o", + "unicode": "f0f7", + "created": 3, + "filter": [ + "work", + "business", + "apartment", + "office", + "company" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "hospital Outlined", + "id": "hospital-o", + "unicode": "f0f8", + "created": 3, + "filter": [ + "building" + ], + "categories": [ + "Medical Icons" + ] + }, + { + "name": "ambulance", + "id": "ambulance", + "unicode": "f0f9", + "created": 3, + "filter": [ + "vehicle", + "support", + "help" + ], + "categories": [ + "Medical Icons", + "Transportation Icons" + ] + }, + { + "name": "medkit", + "id": "medkit", + "unicode": "f0fa", + "created": 3, + "filter": [ + "first aid", + "firstaid", + "help", + "support", + "health" + ], + "categories": [ + "Medical Icons" + ] + }, + { + "name": "fighter-jet", + "id": "fighter-jet", + "unicode": "f0fb", + "created": 3, + "filter": [ + "fly", + "plane", + "airplane", + "quick", + "fast", + "travel" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "beer", + "id": "beer", + "unicode": "f0fc", + "created": 3, + "filter": [ + "alcohol", + "stein", + "drink", + "mug", + "bar", + "liquor" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "H Square", + "id": "h-square", + "unicode": "f0fd", + "created": 3, + "filter": [ + "hospital", + "hotel" + ], + "categories": [ + "Medical Icons" + ] + }, + { + "name": "Plus Square", + "id": "plus-square", + "unicode": "f0fe", + "created": 3, + "filter": [ + "add", + "new", + "create", + "expand" + ], + "categories": [ + "Medical Icons", + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Angle Double Left", + "id": "angle-double-left", + "unicode": "f100", + "created": 3, + "filter": [ + "laquo", + "quote", + "previous", + "back", + "arrows" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Angle Double Right", + "id": "angle-double-right", + "unicode": "f101", + "created": 3, + "filter": [ + "raquo", + "quote", + "next", + "forward", + "arrows" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Angle Double Up", + "id": "angle-double-up", + "unicode": "f102", + "created": 3, + "filter": [ + "arrows" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Angle Double Down", + "id": "angle-double-down", + "unicode": "f103", + "created": 3, + "filter": [ + "arrows" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "angle-left", + "id": "angle-left", + "unicode": "f104", + "created": 3, + "filter": [ + "previous", + "back", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "angle-right", + "id": "angle-right", + "unicode": "f105", + "created": 3, + "filter": [ + "next", + "forward", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "angle-up", + "id": "angle-up", + "unicode": "f106", + "created": 3, + "filter": [ + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "angle-down", + "id": "angle-down", + "unicode": "f107", + "created": 3, + "filter": [ + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Desktop", + "id": "desktop", + "unicode": "f108", + "created": 3, + "filter": [ + "monitor", + "screen", + "desktop", + "computer", + "demo", + "device" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Laptop", + "id": "laptop", + "unicode": "f109", + "created": 3, + "filter": [ + "demo", + "computer", + "device" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "tablet", + "id": "tablet", + "unicode": "f10a", + "created": 3, + "filter": [ + "ipad", + "device" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Mobile Phone", + "id": "mobile", + "unicode": "f10b", + "created": 3, + "filter": [ + "cell phone", + "cellphone", + "text", + "call", + "iphone", + "number", + "telephone" + ], + "aliases": [ + "mobile-phone" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Circle Outlined", + "id": "circle-o", + "unicode": "f10c", + "created": 3, + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "quote-left", + "id": "quote-left", + "unicode": "f10d", + "created": 3, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "quote-right", + "id": "quote-right", + "unicode": "f10e", + "created": 3, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Spinner", + "id": "spinner", + "unicode": "f110", + "created": 3, + "filter": [ + "loading", + "progress" + ], + "categories": [ + "Web Application Icons", + "Spinner Icons" + ] + }, + { + "name": "Circle", + "id": "circle", + "unicode": "f111", + "created": 3, + "filter": [ + "dot", + "notification" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Reply", + "id": "reply", + "unicode": "f112", + "created": 3, + "aliases": [ + "mail-reply" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "GitHub Alt", + "id": "github-alt", + "unicode": "f113", + "created": 3, + "url": "github.com/logos", + "filter": [ + "octocat" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Folder Outlined", + "id": "folder-o", + "unicode": "f114", + "created": 3, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Folder Open Outlined", + "id": "folder-open-o", + "unicode": "f115", + "created": 3, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Smile Outlined", + "id": "smile-o", + "unicode": "f118", + "created": 3.1, + "filter": [ + "face", + "emoticon", + "happy", + "approve", + "satisfied", + "rating" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Frown Outlined", + "id": "frown-o", + "unicode": "f119", + "created": 3.1, + "filter": [ + "face", + "emoticon", + "sad", + "disapprove", + "rating" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Meh Outlined", + "id": "meh-o", + "unicode": "f11a", + "created": 3.1, + "filter": [ + "face", + "emoticon", + "rating", + "neutral" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Gamepad", + "id": "gamepad", + "unicode": "f11b", + "created": 3.1, + "filter": [ + "controller" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Keyboard Outlined", + "id": "keyboard-o", + "unicode": "f11c", + "created": 3.1, + "filter": [ + "type", + "input" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Flag Outlined", + "id": "flag-o", + "unicode": "f11d", + "created": 3.1, + "filter": [ + "report", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "flag-checkered", + "id": "flag-checkered", + "unicode": "f11e", + "created": 3.1, + "filter": [ + "report", + "notification", + "notify" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Terminal", + "id": "terminal", + "unicode": "f120", + "created": 3.1, + "filter": [ + "command", + "prompt", + "code" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Code", + "id": "code", + "unicode": "f121", + "created": 3.1, + "filter": [ + "html", + "brackets" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "reply-all", + "id": "reply-all", + "unicode": "f122", + "created": 3.1, + "aliases": [ + "mail-reply-all" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Star Half Outlined", + "id": "star-half-o", + "unicode": "f123", + "created": 3.1, + "filter": [ + "award", + "achievement", + "rating", + "score" + ], + "aliases": [ + "star-half-empty", + "star-half-full" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "location-arrow", + "id": "location-arrow", + "unicode": "f124", + "created": 3.1, + "filter": [ + "map", + "coordinates", + "location", + "address", + "place", + "where" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "crop", + "id": "crop", + "unicode": "f125", + "created": 3.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "code-fork", + "id": "code-fork", + "unicode": "f126", + "created": 3.1, + "filter": [ + "git", + "fork", + "vcs", + "svn", + "github", + "rebase", + "version", + "merge" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Chain Broken", + "id": "chain-broken", + "unicode": "f127", + "created": 3.1, + "filter": [ + "remove" + ], + "aliases": [ + "unlink" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Question", + "id": "question", + "unicode": "f128", + "created": 3.1, + "filter": [ + "help", + "information", + "unknown", + "support" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Info", + "id": "info", + "unicode": "f129", + "created": 3.1, + "filter": [ + "help", + "information", + "more", + "details" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "exclamation", + "id": "exclamation", + "unicode": "f12a", + "created": 3.1, + "filter": [ + "warning", + "error", + "problem", + "notification", + "notify", + "alert" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "superscript", + "id": "superscript", + "unicode": "f12b", + "created": 3.1, + "filter": [ + "exponential" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "subscript", + "id": "subscript", + "unicode": "f12c", + "created": 3.1, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "eraser", + "id": "eraser", + "unicode": "f12d", + "created": 3.1, + "filter": [ + "remove", + "delete" + ], + "categories": [ + "Text Editor Icons", + "Web Application Icons" + ] + }, + { + "name": "Puzzle Piece", + "id": "puzzle-piece", + "unicode": "f12e", + "created": 3.1, + "filter": [ + "addon", + "add-on", + "section" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "microphone", + "id": "microphone", + "unicode": "f130", + "created": 3.1, + "filter": [ + "record", + "voice", + "sound" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Microphone Slash", + "id": "microphone-slash", + "unicode": "f131", + "created": 3.1, + "filter": [ + "record", + "voice", + "sound", + "mute" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "shield", + "id": "shield", + "unicode": "f132", + "created": 3.1, + "filter": [ + "award", + "achievement", + "security", + "winner" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "calendar-o", + "id": "calendar-o", + "unicode": "f133", + "created": 3.1, + "filter": [ + "date", + "time", + "when", + "event" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "fire-extinguisher", + "id": "fire-extinguisher", + "unicode": "f134", + "created": 3.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "rocket", + "id": "rocket", + "unicode": "f135", + "created": 3.1, + "filter": [ + "app" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "MaxCDN", + "id": "maxcdn", + "unicode": "f136", + "created": 3.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Chevron Circle Left", + "id": "chevron-circle-left", + "unicode": "f137", + "created": 3.1, + "filter": [ + "previous", + "back", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Chevron Circle Right", + "id": "chevron-circle-right", + "unicode": "f138", + "created": 3.1, + "filter": [ + "next", + "forward", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Chevron Circle Up", + "id": "chevron-circle-up", + "unicode": "f139", + "created": 3.1, + "filter": [ + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Chevron Circle Down", + "id": "chevron-circle-down", + "unicode": "f13a", + "created": 3.1, + "filter": [ + "more", + "dropdown", + "menu", + "arrow" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "HTML 5 Logo", + "id": "html5", + "unicode": "f13b", + "created": 3.1, + "code": [ + "code", + "html5" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "CSS 3 Logo", + "id": "css3", + "unicode": "f13c", + "created": 3.1, + "filter": [ + "code" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Anchor", + "id": "anchor", + "unicode": "f13d", + "created": 3.1, + "filter": [ + "link" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Unlock Alt", + "id": "unlock-alt", + "unicode": "f13e", + "created": 3.1, + "filter": [ + "protect", + "admin", + "password", + "lock" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bullseye", + "id": "bullseye", + "unicode": "f140", + "created": 3.1, + "filter": [ + "target" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Ellipsis Horizontal", + "id": "ellipsis-h", + "unicode": "f141", + "created": 3.1, + "filter": [ + "dots" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Ellipsis Vertical", + "id": "ellipsis-v", + "unicode": "f142", + "created": 3.1, + "filter": [ + "dots" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "RSS Square", + "id": "rss-square", + "unicode": "f143", + "created": 3.1, + "filter": [ + "feed", + "blog" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Play Circle", + "id": "play-circle", + "unicode": "f144", + "created": 3.1, + "filter": [ + "start", + "playing" + ], + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Ticket", + "id": "ticket", + "unicode": "f145", + "created": 3.1, + "filter": [ + "movie", + "pass", + "support" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Minus Square", + "id": "minus-square", + "unicode": "f146", + "created": 3.1, + "filter": [ + "hide", + "minify", + "delete", + "remove", + "trash", + "hide", + "collapse" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Minus Square Outlined", + "id": "minus-square-o", + "unicode": "f147", + "created": 3.1, + "filter": [ + "hide", + "minify", + "delete", + "remove", + "trash", + "hide", + "collapse" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Level Up", + "id": "level-up", + "unicode": "f148", + "created": 3.1, + "filter": [ + "arrow" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Level Down", + "id": "level-down", + "unicode": "f149", + "created": 3.1, + "filter": [ + "arrow" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Check Square", + "id": "check-square", + "unicode": "f14a", + "created": 3.1, + "filter": [ + "checkmark", + "done", + "todo", + "agree", + "accept", + "confirm", + "ok" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Pencil Square", + "id": "pencil-square", + "unicode": "f14b", + "created": 3.1, + "filter": [ + "write", + "edit", + "update" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "External Link Square", + "id": "external-link-square", + "unicode": "f14c", + "created": 3.1, + "filter": [ + "open", + "new" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Share Square", + "id": "share-square", + "unicode": "f14d", + "created": 3.1, + "filter": [ + "social", + "send" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Compass", + "id": "compass", + "unicode": "f14e", + "created": 3.2, + "filter": [ + "safari", + "directory", + "menu", + "location" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Caret Square Outlined Down", + "id": "caret-square-o-down", + "unicode": "f150", + "created": 3.2, + "aliases": [ + "toggle-down" + ], + "filter": [ + "more", + "dropdown", + "menu" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Caret Square Outlined Up", + "id": "caret-square-o-up", + "unicode": "f151", + "created": 3.2, + "aliases": [ + "toggle-up" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Caret Square Outlined Right", + "id": "caret-square-o-right", + "unicode": "f152", + "created": 3.2, + "filter": [ + "next", + "forward" + ], + "aliases": [ + "toggle-right" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Euro (EUR)", + "id": "eur", + "unicode": "f153", + "created": 3.2, + "aliases": [ + "euro" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "GBP", + "id": "gbp", + "unicode": "f154", + "created": 3.2, + "categories": [ + "Currency Icons" + ] + }, + { + "name": "US Dollar", + "id": "usd", + "unicode": "f155", + "created": 3.2, + "aliases": [ + "dollar" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "Indian Rupee (INR)", + "id": "inr", + "unicode": "f156", + "created": 3.2, + "aliases": [ + "rupee" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "Japanese Yen (JPY)", + "id": "jpy", + "unicode": "f157", + "created": 3.2, + "aliases": [ + "cny", + "rmb", + "yen" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "Russian Ruble (RUB)", + "id": "rub", + "unicode": "f158", + "created": 4, + "aliases": [ + "ruble", + "rouble" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "Korean Won (KRW)", + "id": "krw", + "unicode": "f159", + "created": 3.2, + "aliases": [ + "won" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "Bitcoin (BTC)", + "id": "btc", + "unicode": "f15a", + "created": 3.2, + "aliases": [ + "bitcoin" + ], + "categories": [ + "Currency Icons", + "Brand Icons" + ] + }, + { + "name": "File", + "id": "file", + "unicode": "f15b", + "created": 3.2, + "filter": [ + "new", + "page", + "pdf", + "document" + ], + "categories": [ + "Text Editor Icons", + "File Type Icons" + ] + }, + { + "name": "File Text", + "id": "file-text", + "unicode": "f15c", + "created": 3.2, + "filter": [ + "new", + "page", + "pdf", + "document" + ], + "categories": [ + "Text Editor Icons", + "File Type Icons" + ] + }, + { + "name": "Sort Alpha Ascending", + "id": "sort-alpha-asc", + "unicode": "f15d", + "created": 3.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Alpha Descending", + "id": "sort-alpha-desc", + "unicode": "f15e", + "created": 3.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Amount Ascending", + "id": "sort-amount-asc", + "unicode": "f160", + "created": 3.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Amount Descending", + "id": "sort-amount-desc", + "unicode": "f161", + "created": 3.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Numeric Ascending", + "id": "sort-numeric-asc", + "unicode": "f162", + "created": 3.2, + "filter": [ + "numbers" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sort Numeric Descending", + "id": "sort-numeric-desc", + "unicode": "f163", + "created": 3.2, + "filter": [ + "numbers" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "thumbs-up", + "id": "thumbs-up", + "unicode": "f164", + "created": 3.2, + "filter": [ + "like", + "favorite", + "approve", + "agree", + "hand" + ], + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "thumbs-down", + "id": "thumbs-down", + "unicode": "f165", + "created": 3.2, + "filter": [ + "dislike", + "disapprove", + "disagree", + "hand" + ], + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "YouTube Square", + "id": "youtube-square", + "unicode": "f166", + "created": 3.2, + "filter": [ + "video", + "film" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "YouTube", + "id": "youtube", + "unicode": "f167", + "created": 3.2, + "filter": [ + "video", + "film" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Xing", + "id": "xing", + "unicode": "f168", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Xing Square", + "id": "xing-square", + "unicode": "f169", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "YouTube Play", + "id": "youtube-play", + "unicode": "f16a", + "created": 3.2, + "filter": [ + "start", + "playing" + ], + "categories": [ + "Brand Icons", + "Video Player Icons" + ] + }, + { + "name": "Dropbox", + "id": "dropbox", + "unicode": "f16b", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Stack Overflow", + "id": "stack-overflow", + "unicode": "f16c", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Instagram", + "id": "instagram", + "unicode": "f16d", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Flickr", + "id": "flickr", + "unicode": "f16e", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "App.net", + "id": "adn", + "unicode": "f170", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Bitbucket", + "id": "bitbucket", + "unicode": "f171", + "created": 3.2, + "filter": [ + "git" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Bitbucket Square", + "id": "bitbucket-square", + "unicode": "f172", + "created": 3.2, + "filter": [ + "git" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Tumblr", + "id": "tumblr", + "unicode": "f173", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Tumblr Square", + "id": "tumblr-square", + "unicode": "f174", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Long Arrow Down", + "id": "long-arrow-down", + "unicode": "f175", + "created": 3.2, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Long Arrow Up", + "id": "long-arrow-up", + "unicode": "f176", + "created": 3.2, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Long Arrow Left", + "id": "long-arrow-left", + "unicode": "f177", + "created": 3.2, + "filter": [ + "previous", + "back" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Long Arrow Right", + "id": "long-arrow-right", + "unicode": "f178", + "created": 3.2, + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Apple", + "id": "apple", + "unicode": "f179", + "created": 3.2, + "filter": [ + "osx", + "food" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Windows", + "id": "windows", + "unicode": "f17a", + "created": 3.2, + "filter": [ + "microsoft" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Android", + "id": "android", + "unicode": "f17b", + "created": 3.2, + "filter": [ + "robot" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Linux", + "id": "linux", + "unicode": "f17c", + "created": 3.2, + "filter": [ + "tux" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Dribbble", + "id": "dribbble", + "unicode": "f17d", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Skype", + "id": "skype", + "unicode": "f17e", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Foursquare", + "id": "foursquare", + "unicode": "f180", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Trello", + "id": "trello", + "unicode": "f181", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Female", + "id": "female", + "unicode": "f182", + "created": 3.2, + "filter": [ + "woman", + "user", + "person", + "profile" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Male", + "id": "male", + "unicode": "f183", + "created": 3.2, + "filter": [ + "man", + "user", + "person", + "profile" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Gratipay (Gittip)", + "id": "gratipay", + "unicode": "f184", + "created": 3.2, + "aliases": [ + "gittip" + ], + "filter": [ + "heart", + "like", + "favorite", + "love" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Sun Outlined", + "id": "sun-o", + "unicode": "f185", + "created": 3.2, + "filter": [ + "weather", + "contrast", + "lighter", + "brighten", + "day" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Moon Outlined", + "id": "moon-o", + "unicode": "f186", + "created": 3.2, + "filter": [ + "night", + "darker", + "contrast" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Archive", + "id": "archive", + "unicode": "f187", + "created": 3.2, + "filter": [ + "box", + "storage" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bug", + "id": "bug", + "unicode": "f188", + "created": 3.2, + "filter": [ + "report", + "insect" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "VK", + "id": "vk", + "unicode": "f189", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Weibo", + "id": "weibo", + "unicode": "f18a", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Renren", + "id": "renren", + "unicode": "f18b", + "created": 3.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pagelines", + "id": "pagelines", + "unicode": "f18c", + "created": 4, + "filter": [ + "leaf", + "leaves", + "tree", + "plant", + "eco", + "nature" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Stack Exchange", + "id": "stack-exchange", + "unicode": "f18d", + "created": 4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Arrow Circle Outlined Right", + "id": "arrow-circle-o-right", + "unicode": "f18e", + "created": 4, + "filter": [ + "next", + "forward" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Arrow Circle Outlined Left", + "id": "arrow-circle-o-left", + "unicode": "f190", + "created": 4, + "filter": [ + "previous", + "back" + ], + "categories": [ + "Directional Icons" + ] + }, + { + "name": "Caret Square Outlined Left", + "id": "caret-square-o-left", + "unicode": "f191", + "created": 4, + "filter": [ + "previous", + "back" + ], + "aliases": [ + "toggle-left" + ], + "categories": [ + "Web Application Icons", + "Directional Icons" + ] + }, + { + "name": "Dot Circle Outlined", + "id": "dot-circle-o", + "unicode": "f192", + "created": 4, + "filter": [ + "target", + "bullseye", + "notification" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Wheelchair", + "id": "wheelchair", + "unicode": "f193", + "created": 4, + "filter": [ + "handicap", + "person" + ], + "categories": [ + "Web Application Icons", + "Medical Icons", + "Transportation Icons", + "Accessibility Icons" + ] + }, + { + "name": "Vimeo Square", + "id": "vimeo-square", + "unicode": "f194", + "created": 4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Turkish Lira (TRY)", + "id": "try", + "unicode": "f195", + "created": 4, + "aliases": [ + "turkish-lira" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "Plus Square Outlined", + "id": "plus-square-o", + "unicode": "f196", + "created": 4, + "filter": [ + "add", + "new", + "create", + "expand" + ], + "categories": [ + "Web Application Icons", + "Form Control Icons" + ] + }, + { + "name": "Space Shuttle", + "id": "space-shuttle", + "unicode": "f197", + "created": 4.1, + "filter": null, + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "Slack Logo", + "id": "slack", + "unicode": "f198", + "created": 4.1, + "filter": [ + "hashtag", + "anchor", + "hash" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Envelope Square", + "id": "envelope-square", + "unicode": "f199", + "created": 4.1, + "filter": [ + "email", + "e-mail", + "letter", + "support", + "mail", + "message", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "WordPress Logo", + "id": "wordpress", + "unicode": "f19a", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "OpenID", + "id": "openid", + "unicode": "f19b", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "University", + "id": "university", + "unicode": "f19c", + "created": 4.1, + "aliases": [ + "institution", + "bank" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Graduation Cap", + "id": "graduation-cap", + "unicode": "f19d", + "created": 4.1, + "aliases": [ + "mortar-board" + ], + "filter": [ + "learning", + "school", + "student" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Yahoo Logo", + "id": "yahoo", + "unicode": "f19e", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Google Logo", + "id": "google", + "unicode": "f1a0", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "reddit Logo", + "id": "reddit", + "unicode": "f1a1", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "reddit Square", + "id": "reddit-square", + "unicode": "f1a2", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "StumbleUpon Circle", + "id": "stumbleupon-circle", + "unicode": "f1a3", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "StumbleUpon Logo", + "id": "stumbleupon", + "unicode": "f1a4", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Delicious Logo", + "id": "delicious", + "unicode": "f1a5", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Digg Logo", + "id": "digg", + "unicode": "f1a6", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pied Piper PP Logo (Old)", + "id": "pied-piper-pp", + "unicode": "f1a7", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pied Piper Alternate Logo", + "id": "pied-piper-alt", + "unicode": "f1a8", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Drupal Logo", + "id": "drupal", + "unicode": "f1a9", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Joomla Logo", + "id": "joomla", + "unicode": "f1aa", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Language", + "id": "language", + "unicode": "f1ab", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Fax", + "id": "fax", + "unicode": "f1ac", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Building", + "id": "building", + "unicode": "f1ad", + "created": 4.1, + "filter": [ + "work", + "business", + "apartment", + "office", + "company" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Child", + "id": "child", + "unicode": "f1ae", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Paw", + "id": "paw", + "unicode": "f1b0", + "created": 4.1, + "filter": [ + "pet" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "spoon", + "id": "spoon", + "unicode": "f1b1", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Cube", + "id": "cube", + "unicode": "f1b2", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Cubes", + "id": "cubes", + "unicode": "f1b3", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Behance", + "id": "behance", + "unicode": "f1b4", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Behance Square", + "id": "behance-square", + "unicode": "f1b5", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Steam", + "id": "steam", + "unicode": "f1b6", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Steam Square", + "id": "steam-square", + "unicode": "f1b7", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Recycle", + "id": "recycle", + "unicode": "f1b8", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Car", + "id": "car", + "unicode": "f1b9", + "created": 4.1, + "aliases": [ + "automobile" + ], + "filter": [ + "vehicle" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "Taxi", + "id": "taxi", + "unicode": "f1ba", + "created": 4.1, + "aliases": [ + "cab" + ], + "filter": [ + "vehicle" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "Tree", + "id": "tree", + "unicode": "f1bb", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Spotify", + "id": "spotify", + "unicode": "f1bc", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "deviantART", + "id": "deviantart", + "unicode": "f1bd", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "SoundCloud", + "id": "soundcloud", + "unicode": "f1be", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Database", + "id": "database", + "unicode": "f1c0", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "PDF File Outlined", + "id": "file-pdf-o", + "unicode": "f1c1", + "created": 4.1, + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Word File Outlined", + "id": "file-word-o", + "unicode": "f1c2", + "created": 4.1, + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Excel File Outlined", + "id": "file-excel-o", + "unicode": "f1c3", + "created": 4.1, + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Powerpoint File Outlined", + "id": "file-powerpoint-o", + "unicode": "f1c4", + "created": 4.1, + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Image File Outlined", + "id": "file-image-o", + "unicode": "f1c5", + "created": 4.1, + "aliases": [ + "file-photo-o", + "file-picture-o" + ], + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Archive File Outlined", + "id": "file-archive-o", + "unicode": "f1c6", + "created": 4.1, + "aliases": [ + "file-zip-o" + ], + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Audio File Outlined", + "id": "file-audio-o", + "unicode": "f1c7", + "created": 4.1, + "aliases": [ + "file-sound-o" + ], + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Video File Outlined", + "id": "file-video-o", + "unicode": "f1c8", + "created": 4.1, + "aliases": [ + "file-movie-o" + ], + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Code File Outlined", + "id": "file-code-o", + "unicode": "f1c9", + "created": 4.1, + "categories": [ + "Web Application Icons", + "File Type Icons" + ] + }, + { + "name": "Vine", + "id": "vine", + "unicode": "f1ca", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Codepen", + "id": "codepen", + "unicode": "f1cb", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "jsFiddle", + "id": "jsfiddle", + "unicode": "f1cc", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Life Ring", + "id": "life-ring", + "unicode": "f1cd", + "created": 4.1, + "aliases": [ + { + "life-bouy": "Deprecated - remove in 5.0.0" + }, + "life-buoy", + "life-saver", + "support" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Circle Outlined Notched", + "id": "circle-o-notch", + "unicode": "f1ce", + "created": 4.1, + "categories": [ + "Web Application Icons", + "Spinner Icons" + ] + }, + { + "name": "Rebel Alliance", + "id": "rebel", + "unicode": "f1d0", + "created": 4.1, + "aliases": [ + "ra", + "resistance" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Galactic Empire", + "id": "empire", + "unicode": "f1d1", + "created": 4.1, + "aliases": [ + "ge" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Git Square", + "id": "git-square", + "unicode": "f1d2", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Git", + "id": "git", + "unicode": "f1d3", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Hacker News", + "id": "hacker-news", + "unicode": "f1d4", + "created": 4.1, + "aliases": [ + "y-combinator-square", + "yc-square" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Tencent Weibo", + "id": "tencent-weibo", + "unicode": "f1d5", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "QQ", + "id": "qq", + "unicode": "f1d6", + "created": 4.1, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Weixin (WeChat)", + "id": "weixin", + "unicode": "f1d7", + "created": 4.1, + "aliases": [ + "wechat" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Paper Plane", + "id": "paper-plane", + "unicode": "f1d8", + "created": 4.1, + "aliases": [ + "send" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Paper Plane Outlined", + "id": "paper-plane-o", + "unicode": "f1d9", + "created": 4.1, + "aliases": [ + "send-o" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "History", + "id": "history", + "unicode": "f1da", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Circle Outlined Thin", + "id": "circle-thin", + "unicode": "f1db", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "header", + "id": "header", + "unicode": "f1dc", + "created": 4.1, + "filter": [ + "heading" + ], + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "paragraph", + "id": "paragraph", + "unicode": "f1dd", + "created": 4.1, + "categories": [ + "Text Editor Icons" + ] + }, + { + "name": "Sliders", + "id": "sliders", + "unicode": "f1de", + "created": 4.1, + "filter": [ + "settings" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Share Alt", + "id": "share-alt", + "unicode": "f1e0", + "created": 4.1, + "categories": [ + "Web Application Icons", + "Brand Icons" + ] + }, + { + "name": "Share Alt Square", + "id": "share-alt-square", + "unicode": "f1e1", + "created": 4.1, + "categories": [ + "Web Application Icons", + "Brand Icons" + ] + }, + { + "name": "Bomb", + "id": "bomb", + "unicode": "f1e2", + "created": 4.1, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Futbol Outlined", + "id": "futbol-o", + "unicode": "f1e3", + "created": 4.2, + "aliases": [ + "soccer-ball-o" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "TTY", + "id": "tty", + "unicode": "f1e4", + "created": 4.2, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Binoculars", + "id": "binoculars", + "unicode": "f1e5", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Plug", + "id": "plug", + "unicode": "f1e6", + "created": 4.2, + "filter": [ + "power", + "connect" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Slideshare", + "id": "slideshare", + "unicode": "f1e7", + "created": 4.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Twitch", + "id": "twitch", + "unicode": "f1e8", + "created": 4.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Yelp", + "id": "yelp", + "unicode": "f1e9", + "created": 4.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Newspaper Outlined", + "id": "newspaper-o", + "unicode": "f1ea", + "created": 4.2, + "filter": [ + "press" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "WiFi", + "id": "wifi", + "unicode": "f1eb", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Calculator", + "id": "calculator", + "unicode": "f1ec", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Paypal", + "id": "paypal", + "unicode": "f1ed", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Google Wallet", + "id": "google-wallet", + "unicode": "f1ee", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Visa Credit Card", + "id": "cc-visa", + "unicode": "f1f0", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "MasterCard Credit Card", + "id": "cc-mastercard", + "unicode": "f1f1", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Discover Credit Card", + "id": "cc-discover", + "unicode": "f1f2", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "American Express Credit Card", + "id": "cc-amex", + "unicode": "f1f3", + "created": 4.2, + "filter": [ + "amex" + ], + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Paypal Credit Card", + "id": "cc-paypal", + "unicode": "f1f4", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Stripe Credit Card", + "id": "cc-stripe", + "unicode": "f1f5", + "created": 4.2, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Bell Slash", + "id": "bell-slash", + "unicode": "f1f6", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bell Slash Outlined", + "id": "bell-slash-o", + "unicode": "f1f7", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Trash", + "id": "trash", + "unicode": "f1f8", + "created": 4.2, + "filter": [ + "garbage", + "delete", + "remove", + "hide" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Copyright", + "id": "copyright", + "unicode": "f1f9", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "At", + "id": "at", + "unicode": "f1fa", + "created": 4.2, + "filter": [ + "email", + "e-mail" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Eyedropper", + "id": "eyedropper", + "unicode": "f1fb", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Paint Brush", + "id": "paint-brush", + "unicode": "f1fc", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Birthday Cake", + "id": "birthday-cake", + "unicode": "f1fd", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Area Chart", + "id": "area-chart", + "unicode": "f1fe", + "created": 4.2, + "filter": [ + "graph", + "analytics" + ], + "categories": [ + "Web Application Icons", + "Chart Icons" + ] + }, + { + "name": "Pie Chart", + "id": "pie-chart", + "unicode": "f200", + "created": 4.2, + "filter": [ + "graph", + "analytics" + ], + "categories": [ + "Web Application Icons", + "Chart Icons" + ] + }, + { + "name": "Line Chart", + "id": "line-chart", + "unicode": "f201", + "created": 4.2, + "filter": [ + "graph", + "analytics" + ], + "categories": [ + "Web Application Icons", + "Chart Icons" + ] + }, + { + "name": "last.fm", + "id": "lastfm", + "unicode": "f202", + "created": 4.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "last.fm Square", + "id": "lastfm-square", + "unicode": "f203", + "created": 4.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Toggle Off", + "id": "toggle-off", + "unicode": "f204", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Toggle On", + "id": "toggle-on", + "unicode": "f205", + "created": 4.2, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bicycle", + "id": "bicycle", + "unicode": "f206", + "created": 4.2, + "filter": [ + "vehicle", + "bike" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "Bus", + "id": "bus", + "unicode": "f207", + "created": 4.2, + "filter": [ + "vehicle" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "ioxhost", + "id": "ioxhost", + "unicode": "f208", + "created": 4.2, + "url": "ioxhost.co.uk", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "AngelList", + "id": "angellist", + "unicode": "f209", + "created": 4.2, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Closed Captions", + "id": "cc", + "unicode": "f20a", + "created": 4.2, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Shekel (ILS)", + "id": "ils", + "unicode": "f20b", + "created": 4.2, + "aliases": [ + "shekel", + "sheqel" + ], + "categories": [ + "Currency Icons" + ] + }, + { + "name": "meanpath", + "id": "meanpath", + "unicode": "f20c", + "created": 4.2, + "url": "meanpath.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "BuySellAds", + "id": "buysellads", + "unicode": "f20d", + "created": 4.3, + "url": "buysellads.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Connect Develop", + "id": "connectdevelop", + "unicode": "f20e", + "created": 4.3, + "url": "connectdevelop.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "DashCube", + "id": "dashcube", + "unicode": "f210", + "created": 4.3, + "url": "dashcube.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Forumbee", + "id": "forumbee", + "unicode": "f211", + "created": 4.3, + "url": "forumbee.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Leanpub", + "id": "leanpub", + "unicode": "f212", + "created": 4.3, + "url": "leanpub.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Sellsy", + "id": "sellsy", + "unicode": "f213", + "created": 4.3, + "url": "sellsy.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Shirts in Bulk", + "id": "shirtsinbulk", + "unicode": "f214", + "created": 4.3, + "url": "shirtsinbulk.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "SimplyBuilt", + "id": "simplybuilt", + "unicode": "f215", + "created": 4.3, + "url": "simplybuilt.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "skyatlas", + "id": "skyatlas", + "unicode": "f216", + "created": 4.3, + "url": "skyatlas.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Add to Shopping Cart", + "id": "cart-plus", + "unicode": "f217", + "created": 4.3, + "filter": [ + "add", + "shopping" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Shopping Cart Arrow Down", + "id": "cart-arrow-down", + "unicode": "f218", + "created": 4.3, + "filter": [ + "shopping" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Diamond", + "id": "diamond", + "unicode": "f219", + "created": 4.3, + "filter": [ + "gem", + "gemstone" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Ship", + "id": "ship", + "unicode": "f21a", + "created": 4.3, + "filter": [ + "boat", + "sea" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "User Secret", + "id": "user-secret", + "unicode": "f21b", + "created": 4.3, + "filter": [ + "whisper", + "spy", + "incognito", + "privacy" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Motorcycle", + "id": "motorcycle", + "unicode": "f21c", + "created": 4.3, + "filter": [ + "vehicle", + "bike" + ], + "categories": [ + "Web Application Icons", + "Transportation Icons" + ] + }, + { + "name": "Street View", + "id": "street-view", + "unicode": "f21d", + "created": 4.3, + "filter": [ + "map" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Heartbeat", + "id": "heartbeat", + "unicode": "f21e", + "created": 4.3, + "filter": [ + "ekg" + ], + "categories": [ + "Web Application Icons", + "Medical Icons" + ] + }, + { + "name": "Venus", + "id": "venus", + "unicode": "f221", + "created": 4.3, + "filter": [ + "female" + ], + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Mars", + "id": "mars", + "unicode": "f222", + "created": 4.3, + "filter": [ + "male" + ], + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Mercury", + "id": "mercury", + "unicode": "f223", + "created": 4.3, + "filter": [ + "transgender" + ], + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Transgender", + "id": "transgender", + "unicode": "f224", + "created": 4.3, + "aliases": [ + "intersex" + ], + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Transgender Alt", + "id": "transgender-alt", + "unicode": "f225", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Venus Double", + "id": "venus-double", + "unicode": "f226", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Mars Double", + "id": "mars-double", + "unicode": "f227", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Venus Mars", + "id": "venus-mars", + "unicode": "f228", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Mars Stroke", + "id": "mars-stroke", + "unicode": "f229", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Mars Stroke Vertical", + "id": "mars-stroke-v", + "unicode": "f22a", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Mars Stroke Horizontal", + "id": "mars-stroke-h", + "unicode": "f22b", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Neuter", + "id": "neuter", + "unicode": "f22c", + "created": 4.3, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Genderless", + "id": "genderless", + "unicode": "f22d", + "created": 4.4, + "categories": [ + "Gender Icons" + ] + }, + { + "name": "Facebook Official", + "id": "facebook-official", + "unicode": "f230", + "created": 4.3, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pinterest P", + "id": "pinterest-p", + "unicode": "f231", + "created": 4.3, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "What's App", + "id": "whatsapp", + "unicode": "f232", + "created": 4.3, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Server", + "id": "server", + "unicode": "f233", + "created": 4.3, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Add User", + "id": "user-plus", + "unicode": "f234", + "created": 4.3, + "filter": [ + "sign up", + "signup" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Remove User", + "id": "user-times", + "unicode": "f235", + "created": 4.3, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bed", + "id": "bed", + "unicode": "f236", + "created": 4.3, + "filter": [ + "travel" + ], + "aliases": [ + "hotel" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Viacoin", + "id": "viacoin", + "unicode": "f237", + "created": 4.3, + "url": "viacoin.org", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Train", + "id": "train", + "unicode": "f238", + "created": 4.3, + "categories": [ + "Transportation Icons" + ] + }, + { + "name": "Subway", + "id": "subway", + "unicode": "f239", + "created": 4.3, + "categories": [ + "Transportation Icons" + ] + }, + { + "name": "Medium", + "id": "medium", + "unicode": "f23a", + "created": 4.3, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Y Combinator", + "id": "y-combinator", + "unicode": "f23b", + "created": 4.4, + "aliases": [ + "yc" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Optin Monster", + "id": "optin-monster", + "unicode": "f23c", + "created": 4.4, + "url": "optinmonster.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "OpenCart", + "id": "opencart", + "unicode": "f23d", + "created": 4.4, + "url": "opencart.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "ExpeditedSSL", + "id": "expeditedssl", + "unicode": "f23e", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Battery Full", + "id": "battery-full", + "unicode": "f240", + "created": 4.4, + "aliases": [ + "battery-4", + "battery" + ], + "filter": [ + "power" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Battery 3/4 Full", + "id": "battery-three-quarters", + "unicode": "f241", + "created": 4.4, + "aliases": [ + "battery-3" + ], + "filter": [ + "power" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Battery 1/2 Full", + "id": "battery-half", + "unicode": "f242", + "created": 4.4, + "aliases": [ + "battery-2" + ], + "filter": [ + "power" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Battery 1/4 Full", + "id": "battery-quarter", + "unicode": "f243", + "created": 4.4, + "aliases": [ + "battery-1" + ], + "filter": [ + "power" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Battery Empty", + "id": "battery-empty", + "unicode": "f244", + "created": 4.4, + "aliases": [ + "battery-0" + ], + "filter": [ + "power" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Mouse Pointer", + "id": "mouse-pointer", + "unicode": "f245", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "I Beam Cursor", + "id": "i-cursor", + "unicode": "f246", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Object Group", + "id": "object-group", + "unicode": "f247", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Object Ungroup", + "id": "object-ungroup", + "unicode": "f248", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sticky Note", + "id": "sticky-note", + "unicode": "f249", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Sticky Note Outlined", + "id": "sticky-note-o", + "unicode": "f24a", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "JCB Credit Card", + "id": "cc-jcb", + "unicode": "f24b", + "created": 4.4, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Diner's Club Credit Card", + "id": "cc-diners-club", + "unicode": "f24c", + "created": 4.4, + "categories": [ + "Brand Icons", + "Payment Icons" + ] + }, + { + "name": "Clone", + "id": "clone", + "unicode": "f24d", + "created": 4.4, + "filter": [ + "copy" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Balance Scale", + "id": "balance-scale", + "unicode": "f24e", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hourglass Outlined", + "id": "hourglass-o", + "unicode": "f250", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hourglass Start", + "id": "hourglass-start", + "unicode": "f251", + "created": 4.4, + "aliases": [ + "hourglass-1" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hourglass Half", + "id": "hourglass-half", + "unicode": "f252", + "created": 4.4, + "aliases": [ + "hourglass-2" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hourglass End", + "id": "hourglass-end", + "unicode": "f253", + "created": 4.4, + "aliases": [ + "hourglass-3" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hourglass", + "id": "hourglass", + "unicode": "f254", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Rock (Hand)", + "id": "hand-rock-o", + "unicode": "f255", + "created": 4.4, + "aliases": [ + "hand-grab-o" + ], + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Paper (Hand)", + "id": "hand-paper-o", + "unicode": "f256", + "created": 4.4, + "aliases": [ + "hand-stop-o" + ], + "filter": [ + "stop" + ], + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Scissors (Hand)", + "id": "hand-scissors-o", + "unicode": "f257", + "created": 4.4, + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Lizard (Hand)", + "id": "hand-lizard-o", + "unicode": "f258", + "created": 4.4, + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Spock (Hand)", + "id": "hand-spock-o", + "unicode": "f259", + "created": 4.4, + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Hand Pointer", + "id": "hand-pointer-o", + "unicode": "f25a", + "created": 4.4, + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Hand Peace", + "id": "hand-peace-o", + "unicode": "f25b", + "created": 4.4, + "categories": [ + "Web Application Icons", + "Hand Icons" + ] + }, + { + "name": "Trademark", + "id": "trademark", + "unicode": "f25c", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Registered Trademark", + "id": "registered", + "unicode": "f25d", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Creative Commons", + "id": "creative-commons", + "unicode": "f25e", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "GG Currency", + "id": "gg", + "unicode": "f260", + "created": 4.4, + "categories": [ + "Currency Icons", + "Brand Icons" + ] + }, + { + "name": "GG Currency Circle", + "id": "gg-circle", + "unicode": "f261", + "created": 4.4, + "categories": [ + "Currency Icons", + "Brand Icons" + ] + }, + { + "name": "TripAdvisor", + "id": "tripadvisor", + "unicode": "f262", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Odnoklassniki", + "id": "odnoklassniki", + "unicode": "f263", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Odnoklassniki Square", + "id": "odnoklassniki-square", + "unicode": "f264", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Get Pocket", + "id": "get-pocket", + "unicode": "f265", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Wikipedia W", + "id": "wikipedia-w", + "unicode": "f266", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Safari", + "id": "safari", + "unicode": "f267", + "created": 4.4, + "filter": [ + "browser" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Chrome", + "id": "chrome", + "unicode": "f268", + "created": 4.4, + "filter": [ + "browser" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Firefox", + "id": "firefox", + "unicode": "f269", + "created": 4.4, + "filter": [ + "browser" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Opera", + "id": "opera", + "unicode": "f26a", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Internet-explorer", + "id": "internet-explorer", + "unicode": "f26b", + "created": 4.4, + "filter": [ + "browser", + "ie" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Television", + "id": "television", + "unicode": "f26c", + "created": 4.4, + "aliases": [ + "tv" + ], + "filter": [ + "display", + "computer", + "monitor" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Contao", + "id": "contao", + "unicode": "f26d", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "500px", + "id": "500px", + "unicode": "f26e", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Amazon", + "id": "amazon", + "unicode": "f270", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Calendar Plus Outlined", + "id": "calendar-plus-o", + "unicode": "f271", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Calendar Minus Outlined", + "id": "calendar-minus-o", + "unicode": "f272", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Calendar Times Outlined", + "id": "calendar-times-o", + "unicode": "f273", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Calendar Check Outlined", + "id": "calendar-check-o", + "unicode": "f274", + "created": 4.4, + "filter": [ + "ok" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Industry", + "id": "industry", + "unicode": "f275", + "created": 4.4, + "filter": [ + "factory" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Map Pin", + "id": "map-pin", + "unicode": "f276", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Map Signs", + "id": "map-signs", + "unicode": "f277", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Map Outlined", + "id": "map-o", + "unicode": "f278", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Map", + "id": "map", + "unicode": "f279", + "created": 4.4, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Commenting", + "id": "commenting", + "unicode": "f27a", + "created": 4.4, + "filter": [ + "speech", + "notification", + "note", + "chat", + "bubble", + "feedback", + "message", + "texting", + "sms", + "conversation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Commenting Outlined", + "id": "commenting-o", + "unicode": "f27b", + "created": 4.4, + "filter": [ + "speech", + "notification", + "note", + "chat", + "bubble", + "feedback", + "message", + "texting", + "sms", + "conversation" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Houzz", + "id": "houzz", + "unicode": "f27c", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Vimeo", + "id": "vimeo", + "unicode": "f27d", + "created": 4.4, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Font Awesome Black Tie", + "id": "black-tie", + "unicode": "f27e", + "created": 4.4, + "url": "blacktie.io", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Fonticons", + "id": "fonticons", + "unicode": "f280", + "created": 4.4, + "url": "fonticons.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "reddit Alien", + "id": "reddit-alien", + "unicode": "f281", + "created": 4.5, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Edge Browser", + "id": "edge", + "unicode": "f282", + "created": 4.5, + "filter": [ + "browser", + "ie" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Credit Card", + "id": "credit-card-alt", + "unicode": "f283", + "created": 4.5, + "filter": [ + "money", + "buy", + "debit", + "checkout", + "purchase", + "payment", + "credit card" + ], + "categories": [ + "Payment Icons", + "Web Application Icons" + ] + }, + { + "name": "Codie Pie", + "id": "codiepie", + "unicode": "f284", + "created": 4.5, + "url": "codiepie.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "MODX", + "id": "modx", + "unicode": "f285", + "created": 4.5, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Fort Awesome", + "id": "fort-awesome", + "unicode": "f286", + "created": 4.5, + "url": "fortawesome.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "USB", + "id": "usb", + "unicode": "f287", + "created": 4.5, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Product Hunt", + "id": "product-hunt", + "unicode": "f288", + "created": 4.5, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Mixcloud", + "id": "mixcloud", + "unicode": "f289", + "created": 4.5, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Scribd", + "id": "scribd", + "unicode": "f28a", + "created": 4.5, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pause Circle", + "id": "pause-circle", + "unicode": "f28b", + "created": 4.5, + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Pause Circle Outlined", + "id": "pause-circle-o", + "unicode": "f28c", + "created": 4.5, + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Stop Circle", + "id": "stop-circle", + "unicode": "f28d", + "created": 4.5, + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Stop Circle Outlined", + "id": "stop-circle-o", + "unicode": "f28e", + "created": 4.5, + "categories": [ + "Video Player Icons" + ] + }, + { + "name": "Shopping Bag", + "id": "shopping-bag", + "unicode": "f290", + "created": 4.5, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Shopping Basket", + "id": "shopping-basket", + "unicode": "f291", + "created": 4.5, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Hashtag", + "id": "hashtag", + "unicode": "f292", + "created": 4.5, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bluetooth", + "id": "bluetooth", + "unicode": "f293", + "created": 4.5, + "categories": [ + "Web Application Icons", + "Brand Icons" + ] + }, + { + "name": "Bluetooth", + "id": "bluetooth-b", + "unicode": "f294", + "created": 4.5, + "categories": [ + "Web Application Icons", + "Brand Icons" + ] + }, + { + "name": "Percent", + "id": "percent", + "unicode": "f295", + "created": 4.5, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "GitLab", + "id": "gitlab", + "unicode": "f296", + "created": 4.6, + "url": "gitlab.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "WPBeginner", + "id": "wpbeginner", + "unicode": "f297", + "created": 4.6, + "url": "wpbeginner.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "WPForms", + "id": "wpforms", + "unicode": "f298", + "created": 4.6, + "url": "wpforms.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Envira Gallery", + "id": "envira", + "unicode": "f299", + "created": 4.6, + "url": "enviragallery.com", + "filter": [ + "leaf" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Universal Access", + "id": "universal-access", + "unicode": "f29a", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Wheelchair Alt", + "id": "wheelchair-alt", + "unicode": "f29b", + "created": 4.6, + "filter": [ + "handicap", + "person" + ], + "categories": [ + "Web Application Icons", + "Medical Icons", + "Transportation Icons", + "Accessibility Icons" + ] + }, + { + "name": "Question Circle Outlined", + "id": "question-circle-o", + "unicode": "f29c", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Blind", + "id": "blind", + "unicode": "f29d", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Audio Description", + "id": "audio-description", + "unicode": "f29e", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Volume Control Phone", + "id": "volume-control-phone", + "unicode": "f2a0", + "created": 4.6, + "filter": [ + "telephone" + ], + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Braille", + "id": "braille", + "unicode": "f2a1", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Assistive Listening Systems", + "id": "assistive-listening-systems", + "unicode": "f2a2", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "American Sign Language Interpreting", + "id": "american-sign-language-interpreting", + "unicode": "f2a3", + "created": 4.6, + "aliases": [ + "asl-interpreting" + ], + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Deaf", + "id": "deaf", + "unicode": "f2a4", + "created": 4.6, + "aliases": [ + "deafness", + "hard-of-hearing" + ], + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Glide", + "id": "glide", + "unicode": "f2a5", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Glide G", + "id": "glide-g", + "unicode": "f2a6", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Sign Language", + "id": "sign-language", + "unicode": "f2a7", + "created": 4.6, + "aliases": [ + "signing" + ], + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Low Vision", + "id": "low-vision", + "unicode": "f2a8", + "created": 4.6, + "categories": [ + "Web Application Icons", + "Accessibility Icons" + ] + }, + { + "name": "Viadeo", + "id": "viadeo", + "unicode": "f2a9", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Viadeo Square", + "id": "viadeo-square", + "unicode": "f2aa", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Snapchat", + "id": "snapchat", + "unicode": "f2ab", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Snapchat Ghost", + "id": "snapchat-ghost", + "unicode": "f2ac", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Snapchat Square", + "id": "snapchat-square", + "unicode": "f2ad", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Pied Piper Logo", + "id": "pied-piper", + "unicode": "f2ae", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "First Order", + "id": "first-order", + "unicode": "f2b0", + "created": 4.6, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Yoast", + "id": "yoast", + "unicode": "f2b1", + "created": 4.6, + "url": "yoast.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "ThemeIsle", + "id": "themeisle", + "unicode": "f2b2", + "created": 4.6, + "url": "themeisle.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Google Plus Official", + "id": "google-plus-official", + "unicode": "f2b3", + "created": 4.6, + "aliases": [ + "google-plus-circle" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Font Awesome", + "id": "font-awesome", + "unicode": "f2b4", + "created": 4.6, + "aliases": [ + "fa" + ], + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Handshake Outlined", + "id": "handshake-o", + "unicode": "f2b5", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Envelope Open", + "id": "envelope-open", + "unicode": "f2b6", + "created": 4.7, + "filter": [ + "email", + "e-mail", + "letter", + "support", + "mail", + "message", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Envelope Open Outlined", + "id": "envelope-open-o", + "unicode": "f2b7", + "created": 4.7, + "filter": [ + "email", + "e-mail", + "letter", + "support", + "mail", + "message", + "notification" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Linode", + "id": "linode", + "unicode": "f2b8", + "created": 4.7, + "url": "linode.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Address Book", + "id": "address-book", + "unicode": "f2b9", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Address Book Outlined", + "id": "address-book-o", + "unicode": "f2ba", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Address Card", + "id": "address-card", + "unicode": "f2bb", + "created": 4.7, + "aliases": [ + "vcard" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Address Card Outlined", + "id": "address-card-o", + "unicode": "f2bc", + "created": 4.7, + "aliases": [ + "vcard-o" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "User Circle", + "id": "user-circle", + "unicode": "f2bd", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "User Circle Outlined", + "id": "user-circle-o", + "unicode": "f2be", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "User Outlined", + "id": "user-o", + "unicode": "f2c0", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Identification Badge", + "id": "id-badge", + "unicode": "f2c1", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Identification Card", + "id": "id-card", + "unicode": "f2c2", + "created": 4.7, + "aliases": [ + "drivers-license" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Identification Card Outlined", + "id": "id-card-o", + "unicode": "f2c3", + "created": 4.7, + "aliases": [ + "drivers-license-o" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Quora", + "id": "quora", + "unicode": "f2c4", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Free Code Camp", + "id": "free-code-camp", + "unicode": "f2c5", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Telegram", + "id": "telegram", + "unicode": "f2c6", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Thermometer Full", + "id": "thermometer-full", + "unicode": "f2c7", + "created": 4.7, + "aliases": [ + "thermometer-4", + "thermometer" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Thermometer 3/4 Full", + "id": "thermometer-three-quarters", + "unicode": "f2c8", + "created": 4.7, + "aliases": [ + "thermometer-3" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Thermometer 1/2 Full", + "id": "thermometer-half", + "unicode": "f2c9", + "created": 4.7, + "aliases": [ + "thermometer-2" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Thermometer 1/4 Full", + "id": "thermometer-quarter", + "unicode": "f2ca", + "created": 4.7, + "aliases": [ + "thermometer-1" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Thermometer Empty", + "id": "thermometer-empty", + "unicode": "f2cb", + "created": 4.7, + "aliases": [ + "thermometer-0" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Shower", + "id": "shower", + "unicode": "f2cc", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bath", + "id": "bath", + "unicode": "f2cd", + "created": 4.7, + "aliases": [ + "bathtub", + "s15" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Podcast", + "id": "podcast", + "unicode": "f2ce", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Window Maximize", + "id": "window-maximize", + "unicode": "f2d0", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Window Minimize", + "id": "window-minimize", + "unicode": "f2d1", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Window Restore", + "id": "window-restore", + "unicode": "f2d2", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Window Close", + "id": "window-close", + "unicode": "f2d3", + "created": 4.7, + "aliases": [ + "times-rectangle" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Window Close Outline", + "id": "window-close-o", + "unicode": "f2d4", + "created": 4.7, + "aliases": [ + "times-rectangle-o" + ], + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Bandcamp", + "id": "bandcamp", + "unicode": "f2d5", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Grav", + "id": "grav", + "unicode": "f2d6", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Etsy", + "id": "etsy", + "unicode": "f2d7", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "IMDB", + "id": "imdb", + "unicode": "f2d8", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Ravelry", + "id": "ravelry", + "unicode": "f2d9", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Eercast", + "id": "eercast", + "unicode": "f2da", + "created": 4.7, + "url": "eercast.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Microchip", + "id": "microchip", + "unicode": "f2db", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Snowflake Outlined", + "id": "snowflake-o", + "unicode": "f2dc", + "created": 4.7, + "categories": [ + "Web Application Icons" + ] + }, + { + "name": "Superpowers", + "id": "superpowers", + "unicode": "f2dd", + "created": 4.7, + "url": "superpowers.io", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "WPExplorer", + "id": "wpexplorer", + "unicode": "f2de", + "created": 4.7, + "url": "wpexplorer.com", + "categories": [ + "Brand Icons" + ] + }, + { + "name": "Meetup", + "id": "meetup", + "unicode": "f2e0", + "created": 4.7, + "categories": [ + "Brand Icons" + ] + } + ] +} diff --git a/functions/kirki/assets/vendor/fontawesome/fonts/FontAwesome.otf b/functions/kirki/assets/vendor/fontawesome/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..401ec0f36e4f73b8efa40bd6f604fe80d286db70 GIT binary patch literal 134808 zcmbTed0Z368#p`*x!BDCB%zS7iCT}g-at@1S{090>rJgUas+}vf=M{#z9E1d;RZp( zTk)*csx3XW+FN?rySCrfT6=x96PQ4M&nDV$`+NU*-_Pr^*_qjA=9!u2oM&cT84zXq}B5k!$BD4Vu&?bM+1pscNs?|}TanB=Gw z>T*v6IVvN? z<7If|L2rZi0%KIN{&DZI4@2I75Kod~vRI*C@Lrk$zoRI`^F$Oyi5HuU*7@mriz!*p z<-;A`Xy{#P=sl02_dFc|Je%0lCgxR=#y~GBP(blD-RPP8(7$Z9zY}6%V9+^PV9-}S zeJrBBmiT&{^*|I7AO`uM0Hi@<&?Gbsg`hd;akL06LCaAD+KeKR9vM(F+JQ1r4k|#^ zs1dcJZgd2lM9-ss^cuQ?K0u$NAJA{;Pc%#+ibshkZ%Rq2DJ}Id^(YlWJx)DIMNpAc z5|u*jq{^s9s)OpGj#8(nv(yXJOVn%B73xFkTk0q37wW$hrbawy4?hpJ#{`cMkGUR8 zJl1$@@QCv;d1QK&dhGIO_1Npt2c7Ttc++FR<7`t1o^76cJ&$`{^t|GE>K)k3GNh{I92zC*(@N#&?yeeKjuZ6dlx1V>2carxUub+37cb#{GcawLQFW@Wryy^!4biE!Rvyz z1Ro2&68s>zBluk~A`}Rv!iR*c@Dbr8VURFXxJ0-?Xb@%!i-a}8CSkYmfbf{`wD2Y2 zHQ|TCuZ2Gd?+E`8Iz?iUS~N~HT@)&sEqYwENVHt^j3`EwC^CsML}j8zQLCs&bWn6u zbWZe&=$hzV(PyIXMgJ8IdI`P!y)<59y>wnnyw-WednI|Lc%^yedzE{&dmZ&U;dS2Y zC9k)=KJoh6>nE?fUc)p+Gqf+QqQ}#Z(Ua+EbTA!ChtYHBC+G$AVtOSVNypHsw2f|| z57Ecylk_F}HTnwuKK%v#9sN5!#306#5i&|f&5UPs%mQXL6UD?a$&8iBWb&C3W*5`Q zv@>1IKIR~ElsV0uWu9j)F|RV0nGcyynO~Sc#7N8&dy5s~(c*F9N5zxH)5SV*n0T&u zzW7P;)8bX)2=RLHX7M(0tk@t<5~ql*;tX-NIA2^QwuyI%8^q1xc5#<@ulRuYi1@hp zwD_F(g7_uz8{)Uc?~6Yae=7b${Ehf~@h$Nk@$ce$;z9ASgp!CPGKrr=CDBO6NhV2x zB{L+mB~M7gB}*jBBr7HBBpW4LCDD>N$##iRVwR*yvLv~ZLP@ElQc@#nl(b4ZC3__M zB!?u&Bqt@$NzO|yNnVz`E_qY(w&Z=uhmubvUr4@@d@s2rxg+^qa!)cS8J1E~zSK)9 zk@`rL(f}zd9W5OveN;MGI$f%hhDqm2=Svq!mr7Si*GSh%H%hlkqor}u?NX!EEKQSU zNpq!z(o$)qv_@JlZIZT0cT0Pu`=y7aebQ6Xv(gu&FG^pLz9GFTeMkC%^dspF>6g-P zrT>xsB>hGDhxAYBkaR@mArr`GnN;R0^OLD$8rc}xc-dpJDY770sBD((aoGadV%bvJ z3fUUjI@w0qR#~(xPPScUl$m8|vMgDytWZ`etCZEq>Sax`HrZ}jk8Ho}u&ht^oa~~k zU-p{pitJt4N3t8TFJ<4#{v-QI_KWNf*`Kl@*@(A?x4@hBmU{bo`+2LpHQr;q$9q5K zJ;gi7JIs5Y_Y&_F-p_b%_Kxx1?!Ci1!#mHr)Vtc-?%nR)<9*2cg!eh`7rkHie#`s1 z_YLoFynpom)%#EHVIQ6kPx>cKQ_h zRQS~TH2duK+2?cA=d{lYJ}>)R@p;$hBcCsPzVo^5^M}u%FY*=oN_~BO1AIsMPVk-L ztMi@Xo9LSspA==WB&S*uVl4V7bBsZ6Ow%WsQuJUl%vOsv%FNx7`s5UAW~xPRj!Q^N zwi+UnqRjDntAR@;SgfW*vp(6Brq42&k|Pt0u7@erYKn`qB*Yt|l44BpR&$iaU;sM- z4d^4IlC0K*WWCuG6&q_xHzvW8D|?VmP2oxsjM1iyl%%N4$e09kOp@NLPtiwN&H6aA z-eTa;a#fN{F^O?WQSqF~OEH*?dP|xqDK%Li3CQoKxK{5cQ&V=BV@$F7Xc#FxtWojs zXNfkM61h7$%AA;DPB2qoM4Ov7+011Nf%sPRE(aRk;t@!SiLC) z(4}(2HO9bnN2Nq^J%e^*xrU$#s~$RKF+`d5K(ClYZt5*oeM)3>R7_%elsPso3MS`4 z=E0Mj$&@IdAbalxm6OD4U#Myq|K@ z-&JTzbUk*Y0-^+{&H*ME<4mrECC04R8!ZMC(2?u*ebPc5H;tpCU=m%_jxw7~>F%j@ zrQFl$N~Wf`Uvh+X%>u^=z!V8t`pCG{q@?>vOLA0Fl0G9QDJnVY@1Ddb#95Q{QE_nz z(2-1F6PRS~8IxqP=wV8rtMRU$!gLw+F;Pi+V=Q2cGRB&cV@%1(K)mFrc%%OB*-1@# zFgILx%zA6OUJtY}rKE5z#efjS0T1cTZVdO+9M=22Ow*gK34rH*)?hLxWC7zvB>|5{ z#sH12*7O8mIkT%*9G`Hk>dLs;G!k%{O^NzUkTT2tE?TUH)Z}POWNL~_)Z7`ae_Ylj z(7?KJE)jQ&Hb*3o*rWtwBJh@*Xep@{0}KNAUT+2=21z$2x`_$+QVf~#34kTq)f2bC zy5teaYIF&ri#6S?KM*c=&h^$+?f%Ff49eYLDyV~)MBo$Pac=%%%@&IxHZ~dv3zK7v z)+Z&!aB~(1vu4#BfHILT-f*QjQFJ9zQ(O;j%x->){2xR8tH4$FUnM|M7YE+2!8H+| zWQx|On?W8yq%DaSP+~AC(dGnwTuhWj&oP~wvyCRJen%=uy)iDqm|)FJ(pxO9f_SqD zCJAN`7%eq6S|0`S9FuB|F{OY|rnuN6A;l5}g3RfWXkb3jsU|ZpPHK`V$znApB!a$$ zM&b>rphC>h6sWK0Bt38=XbW>{Od`+XNK_^W~`uM1%SkU{?CLrT| z*5rU5a4DAt4QsU|SYaF~z_MnbZd3}WFFoi`11Pc7q-YRfpk=(?HFGY!oON*L+>FN= zrpV-2sAV;nKn7Cumed63yhYD(iyLEHoL(PiGR3;=k4uAd$Ws$QzZ>JBRtl%)qmlt( zlrcu1tdC7hu*PwHfTp+Wtez}SISAlE3{#BBi@~MV=s9VU~oa*A29jU;4uHLv)t`=cj zMkBD=0}Gn;Kx|?3|5QxeB>h7H-63>M1rORUPw)_81!IgVnE33zbVFL~|4d{TmH>B{(ST?=mZBvFKDQ zs6e71u%5ZNZgM&lh)@6d3N{!aL268{00aWAef0lv1i^_}z`hyP% zyasc1UyCFdAscUwN{$1kE)jexW8Cx^)1woB65NEk+OUEqN;12DT?I)dX#Iaq$3L>1 z0{Z(M#~c61xyK|v7Q!EnR;&(y&k3ik}S zXTlwpYD`!>eg3q#=~2@ogTnwcEEv)N8U~)gNue|5Zu9Vhq$UQ zm=4KMxM#pU6K(*VJ`HXtpAMkY0d#r@+&Z`cZaTnC2e|2O?BUZ~t%L(~5I_e3bPzxX z0dx>R2LW^tKnFpq!O&_jzy$+bFu(=7JFw8*!oumUh8A)!p+c~``Gq=nX{h@Ft%X3% z5Wo-u7(xI;2v-IbLfjP=0TLY`(Lp;p0M!Ag4nTDPssm6Rfa;(#p#T>OaG?Mf3UHzB z&MfAN0W@?*-1IoE7(i!0*$e=k0iZLWYz8zr1Dc!>3NSJ7geGSI+)RL*32;EO5TIEI z&@2RK76LR20h)yX%|d1ZTo}NG0UQu4Bn;rfLgIqB84nAECszh=Krr33X>d=6I|%Mz zxI^I9!5s?s47g{)9hRo&)&V*omkuiHfLuBtmk!9K19ItrTsk0^ZaOp=1PulO91uze zgwg?_bU-K_5K0Gx(gC4#Kqws$N(Y3}0ikq2C>;pDE*Ri~0WKKefIhllfC~Y*5P%B- zI3SA-$f5(X=zuIbAd3#jq6+~y9l!xibU+gw&_o9`(E&|#KocF%L`hz;)DWmLP3;5fv}-Kn^2%lD9|PpXcG#w z2?g4O0&PNpHlaY9P@qjH&?XdU6AH8m1=@rHZ9;)Ip+K8ZpiO9yi^YTHyZbQTB``tr zgIpb(AMAd(*f?muyEF4$ViPofhWp)2_v3ym^WC`x?nk)$vC#ck*h}=pfDBO)G+>I#QjVRoW zDBO)G+>I#QjVRoWDBO)G+>I#QjVRoWDBO)G+>OYsYl7UmCTO7>(Ly((g>FP{jT5xc zjcB18(Ly((g>FO(-G~;t5iN8hTIfc!(2Z!3d+HXsN3_U|XptMyA~&K%?h!3=BU%JB z4s&B!kI%_aQR>IrR=x#+$+m z;mzdD<1ON?aK+rWLd3m{XXDlKF7tlj5kBJc_#(bPKaf9_AIz`iH}m)K`}oiCFYx>M zm-%n=-{;@vV?KeH`Llwpf*3)(AW4u1G4l#RpWvL}qTr5jrf`mMv2dxdS=b@mD?BVb zC463ZN%*qxvhY3O_rhO=4pE>e9OBP801EGXWnOSFyAwG zTv6*$;wj=_@l5eN@nZ2Zh*qaSY`R=r4N>V1@qY0M@g?y!@q6OWAO?L){EI{=882BR ziIpTnM7d02lhi{L`JCic$vcvdC7(mg_&<_gB)>zHn1$%@bchNskS>9k@H5g)QoS@! z+A2K_vEG-ZuS?&8IPWLY-yx#=u>zUPB{q&{POCP9RCmd^r+u&(rp@QL@y@~QS|_v!Z8?{m!OIiHIVSH0@lOL9!ke`vC zm%k`~TmGs1M>&>{C?twN#iNRuig}8ainWUMip`2>g+Y;`$W@dm8Wf$1Ud1uRDa8fF z%Zkg2w-oOyK2dzBxT(0M_(gG7NhzgDwQ`Jdsxm}5Tls`?vGQr%R{`icA`e!hMW`33q-@SEfp919`B@V$_Hqg<(g&v8BX9I=vHqtmmC?CQiTI)~<@i|)VblQ3H8$=5wV+lKpUN(tkX3=CokeSoksl^f7X+{TA zIF)6dh2AY2%Q6!H89e$99_(Y*(NEJ_CXL1~&@gHZ!{tKhI3Nu-(Ha=IyBUSBv$eHT zgB60#)|^Z&R`8NoCM!ETi&2iFnc+MaF`j>W($I9M|{Fdn9I0?i2Fo&$U{Z$8c3Z@s||tuw%~3Wi@-Qn;%~T~t_BQle$H z(%4@xz~aD7*k|q?4X(!xeC$IzBLc~&skAbfW@1}K{oBs2(=e?$os8k2kr~4h zJ2O0>T)++~{L*NRd_Vq^9U6!SiC8JPP*C~V5;d_4fTOkv@S@>s{2b%v$CGe8J!BW$ zWJe|m8oOG%dsIDzy=8keLkF>xe{|R014mR+Y`{OWCs<;@^T<4GVD_^hV!}nQuYO;{ z5XCB*xT4s7O{^guzsd)gfXJQqzy2L25&H1IC#;IT7k4stQAl`4B!EN5{B z%pdSc|Jk$sj4=3m_)QJ7aLt;9j9?+l;Lq7qmdS+Ivq3g^vuWr9Ori3g?wip|f$O8$ zKoRc7K@j_H<&QM^hJ3>(Z90(msVr_2V938oGun{|A+`@ijA8@%`OHKb zX4RUNno+1Fsm@K#$_0FLSyEoIDzhc4IalLA zb%1SMvT*GQkdEyv6C56npQmv*NZ^3*=Jo3^6G|OS!ffJ!A0cyp)U<7ESpTewESXBe z$ZR6j5FVLIBA1gywK2K6+Nce~K6us!{FM628+DDZYQJ1{Yuj%-_7@*4Jyh0S(blr7 zQ-nqAuHCuK`7N>MB2OiJDPqjMF*dWAQ9BcC&ID(IiorKn=&gOoj_sZd&SY^p4GIN6 z$ujr8`Q{!onZ=4VG(+JDv?mkDM~vf;4L=7e7Nj%+!^8^nu>vGj-o{J^t(iXu^z1a6 z0mZ>6lSYiTBz1Onc}b2oGRqXbRTVgdgMEsSh7)?(We#mOJJ+mOJP0 z(|Qi(A6B=uRoAs@&vhI)^SmmM?4jyV%qZQ#(?JiOp< zO{!&p^j-9@LQu~-JXr0BLP+N0wPX}7F42$#vX!5n)@nGY9y%j9*xJ{XrX>k@D<2ov z;k9@ap064LgRzKg!4DG~FhVD&S$f$cv~yq~%`67qSK?$420t)W6Gjt0(Gb6%U_j&E zc%%E!0Zp~w;f&=Ih*)jhQCFX?&9BMdRk$mb@co-hTT9zZMTPrL6hE)Vh1dg|@K!K* zTZoNO{z3a$X(ofl(}7b#UtVCzXvSV&Z`U&KzyA9B4F4p{ELy#Kk(SYcNpULjSf-&I zC$NOGes#q~y9(8uDPS^NbFd%F(Htv)nK+TfCuw38tlM_BUwZ`qLE~4!4&lS}a0Gsy z)i@LaJOb1^3B(c{rnOE5SBkCp2Rcz0O>36T0c(Z(aF&Ay)hz3moP-^ynaT#zZENX=Dem$rBj#FkIX-f$24$w)OS~yvH)( z;A7l3ngKsZp>)h9ckmtOY_fr@okIf1XkZJh%-n6NwH5?e3U*p|sN8HWU{vQg zCL+RkEEHe`i*@)@mf6%Uu+exiEpRDX8aihIL)OnReaLhgw+fiIp;iYz59ArZ1N^$W z8he9^5ti4N)s@r@Zyem{Z|+Sm1c_1NM_Js=uBDk{aG(Y}0$W-k%aA^j1y>(PYAw(T z+zKnO1%98!@D$>A;fbvRM)^KWHGP|@VZn;bpoa!(Sl4WS1|n(q!%|jb6E0=7PP@Zy zghoFgO>licKEUwAAHdZF*9VMpB6Jp?IRcHAdma(6LTQ!$uG!tPgz^r867LH@VA>{RgLukD%WQ6OsZCj^x4qz~8LrOebNhkr? zhA-l$aTnNsJcl$2$S9Iwjw&rKE3POGC>Jna&>Jp23*GpIQ^=f)f@R}>BQhZ34VuY? zuC(OB3vdOMU^W>c_GFn)xdG!Q_8Z-3M%jIh-&wc2wL|T=E9h*@$t=;PE#qgFWaMP2 zop%M91+ATRTE++?hk@I073jMNb_UCs&9<0cGt&Zt&uwAA!5GR1s|QvN61bM;yqFCe zz`4P-q;?feYH=;olG|l#X$fGIj>qtqNu8Y&vpO-(hm zc5O#vb9>EhY+ptD@9Hhso7N_RG2mP_3t9*N6mMs3^hANHvM2Ut83!nEPIqgioI}Ap z1!jzd;1ZSz)l6Zhy;JQJHyHgbL5aKZA zb(hGdvC@4#?Ry)wjXk9YGCG;OyqzUk>a3l0&3WL4tcPibPCGDuVP>#WUrwqV58>0~87#&v_za1|68Z4FK;8kSI~i6PbuJ&@4!#2{Vqkt@6*CBW zq^@pPT}^!eGrVzlV@XL_NqKPqQ_g}FCW-|#)7xu1ZSDo{#df;4m&vN%*__AV_vnc< ztWQ9f&-r{KOo>#5r5CZsjn6eVW?h8olB$@4yBkiYA0i8Ii+|h6)AqA!ybzBiW646s z&sK&@$s>5K20Z3KVyGY+Z7N$isbziwvcf!l0qZni2*D?ux8bmZ{_kk7Z*FE>ejwv4 zbdHCs&{^n!r=t+A@o*I~+Qz*6`kiWWejWLhq>&kaPQ)SF!4UxyB<#v;-jSl>Gy!K9 z_c!nB>ePHEWR}vf9AoeXS}I(AX~Ua%53qTT!;@|Wis8qh2iyWg3#%=of#GLn7MRT{ zbECO46BI#;)taIiFG#WW?AHQuh+RiB*5cfVZ=^pjXXMwjsOc zkew0cLXVfj0@@R=uF#&k)P3!ms3YH}Sa6as z-+zA+GXolCB%%>8a~>xQfqOv4<#Gf8qw+ZQUkE=Sl(6)xtKZdNR{`&U2{nTY%Z=Gy zQU@?kaW+rLjjCYpK2>ky-cG170gvZ*bTZ5S3j(38Pj8ECkL-!*sp+ZT(;%wrtK`(y z01g4q*A56nU{!-dJel_Py5?r>pr_+!zTJ*f@D^OGV%D(a3?88IT_J;)u-qaoyN@E#8N z^ERHLWduYvems$BhX*iN))}m0fC1Zjm{SewU=_fC!sS8&%w(Ed<}e?+tO*DVTnibc zjb?5OCxLy>IcnXjVQj0odcrtYOZ@ACHWTkB^Kz9)IrK@#E)UG?-_@ zyb8?I6c$t!s-r5ImuYEjb4^RDid!giOzq+bATcBw*$R$JIHO+5-eYcF4-aNs#yc&Z9}$OTab3Op!K zsi#?r5kN3(ctA*k8KJ|2W*Y1@b#+WBhy@XXJaSCQxr>XI5JASqMq`;Kld-bAz#$00 ztpcFt_QsBe-J-5)tZZ$AWh9Fys_?{Bn4R>8<~U#wLVSWzwKg=i)@Xj{dgtn?uS85y zNkc=G_ASRGep6Lr12>{F&gJADOr+tAHu+dj#*69~_v}8z2!d$r2jgt0YpT~ab=W(b zJ47G74Bb=05~M-RRIo}0>@4_3J@h$l%(1K^1eme4Lj_D}-_=l8r>SE?z=CZ86S8e& zIUj#3z}tqF^W95v5&=;zj_qMSouCH^rw1L}n$iK99dvpj=Sq}-Dj0CFsFSua$FYND zPO;olnE~&00?SOH$8oJ(gUJSmPspUu-~}@~tUIj*+5$_hX?G^01!GoJsIuU3WGsOG zeQ|v1iw{E-Ah;}8oko^b*A#PdasuQbgi|n#U^C0)=GoF(@|bS?1w>+UwkN0(S{Y$D zjA$O7#}Jli^7AV*8gm0cg@;4M8|<=lUq&}-bjUY<-uw33dw(+NiCU5+%q}j@)-ak$ zV^=|)i7GM?C@UchsS@NB+89kuQDJqV8u;ga?>H6f4(GwZl=v*SS`x%#fq>y#dXDBC zQ-e)v&&jOPGW^b}cJMHP-VQ#;_zG|&m|oztI3heD0H^c?uuv@gfh7oFhvfqi-60R*koEXQCOtVrdnj{zmqE>_i9bPb`GX62 z%G49LQ6IZ8mJvQn#{n`8INIQ-m3v0MgE_nfH^4OB@{rAN`_R8NF9v=C!@fh5W57ik%-Mi>^{T} zAofqh{)IFXkmhluc?M}pk>(20Qb_wa(#9a|5E``xjrtsoo`yz$h{jApW459(SJ1=L z(8JwmtQd{mfyRE0#@D3Q85wBC1vJxu!iLbSwP*{{<~*LE-IaVGUYz04?rEOYWd2m!c<6qo?@jsR*<}jaD?G6O-_{*1Urv_MvB%pml+0-2t@jI9m56dX`1&r=tz)(Z<)&rip0N z%V={r+TxA2^rJ0KwAGFxC!)wO6uAUNnowi|iu?dYeupA|N0EP_ZFMNhA4M%e(V-~% zB^3P~idltXE~D59DE0=@uRw82P+SL!yMy8%NAaH_Lpd_MixMWIgnX3n9ojw$ZNGsM z(^1kml+=onXQ1RRl>7!t{uLR=BI9giT#1Y^$XJYwmyq!-Wc&=7#voHYGQEaUSd=mz zr96&O)}tL1+CifoImrAJGS?%^Ok|mbEOU^h8d<(XmLX)VM5&c1Z4OF*3Z)xR`T)vU zf->GgnWIo<5y~2mc7~#zsc7f(C|irN3sLq*DCb3#%SX9wDEBv%>qL3aq5N=^-+}T! zK?OdjU^yx%K?S!^VHhg%Mn&PMC>s^EqoT8@I0zNjppu!WWF0Emg-U)!rK?bBIV$r) zWihDiYgDd4V8{4#1uMy)hzZ9r`lYF~xgO{l#ab@ZdokJ0YwXm=&r zeFJqphPpCP*Bhw27InXa_PmAmhoA#-=-?D|$P*oU5*_*o9af{m&!8il(UITK(dp>u zPw3bW==d&l!UvtWicU^IC&SUnbae7CI{7?0wF#XXM5mucr@PUa{ph)JbXJ7UJ%Y}) zq32oj{2g>Y8l8U^z3?`=a2#EnjV^wUE-BEZqv*w@sDCGV`8;}c3VPiez21r5SdHE| zhAzjU%YEp|W9Z5!=*=tWYCF2tjNYn1Z&#tWucCJX&^y`a-EHXIBj|&T=z~r)@CX`s z1%0>_efSdkh(aIzfK(Dxss|NMo1u%aJ6M?c1+A06nYN$97~(e0z?XMgl_8M?Cr z-T4;%`ULv*F8b{&^t%cDu?78CgYHg8gHebqrBFBpTm7Eh6pu&oj!^t*6#son@FgXT zr-U~tQ3WOHr9@v*USlbUQ`6s4%nFKWqQotfWHBY3LU{*JJ_5=olk(j``F=<#Kc)Oa zD8KKhhlVKsbCjxyQct7;HB{hoDzJ@W=TMpwO1q01b(R|aI5qkkYRqhEjDZ^SCH1hJ zdbo-j8%>Rir^YX&#@A631k{9TYQkx1!e`WkFQ^G$QI7;tk6fZ2y+l1WhI(u-HL;PJ z_$4*z32IUbHR&uhc`-Hl87ky)D&!!g%cXR`QK3RAl%+z0snEx%&{}GS7d3MX71lz9 zy-m%UOwC?Q&Hj;^6GqJ;)Z7Ww+|AV7R%-4`)Z>2C6C0>`YpD6}Q420m3l-F&`PAYo z)RIc-$w#Osd#I=Q)KkgSvL)2hfz;EVP|LScD>hOqFHx&9sMYhRHBxHrIBIPYwe~M+ z-4W{9)71J|)cQ5l`hC>;@2CwTYQq+4!w1yHd}`y%)TW8lCL^`!3bi?w+FVC%iKn)1 zptk-%MFvrkH>qtpYTGp`Y7Z6l3l+0~iuI&oXH&7yQn6`NY&)eNO~v_BaX(P;CMy1I z%CLemyh0@;QrqWI+drieuTx21P|1aqv5PWwQz=erhk-KJQr7cSY9f`kfl7~~GJdAA z)=@jnRCXbiGnL8}P`S@jc|}ydlPWkt6+c52S5w6!RB0+zrlraiRK=TAivl7{e^0k;pVIJl=A~4Sr zmb^S=Ab*r20=5#I5klDC;VB10R?)*D;Aab@fkPikN5!xh;yZTFK>k%nmXhqoQ!w0D z`nqozt^_Q@9)>G(x>pzi$Zj&3k1q>vKz!ymnp_qFm9B;FD#iR^J1oBn=phB{wUU8ByI>H$ zx8!$q^&C71XwoQrfyNoM=PID%C?&UCEhwxkFVqYV5Ia96*Ay3}8rg(L(}Np?fUSV< zJO&x*C>!j`DNaJG(1B7|a?Yb+Ls8lddmB)K6#yE|o@S4?6&lz_NK%B zkq5-McvwqBqNhLl@$vtvtKdW3|Ni*N)sM7Ti$$=S=i!I3M{ifpp6J)(lYyQ1kItoa2CREud1?qW}t zM4Dkg^u(WZ_eR(ZM4m(7XDhLZ?W2K;DP&7Sv38K>`~~8??IrDMDYinNha}2FiOrT> z8fWDINp)=E?=H;RV^ycIj%P?dzqq-zv{ikudG9{VMbCj6I~)g<*PUTb3Et$Cl1&4S zF!BbzGapVPj0g@yT%AR8J2pNGeYam|7_VzY*!nqQF95f6X_??}N zy}c^XE;S%19?&dkI$yl~L4z+~*L5H4Us%Ws+y(Fdhs9L_Wq|Ns$Xsne`9HBgz|0BS zI@STA#{FWu!U-$<>onnZrtTk~;dZTr?qf9E#+Bd{t+{3f-o#en+%_)cTwCLKgmtMA7k=EzdSd(S4Zx%j-keF30X!bM3MnU- z8j66_NCc!Hx&=wlHNVnQJ)A2URP3aIH7R9BUVB!JhAcZ!a5U#=){%f?FPu1c?7XP9 zzNX%;g3X%JI!)9Yi{4y!QB+r42wTR5h2^k^M8=FVwk0x#IF2}DiCZ?|Z$P`9YMsJ2-1-0Jt2 z_iqvv*W1hNYCD9#;9S?}KM!Uf$~#;TaDY6`&#G?E?Nnnk?C&(U@6xtku6wKg%HhVt zEeG4Mh9EFTT+L%xjVB!0tF3bl7)na&HF3|!pG&ydez5sa(-FM{#m`cG+2uf29T+j|ZIiwhQQaBtkbmc4h zV*1L{>(re1uZ-E4u3bcC^U0g_kh{yHmH{o!S;O6yP*aK?eR8GlIrLf!WX=NQ} zl-0KC%4&`Cy2I$a?lkf%Dk~~fPAeR#xB?(fU;`Fg9OsoyEfw9lO~izk`a33NvE*4H zDaYHQ`j*(D3<1M2&fB^96=_Ym0dLN)Eomrgs0^@IHq_MD4nFDl(0}kr=ZE~#y84O+ z*T#55Rl}~@x;H=cmzD$PU^(bJoKBC1kexsZf?x%YLg6^$J~snT1>~(@NrtTWEt=dV zRujbWz^k~ed>8_3pfCq;1O%)v1quT_hi*GgD0fz6=Vhx&xga~cxxGreOSl(62#Z(X zA$BiBT+4)mHfOx@bpGk=;~J-K=pethAZ1UAn*0C&Z6t!9S(Tdu{5MOGncLb~rEP=Q zA4JN25TvA}nhUf}-N-?Hc6@$JjLO&$c~UbNA;^NWaaGzbFvNhS7h358Tb@~!1DmVx z_GH7kgD!P2M1wlDgH!Yx?Ti(0x{x0qw<&$Sdi|!Z<8fM|#({jN9*5Fk5_<})?K|KU zmm@-em$A+WVi)4C;e?7a!XImBM}#9{cW3Q^g1rIK4463J7MLW(%%QuEyEkF00SI&# ztib=vkwqK_V2*(>_Fql>G5CnGwz<5euo0wxz#mR_)WCtYqVkerExAsv^Gk}k5axK; zxQifne+6VXLfF#W&|Iq}e>l3s*zU9;pvZUhPy=xAB$!U%%Sjj>?+L1FtLmz2vB6R7 zKe%3i4bI}~(yEf`(g3_6S$RCaKj)Z+6gn>QkLJYeGpK>p4KX{m=V(cx^CCYdA%9)G z%9#ec&S$|3=!WwSJ$c>fO&aGJJdn|Bwx#C>r03)dc5? zAQ0>a{PHX8IojnXR?+w>n0uP|5v4zdlM-a@4YEOv+h{nRk@Oqv3y#+|w%B&(H3302 zFb9P-psFeh%SwwyME)q55Ke;Ccr1+{!rmJ~ZfWK3!4VwLFF=?C4hb%2TVh3I(i9Rll`K}nIa8lYHz#W$V$QxpPX|K7v9$=H{JrZm zcO;b$JTV5ZejGomcJT4@usihU*V?LTTTQj97t{otb%O!$v5Jf#YdC#@z-MFdPg<_)c3024Z7yxZ zX{0cYR~4RM2kwqx@c?f$?fNN&-YH+?3Lg9@h7}K-&Vd2f-t!U`HWFZyYv51X39AI~ zBX9(T6FB=2;R#CsyAn7C`_jOmcwiy~)DvNo8CR06cq{ZBo^VydlqG%zmI)R-aLjT5 z$dyKK>5V>R)dUhLoL@E5fxJJ2r+RwNoQHE^{mbI%NHP~hYPvefSlepSzD2Y|_7Y@a zY9_B;Mtrq9a*a8bouZ7Kyex}qI7>K%ZEmcoYtnoOJ5IB&!x3QPO*ozPv>IsY^U4*> z*B)%^X+5Emg1U4M0T>=S!tD|Oe|w&02Q^B^RHqOA)%h%3KIB*DR6=!)KK+QMYa?F1 zolmHPzs$mnI&mQlCiH1I%`|c5y19|sCC&VdHw&)4qr$J?mv9HZ1=mZYgS_%&!Lp3y znk9MsPa|jcPgEZfcCbf;nEB;%OdZtXwv~GsC3X${ug9SJyOXFjR#4I8w#6b(t)~he;onKx4+XoqKb%twrsn zZAAyN4`l6wgH|(%)(tK@K4CK-GAA#%E)mvA&e}}LB zbPKXq<#~VgU-fe&x{oiW!Qm^{3D50t!n3=}wnu%nO4-cj7ufO(*=D<~Nqwt`5sRB&PuCXhsj@dTi<<52H7)AFK>?QUJBFvcpvC)#G_5a`ys+bV zK%Y6Pd$W4DT9B1hT9&1)sv+{@MTCu79+c&8kM9}+SLzF>e;nb^MU4(oR}p)R0Md691%r!J&2P;SdP_oLMFu6B05;>kLWc4)lfKS#W5?wI%|hoq`hu zfx>*xp@_k|@M(qn0}BG5U2uozAAEj+p&UwrwSy6k5G4?GJvc;fo9Di~NbR%>7R`O; zDYJGxI8E>dA7Mun!eUxuWd+Mv?U2Gj!*NnrXHTVJbU#n}+OZll+_5Y9iNS;+y;7d? z0U39NOnr$=5>;koRA#6jd8DT55v}v3;fIx1->hl6s;zGAs%wRSh*vrmsjKW&cDt&} zw!3n-W=#W`Q1glEkfXx}Qs8t(5j3uAvN51y4j&X3@w_#tyW_a0#W72@XmpdFU zwJ9yH+wscx?pEEqr)oTK)^?2gpr4CX53 zcPo2r+|^&z-!C2~cl=iL+i$A+vuEqhsqt()|4CRs?j#ddlj!)ks=9cs^W=y`S&tXv zr`qw7n>R~ts_}XJHWt7kx;Qcy=3~uSSTJ3~f$!iYD%?V7I(K0-txXmcqySZXyRjTUA+J_CRG|P7^tz5RVVzNI33P*p{0cvi@F5gCc zd9^pcZTn6w?|%2a%F6e&m9M>#@!Fp5nmy`T)iJ zi=lMC;hb$h#99HCFYoKypK~Bm9XMDJ$omVwLyP3QFYmJ9%@>Y}x)1)@aYEgJAF9c2 z)i&ppg=eaWmym3&;~XW`(=}vo>PGl*;8;06R*8>kPqf&4t^!sXg3 zyyb<%qV~NwZ_jfNI?$F?O!A_$YqN7y!S&8$^IAY1T7g3=@eIwg!b&{JjXj_hEbf?M zEK@gLs48#JHgOB#!m5g1=*G$8(2d;8w4Btc06Xa<-6fg9;ABVdud~@CVJga}S!k|L*VRApay+;r@@byUz821q4~J zRS758;d>ePZy(nsI9jUgbCvnt|COeLwHvZ3H`A^ILubet?!ZuCk*cVsu&zYI9sA)v zGJ-=ekJDBN!^g7eup%3bP`Z!i!?_^tiz8UTLA=U2kV(7FZo5idXSW0S-A-#P3w{Nj z#x1Ip`*!wN8(l|0ir~;uNp7CjIl(!ekHdtIfqrddhhbmhzSf3??|2r^5;`V0C-8G2 zp!+swo#B{R1cZqcz)f(j2>j7O#ZZKi9kN3h(-{K00(PezY(t3a>=TKwvclWo?6?j! zLbP4j$>Kxc+4nnyU_25bKx%^sscYZxnb-e+vHdADl<>_>P5x zpDIf#N=i#L&Qs1){L)g$sB;VLEp^p(wY6HuDaR>(Z7pQfE%w4(?KAKd+3>*d0H5oW zaByI7fRDQ{d__>kl02Nt-)q_4nxIbDo@23U$t)7a?PuUwaDneIoL36}2_&4tfiFUa zAn?UGti?3u(<|zq-WQ>9P{VEf$gcA#7t|Nd??2bAb)dmE{=Qf0uU=8XY8@)wR>FsN zBLfiN2Ty$z&FzfXNgk*?ya#4VzDi!pZ9pg?WGC|4Kv;H%(9q*lmdqijRqPr8-i7{#0a<#Ka z5A34sT|ZkS-?m|P(&X__ha89P75E+j!zU9`_u}vNP>7p&4*P8`_~JPv#&?x#Z%=$x z0Jaepk7N=bf8zK}X)mnIE-WN}kU#tj3$rT=?S=NLHaPY82mZs~Zf~oy7m7Y}{zutT z)Rb4N$*aw+C@5IA%paJys7M9+aXkw`skXL?vNq5S%{6xW#f$#%HDzN(Q$=I3y>OSP zBQB;P24VoK*@;6T%HfdV5IzCM6%K|BhVbz;JWYAxgze3^6Pz33A9rH8EiP{ARDVt& ze)xgU1z#1V^kEjq555e8fJoOlWlN#ED>-F_g*&q|bJGh&`6b2qc`BH$^(^KI>T0X2 zYqckPp6|K@8%Z@yE$yn#?AHIo*qgvNRqXBKAkAX*;*td0q&cU`A_^i%0XJ5GB4sD+ zTiIy~rL^h3rEQvKY11T4_kE*4Tb5E4WZwiS2x8q)@hYHl-79m_N%8kgTD;!(zVGM% zH_{|0=ggTi=giD^d7ftyIjhwQxcS3R(fs)ulJ3q{k{2{UIQbT(B{>tpbN^YU_X^7vwhtHfNgl_b`YXRm)J{q|E5@CJ!g zqd#cHJIZvm>6|Iw1xR~&nWMOfhfi_;Qix(^97Aj)aHo)eB0q#H`mMKdbF;H^vRQ=2 zVBmv;+4#Vk*eU5@l*vE&JE!cgMz`2(7MnVsF%yp-?P++w|7v-X+Z(?wB z-|(ho*6{Fdb+_7=mXWfauYL@R9v*I8))ek1Oz})<3O{CTYVvcRcApmYC*Nz_E(~^$ zU|>Zo0g)MC>L1gzAaWu@9)-GGxE>E)aEz{EsPn)r19p)FYIyX81`QdH4=8}eMqssG zKt5B9(1>>n`XOm!@tl5Ln;C+#%^Q^l^1Zruv%mNQQm=6@C$X9~_U5k%z%Qh~zgP@= zf8qV#7|8q=jh`EDqWY*R*It!(U)Wpz{^Cbrw~Eq`h1eqeq1;n$ZQNS!-*wd;>$|l) zDtU{Fe5u(|pS-7>Llm54^d@bVd0by(#215ydrtv#`~HSdS??add23-sB}j>^dpU_i z)o{WWG=7XhBkEz$V7tGJT?ZmnuKWA7vEBVKTwptE)qaPlMA^oo@F=7|O%asHB0bQr zL^!34igLy6RU;+0*Hu*?#j}#raf#{v^dHJka0F;f@C*j~i)ZyEBf6^L8sz)?e83)T zib2jdUDKV|o#^|E#?9V(Xh&@H^TiIHMxoJHz#q~55^kb^uG{XX+2P%Z?nE4pA@gM% zE;M=?eLeVt_9fWVAamn)*s==J0r#r|L%H`I=RZmGGWI}-BQ?155^{-Q_FUpE>~WER zfyj83q@x|f<#GgI*ulLAbz`R<9ws@3$D?FhQzcqZqz7IT3RC6rJ=8r z*C}53n#6Fmi40de>LwDBhH?;3oQ!xvy!#OBQ)FOl6lXa$-n`ectPr*v zko3-Sb$L14c5{@dD9xFes7f>>;gswwY&W(sDNzLyL@esgShSB@J2moZf02*-O+qxD zgPwz|a;Qy`w>C(P-NUJSh%oHbw{DWzG7?K;h2g?5e7wa@XvpnGEm>>I`mp3k^LRWDvH1T?jtan@DV9 z6B+cTl=jWjkiHT!D1_j!H|Zd3c@Rl)q{aGS>LAfbOpv zKRSdAA!3;yTFATI`*{c*atr;zyNPPpM{M~62e22_;1iA#k#G`>6bB1-=eswvzBTw) z*0UOEqc44$JdOT5crfc%NOLyGgqMYvMdZmBaRfS-uIp2wzYL>Rfcpt0Jq_p242pl> z!OdsJaBibJOLTf{(-7KMbuWpYP%ivB>{rrHMNWZcWd?(%-)~{_zvhH3o)t=AJSeU| zGO{a3uRnUmdnSPN`XeK~{wPe~py3c4*S8(vSD+aXGq|$){A*k{V!4OOVNqRONpp(| z^nmC(ZqkRar^0*fsc62N@8(205-SU<)p2gVJAho4ee|)YuJ-;BwH!T6-WDNu^1-3= zSNNXuU>rV)D>{j+LQ86MbS>A-yZQTeT6juyG(TyQC|XB;(1g|LIC7Z2Eka#hTRk_3 z4IM#;=6=9ZHS{n&EQ)65u8ZbAnk3TIHG!*zz>wQpT3syr-n-TJnUZu9im%`Y_HcdF}k_D~uF=<@})!5YYhonVs3Y zQyu@&N21!gk|uVpN&cetzs?2A9p{>aU+>$WI@q7M!)T0NG!HYuk--+#>Uu3yT{J%# zSMI&0p7s>!*lBt$Du7w6z=;4~fYCOrUlNOZ?b9&!&kH?^7D+El_0vhPdbHBfaiYJY$^ zPrx*ddC;9L=n6IN8h2-ztUs0bi*EHT#vj~fim4&Iq$)n`ar+=o8&X~P@`35|dVDcl=B09QZcH;~+ee~(4 z5nb2_2K20<$h;5I++h%^t_}vFLfRHi8t&XzCWgrnWXO{|Ka-B5uX8I_uUWBtjWjJa z#gKqd|E|3i&XS^Hp5&7x5>JMbyJ|Lj3NEr-d1Dj0g=k#l%B5Nk`4L~wjL+!WASvDd z9Cgq*dQG*(w#5<3<;68D&X`Y^zdTSC>&$W`a;tV$ZoT-=^CaY$`rw^eNk{mtw|+{x zqb9@2u!C2Knnz@vBP+@3cG4~_Zg*a4XJK||cz9_&G!VKYj5^r^nLyWy!bIQIsU)`m zi+PRiB62RrV#*QinX`AqG@9?xhI-^GdW-1kYh)LdbC#SuizxiUmhavt`GU4ZkOM}A zd)Vbe2K5!RWDrs@7!!~{nMilhS@c6S{SbxDBG|zH03z1_gjhy?E?plKJN{Mhp2<#G z?5FF|HAlVz0{!DZ(5I!{8{lp2h>6)j#m_y5nPipB{Vn{}`b=aPIdU3>-Xv=&QBy*1 z(zO^*XYpyVnL1GK@FSGC`>P}yi|G&XXy*<%rr$(M-)Cg2>Eprs0B zgP}ULhGSvB$H-&!(JyCFA73IG|HF_EF@TJuMo2JBqi;n`roO(IS86e_#gL_Z>!H@8 zdyY$sYn;^$Xc;yJ5QPaYFB!wScmle3N^ci0DTRmtx;I@QF$*$fswFwSw}%%L^NGSL zk;7Ktw6h-W=rA2rxJ}JsEo2(`^;xzoQXOSe&z+O2(s^lACr_J|8YRvA) z%+D^c_~lq34}eGvf9DQ(R-k73G1^!WUQHf5JHTc3v)BO4P&=Kud3GS`?iA$Pi%ms- zG|)W@f!#58?zEG@;C8?M0VWw~YlmG73RocNJRxgpZ-V6&h@XKj@_t5Wzb_I|&6@TB zWWTH%dnqyEwE?7v4INC$2q+Rf|JXy&cI%XEC#~E2-t)a#bN`^8eKD?Ug7r9WhpZip zMi9^3y6(RU?I~-&423siei3y4bLanCkf|CqXB26Z#yz6zpprZ_gg)^lOOorrLq^Ph zSUXE#p5qUG-}c>^uccjG-3OI0>0J^!EEwU&f6V9CKeuj#c8ru3gN_=!mmE`L;D$iW zIm~%JJ$rtN@NYH9eEs<71yS=O7D{QKg|kLdzrRlMDaMOx2nh7!>(17n+jT}t`kc9V zi}frZ-*&i-+9x3?{8imB}-hQDf;E;tR8X9et2nNnd$w?yRZF35m(} zC@De+7L`4^I;keN)!ypdS3oAeMMi#sRDo1#eEX>BsG12nkydh-_j;1d4j2rpnucbC zgwRkI35F>l!6wgeME#En^O4{9m>d;`bN5_s@N~h%_Nv`g*#t*Jyg4e%GfZP8J@j4Q0){MqSXa@p0GkwiYhWH)s^sI;KZ@h78Ke` zfyH86edNLZBI?T{-HHMCp>j+B2{1WmE&Y89C*K7KF2gz8*IhDyj#>Qgx=Tr0S5NwH z-KDzBT4QaG?vi{QPAALhcANgend4zG<$b1djlMPRjCH?SE zxUM|3v~V+buR}bV$`%F9=jpee08vsxGU&dmkL&kwU4VNL*{Lh%c=D|fAS$aUt*cYf zJIK_e$vkau$TD*fK(;%`P5gN0I(hyYc}(r@5Cc>|cyDY4;B0o{eVYFY)!cJI9_Igu z&R`fve7qW#2C#(wl0FFfV0VS&Dttg#;D3c}$nKsPE^(zGf~r6_qAm{(f~Z@U3!ib2 zOUw>Y`U`plwG}KfF6|@k?)e$nakeX>#?-}twJtAejD-@~@U(Tkpxhp^dDFTGX-N;Znm8HfPX%B!iC5$rRL&dbFsRz#AdJHhgD9v z@v92*Emp26xjB8WMY`ZXXnTk1K;iz1J>2gw*Pefoyp|!&F13`GsfhIZ?}_yM>8N!F zxFfDZ6>W7%%fr^L+3}|1VBvvsDQ36D0UGyQ2p?=C$$kArkC9CButwN*Mn>k5*EH21 zYTgyz{GKQ-lP@&wEUb;7E1m#miedm5tYJnax$ad{m<52fjtf| zT~nr^mE8ld2@W_mx!{Gv!1a~16NShPT#}f|fW{#%B?RculHx7UDuNcpL4=kN(gjep znsr8`gSDuE_r0IH12xC zmAhyYDT7*HkF=TY`R8>zzJIwomdEr7b4c`Q=SiI2S4AS|F!C(jMz8n2w&B|_5&<0? z#mP@QIrr%9(SYQhX>UK{1@`hZl0@FQBZ{rQ{#=8)_V(>s9{pgOCOh_UEL!#!dr}pT zGa#dULKmK*BsdZtmvY*I`BSIOKYNX=$7AR7*SC8bx%2&VP%lET@g-$RdT|O+s>5qD z8q;>B?(}PH-Mw#Ds}!OW4yURSLqVS%b(}p5BMJf^W+MQqvKOL@q6&B9`{_W9C@~|E ztEO|rDQW2`*?j79qt>`AG9xNIDwRrZ`sR5Li~#udACYl95)tq^3^qev7T2_K_ol}6 zsZsi<%pLUkXkSFdlT%f6wj`w>wZzPk;nA+`MUf?uei0kCZHm|^h4KaD$0CRz+bt9ZLT*XdN{n;aOE!w+oRzx`lwePMlm19`sAw>Y<;v{;4A|1U~%Oco*| z-^k<>D%Sp-QN@uH2t?%gV6%Kmh)kY=pL%|f&%sX&P!0w^9K&uISa(RK(GL;7O1y1+V&ot2&<_2$EwcT0N3d7Hq*F&H4SI1QWS1z&0=&prF=_Fd6?qV`D7tp=xI;;ZU#v3%}Hw36h^ z?R}M}_yf>Q5$`23HNqD1xz(iKhs)4H^11eSGjJ>18@k#Bt5i61bXIg)EY}iVxqhW8 zJY{8UG>3iOwlt2~1em2oi9^pNo((_3IcjWmwJMzASn9E;x47JroYE3idu;oLW1L+g zf9oWfn*(+?XnktxBc>yuUa^c0;?pBu-nLy$(R6c9{?(8>#jQK8jM}}SWzF7@1MAp|nb3H6p8|Kf2UJp_-Dkw z^nUo-U+JDnlDcO~O1lD-uPYdJVIj&?m%7sCx(hY_9TdsY{mLAHD+IHS#fb$E_Ymr6A6=HRA6qzDZfUJTj*pk@D7$h z)P`!hwex{oLgt#KS*G;lji%D6-2vSJK{6KZU8HdbxC02bk@En1!Gu71Q^yk1ILNJN zX87e!$kGC&yt+7O`=(YqfK<3OMd-m=NhA~L@cz&WaUn>2_78y5+M`n;bTEuQQ7B#% zR=b~6(q(M`9QgmJx{H=gIZE|Ny&Ge9x;(`D=~3N-mX>M6!vI+DOgC@5vdnIW<*h42wveq+9)&bonRy7rn^5h8L%v`Y@9B zOl0u?mC7F3E{|5w`WB}pI+BnZ@`5q69xYJjAZ8$)0(TvcT93>Z8x|Orj-!3a6aGH? z;qnu16y^}bXB1B&i0X5gC;&5+I|Jk|AiSOCUamy6Y&m1Njo>0)q&|ihkW%Tlhl-c2 zj9IRh&kxv^RNKhERrAJSmE2x^J?gXTDw6d+X(p@5bKE;`ebjVir?lnkn|r@g%Z&k; zU_~p)L#?f@R&}1;YRTi}&PlGMoVfVa>8n?%78OQTuHeenyXYe;F+=1k+x5gxcaB4C z(wZ_#_8lrXd`R{Cy6aTTZP=K;kv>R8N9aRpxn&aVH)zwk!6+@@)vaSU1uc?nerdP!rjde;9Q??q^o2Mluhw;l}!xu)amWI!Z zpF2Y};=s5)W4W3+JLk1%JLv>O5Z96kPn`~ZC-Op!bnA_;Hh!mm?|fy`JN%*gGfmY; zrKQbf@9$%g)BA&6S0`gBu#w0++;xZ%wF$&nW$o^e4E-P4!^p)FWYxXn8wjE}(4P*G zcwP~nec{FnV?D2Uo)!7~eAeZX0JD~>$z(y~JIWntOVgvd*SFEfS4>yWn6tBXHcz*I zPBTcxD`dM=_ip5c_f%JpkjF3Y<_hYL7d5Eu4y)PDS7d!ihm>uX7RJ};bZh7nGdHN> zDxwM!xDToCt&zlcvNXM-KB21h5_#e+b!}~ozLIZDB10xS5~R5pS&SF}-4*By;32)` zFCK~Jpj> z9NuWMRJwgdl6J0&`kWp5&-vWq+-0R9byADfY*Eosq#v{|hi>BxkrCMu>e#qkTO8kp zPV&$Q@{~y$Nc&MhNr$N;qjGFJ_~*fZov@e$tA$(SQ$a6GEU}hYO8AS1PoI6OT?(9m z`yr?^eoc1u1-#{*eq9UwMV-pL$PxLpj~au|^I%Xocp5?T=~0s3Z6)uxt;8v5B}YZb zW6c-esC@^nJQ*eKKgwV9nSa;QWHO)}dx*Z>{VLfbKZI<=zY`$5JRU@(NZLlu4dz-6 zC3RJmmheKR8mGfv-OHGxOPOPLs zm&x0zuXbNKdWy@e+VSZde@NS_$kRius`3k$U6<6CE@vcO;H~88pW5TNH=f)vJ~K{w zbkXjhaVoG!X3V4$c_Yvb-3jiYtk3b#mm~uh27VBezxZL(tXq?6~(0hH^F} zXW2}4%ndeBd&~}#&1lY+?g_<^4Qh|w=&(5RY;A2*9Ms~LJY?RWRm4PEOaXJV?eI2{gG zE`GvPC;d0C1I@2R&_atmLYG!a25FH0=??q~Nd?JD%`nDI0awNKyrv!0o@ej~;RQ)H zyt%v-8GkX8iv&zJAsKpiKPDH$liXG*a3aQ{SD-+0X zn54b{OgD$-kX-r&d7A!KA+=bn7FKFn8lReGNJ6OtC1DNQTg;sBX{fN?v%cB$sWddV zaYu_9Iq`}zCs0botkiNT%d26i4a7eH%kjl+Ac1$h-x1KLXV^NV%>k9eUmqF>(hvnx zoiNf6S`4k!A@Qd#2s$MhCB%x#?Ult9YIm);qB1oR{_ZGGtcXm<@V7IwHnX0i%Y@%V z@9Sn9oviMz6;GbAd>YcE%RIk{GNUqekt*8Z)myzNtL{>hfAl3Uu+SPv7z&m{4TP=G zL3JL5+M`>AIO1kNg2dBk%-3}KIXeCJSW=k#F6sZ|m!qz~PbA|%Zv##Kp@Zb-2&f;f zK^2Bd5%xn#h@D(paCR!vc%EOBw1ljr4y^FuY?P8(32`xxa)na6~2q< z9D{ckzl!*shI%KNbJF(+o#%+EjB7CX)o1N=R#YPS#`z*g$B9ykD>EzA4rfk|gRgg1 zRXOU9ka@mj&SF#_JNmIpGt@68b9~9XBlV7|Drdc)!+UAc{$#kby;(tD>j^{r zaqVVDJKuKrz~SbT#nnYMMK#je!sA5Rs78S|J_;X(=V;i>St_C9-*Je)f)E~=xU|jr z=36QtP?Z0qqdC-sszT_*5%c+ND?`_9UMCHU2pY43InD5xQIqc8=)=XIHpN`vH~#*| zR^p>Z#G!hB@j=@gQZil)m2q$#NC1Lrxa4C*jsQ#$QLab7#kI4SJmN(>4j7;0dzaGJ z=mg}eafW_VjuII!k2qABQ)#Q<*4FCI9#+*k>WZp4`Suq>o8k|?t!gTHySk1w&h&Zj zT)lGP{ChkuOCI~;#bK9-LUre(rW-qtQIW2QE7BF|N@AK9A6V74N;;+e+NeL&O>h!{ zW%`k|FWL{a`2b!|#Jhif^o zxH+~srYNRJswi(81B157>**V` z-|{Jx#qV~-$LH7*__ewPx>f4vXh%^j9~!VfdiO}}z67dHKLQH3jE&s5PaJY?u7xY8A4g2Ey=^q|m{ z+oU7r(}^KerJ|$1fiLyy8*e+xT3NG!+KVQ{s2G4ABP9VG&Wsjr%{yGuQYl4k%q69k z5_Nlf^}%Dj-6E3j+fNo+ekUq23--LCQv-7^ud4)+>KQN@^fHe{jCAmPk^B&Vd;kZ^ zXFyhQtH~t|N~HMKbJ{sxd5&8n8ORWI zBY6YlhZwAnox=-Vv@__U(t92TqhzSco}wg?C`m$5M^Yz4VeATU9m8cz@8f=Pb_*bj z-vP1+OUm0O-ZJO0GUX_f)f_ER=WU6e3IY7sbJ;sI9*YFkoZr(d-rCu7{#_hLOsAoy zFE_i0rj$HhT2WbE3j3P|lD;EKtPOX|b81@15ZsF+WLooQUu4w0-PqtdQk8!qwu(qy z@-Lol(f@}j{y&#^kbi|e$WBj%ve1bPVs@d)m7SU)mH&v%S=mtUHoMHl+1VKl$)O2} zxzc<~RC10g!vYDv4&Z4_}n!6me}HSdsd^V&{SlxW)`I;n+x?$ski2O zN0K?qk*wF-Oy${``DqrDF+C$U(~(-RJu%rS&B@C)+jvu&!I_oaQ)7b>_z`1qR7!MC zq%^L0OQoK38F!mqc_j{Wp}ojn>~NIkyqO!e#h73M{KA|jHQVhuc6FZ3Zc{nZt4xj} zXIe={Zi+M|w>UXool>^ln9CQ&Rb*BbNHa|_dNY@9j<3!uv}Bu1CUbgGq9dcoY>RAj zP9dzilg$TFurRRbG+d-Lf3L#kA7~7p62h$Bg_>K4h8m_3%4P zx$7G&mOQ7$nPr#8Cl~BWw;||-Xx6#g*FU*)Qkvt)x8|!W%mvBC8M*fCe3RXlUzF>F ze^H#9pPl70)wa)zd?0h528FpM> zm{p`tPIp?GGmNQH2gLC6)hQ`{U0V&7YFoLr%Ft6niLn|_ zTb`rRuj2@_buvO+lsu`#iB%pXtn~$S=q*thCunr1`bsrgBw5vCUG% z6(m;`Ik^JIk#tv1a$@piC$gEKiL+m+jpo{)uWF+1{{@E~2rTuWh%!-DHd z&CANmC^Y3|NS%qMq}nW}xw6obEX{)xnxo1|aU_-J0&fv-HgQ=Q$+;OulO;OVW=buM zwIeIO4Izs;eD(9 z#i0;iXpfM&eT5g5^obKsbuJ-KbdT>I?|UEV`3JJNmu2n=?g=7ye<4U&l~x)TN0aH0 z_%Mzxx+?a-}=DwmHLVrl?oQ0E3%PCPMaq`bEC5si>{F2UFK$ z`2F?Q1GkA~qg~8NMT!;q<$Er;${7Hg0Epe2awdxI4&`Aa|9pD?AcRE~2(+~VQI+KH z^J%Y`37lUs(=bW*r2BdjB|s5yK>GJm$J~h$AzetnFKWUNHb_}2KutSA9;2P4uZDJlKju*+X(T|_ z_>1~=#lgp?gD@AC87|8NZM@6_?u{-f8Y;~?rqaxQ^##-qFZ>6+b8n?;{p!4uEIkSx zBvQtHA>O^P-(lJRw#*9Au;qk&Sux%{QLtAdWF$^2Ve%tAXF`&^SA7l%CLWYG5T%8i z@WYmT6mj#GswTI_R>LKStjSzO)dO$Ds;S&Y>t6;Nc*V~=QHkIC{QE<{+oWA*x*t=L z*u~^$dYB7EW`(CK@p_c-p?@tvF!t`VJqr*(1pZ%SEO?gwKHVFUNdel?D`+M_f=zkd zM(TmPj2$?Zs@1F31-WkjjLSE&Hl zZyj0BWcVQgw!5gdx{3>HZrpHOJzFM!tk3ZcjbY7PbyaQQE_HorypyftR*!Zw}*Q<8B_ zDZ3}A<^KAKQz8~E;+fpEXwl-WlP9Vs?0W6Amh;we(Wwu&eXRcM!=^K*`EN#x7HY#M zy{eMe^qIJ8%Be*h&|>RF+EX3dK2f8mdJA2@Y#&xao)iPMAq(F6OVXE42) zRE{9fgo9ke!P2*nlSWzaeBFjM9GN?T29qafm>NXHl$_)o=;jQc`XqvrK_@jp1pQMM zz`|91?=V^b`9|rnx?4oTz;?+uz=C6~xOUG#vB%ooBBBpXI{7SlQf&l07pAy zZTnt*=6GS%Tf74+M!K>{|0%xm%s#aLl#DEcAuGeLYR%HZh3e;qZd){#r+ueQADS`P zFn-s>vx}um&wLztQ!Ss{=ldUbpSr=52j0K>qw6(C3P@^}_pA z7u1K_(xMyq3kx?6p?!j+WV+y1LewNTH^*l4%Xd2R^Ya@Td_P;6k|~NyONIK89$+8( zvXTZ4+tHAjpOv4P?`O(2=a_97`M!w9VHH|NJB8a6+^zF;h=fjbea~m)b34SDY+V3x}2Jp%gDBiFvQMZ97*WtL%Tgf&op1gI_ zCf+j~hi=-mb@F0WH`F6=gwTdi_RGMIoJ2I$(?&y;@}I8K6ZC|He(#>B^nMaD0XXS7 zib25`zz>R{LLm5nSU~e9ID7Xxl}wfbkUu#Y+4GZxO*4-Yc^B5WA~y19-#paTf@!LV z$nl6LlVQqlHr<%@E{9b9r=o)!7S%3P(+9?kp$}+lwFfuw!U)d@aHk^y(T_>#oKFH8mN@We9wFK84Oj{SvKe?5tU17cH(ou#xL7cUOp39NB*9 zii$i5)P#gQb>-5wl}9+?H_z|hQeEomGiQ2A{S~pw52ifRHdqZT+AH7{Z5i^$GuK|@ z-4)&CqS^1>*a$6!kw~FEL`L!~k*7d=vxdj}2^pqah{7ob2yk$rGy{YI8fT@ZyMrmN zQU&YN9<;RJr3px?T9Z;rc+x^!M8&D)>*7`S7$mF<(N>BzELpG>VMlMQ6%MqrSIDE8 zH1`U5+{1mu$cfdRunemgh}zW|ps`{_tRXVR4R8^)puST$T8$ z`04ScKPtiJ2W0<2A|KQ#pQ#rf8>hUw=ERIL?gt_feS>8mhyNjwp9(lBk=Fz?HRm>| zEs~H8VM{l!YFOyoW@|SsRIT5XxMkzIs`^N7!Dtb7U45uM_M-atuiu3>UaniBd`c{T zAYd+)OKhK#ZOvq;>ZeyukC+&=VR{&MW1gt7eAn*1>gMW%P<|YZ-A-q#5^Q*Je2d^3CNzyBE}~D4|cajd*j-A?cb!F^7+;&ea?})XKFUx={78`txhs=DfqV zY~CBxGNi=p`&CwvO=K&}1v2MN@B&=xV&NJC7G&Ji9XMe zm(3Mq)@HQoNx*vF*bgt8PpiLt&slPkKUsXN_So*Dd-mKgXNwRaBEhKNAue_m@#ugiCkZPb|V#;zZ zeM{no9qZHLVq&-Iwnm2~ZP82P=LKg3sprotZJNuks|nwuYu$P(>AmdhDWuugLJ~x! zmdZNSr+II=3b^v(hWvx-H`{EEgS<;(ZqF$ZS&}0xYtp0Zsl33fU1(XLPFk32 ze~!0p*qF0Losw#`r1Ca&jzvYLQfq}p>My$L-<1XiCuqiEd2XOAhKal_@JbRZNQgJn zgYoKDHc$noVWjeDgh7E|Tn`1c<30tocg5e1o)v%bh_f{$cLKHJcI`y6%V!J*GMI#r z#O-1$D6<5Ph$-R@@fUCGyAyu^*xA`NR~c}Z(F^Yeh{%Wm@`70YGdKzm@^!s~><@#B-^0>eNJ0flHm`__ibB{HK#b)g zt+wFRsVcHpGx^hkV|=^#Z@C%8-@Y9CH2p*GG|}!JMP31efZ@P$;W<1*>$O_c)w-wtZA#C(ml() z6o3Bp&(&nek7O>{frJCnpL88fK?Z&bT|A>|<(^G^Nn&o6F)lkLGc-HZ7zZM?QyTEr zGJx$E$`@RyQlSr6kc+T>WgN&-uhJN5eR2Gu<2$(3bXrEJRh2X^Y+l4FY3%zS=s!kO zn}q^DaX*8lFb4ptG!(BK96kp#;KLdcEY3Qeaku6+tMiwnlZ!rT{Q!0Lx%AcbtIbPh zPhT@oH;j83b;e3#gZ>5H$9624>q8!eV0a?@tBF)QqiWS|)Hx~FV2o#VHl-Tly>)&P zb%va-ifkn_LB8oGZ(@PgO{nd0&>Ett>7@y89gpPJ(AQX{$So?#VJJLdX;MB0~bq;IOJ z4U0ssN2|DiOA|m!^iNcF#LqK3AWFk^g`X*>Xq|%vmCe|oS#ThoiL`o$y0R_Zl z0qri}_QkbW`qd?Yco!TE2zdbyi203iDcpU=AW^P=9_#&uGO>dWp@S>|;w^(IuXr(c zOP~OtOqJdHli^+ZwhKUYD!Mu#hw0IJwCMK+7Pm%tfyt!;_Sd_g75fPt=(b?LY6a~D z4QwOOR`C(ERp`O7+^jcmtpGw9V5z_Xb+WEbHwdVDn9Pt?_jE#eU2(4y;5|&uJwp|e z{%n})PQzOqswrqQ*l3oDEy3P;vkjlZ#Ybdj*Qf}-&1Z23ys(u1*1@eZXyPs zQzo4~Zs0`P*DJP8`wsm0-Elk}M;@ZDBDwrB5pAju-LYULk`XuOwf(ejGn3GwMzGj~;E z%eMu2238FJh5jPSKx98vg)F-(gWJ6=rg4>ehYs?6{N~UVn-}#i$|%4c z0;l2Bz9aiu_=?Jc+6L9(?KRtWa~ZB8W3jrp$nJs@iTbfXSY%|<){R)x%S&JX)6?fK z7WZA;Ek@$@KBDWGGIJ1AmIQ5(MwsM@QC?cz@>1-}k%OO_J!t3PowGZ4{#JAS>gmrM zzX*@}x?1*Dw`2e)*^*JUB{NhioT0x$pH<;j;9xC95uinBmE=Rs{WUD_VvYSfSD*Jo^h> z)_v3%TO3#<5k%ms%5K^Q|&OxjhJF!6tXXJZl+9IyZ!>?R9DwnsvjN%!w9VJBNzeM zy+`9foyTh&x?R9FfyJTl`l^9QzhXH8QFR#r+Ds zS3mm1(Gk-%t+JDMBd52@*kTod1A=$VSi78ykBLEqaO&8(Pp4Cnl*WtGiD>T6Q*Xr8 z##G1GNY@_S@m{+M-1aqCm-KaH@Ih5sLm#Fq5&9W`C}|Opgjn`~Yc0VnTSBD%zzhOXQLgGj!3au<~t<30!81F)>Lczcust)^ptahI1P)sxO{9 zaIS$rcYMz!Bn&c3_{NIz-OZ}HjM}7fuB_ZuTc>JHXo@K3^6%cdd-Y@K)sI`g{SEyP zP5hk<6A2LPUZE=gu4+7b_(Mu zjzI?o4Qp6$c%c(t@4!N)x*TBU@DSWD&>g5u1ksxV5UEpK(G!&Dq&i6g6x7)|jS$`c zo&1iK#R2bAyYfw04xV(s=6piTX1^)ef&(7jgXnHV<3tRDP_F{GQ$nGX_ekBuz8!IS)^gU^Pp~ww*BL z5jI!BBpR*BGFmJ~t~F-u&K2q`+1UlxYHOT@mAq#N_7;Xn^p!P+TF3-=@nVWmuY_&^cyLm?hAkz}3A_aL_-NCxL3E> z@)d2cqS!dC@FrQhI|l@l6ivIhi=mLw;>e`H6zbFEl7Oe#1}bSVzO^%UYW3eBZ0@sw zu>D`yw7-C9+`oZo{|hYbZ;lT@X-qtp-BnK%bWASS9ZIU zup-S~IoNi%pK$*FrJ-9O7p@;8>(*h7TZ}RDHBIf3f8q&ZX%=W*!?+WjWTP13jO4N= zV%L@}SlpcZ&u`rd$;&6Ed>qMjS7AjYca`MhohLf3tC%t~Xvi)xStR4T+nDGrQ>g{F z1#{L%8bq;PVlM69mp8cQ0@M%W4KHzJD0(2(DZ90!P_t0%?{ohn3vBit%^vfYyf7qu zU~xdAyD!J?YM&!RNKmURPcBX5g2jo+SQt8((cR0rb}SQ(u8vYVUf2Bp*y;bHjIo;O zOsx&;Qjyi5jT#w`6xKS>t&IB2%yl=+bu-L$Z_U}@Z)SayQP_TBji8W|MgLj%u^PE_ z>I5`jcN@xNrgu1knA*uQxk1!K7_k@ZR#0@j>H&9vjRRVii4Guw$wUW+!Aa?m$z@uv z0zrpFo;^))HQ{zZ*+49h+=EcF7E^8;ylKXE?Wr6*WUt%K>h}$*)#}xsU}FeID7m{D zeteLo*N@L}*s-cS^W%NxcTd{$3c)&&VrgG6lNBBp%qE39@DfC%WK`!J>k!buRM)0N zF-#m3&m8T5gTH0D*TKJg((BmeB!7>7n z$AIyK%ArF(DuZVRkIc#twWulv5&@@|-_`%S2H1*9U=yr69m~yP%9UW_J;i`GbyGaC~d(;h9^TFqXQ)@jnocO^>r&q`Vn_fX1_0n`m1*M?0IS zu3Z!iDJ4t+SA~DbhJl_h4i0Ze7C?R-AE}n;M8m}4;UcPS3MYz83Dri!vV)XPv?!A* z!oyL~rf`wG`HmQ8(}^H59f;#W=NI2WdDEGKRHq2vb?v0HNd$!pYm?PWlE*{z9dg3B zgFVdgZuFPUgM$Bh?WAi0QhOBjcSz`va}+1o1`68(2DM9#o<&T^61!GdoUKI zVB_K>#9Oy;g?~T<9sV=csL+zPHT}Kp2(1!AbR8ZSc8tV$vjc-Xth|mL%xgpxCorIg zL;=yd4%)#)>+t4Pt?K|`Zwq@6@zp64+5$A)X;_!J@1d^c{oKfUE5DF=G=le4Aj7O2 z4y$Oue{F+R!wxFOLBee`zMbu5hiKoQ=X<0#oTFPa;+t~U# zS=_N@ySz215k6xz=tK?J$xnH|y4!Gam=9z_4{9JuBeazuhnc^HDLWZgh;hr2tKus*svFgAdV_^LL1oe9v4<)!|`}_yfvd*_qPn~&EdoVR+inw z9>2)$xx8yJAt3UR=1p{abk&y_KZfbdGT}Se@*Pch3I#QU z+l+}A&#!A4+RBKr=vLh0?Qkm(!p38vG`0!9%5{B&TJn^VLD#3vUoe%;SJ%#-d!G}G zbe(bv8qcl8o4-%1$EdtE|Ln9anrUa}UxWO`y`^38%5Pr#V05Hx^arnf!y%cz9_bw? z_QPSQfRfw*=5u!+a!)4gL}BESA-~W^AZvwH<{@i^pn#q{@(V<;dL>R2z%TX+llhCE z^-7Zofl7ik(qNJ)4r?bGxl~xxv71l}-%6cD5Km=eEp^6{im*_B{!gvnE+Cpvx!bxNe z>{Tpc0d{-=Ei64bt;poUAGe*#d_?nT!3!YOC9H@^T z!hcU69&(kwpbia6oHR+bz%{=@%MGJG>w(xEqN4o@=|jhda0uLL1f`CYt05!tX9Glv zefeX*79!Z%57&Z0uM5mSB;UOK1d(5i3(U;okbPr9Wqg;GtY&@XHu?$cecJy+U<4(3 z3vu<7HeCZPK#*j`e+a)SlQU8?^c-a9{uHeZoffuO4egPbt6l|+xbz|8)zEBw8Ud9t$9PYM z5cHyKn+E+NROT&^oL7=D%Rr3jL&pOq4LC<1I%XNK53StNqHoskt1N7h-fjNr0|ut| z`RTQQX1*|VUwlhpb7AFPeTx(Ye*K~hHN2+z1U8MJ-7JHrn+`J*LgVOuFM6FJZ7^xW zD5gc=7p~Yz^vOdQBDF}dASa*|%j4lb;DaPk2AHp61uR}TbqH4cHZ9y zGjAaFkw4j|Pj~0v_H%dMLR0*EzkeS?9?{67CiQv!Z^f`pBkj$St(@22Vv;fqjyxpSR25^PuzM2`o8C-Mqr~?`-IdH1t^iw zGF0S4P6XHZ1;Z+^nFg|QY09wK^x=85pL#=RK2{alULraf@bqyyLM{IitnOEr%)uJ; z!X0R>z&5-{lwiIP>C(k_`ItA4rk^Cg$UGhi@>%ZPO8M$o+?CXo4eJiXuqBM9%H&_N z6^w{VM$XFQt4X3p{$)JYuZmG&Z6bLpRt%7myic8 zkfHC8#~o6N;Jmm&~1*wNS@4-q~@jCQytQ?&~$( zu05n>#}1^kJYouvk4-s0^a`6 z96KfwzUexlw3nw>B-&?}`zF~F(v69p2mQPL@Wrw$3FXFj6Mf5!6$SQk;X!}VL%#08 z-TYy1iXO%Vn^^osGclO~tg>9`c~W?ij7Hf{3QviyUV`V;1n^-3*#sir^BnlakPYad zyDFum^pcF^K~gr6a7%9t|AqRr&>0c5!IJDsDK$!=)@`+^iwYfucHUWx@clbv1CU{C zIn-L=W99OdMX#R+Uhx`vb>1FP*AfYo$3NOV_i{QBmWarbBIR3ero1uNg#}i9y(_Hl zOi3(BP+KJl2`Q1OJdN?J@K~nI%}81MW{98Ahu$6IF^Sd~%69Bg7nbDZm-50QqW7-G znpq0eyLwMq!&?S^j9?;vlDpo8N$#UP6a0PZl*RSN-Eo!DVsAz^J>3jM7yOHE#g5dJ zZO#b42xooVZl=xEA>LLMwadV<_^Mr9S5sV5h^0!+8c3c)J&aj5!YPb#Fi&rbJhvs? zibLMd65&*L-~tRo?%QHwC6=OMYgJmYUusdDH8l;gm{#BJ+fa+s$`E7HNhZQj?(QTo zsyZ=n?Z&tNN7#FSH*sxU!#1|0xeg%-@(^3HM)ZUddJQEeK!DJ}1TdJ6ZQOA0MY83h z<|?^Y+%edI4Vd10CqPJmgc2YLNeBt#jC5q)e~q1c-}`+3^L(F+Mw*#(&dg}$oU`{{ zdo4^D#t9J_>ihx^`irI)J@qfp6YF7Ey@1D7`U2(#TZ*sBu@oIQdeqM0R7!-=^!Pr$ zrxWloh&A*;rrnF}PBZq*KkcW~(#?I=(glk=p~sSe+765LFmm8taP6$z%HDA6(+yum1x| zJb9w=>$@^rhsBqbcDGBaNGy*nrH{!Imo6ma)an0$L3%6;oIX`HwQ>3hz#xC5KbFRp zCsrg0HJ1?$@)+v?!>l&f%4@4T!JM^Nl~N|MygMF;Z)<}o{hxE#B zpbfV;3$r$iuL!bE_7%aCS3W$93-}pri znC75zY!Fl~dpRi^VHGzUwl??*3YxxKgM1Cj`VN!G*U%UQ3iV%|8XKCi#$plyUowdg zBt3n=`tkyaByOUmc+e0Zm!6i^JXADgS9CU<(@AQMRY65i}8Fi087pn&=$&yPUEx zc-Rh;7*uiK3xitqM9UoZK%`g0N;%eg`^Iez!;tyb&3rP2}h+KgTIjb22@ptD}%PD z?%ykWkpH0YK4&!Np3Tf+j1uXtRD?gpAygutF|Gaq0GPx9WGOOYKlbc^K7%0~hdO@s z_(J9z5fB#61qG~4T`!+FF~9IrrP{a%#J-F)7)F#%h<9*>+Omvt{JSRJf1r9G-@8Aj zVY{+=Th;dF>w`}csf4CY`Y$EVt@A0pGw$@0)O2u#Cs49hT-5K%*j?ck)^=1JO3(P8*=d8T+U(WNl4LSI-&a!Ibsjdk~e9wsy2W0KZc zc$L$%ndMCjIPj+>?cAl=Ek~0GSx86+=@8l8CoV`WUPGOJq?}xEUn2N!u?KB3SR{nW zkB7bW7W}N%TW~x8_u))G>^+{FG;iYS6~T-k!0pk2nmh#F$xcsKhe=|a$UmaxH7X7c z4Xp_P)x7TgYx4O=q@14!Ger=3)uBsw>W2ueV8_FK*ORopfL9CMuyhx1LVP^P$?Dw1 zg19jyN8nyFYUEn2UYDV?c?=OHWT+CMp_zXO|i3Zw@LB<)lARuP;BMU!|$z z{0ld4k7LqIW~~{#6T*06G=KwsEAf@%8x+%C8$ZDp-cQ!ih7JO*A%w`gVF(`B$h`uS zN_>7|Q3fyrLqz`}U(L=z1UoM$%VZYp#&E#c?Sa);2Y6{E@CK!wUURlAt|$f(;iZ$P zk!EsB7B8B!aE9%@C>OO(jfe>iw>i6Ll8kX?)up*EU0OXD%?+7K((q6KYL24~8LG^r zyku9nrHELO0~{{&YMe>9DJRElFuPXp@7+9i_t{^~5EJxK8?w`E4?N?-cO+ZlKm8pU`{cIubI(!s`@qOJh=Gsj@6G z+dsvZe$jEug*+A`#6H22)hW%8i7-+o_&fWMJ}mKevU&2JE||seol76Zs{t-#rV~9! z&$&RS@f_Z}@>P7F&TK^TPg%?QuCk!4M@e#yoO8jR=Y+Y?t5?JaGa^r$XJ<+Kb`*r9 zLuWx?yo{&`jS73C2o~N>t^;0mPNLBMe-|ZHXyd=iLg_{Q-^cq3ZTq0@&f`SeX!X?q zp-ob?LO9s};Z;urJu@;L7A*1`-&#LoJI0BNq1j+@5wEnhQTnk+moA}iUq+DaA~IcE zh}7a0Uy+r^t4OrS#*0_;m~Am)H=0Hc!sF^@-N4_Zw03>TEIbvVn zCjQBR)PpHv5j_GbmUi)Gx>V#wXNed8^LZA1Zi}U3ZJ&~{4df#cJtCe#dCLM?VQGia zU+yLvi~2Atg0(7`jvwUMXu|SBK)r|H$w!RDiG1gT{3MI>X2HlyLeKJ#6w`kUUq~Ba<$5QwOz55w zC;uPbgojIrDZyj8R&dOD{O_WNo7D`eRo+=pz7;k@?*5+_P}W<+$X+3&Ei4`2frAzP z*C(tYIXyX*TyrWc)hXk_@-vZ4r0a{BSVJPYs>m^AnRMi0Ec9)4rSu}hgCEa;FscRx zii86EXi%L$vyB!CB%nZUZl+nsm&WoFZ4*mvAQ9bbUD_MW3^?2WC5ibzGgEozj!P_V zSOj|2stgtKC^ECv%BX@Q^pzH8$+m*ZiUO`8zXpoNh??JWsZbRlRUkYmGD-#EC%V>6 zY^Hn3-kv7}{iJ_BNVBab>vh(4-FBT^r`LJ>ifq*#aG7$*(nW5sVAs6m-&R-e)mMkP z3OT-=4_9?Ld-$;af#(sJHy^mTyVD+e_dD))^rXj~J5baU2*Xz%nW*<%=_>Vot9;9? zT&bUU#M2dQ7CrCWAwBeW++FXu>uC>ncK{E2x*Ya=pg(fhs49#-WQE@YJg>;2 z7Cao6;rbN+<7P)xFT4|uDhx2r4>350L$>V}!fUt4O(&Z(o2am0ve?O|)a8eUrWy35 zU<>@?QFX9pS|_skRq1tc<#6{qyM#5Y)Q1JpTj;{$qBDZc5y;g>zG{48g+`vOtQ&qGrAMArk!a)lzTg+)LDw2{?RB6gIl_4Q7 zSzs%6>C&7hw@{~tI5Z+YLWNAU%;1t}fwI`8i)&CID|RU<&#F^xW2#gU#i4MTS^g52 z3F^|qbqPXjF37<$t*Z;9R$>)8-haA4AL`@6`|v*h)di|a70AJy5#%|AJFC=Q|L=DW z{KvdIyL`Dw(EO4d0}P{>-@|J160}hJ+E4dG?Ms`09Lqsc_}ll@TpG8U!eg7&iG z3zoJa{>Hb#2EmOax^$^?#q;O8c3sf#@^%%}!*+S==X>LAJ82gVfHYfUJ7IU7OMJ0# z_k_fSheHSp!dij|T~1+=5|b#~cH8#<8Vj}q4u8NYx-6~UT8ZgCcOS=?YuDG-WVZy~3k zQe7Tf00u`WsuzVABUP>us>BGWWjjm43L~miT&1ekSYCt?=$1=qfw{aA)HAklI4<9M z3{_Y?R^h)B-W`UJmmWZzTr%@DMpzArwEvxCIaoK57*?B?mY0&9f+X&g3`RF2Y>XWI z4gG&3BcLGkp}4p(zc^D_O&pCTtvNN%H8&NB-g4Vov38GcXJ!+_$BRq;*+pzLWtdZQ zUGq|tv#^V=m<+l~`aC0(Z(fTv$V<~o%~_@U$Y>X1p3amGx+zUgijgs-kFDw_N79jr zE}%O`DF;DmL)>3+Rjl>ZZ#MWdbA%yh$2LkLjmK_h;B_D$E>+Mo z#9#dCn`=b$$D>&~1DBHq^+w3e3NWlciPXhhsDtc0lbs3%3gC?7G#By{6KS-Ph7FaV z!Vmi^ez8dh3&%OQzrwl*ZZ4o=l}^`4?(byPYv^}cy~$rJNu`_a(|I>J+V>>waqx}o z*^`R^M-3+L_C}+5sknAVvmq}h+jO4{bjdByf`~mm3l8#bbnP~V%)o)l0Vzm8Qs!(4 z-MkS{>Y;R=jAoJWk!1D^5CknFPOFE=sHo5KLC|{WO=Jcw2aV6nWF3Cf(=`1-=98Rc zh&3l=ry?b-H%atk=yVAf^h;5Cyn;-Z5Z`84xMRsWS&xnmOlT(nU)Y~~3LsxE2Wv0u zQC!B)#Hy2#hy2?Zk}zKJYAO12d}FR%Ul17p7MrJ=-FGW(BR_T;&|krSCZ_g5wA&&I zO=w5q5=kZhfS?vrFY+;+NygG;OiGR^-7F`|#fAB~aH!?vYl~7$@W{;vjgki)1UcfU zI>ZP**iJkcnEJTD@c=WvC6gYK$@a*AM0W1WUZuqb1^J%r!`J#JF4n$>WZ!tjUy@Rx zL#F;>a)tjU+pI^{wW~Q*ouiV|rD6b+lYlu~YMT(fHe!A3I@h?}ajjtosXsr(B|lY_ znmt=Ry@`7)%gw>yhz7FuNQKg~Pz^HB36!%`waB%*JBd$n(?_6TWOZOd?%M zwUUh+bh-^nq8C2TrP&glpPxPeZd>YW5J~6L2@)bQ!bFx`tnl#%|6nVUPxQJR5RU89 zhAll(=#1B0k?1|Q5KL9C`? z3`fpM9+R3nItTeFCfpB#`kNIV+yHTMQF4LWEWkKj)aE2pf{6ibnt|opI{sn3MU>t{ zVQsSs9}%_e(K&c_-d18e=ZBDJx3;rF@vhRYwg5gr(p4#A3#Jp`q(!O!Uvvad z#&UBQAbw^;SsiYpvKOM{`2WpXZ?dwmS==mx|rV* zMM9h)FYbrFv#XZm>*b0-%lbQ@p2iN=zQUd%X!8f`<3`n8J8h!LcbppCM78AtK4Ck8 z=nev7norPHU!Se@EzR`}Eg)sWv{iGj98^w7|W^;ZO zQ+KT4%mdk7J*e)&p%cojTc0#vwJ2$^YT>3$0Rdaq`FO2eJcPdEox%8JY~AW7>tH3m zjazr>xMtnC$cqt-H^RH})uf-iRQwI*Bl;})6T_9-eMfhZ&mM#-Vs`zb0_xv=Js_*=hTiiFzE^U z82M-7STXHK<*U7^opN5p!bo2ovqcxU)mJzXzxu79aNL#gg1)nVaf{c^b=w2>Y|39) zusDBF!Tf#ence83abfO02s{&VOsT3;n^T$?(kTAx@sqy{%Hxq|w(N#$(U~}q-scH( z^5MCoH;D69KJ^#441&m*+fT2oc~)>W=~DL9w37u_RA;lUT)Fyy1W8+N?XnIb39O$w zE?T9^&Q~F{i`zawJ6~RIj`dU0k-*sX%|>!p4|b};F*YKtVeYFolKd0kmieV#JA*jTdztW>4! zEOCe~K3x`@u1=1VhpS3=DlZe)ZzOv(^$F!%O-yj1pL|PjVraB7Av$&ICK+WVn{tDS zVz|)qy2NJr&icZ-GG!ikj*P{OA=gk;C9^HJ+-7&G$|57wFR#oPg?&SDJ z+X+P0Z?7At9}zX4OI*Ba-4YEGPZbo&1PY8ISQb--a!Ky0eTiq7s2}vt9ztC6k>OeS z_gvxGL;KF;FvU=sLjsHfG=*5k6F24Q)I;lv7BS@$^drV%?~ZhflBHhLh?hju5`Qf0 zM*M-;1Mvr#Z^g&y@}o#7ydx&7Z11w0G=T{?i|CL{O^h<3T+;x*aW9Z%Hx%LA z%W4aE%6HTzhL$UfqH}|A?!6??BJIw$N&QYWC{6+e9U@j{WOuB zk190USMDEBwkuG%YLsQjj}obPupJGQv@~ol+aYhRiT2J{=0+L)ykv-klV@f&NFSw5 z=Cn~MF{(JmH_ST*YGS^nJ42Mw)#^RR0VJ0kH|;L3;da(GmmZL}H^*+NRhEUCHh(4S z4~A-qS8@3Es=|WmY|fBvsA!QrOBCB)TL-XSiD7|33DpNU;w?E)w5_4BFx-oy-V)2k zjue(K@REcOM=s{OFV9RhF%_8lFVNHZkT%3J3L>jhlIJdtp3H<&M;$!b4DK2#(bM;8 z!8chp`SRksDNH0D(FJ-kUyfAB1^P+|(cR6vbf)|}riM5gFw{w8Z)4pYZR{*sGJ}+e z`iLv%SIw)M-!!aZrU}xf)h|i4guKi56Ol^#h&`UXCmQD%>Rak1U*j9QB~%$5n!M>N z87A^ynKqS&a9e7cW838inoD=qD9dY1t++Bz$WwNN?E`U8RCEGl>NI&pTA>FhsFd*z zBW#?+Co?QNo(nZqCN;=+?5x<^q6BPJWLNnNkuN~|-NccCckXA4h1Kf}$bH+*RVKw$ z`^aeu^j6X^Io7BR3Au@w$~U>_AQhmK(;SSdOLkjOEosq9}%9YwB^6;9~-Ebp$782!=8)GFAr-GiWcQ(n{$;pW_^*S zkp9S17oFZ#8L5EV6lAQ+^ zPoB=4W5!eSy9*9e&%yN-kY?89XTz?|Hf0sa$vkm=QA`|A9zAJ@UWdbU}g9=81z6%1e-kR?LS(EJ3C(+{X8{e8rWS3rg$c zWT7}eFFggMxl#1v-ik`Io8zyLR9nRlWqG}XkH*!CrkNr#-|{DPFl_JA%ox4WH+`yp z)^tYiu`G_h&qdP#20B15qizztjt(fN1Gp0U-boL=?AnZ{##RmP(|!rOx4_R2;lRvt zy|Ov$uKwChMt|~T3AnDy$p9Ted4lo=G9a1^;Nr;p9w+p&Szk}p`(`nEnptLhSMWXJ z`*yOw)QVvLKntk+pV4YQk$z2nA-hGqie|F(qapMK*@a1%PNy@7v=aIY-9g+%Po}3?TQUsq7j!qDK)x2)5-gzX z6+U4Tx}a^M9+$~zd(7-cBee6cAuJDcAQF_U8!*g|5qwHB_)6ANO(*OiBRZ;~jCO+r zvX(9M*;O*2V+(mM0@b58%Uf;cSL8jLl{bq3Tgw9kc?ciUfylrMc>0%h++;0C59?^_ z6s*b=NFg&7(wFXn`(N#`(5P2vt;ZiWwb9tQs7XXKYw`21U3CQnhrJ4kIN^T zN0{cG+jHth{sl8xxPy4;$il!Ysypiai<#4JD_FzM=F_W-;I~?78>^>B$;y~ym(;kD zK_!D~hPa*{M0)uB6-`$9lE8d2>-WD-#}SwM-xxB-x{S?k&f62V{j00vo2G1|TQAYL zJQ^9%N8LO2BX9Su12-j&tf3oQ>H22yQY_NXJidV;qA{eeHxWV^5hSRDEd2Rc-G!F? zOS?(X9ul+@!T`ejat=v*M#T5X_b;b_JJq2Z!Z1w&z#){54yL&OMy7bJ z4cQz;<+JEW75%v6qx}ALpI+G9s6UdjHM>Q7WMU)SC(yqinLm5@oP zWR%zG*mL2#SCvMj1*L~Er1YhL^SAs#vhA-~7dcpGkd16W{G!CQI)=(JLVmp=8q~ z*daO^e1{F+(s$D*T81{I^#u<=KN&v`N(U1q=h?iX>xVo|+IuBoM?#G9mGGGUa9E;4uH>o%75_!~|U-Aqd0&-}PDR+3W&s zVTzd&1TO@6xMZPJGRPNGIr^u~IYq4%q9#e%`Ii+xhWB!!y*q^`cq_XP7q5M{P+fjAIS!Lw81FD_!hmRn#@kn{* zaqAB?-!ZoCZjNR)R|gS0U5++aYobi>c+Zv7S56NZtNr+3*3O)5xh(}P)h#W1_ijH> zafB&9Y(CHilQ&gRpR`Qn>sWoqRND!OW$Gs)H&Li#2bQ)AmZ=h}-+1<|vSX0gs-z!? zS{06Og=NP`t5TrhvO1ATc>dR;uUrr7W&>Q3>m7KtbvGLsTUJ?FT2@(A8WR~A8xx`A zKkXIKwXUkNYh9$W<2aqiF7fhOsA!7R)N1E}uRtK6rt0I&n$QO*U#WTs7%h@b})NAG**!(}x0pKU!uTDJG+bqWa!n zb9{&`o;~f=zGSJ_nk8J5HP-)?T(vitI*x??*_n$NUUp%)#WTueTwl$L*a;aAHLtA+J9YQxP2 zCSOx#tWfGDj}usPmbxM+5h?s-*@kFyCPV+Sea7a2Coe5FH31W112!cX%gnijrXp>b zDTA@Rpp@OP1EX%nBqkzG8<(h*er#tqV&$R()G2K)Bkg5(-Y$JL;(R>F(-|v{Q%nup=QSzxj4|RepVe)+{vW z=$_m@Y~c8e&AJ3re9_u{hkdRTG-R8zw-+`QG?zDHpA5!+M@^2lT%8RSXuU=iA2K68 zLKBo6kh0!5*I3->RhyWbRZ&`IHr3=5Rx-xSlF~v`R;K>jO<=|CX4m`uEe3UnA%qDr z7DXUe+7KJ1&WKNox|rE$Y$`d`s%z2JuF*|l63>)ZL~=z5^C64I<+o^>lZwWtr4%iW z&;%#PnoDZUwdyM#=}R;6J}%Z4Yj+3Nr7@3V=dR3Oz)0V>%eE_=)n3*{zsytZRPUg@ z8|VichTq65F;r)pTWX(gBn}(zgzt}NNHQM?K0BspE>kwHz$bVlQ=-`eiH{D(a*fRZ zD2kK1J7(A=>p(cHG#S%!(%}_O)oRNM1UBB7^iYN$Pgk;;(4$H+MrEx&RJo0jGWK?M z_?nn*c6PbBSyAOlCF-KwtZ0UQLAJ0N>U5(_Tbxpa7#XTErsovGZmmqxg)t}K6-rZu zL)j%-lNytptIjJnW#wb9OtZSO0yNionv^`HNmB?l7>2*#hUac;*{t$Z(kmo9lfL_P z*uCH*Yv`aAIDH(!pe?cLDPK;WL!D|XartiLoQ=7d+?d{)Q9&nP1N4OBsxG zk)xg6%k+vrnzAc1tIo&$7V~;OnK=0eMyj&2bDVQy!}*ZM5x0|WW?j#D;z{0{a>lb| zYQ+~iW|Mbn{8lAp=EaRP_BRg6q}}rSC9aw^V%^fkOM?=bfS7;`-Os<$w`g#7w{Loyr5QVI3*==YtHYJv-YE`uv6{dV9 z$5fQLP1}&soKs$~y}Wo&!XajLT-H<3WCVJh4muqA*j!mrU-!+W(+#-iRd(*T zc9AI;>3iRF&bb`B(Ouzr)rMvo8#5eA(8iHenaQ)*5c z2M}o;4@o+xlYtLg{+w!d)79q144u#a#inFH6$f%}^l#uUXVI@YjE4OPBLo4!P5Lnu zvJAOgKDnFn2YIF}_b&4;@n(7xfPU{!px0zEnRP z5xWf_bR4fPWD1TP%RMfaA{I!7&L4mT0}^J7VN(n=>@bZCVx%k5^3w~_@)Mfko8q^V zf;X?pP^0lVbv#M?8R>9_IBGD9pG!2>DMDx#jCodfa@n$*90N?w(aZ<3bS+)+30(xP zr$sNxdndOaxxxKyro-Sid2)Ks(MulYQB_JhutkIb2z5M%OM;X2x;x{qMzrsYMuRocxkbW*B|3d@WCxQ1@Ugpe)a*iIA@vflZ zx@L1-u_9HyiaYY1-gEijzn2k&ijtG1v^;`Fl@_Kk1 z>goc65Z4OYN(W}dF>x8uTm9tvU_JF+o0RGs$mxT;X)(RVft%fsDYHHTSf!!KGObQ1 zSsm)HQIaL~fcn(?-lo0e9k9wUW2HTOhA&2@?P51;yKGK#SVam~k#a(_V>kL6J~lT` zFUvO@borHJoF0^x;<5(^3zX(I;=o_oMP@U4M{hctI@qqLH+0_4ZPr`lnF3G|XZ(+G zo?rp64OjwOIIsk!RSG_Qi4!2bLKNelwH72p32WhUCu1z8KM`I7cEx0`*D3_yNH|-b zTCOhU5X^8Eo!vP9&@{QtSv+n2szn=-geEA8$EQLrcDYkiV@X|^Fm?D@)J|Q*RBsy& z+*F1tsZ(v7)`;gHU3ng{3NfjI9bN+f-|WT_i?;)1JBEK3S+kek0s^eyH(j!A!qVFR5`B&J zw9WDwmB3alB8e=0#RmrO@+a^7an<$lsR!%!tz=?K>LQNGkJVR|l_>Wed9d%%(pR(n z={v#R3_o%evhwvlIZ7YPS2&g+(gIWTA(+fcb|_}EFo-v6Tkmi3hO!2 zKpR=0&Jaqavx&h4aa}`>$zaYfyJna{;+{#{U$~I75_1};-8r!C8`bHw{Sy~q=cJOY z`lL8le6a@F{X${fk(dApSLsiU{&p(TuET_k528tag z!!8P$`hO`QCDfp*QCEkTY}GNgQStO!`qVaBM!r^%qsVZWj%2M5;N`-N;nC^j0?Njt zGlXP9szO6EP?)A-Auke{44@7j3n0yKkfe@qy5uHO39IZfofbK5aY8CEZ~7KF<^ufK z9rnvQ{uam%!oftQe|ZJYX#9>+xT+Nh#7=YRcqpb=qgJ^7p&-JFIr@*NGprhRz>mGzrS)dr&*TG`SIBM*2UMKQ1(`|v@!cQ}4k0r#s4CK`Z%E1Q=_c7) zEWPd~Nw6ANeM0LPQ5 zlcC$VfZXuxPYwMIV|1P%!VL8()|O}NOWqd1=xa7)jpXvFaYcY$wkdK}^G9R@qhI`L z4czD{m2vr~J*FrmivxRDomR9yK3cDjk1O(1f(}Wb3(dxM5=Ik9P6>iD5=k?pcCf0X zOt*v6l3`zO)5~sDJ*A($n8WCAtvs0z9nUNgksIa`N4+e~ezU)@50c^1g}26QsAO(P9N(Ub4}D_N0$n=IkIiPIaxNy$UYc#_Qq zdCiaVs$5fglT4Tj1`yJ?>mI(p`O`u=<>JqLb?eqNaO0Uf-Ge17{Jaf3E2_y@}Aa->Gh zp+^E4X|_8(5`@T(ESfCGA0C}KaDZZ`SVn_;*?|0D_2-$bfo?^w}wcFtr#iqeuAn>1>|i zU3o-YP2ThU zVb~ADtEkk6I$*QPr($zUQcKeAih>qU#43)E5djc$b0WQjvB*vI=Z}a*2X0{j5ptyc z$dpyYb2T_S`r#~QQb%SXNb^3}LR{r=^nS4O9I;p0Qrtu)mcCs88P#jH_hoePHIPY& zsEi|(NZwhD@%k5;wHK{saq#?NHwx1^Y!qEGa)rYAMOl)Pm0ynbLYpTN;an0!p6-|A(?X8nC_ z4m|R4{A}AQGLl0Y!eicrR_SFKsr19t1-SJAr{!1KX3^NXfhL z-JSS*!i&<8IF5cs?YNG|Vrn;f1a(x-Mm?Yd9E&hJ3wfc};HUz`@*j#SBOrj#eZlrl+U?a|B*G zHc1^7C5tpimnI?g11nPU3)2hbLdQ(UECd-t7q}dAiZ(DZfZdE26677MdE^yK&1E37 z3#P!5Eme>&05T=xzgEVQ4@ER;0^o81G)+ctkOHuT-2h!@C>c+Z?{fT-zgX(|F^%R| zi7M6MMPYK=DsdcOO-OTdwoMXylf9zn>U-Zl>&$YQF?Y=u(HzXP2!r}XM}>=jR()ub z9Eci{Vha&PnztoXV|47~q6gfxGkv4Y>OtBt0M51kOfuk{>Td1Drc=AmApJLxE@D7# zJA^t9>L>ql**Wsg8f75q7D(*z%8+;be9mo_rv$}pS*cup_2i-Bhff@I{rb|Wrk1S7 zdB+!3(4JLPQ9M2m>GY!7+NF*1ZOtvW4=NAbsyUUpo4J%5+O$+29IQ#&sysnv{q>j( zOC#d+6Q67700uWts307!ClPdAqyT{m2aY9N8Z6xfpf->xbc}d_0$@i^T++-~CHjhg zIsJrxG6(3oF+ikclI~8#|B7fBmf)wvI~yS$3Nh~jHr4CA3ou8W0C0f7oo!vZQ z$$Z>D^z~NZ26`<{>D2q~gtGl#0O6Q#-?~=BdO`;5`L#tpW!$B?-~xL6b9L)=rS&fi1NR$6Z9#QwJ!PK3Yc~XO zpEin`sw#KvlI@Dz;a|l`3*Y`uE7=Xx28R!j2Z?{OZ4&Lch^hI-%S}y9%BCjVgJWL2 zVDw0>a^^_NUJ|%l4}xPJNB-*9@C~<>R=rqH19#Juy&S?*FZ9YGFEDnE@o!?9{6Xt2 z*MF%G;D({v9=%C3m|SoJy|ftE__&O;cqN^%v@fpq$P=Pd<%f=4klmYoW=ed5HXZ%Z zIFGN$Skc+2rLFVilfRrZIW99UJ6?GL;P{Jumm%14F3MxiJo%)#|K4&O*6PTwM2n&} zE}bu%bYa20l9J5q5{`^G@tR(tBmTYR)AI}OmzHJ;TRu5{l8zTGtT?&pqWs>atKXJn zl%y3aJ;(%d@y$s(5nE1S%XgQqd{?3swk$;krTbaYxyl{wmt+s-otwyYG}B_XFS$Z4 z{{0%H6g~LxOL$I90y^Iz%&F;ZTUV}c$1Skn3vja8l5MeN5!>Q_n)}<5pXM@t2haGN zm6LCs&Yo%6aZvfwrC-nde4)Cyvb?;KAqvNpixzGQ;YKYQwPe&{CUo;WFE6>*yaP3x zm7~v$I63+(v%Y@m*%LBvOpI=cPqnUDCJ>mK+K4YwUtZ#QZR0ckK& zwEms}aWCw+z2oXP#3X9^yY8DSGFv7D?qfSfi6XDxQr(e1eOOX|PpQq+BG-rECtI(v zS)s;|t+FXmV>b!Pmq{I;ibxD`g)>1HeOKfw#qTkbGx(AaE@;BA;>oy=p4I2)*ts|`qSlW9s?e!h~^c0<6P^2oE7D+Y-AoqA~tKyQRIiO)Px5xsJe}_pBCj38_;2xj!)&ukuPU6l& zn1D!BM5_>r_23&l6>k4Rut)s6Wf5z;iFCBIICya(%WKSzQ`&BlIWhFQi1tY#hY&J; zBPVajp>n4bB`?I0fwN4^=H8;?6Qvt6^sw&r>D~LkMc*e%OiNBmkR_Os3gH`i)NlS6 z=zgctf4Ods2;Q(twr1O==5TJYZKe(o?i`J)rYp$fAvT$^a&we9xtS)NX)!<3rFq-7 zJ?*lCp{<*%xI7|nCEZT9TYA$CE?LOF%|vQrR`>o^q5Z;aQ$Z0}3ic{2Bgjez%S$j7 zfSGh1{@0Rs$lB}VUsp)?dl-21_(GGtH>GWs`}ky=kiabi*Y!x6iV-UfWGoqwK2AmG z$H1icY}RQJLmbWygrS8N~0G4O+11aU-AuV{s z+rgk@NoHv&9%(9yfy*n1o|eP^;YR{7U8^L*vX~5dIoIQ~l58ekB0Nem`uR6>que$H zNP!o&DYhxV54_-~@Cz}uyUc%iG;OzLkFsM61aL^heyD)V0{7Ksd;SgH1dv${)_c5& zP035pr=&36-cyr2irFWYWExPV9Z|FLkY|YAo6*zjETMIZ9#;WV4(`Adi{c z--X0JsK?^GfpNywK8I-QFu;(8VR_EM`WZh2`9n}aOkn~7W~+dsnw`HrK-slQqtPej zY8cPMKd0Br>wnHVd{~*At1r+XpQwb4fUt`bdDcsK_5YLI81CyA%VotGLGKM`?L6ut z*czC?x{&cD#?s7UZcAxcbDQiGB0&wcNm1q8^+P{x|1;|xsdPcIQm#3JEMD(YTUcA# zDBs)cyMDbd{Fu$WsT)-va2uF8FdXF00o7#_lOzb&0H_5v)2zGZDhg3w? z)>c;5a->D_=IIY_-aH-GhXXH5It^v9_ZUzN*^PSqH%H!+oZI@eRz%;Egj7b>bQS4I z221F>ohYEEgoBrd3>xMpI*5yW9}m)Z|NP%~upYErX32*O$nrBHfNn?}U5<2y1gOES zz;%k@I_xA%yw)sT>eY^zSuyyJX^B1qh$OYZGz1525-iunB$4BJ39jC$Q#g4JBwjzU zv|fUkmr(E&2VrZvd@=p-yogpxXc7qimk<>Sd*D}%Q_dtMFlC%Cg)1mHrA5y4*;DPkqP<-@NcgNSZy6X z3Cr~laHd#DUmlmPu_O209G|gt553I%2Arn}#zGFUJFShzS zlJ#Qga%`jPC8TvC+c94veR7=KpGfc1@qDB8b1_|SYZQvLqF4v=sVCBV*wSGAT=LHr zoX?Mz_se;n%*I7OKzwks`H)q}DX(_0Zs!ZxM`X3)p%NW~JNpoCA1V2>w&^VFUOAjj zpRU`KQ|Jq|FbVb9AhNtKxtDdP<<$9Iduk69A7zY%g$BgEKSc`G06I&k1A0hZ1t+cF zlw0t>1@Dsul5P7A7ao>lPSdqFZzZ#F)hco$_mzOty%$N?pLr1(SG{`j2VrRZ(V`(A zN^jV?Ii7{LUssuakT@;QBk#Db3>A^lU+igwRKSY$sp=KV%xIzGSevvVz@NJoElO3T ztCD2W_f?;hK^J?==E5B_VBS__#(dsv;0z_?%T`fERzYbwsI*HW5~;#JErKi4L~oBk z(kW6;mD0f~|K!hfI~Lkv`?y4>C&fg|BFked>-lNF7oOrws$5lm3bXPC+!e+%@*jxP zx7Q9R^O5#dt~IWrjx*BynDjt{Z-6XbkLR4zY^%wzEyQAv(mEDvvaas%tjG8PaQj?g6JFwn2r%eJF&Yu@W+WaW`a5234W{oNY^SR@^D#$9$%Vly+phT6MwfgjIWysE>;lxf( z?7rDvvr{R(RZ;+_u!h-0By4W1MxCHZO4Vg1RWVgb>Z(QZMbVMrLCURRsuYBFq&4cI z%);{0^3uk-24s;p6l?3`bq(6Y3Z?XLMM6PfZY%?}#GUL{v7c;Q$Zc2@8nG&CK^Bt8 zmrluKG6z9aWD}h%9~e-yZHrP`v!Xfdq~W#^Pvv`<;Epg5Pb1(np1&j2?;&P|pWc&8 zcRbuSdbv{Qh`?d=kgQ#{gBx{fT-CT!%bP!cxZoC!NJanUyK24PxLM00-8VAx{OC_~ zjcvBfHivhhxA~zk%>O2bc@M5f74fq)6MuWSLHsN`!SZB1iEK`!jt!+_Vd)H^Ljwan zJtyfs54(CE(cL?8I6vP-*qW3ydUPOtzk!NeM?}t^I9Nu-&xaGyZx60LujGg$aBhuH z9yd0+5bP^ha3W}5siT^ znBJmYpkc=dr3G6KpN0lCcplc@KYZBr@Zo#*j&3B zO2Q$cg@S@-&l(8pM=WpzBu=M5Eu*N*qfmCCv zk-l>zHZLJ}OHo{I`;GeJS$Vm|hki!%I>%52E!XT=byx}$ma--=CL=a|X=IQ(NWCmB zA~hm4N|%(*7-F+h^|H*gg2cj%qV#PBb7sD=405~1tc-%JtgOtFg%vrKx!={9bs0(X zXwS&aOw?w;`#uc~iVF8y5|@;vZGax~j>;3)$|{eYKXAF_BxbX@8K+kltBciV{RCpP z!{J8EX4dnuY+(lSUgc_CU`l*iLV7@QVn$*{P*ysAO}+(*RS{(wCLL2z1L0+5aZXL4 zx!jnQotsh0fCYkOKcn-Bay@{gfwmj0wM1h1k|c=UmP+{j4_R*v3O<+D&~5{^lK_6l z%K$Q`V}Qu^${NA)H^>SwzDQ`X8#S`~J`acuiuQ|l^`zo)ar6WEK-#mdeWWrcadkto zT%D4l(jfMqrd;p?SvK#D{0DKvj+~qZB|ML<_m8#CaXEo|lkBtJ1uXZVh#w~@OwLm! zcXXrvS`BAA2^}Vzvt(S*f~X8#Dzt-BHCnAMO_#yEy(rNcbUJwGa?|qUX0U^#<(4P` zUA7caoqz&{J4i6Qgg?AH)G7N49xh=;8=^RPIj^A3UF@sG+0zN3LnXu!)`3WpjF%h_ zxb3}*6YgTsF7IjEzmj*1xg-Qnd=!?~Vkpd5Op>3MfB)Hjt|R^-YplWSuHE``-n%#NTBzUb4Txd1 zi_K9?qe*nv8dvYl`h~kTlXlwf(s5acNIHW;3rovogw#m8h~6a=5RvTd2@Y8YOQrQN zOL`9`xa5>w4Dv%q+WR*M5{)D58Cd$T`hT%Sv19-=C|05?v|m18FdYC%iWPX+yB+=G zSB~fESgNHzz#9jtg-3qBDiIYC{|JY=GqD>`Y*bY4j6oNAR;YeU|Oyq1AblpirOoIMMPTk zC4ni-!>U34J>2>=UC}A{5lnRTWBMWKv5H&MaY5v(trNJuJjBg)4b58R8p{O{>2c^W z!d|OEwbLaoLg0Cc71WTOhp`q7M2PYDb-XXZjJA;NSU_?uo&Pi!UVSZlV#}eGWn6~` zJSf=-@tN`R`1p*p1Z9T@^8Q!GY+1ET2GXR}wd>jTw)%b)NyC^p<7ATI`*bEJv3a|o1t0M!vfI{dm zv3)@o{QJ`w$*Q_F`y&P4c({lZI%NV&Vl=uMwMJd0PFU%Jm7@KXb?t{>>Njf1B7_qB zfC(OzOO|NK;=hSMrWuX=R|M!|()fU6Nt^B5Boo{mcfu~P<&pO#q`)?nB|R@rqwnT} z@>fi{=iR$Qy30#!575m_eMAN-Ed#}dVnay@a>$?|9D%9-cDfketvb33NrKDKJp_?H zzmd)0*$oj-2^+NGGr61f!Vy;bm5RJ1CnYcfNRPWKa0^L?Z=@n6JwWaV7zuiPcX_IH}UZON+LRO_5sMlq&wZg39#@y4S=i0 zg#^;+H-9HR3}jx`U7V;h0pulM#IvH6bIWI^HkGqe$=7!!LPEw!GMN9H4DRVB z_9KI(?QY^>aGqh1=|=3~7m-7e%pR{`M8j-Vh>2l6k;AXuk>3%^LV4N&zseyKPJFi> zRJ3hzZLw`}uhtXhNZYHnS1XBRKwH1PE?H$|#xj91wR2~sxBXYAz zuY(X&1i2$3D~(`87(-Udp*k}b(B9-)}y#>O0yJzIx5G8eo zH}De)Of(jp5u-V)$3O+u3+g;F@Hq&wbgqJrL0ICG9Xe|n5@fN&z^jei4fpeksGcQm z;)l{;%U#}qwaqA*TA-H&j#^H;wGJy^yU+7jIzJ)E#aLC$JBn-{^53(znWd!nSkYwq zf$u!{jD6?rSso-bc$e}da)T}ufobDk2QMH&svkYa zMyn7Z0I_MD&3@+$z3gcX>0WW-huXa*7lXk&OZZ2uH2d@akFocFi{fhAhgZYQZZ^gk zmm#pj&Zw~)V=S>p(b!F5Lu1E=Ac7#hvvgP%SlFfa-ocK&ml!ogi6$l*O;6OACzdnI zS$zK2pn2Z+`G4Q{`+ctLPC4hynRd#3U-xwpZp$Yq-~GbuM8P%;0rP%o;85%dPK|2< z9r3O-A%yrzFUuBRytGiSmEBQc>NZ$12w>1^sjY3k9RFF$B~jY6O%1Xz@G=o4tQoPLH-Xdc zq~s>&8x-On9iN#UBYY;mxova^KXH;i;yp1XCL$@0_X(}4ZYnLTG>PSZ{GR`Smsv5~ zr=br9Rf*nLdyj1AymtC+i_m9h>4mT8>vYC3x|AP2Au4pXm>e0O9L0P2)iyU5RWw<| zs=Ggy$V|!W$ck0(kdb0_WKO7`{6reLjoWN1R7Jk5hSij+7iashS zlHcUrv~Pb+6@q}9(A@Mcl-=>cBzEm!GDED2Dhl1Ig-v)EjASyot23*I9G|n@mmE2R znA6l$KVJk24xlw|K8!8XHkLH8RX+5L?OTSPA*Yn->9uu69-y9@_67zDCJ9MN2>5_}Qf79dn2ecxmbN=8P)}my7``0ohB1rDFs8fU}aav$ITQqfkjw zn5)38nGIlu;^Pw%;>8deT}BNIXu{3r>}-osC?^I6EMbYykGkL5gUg9G$HgXqI}66c zv@lyAp#&LXjoI-z(0(%K0RJxM>5#T^xpC%LJ!U7}DI;v22uDm|^hR?$ED{!TE>f1F z1~(-WmuHB}iQ)CJu`yzVEu)AgF)>C~(OiK( zH!4c6j}oG6*#$J7i8AKs3;2TE+yZ1NB=OAmxJX3?eI7<~F)w@XYwkcuHrm7XSuZ&Vsio+*lA* z%oi6F6eF{oJ%Z`HU&;Y0q#+vm&X%q5QQHJ!4umOxEiK>|ei#$vDh9Y{ftKUK7zlE4}-D2Hvcv!eBv|4sqXm#)fLSvgO2&<(1!H|n@f@QKt z4e1$~7_>jVPn5Q)f;|7RKjjrns!!H^Dh2+omWnTA9r0;Hb7xPy_sTz-HcNkP%FMngI{ijvH+8SzQ9&w}OCV%MdFWa>>x z-8%M$su;&43xL`Dg`0QDtiQ#lyU5^1A{MILzQ4cY5`VI=tRw>-S$bob5n6dhLu!fv)HW)Ool9y=N>pliYIJHOkhLfz{!H4DoH}5cRJ2dmFs`t+ zu&xlReN=5%>n@jm(lWDs(a{aqZD)zkNyv$p6AlX-<~!C?Wz`mO#_p-H0q-gr+Vwdl zt3}eICNv2H5}7s?0#efCZ1O7!QTNy3iaWyqhQ8)xztQZUwgqs8fM?JtJ($U4Gs`pb zjm4QoPGq38A55Yw8ED%tC&-9)GA5+QCu%d<^m1c8!z0m{%(NO~x`a zo|2}1^H_k=TH%bSVLtEAYA9`ga)a$h-c86!%t|&p!PT4rS926QiC=cI=@;$&tIo+n%Q;&>mXaW7*rI zy@hBz4;y6uhAF@Gry#F*A~|qifN88T<&=y2%gYX&(Vh(1=TR=?1^Z=zAi5VV?>;D$ zuBHcf+W)SGI1SGJMEB8fkvcex96IE#*+<7{zDHEJD@27lEy}JA$-+Ikd-n-MQsf)k z{W^uJP4TX;bgXqT$>->0a`}a| zePdUl7W=h7Xs}RqM}SWF`{op z^4`ii)#YznA3V}N@_ex1TOqJ6b8lT`ZNEmNKK2ME*e_C1_AzoM6X`6O zm4_Z>-M7n#;twq`Bc63AFdV5sUoHli z(Ey~Q2U#*gm`cYEqW$~#r^`qrok>2OCH$65sB`tfr|UBp4j_|y3-z3)^~K7cu%1F>p))fT1pfmLYP-DB`aKW7V}G%#fGiG2C{-V zi#fw<%>>aYlb>~QNaqC~kOShoo5^d~ClEPT*os)!#o8q~%Su)VQmE|#htq$p`7D^1 z&`DwU$uqI%`17Z8N={+}(l5nC`86+uykN`(fw=oR;#q>p>L=wxkYV+3}*Up#a&S9Y_LuG?BnmL?Zyna|hEyX%4yuY8!V^prJ6Z zE+&3ZjlHOq0}}9g@=svGMdAl7`h({M5~{R~`;c}}YMZ0A?UdfY%zGz3Z{V{Nhj3=* zhg5|0EhWLALXE^Tq8R1;pMgv9PA9gvB&PTa}!0kDY%!Pa``Iq#% zw7k4bWy(lQ#YC)x&IB5@IF{}KPM%uY+W`fFC1Pzz^Og4YzG>|T$VfT9ZRCM=4LNCj zHi+9~++^C4U3}M(4z8#6H%2~Pu+-77(Z4yk6%Lmr+X!S#z?AnEX^nTX{UQCv1zw51 z_LcUlyla(Lgh_Szdy03LwmL0sW2Y@4@R-WZLUZkvWwmGydVpr52r`vTP=KhJ! z=7K%_z5KivoOK)tv9RfMFe1)gRusRxC1F$2CW8}P$Mcn>)eLOgTd-aQsi?bjhYR|2 z+u03ALDVze5s>?>2Ua#N&O1U99J9T>GPd#CyiyXp#UnIfam-5Zts9)+%Nf66^|qx! zA2^YyDNLMSlCO`}$K-2)Vr%4-@()^;9sngW67AY>+~<6Z(;Aw{BsMlDOE0N2vl_)U zB=LOS@rGRokcN&waJ1!Y`KL}a@>|AIYpQF|HYC->L8&(CTgH}#KzGdXTH~n!{yUKd zpY?LAXsv3lZMeM5@%N|1{stLb7k<}qk9l9_KBLNd4fZ=C0_E@_VTGk$rJlv^`CFVO z`7)LB^WLAKoe}+h;C$h>Z`78Et)U)HXT6wHd|8Ww0pk z65Aaz)mVQAitn(mEPRT&P6wI!_z$$-sj`2jFJ?!J;QO3>kvLu;pFvNn>kbqNL%CCn zvNyUdk8@piDdB)DSJ!?t@093)+2rBC{VSJ-xPSa{#rD$}!YEFawH_16`~LLRHlq3J;DOI8gbd}5 z;+WcIZBy2srUI;eSib4*MGzAF{5@g!?2Zj>77iWCFFJsbdF6TA1TLdG4UM_vtgK9{ zPN@{2UKU){jlvmcDJ9_Az~#4GT{X<39$~=2r9igH=`81!V$#RS6pT72GT?9-Kp0!jKrqyLDFHaT>12N2&tX+v4zxs1peo-)K;{s#9__3b z{Bk~;-|k4iR&e9q3!6D-VD8U9{ZM%I^ZPMlfpkpfCU0LhZmh?N+ut{R^6Txkxh?|w z*RMIhIWt0B_{QZQ7Ikx24Z=Ws(cmjo{A-(-to%4o|G`S_@^ZIBz5-bGdw9&8LwjlI zCi3x8n6bBzQP)YBpt0AJR@=}w$w=*~`toBiEKY8GL^$%Ewmz{gwpOUks>!agsL0i> zDO~cwwDyBq$%^N0ziFR9{aMpS!-fr7+Y{ybG`HmS&|GAt2k4%Iw!7=M@H3*XofkE6 z3aQ5(WnF!8Jr4`!bfqRme>(NF8JamEtZ9eQ$49Ffpr1ZM3FA3ks>~=Y%P7kOsRfU8 z$*J^_QnP#momoxaBVHFi$*Dgn*gBl;Lb&V8u1%e?WcIY_=jYrMG#mPTeeTQaV(-K1 zpMZgnk(7UTE`8MZ?4y;BI(3gUUu%A|-tJtOXuq{%BxfBeaJUoko~~=r0zMl_h{Q5RZ!FJ=zRzoee%N( zPekc;Jx8w70#ZP))2{$^#P6tzQTrzg`8yk9Yx3b@6(xIL|`(=q!`i+2EmY& zY)IlgQUk-i6IEM0Vj`BIFC~YQZrmlqNS<##e zijUmzKSm`jJ$?CN>o-leO_`2}D>fL#odpNp+QXkICB0k8nD>bAF42I3EYX}^RZ?54 zJ+<@1j&{gSts*fi$Okm$Pp6hiBg)4DU_lk(s|Sj7$`lMeqv(g)kZ}D9Fam@JhpqS3 zh8e@N!-02fFb7-vlLOC(VA9u}7r5mf9+fJQ6jlVVzSHT)#%jC9VtA|J1t~UI` zRu6&drA#^Pa@XZZcd8Bl<+QKKX}5Y{$MdwOcFAc=WgU!zAJQvuF`+kqlis9NZ~&}< z%Vi>ZV2$`b=%BKQh6(%STG%gqWrZ=lQj9zje;f>KUtp-3L+)2q8qmB*KiST4pU2K7-MD54`My$OH^E7lCr--x$06?Z9 z&37l@P|~S1_u*g?n9tSZfll)sc(w);@4+ODCyRArmrUD!Sxp~<6j^hB8uk-ckjH@Y z4eDfY1X(R$@rRzoMm3NHUG~>>P$5&3SJ9Z-BOt90>4QIw^eq`H)so(QaVIjYuv<*>vJ%o4PO?Y?g z*zB>qN7QDY@elVN^ATHv(*|wT8W5$VhhtAKq(n!j#qeE=SWPLGGNMI8Zdy*RR_mX~*cNM~-=m2mKQ0+iSF4r#~-tQ{OPBJA9H2Jr6`U z1e@UU2<+@2f%bRg&|nTg1bgzB#j<5TkROsg*M%)Wj6lp5djqjI5J>%g&#(h4)CznoZp1{9|r$uDqn}9IP{{HLclK`p9`weAo^( z8IPTRAbwSS?+^0wnd3p8yG0`JG~hipYst$9DpKS7d47B^TUpWOj{LM2W5nPjEj}&Y zkPwe^l()3)K3;JKPH!ZarAe)27;SW7UJ03HL@B}IHOblT2pMI%WP%J6Jg=G#>GRIH zT!B}_R<9^(w|?~K^$5K5*9S)KiQdy$uy{Uu(y zR9&66&%fG9<39Iu#Hl4S?*HQQ^U}(r^G5&T7~QQa7!#cqk{A8UXmDRa;fgn#$y_K@ z(s1s%`rtc1JI3S(r^Q5*-*i8};#Ch-^^bIGf z&HI4ffQnz>zkXum9$ZVOxzcw=QhUrx5m1G?%6}`!NOA}x^o6oY(f`YTO=mrvu7Rt7 zo02+Ksih9;x(d|mI!%INyc%&Xk2y)hw$<0SiG;J|g1^_Je#b5Wh*jIZRcg&e#s8h{ z2bb|^Ynu~M$mCfd2;&`Qlo zQ-e-AU?(4f#Ua`R$)45t4edTMT;#xu$-t_POT==CblCe@UGaud8i zvyKDk%}>|+0J_|75lyw~*yOZTt89a81050M6fF&u1|2(^c5Br!r&UL>XSHphZIB}! zPKEp6vO zhgbd$x}}0LrimHep2@Bug&{@3Wyu*S_=J`ESk@ZoOUcwN2=N7dRMvOl2yfhtyq)*i zC%e{DrPwt}NhX-MrX!xmS8Pp4l0Pcz0_DB;zZnB@+&9=U@4q)f>{_5qFvXh^Oe=PI zu54O!X)5VGoP0E$uId_Vo!n1P?yC}w@FKsdElDm+E=*C;0YFW<&fhGMesSru8J#emS8!Tlt>8&d3XY?4CSrcC#R-m_l*rVb{6;`J@&i1$}=l%XU4YY7i1Qi+VhhhsjS1Pg6nQ);;#dA z_wjtQDhRLvL+P9SYqfWfQOr_`qq{`JUG}UGw%_Zl)%FE0% zm*!i_Q>(#-2+)N+KB;h-OosafLpu%qt6OS7_PijN5b{o4=(X+9YumG(_I7DqShv~( zv?rVCE%0<%SQz;Jzm`}HqeluLNV_^XvIVj>@Q~sV&s>#zbq-*Fm+yaeS!P9rwzFfg z`dJ5#C$|aCRt2j`G|3(tr6zR4vkr1l2RZ;9d4}O*gJciiY>)lU%4YjJotAvA1}5r$ zwMVIat-Cw5_gn2p0PCp{NhPV`s_<|Qtg?_U^^<;d=6O1l$FyqZ;{N@}U0sz>`1B#X zFhfX>Aq70CA=O+Z`ow`%W+Vq3ZZ56-lV(EGfmRO1%3Klri1G2-00QmFN+B0xE>Cir zM~s>{9sTYkF&UA5F#J~Gu$BKgEbvuXwjQvmJ>}_BTMu+6*nopqn$4Lea6Y<`2$BxJ z8>DeAlXT3Sut7{h=V<18lT6$c^jMKH;ALs|DH649oN>@Lv5a!*utlQ+0)ETy5H6 zHweRXtNqX5deZ+TgMXjBS*hVNl#Z!YGF_i5LC38s|v z)R_47F>aA=UL#jem^pXy^kHsP5imJyV)FY&m2u@}!)87pB03;N45M~o^rh}^yKs5g zPUV|i5?IHROtz)2x+PmoFFZ~D%q(SEvargxvjl{x=&EmD77MOtd=Y&C#!Apcv~uLF z_dql;;IvRPZ)oWT-u4H(W!nySh>1lycg|pTBvozoRN`j6pJ37CQl1)s4nI0 zYr4!|xL`0|5bqlA20%Xx3Q{ENz!h>jvHmnD+2B~ zXXU?T%$>3wu9>uiCT}uQh&de}5b16-I(O(TVwPlvv`gkVGxt}FNm**E|7|mW}kx1xyubs3w(V2d|HFg?GXQ1chGgFHWi3EW*nVqRJqJ5 zD%m39^{db`{wLewKjROdC_PXYT)v=D{Gf5-apSLO!Hop6C=>ZhC!(U8Md`gF0Q2Mn zz0F2`l?0ZK0Qz29D4&)P?mJbWGg)Gg?lAj{8}jz@2roudYR49})POgYPcF!B_P#yw zu6I){fX-`ktVg;%$G3>`)A~;vY8t+)Yx!kQXl3Z(hHH&qHZ(L`PTliGedBj^d+IMY zd|TfhotsfuMs8^m?u}U9`N-L>iKC@-N2+ZU*hqG$Tqh3m8NzFNo>C}ii;NP-liQ4M z{EFRK9zO7Ky)8Bez)?osj5Yz@i}hf(SZ|aBklwhdnya|ew;wbhAf$x=Y)+eDTT?wR z3~Mbzhc=v^C|d=6lBIWO3E82thIMV_!c&S9AU*)Lzl`D(Wkonws7#6m_#iQ#iA*Uo zDYK%p@)=VI8)N%`>&A4T_cZV+DH&`xft>uMjk8NOF@~g+{47=z*V9Fj4nzfS#JKeN z$IxpKmQwl5Bt|o!r(WSqU;CU3C=9I;G4R+999_y!qWFRu!ZC zaJl?`ilGYs2)X=z;M*i)-sfP=Ga4aMi+?gB9)475SOazi2pA*kot`G6LvSvsMpgF@ z`pMK@17!+5gF%HK17wrr^8_g*&Jj7})B-Z&5*Xy-@q(Pl_l{Vv3ich~ILC?=;RCu;|@0jA=(QoIOAm|vJ> z$rTHNn5c-*q!78zihi4S)EyAzy?yrA)$b9=SOW$u_fOBf>|Ap(-!O~YSJ%)ECeI!{dzKX>=?lcD0LHA>!_KDB<9!GS z58t`7IJ`>ChhjjkS%wcO6a@h|0DfblqLNXe1Vtacn=kGHNuA5#8Y=X-H*wwf#;0N5 zzJ}*_#UkRapaS}adF)(ecc#CI$jO`fWLXR;S#rIfS2;8mRhA3tGkpi)>z~)S&+{5% zcp`Go%ManVJ}-Y)8Sc78yo&PsC=~UyHx6*Lj7x|17v4ZT#0D^S4pjisWdwpsB?GCt zAJtU(QN_cHhgj1CjGo<#1{Gw$(z^e84McK$y7%_Pa=NiwQcQj`($dp=4FWzZ-6(YD zmEWFpqYCQ)aN3;hetzCwUXp&iavXE?ATY@X4!%F*tG;PZE|USDHC*0Lww05dQtRM) z^1*@2mblww#3jvF|8^l)tZBH4ClyW6je%uCS@6#6jeI!uD`xlCnoAI$h%}Yu`Hf9l zXZEklNcobYDX4gp5Hh%w-Ct3HcG7O5i?emv0&aECTKDaOrk|t2Z~IpLDqi047PB}m16jnzzB8x&_UtU&QkeC;3 z786X-CVz|Sql)0FL)udZ_nmKRiSe%!wz)C5S^CoO2y+PU8xj#5mK(b#O8m;NB4CA< zG>+z?b_68(@+kIjC zt9x{1{T@0`WV&<#_S10>RkkW+*RR%8Zph@xL*zD7KVha+iFtl)f^9D3?*?X!6Q3CE4sSnm93W)M){^%gW{5 zXRjad_+X`<*Xmdi%(jZhv>(D#t?zMPExs^QaF$f;%*Bglh|aW^a>n^Z9fGq`Vmr=X zfcHUaAXRN1=bBHiJ-zPq$ET0LlD+!OsUOFZVF_oJ5fxP-U}P)VN?p#lo!~yjOAR@}bg8mmFZbL zUVa1750{CqvhuS<@QuyC{8@F#=jJO*KR^7`^|WU8EYWM_FXgE1A6z?89Ha_Hs<%~g zbnGcI;4~UReNQ`;st+A-6jIAyPGvNT1V=^B0p;HtxIdpV5THTW{b&v>$O<%33jZ*D zprBEt^hA@QnE1u_Y(+_2fJpXda(=;xv!2W%A>K2E;*(p-vWjGXkv77exwCuUgMDwoqB@E>v!VGP|qt$=_K9FeZHm~JY$MJE^xI$QUUCf}%>t00UeQ)wF_SlkBU{8qtPlnn9 zsUhWJ1#wr_wI-no zq?dIv+p+kQe;(wIW{Ngm`3-^E#CvQ7Uf}-yT}Gp%cARBT7nL5DXf=Ca_<{S3RmIlS zCWn=Y71*UxbnkKr!sY3yP`M}+CCz&>ckv{htwbT%FW*x--H0Tz8#L$h4!!aeZEKL!(xzu{}XVwvqYg=^1ebL~K>W zTWOnS4d&+4sw*sJC$DqFflht*ytbk=qgWuXoTU!zs*O7ljL(rN-!9Pxhb2b{wC@tq zmp#{BaS7pwh$h1Wjei?9oubU@Bif3R47lIbXJIv5wc$n1n@iy{OhV4rmyp-lrd`=} zr6QeVU5eu_W+_V+GefBbrX$1!4rfQvZOjh#V|~-1-!4XeZV=CZpd7Vn?K|W4uKP*6 z-u=#L*_!Tm&JCd_6nEK0FF#X@e`V#kgneXaA$b{wbbHC2yw&LqGzumJnn-JuRW0?> z)duf6x@Xr>0r2o)2#7i0p1w^8V-u2+6A(JkugS=qXv@1Gl1FqH64wRqIwB`_?yQIJ z{g{sSWb}sEcs<1G$Qd07?#2JWNOL~^*>%Tt2gMV-J@o)aPe)qxdmc(t9 zA~~m)hNp8WX{o6Q$1>aOm_%q?B=FPNgv6}uysN+E7K#bw?~!1WHajajTe!~VSQ6qg z#CAIT33-Rf%FNEp=D%jMvl0?Ssn1cl8Y(6sH8C-spTuhBp(42u;6z0hYCuV1h#`Me5I3~-OWy<2e!qF1r z;nGx5o;zjPmbIP_WnnMrzDCVProAQWxLI^ohD!PJs6vXli%_{S4}Lp@dfdaM*OEWJ zB+*An?k+O?Jg8wHLfi<`Oi$1O*=tTbc4ptRzRGk=oIqo?@i)Up!H;t}hx8+CF7nGaQEdo_5lfwfOw(zSwa?1S09aWKg z&T5J8hsxr=51C7FZd^G-`FnEUnlqOk3vUna;TInWY2x#AI7qzSQ06RS_U5-#?B^{O zLn`Q!MddDpFk;tm+jgboP13p1A#*pm3F|hx#%|?<12VG%MLI%Bhx;>DCnYWzab(SF zncZ!>OAhddcZGY_iVg0CA5GEPJjq|2o2Q2x#>@6@o^9>zt*!X;bQ3|bY31~WZH5Ga z8rckQOHfg?3MEAslqJ^lM-Jqc?GlRyGX7f^M=s=NFE81(Rn(NLHtr3+^u3n6b@O*( zfAMJ0#%7^uW6@$4#3Eb8Er{x(mT$?*;ELeBR?D~F5?4?uvkq1lPV+@qW7iCDZyCXM z&XWGTW*5TCC0Ag5U)HH?ja`3n57b1d>x>3XFE`0twr+XekJc81T@E@1t6w30`CezYOESE;Fuu!J)6s+O7x}Sju0ET4qV(z^mSEN zDocj};`%@Je^L9p&Ws=Tys~m#9kbQXtLX$z#XYdw!PFM7>q{oV6{0zz`ChVsOk=Xn z>beHd_e&t;h7;v`VsV&^RjccCdA)n>#jb5+cDz7eVG(~6C(c%WK%M>GN7$@0Or?l61Dq7vXt&6#J3bI* zD*=tiW$n@v^)G7DLy6eHyw;%rM{K~S3WTkjs5=Op`;(v(1hJldJI4ays}pgkjcVb4 zy#AtG!mBz|a1j`7dJ)b#2#~Igu0dQ^<+ZSa{5T#1mqe=wv^;IUhS%HGz)%b7_t;Q_6ue!g>4#Z3{prwWXP znWgXxNS#KL!JLxel$ny0oy1c$n~)F-MI!yO)KKQms*%U&%RH^5J7MU#MkC2<2p`>! zE2y~f%|$W8E7!L)NafjhH0)x5NoFxxng!_a%jA+AFK-XFYqCuZ@JOXIgR$`IU{iB5 z0*2g|2GAhKHy;sJ?F2aZ)?ai^j|bQu+8#0i0nyvHX{no1HlBkL6aGVnxUnrw`BhaS zfYuKm4|oD$T(b3FIw#~00yeuZ>0=;na^X(SbiH#YWJnR$&Pp9Xe7GX+;yKRb8EUZz zpyJi*g0_2#U43mgn8nMz-kYMOQ*p-zlK1XhYdH(HcZ5U|5bJ(JhN`L#mjgxf$Ar({ z5uWvbhGK(asnh21)L#`C7aZl!LvHHt>a8MZ+J?|dMCR-vt3f-kJ5exPr9JE4y7BQ} z@U6jAZRtTas_p$EfEnQ=R=0|Ls>aVseq~Uo&o<4U(-{Lq!{t((LK&!Ezk*ln|q z&?&91cBHpXSSY!IwH|-}{ku?Rl84vwcx7ori`csFc>ACHgA?SO4lDbQw?E+jJdTyt zfA$=A^V}!;v{r;3=V3JO+{fL}Nfw6}U%iPF4hd=vn?3EY;kwyeZ5@oQW3LW@;9&oh zwUS^A)pFJh8R4>xtoQ+MgeX!f?c${UwgZg3`U76AZCV6&T+?+~K(!&4iug-r1H^~t zvc8eqg3Cn+M7(O-V%q`?a+G}YZMST<eKbYMH`QJ@9{KFOM8x*_a20e2yEhDGl@)BCf%YTUmV{v&=Rc^J@1oBqU1|N5CPmtfZEF2p077vizC_p1O zgF1UA8sF6<;5$s2R(~zhgx?<81ah6n#hDC8&l<9lj`@jBIV`%Ae^BgqOO=`(UzgP_ zT{pm)Q9r_|ARoZaXEL(Ii`gEj<^x8()g|xr+k+lz6zXlQn>SQuU_Y$ah?K$A3 z2C7M`44I&$B z>{hfO5=$Oa!|gvur@5iGW&ju@v1&lX4yn=eBlPrZ^@fH<-ul0VMwZ>>bF{+vb8W+WtAI zKMo6U?Lww?;mk5{I^58&QMcUB~-ZgaMe$7Wvh^x0u{ zvrpUJZ1EaMOB%9jDjNCD;cR0~kWZF)4a6oiSdw782=)`8fuXVP3@Wd!tthV%;g_u~ z5B3wKfnD3UTS=dUeJc!*Rx@NA90&L4?>zmTHjkj=LdAi$)lArwgpVd^Z4YsKPRXN@ zQ)p4q%rv0Gbs?9?^zVtw_n5X^A}&2}Cexi6Co&x`RJ+xcJM6w^jnK7}UE{uG?b_X2 zj)>N!?2+Aj4uk*S0T`=8^dO})2B70UWD!*go&B(P_mRWyyVr=%yx7Ro@n_C!0oghP z*OZM!%K|mPnk$88{ZOL&nzg&#kBFUKY@w@p*;?7Q9p1La z#@JZf>LpoAb1}hml(Vi~BWEQ`Sh^eIlD%{_xywtdB}QVU)#nn=>Q9S^fg z3uM6=zQOG6KacV@#%Gd9U&bK*Lnwr`=vz}-6Ly9M1_t@ZHpJBH>s9n%r#)Ah*HnAr z99`g^FQ7es#H0uKWdy(+sR|EEjgJ!D{{pz?>c6y8yVAJY_QSQe{-B%Z)d-fL%B6wY zu<#%_8Tz`+1no~n2mB~{=m7o5ooKoJDHs;1$NF%;n5gBeF7MePgw_OChg7RVLZZWc z&>{odrXh+iFQ4py^iXQHkY8lT$P+W)szY!X8?Va9t}uSG_2fnEpEvG(eMYD&Z_01Z zYsqgbtf@&YOD>HrQsJBnV&Y7p{BU|B3IO4>(ma!xlUrqki<}|5eP?_xwr@6!0kU|k z8+_>s+Do8zgQ)!yidK9JM6g)$@l-LoIi|Hut7#ZVS5dc+$sr!KMVu6Xf{Y0x#yZq+*4I-YXVB1K0x(N@r(Xk*}?#FA!rO+NL zrwqoKyh?xEPhSzuK>^tT{G`EyCV3aTOqyWGTA8 z6_C{14w_B3v-r`2tYkECeaTuQRdZA0w=bFlGL{g4c9mqz!EdjBzJK-jY!Tl10RW`p zb@3<_rF4g>@m}5OLjRNQvjeNgLr`UdoUYgNbO39;g0Qw|`tk>pgqV<^`0!}e+7IZV zu;*{%h0;SGieUx8=BQHDN4KL;#|kYe&nGWmgu;1oMNUb+>d-}Up_u&6li$gq@O7Vx z#WCgj{BYI92?gjA%eBN6<6mb<0pC1=*I2YRft`SV;S2*YtpCs7OPzt8136NQ5H){V zE7-OSg*X4?LmlQw)k+MldqenoxM)jw2sA)vH*x$>^)oxnA+a5M1X^vifP+KkjDO}j z5IQ^XQ)6iAPikQ$C0oN2-wjHV{?Dmk5?ILBB z+si_l1hSrODlKagZP8T4MJ6Of39f8pLUy4@!j;__h9f=smu@*5nfPLB2#OiWdWB-E zD;w3FHbZ&!$l)&q;=mqk4)rP#n@gHY5Awu`y?S`oaRL2iB29 zFi+%X<>ZK@nYA595Z_X=mg&6VOlNV^+2Wg*=BB2A{4?39zk_Wv`@to06wJ&fgdNkK zHXkm@kerGDmb>JhqcojeKtE-kO>*NBvl24nGLo|#$&b>@vefod#v9`wvQvpxXEM1+ zzgjq-vHj{`$V|lt4b*H$x%jq@}WbFYjlI<-U0$Dx< zFYi%$fnEY(lY0gSiYN%w?@~(PHgFocG2>aOx8%%8J*C$ec+As;j3nyVWyd_RikwYh z>rFpJ#K3%Mvs`PF!HIa=0BQ!1KnoEnQ#{~AuA~p>|GPUp@~xr;k5 zhkq7_a0Q-x3TAUH85j3i*cHEvHXl0Lrn0H&+csZS=kX=ncJjJA>9d}^dg5;DgMx>k z(Hla8Fyk0ZYyK|$bJvfjNw4+fH6+>IZQrsd6C#PO(;b>ea=5a_&spj2Y!}LXhgr_d zLv#`d#Hi@|9{AY40f0=bqdX5uo0;n-(>F!PHH~tH`Pan$bgR7WJ5l3z7E^SG79z+b zJ#VZX{FnIGUj)ot19)6lhiyyA>&WB&{kNgN@fyD_f$Zim9)8txCRK?Y=zd;pr8*w$ z=ngAqQ5U2neLAz4<4{R=swJ=Sn4rDkHvDh#{@>({cG8bWyXE8u$#0Cgo@FstsS9;D z4niZ1-`*B(vynPxpvR`nY^N_#Z?1_t@`!hK+VUYCArcnwtpkrpuS#OaqqllxO~1$D zUw;$!C>fX`UzK;rCTF|fLVA#$ux70L<;DNy#Ef3(J2Hv$3k>uV-e&y*D{DpTPGwzX zWv%cVTU!|jS<78rJIMl_R7XBi(}T7;d3nb3>*LN9e&t1?P2>a z55gWM${NJ+Yl!kNVJDDv7-0b?g&{lEhlk)tSzrXSr|Mz_Fv;#R5^Ul#{e^ zlw~!`H?IByR|QB>OkQ;4^{L!05~}m~hNU57w+>|Y|Bo-*uTwY#X96UOZx_t^`{UMu zWCI@;=)3jD78f{|q}RD0{;K%m-2RZ@6N1kYCWUPY`XF~J?>#GVy*LAas~&Wc7A*52 z^FCai)3j1({FKRHH3cnaq4#PA3pI>>qV10x{!@Cm=lYg;$IFkM67kh@m5Mn*XonLcgkzjkDUA%hD zVv)Yvl|`MeJ}#%Bi&%I zG>SGr7_4=+pLxv*S_6OLdRj;8U?y4u>n#jFw=k}GLo6xU-&U}CQPM0 z>8PdDnWvlSIGE_YL`@7#MMJQ-UXV&3bnTUZ9NmImbQCJF8esiFbOlb?5wv9|VduK3 z1KS+n$5IcqvQn*C`753rKmrqWQ0^f^bWj_yb!^Zfd8!Vn!xJK6VjzAAhEXt7k$Ro< zx{is-ODHPVy6B3F5@PZM%}Q7-K}c~(DVK3biK+~i`s%Wac`{E9dqZIjm|p93GPwlt zL>L3P!IG0*BN?)!A2cbg`Hb}=w(Eu*JoP6__F>9T3R!8pGX+)aNh^}wz^fS}n?g3o z`)XOT0X6_K$bojR7b1^r6Og%(i(^79A+Sm6*^tn<@EDoS&Jr4s?pYq_)ai;5Xmnn2 zLWvykm!Btgx^`O1E7My;tDNLvrUj354>H6ZC)0!AamD}cC1|$5R3ZCO@be9#^6WK+ zvzqL)&H!U`ngM4gPMmlfqKN-LevnB{HF`8IeYO8ygljt;2A|J@v$w%qD5$af_U+pf zfBxA=hw?OOvz)CrcXNkz&-ebXT@xowyoD5@Ve&Ocd;eKwYs8VwplX>7puq{HCT$+> zu*PtZ*rx!+{2Vu)HW2Jwn#5UHJHgV~OEyPEtf};L0*K`^2KQ{?!tNq*W^&=(HDpkO z=e1NxL!e^EY0?JbInfyE;Ti@KT|NrFXW?X6n0sL}g7FAKnLS9y1L^ATFG(E^c%Y`K z7v95mG7cuH5t8dY`B}TfG)XLH0C5>)J>!!yl4De}cE-4lrd%6&Wg{QMZft`YiQ`Ad zoW8nKgd}fDqB#{hF$POFO>8TbGjAx^ zB%suvsUJf>8oeDf74u1??z!Pl=3Kj{-h)>T&YS1PzdF5UyWUyVC8cmdm?sQFOvJL* zA*CZDCT{^fjEf_{#b?xm+3@g$m>5hL!RV%`)6ahVkEJe)_4Wz!P7*gKG@2$1J*OeYgXp0;Q!lv_XR9*Y+GGJ8=3Vj z2I74mi&y(G8V~)TQH!Xqh`yylMJqrPHwU9{uP7C&L7Kuq9I4+u%0@!38Qo}C-r$u^)Df^ zYJ}ASLh5qpBPkWK;;)4Z2r4MoL+Q(o4z`6ce)0aHzC7_%@9;0Jg(q;Sb<}Ly!uTfa z3;{ZbVRK{53F!u_o$XJ@n7pFIBEG07D=$y9z9ijGPd8`h%P#x-L7RkykaEnSavui4fYcrgx(`%w~1L0lW=_oPm$#0K6CQ2<# zcDPV@i0ozV<`7Wtb-HroH#iom=wDj|TIqu>Bp`@Z`$HZu5>!HGyi@>51^Pms6)LR| zsS6~5%2_%ZNb=bZ-7|~BZ1oy7LTGwGd;H0*d;5q=Rc?-`2;x6tgZ1$-m^X_{ zsBSn#4E$KCyHCU=VqTKo9L>*RgCc^0&Eh_)x;5hQM=H8>B*;@%{vW#D10ag4Z5sw< zcGpcF+p-3B*%?jj-H2Ud?_IHCK|rNT?;REvmbS3;4uT4(s9?i_(ZqsX)WpQZ5>2AU z_!#4vIp@Bw`?_eLip-I3kt1B+3NJIXV%O7Ezp^y5 zWBn*ZYq3v3jx#qvJ_|_~kDh3#r{J963=*aYHOVrP8R#l)$`b>!z)F(WNQ4y>Cd@vul}YL+oiUJbO3=>=<{-#^Peo zH)uI<$lElEw>FZFwm7`CF|&oyx{Q~#S7YfBkeMEGD};5^-#RU9p)6TNVWWK;LfY$ zt>!DLdD)-cxoBqKR5gNgV(Jneh+ngx?7w&V-i9ZxzsAT~FmRnZv+N*HTyI~#{fabe zuHGfcpBO^3h(f&gI6d*xI|V7}mbfDyX3;eM*t|mC_U?&h^c~8apgj%N0hc{4IGsip zKg){rlD`I6;cPRNcHXyf!L-T)*t_5mS{+EgMZ(W+ax?4+O(h0coWnMi(YzGDNCRdue3FKaJw1HfAk!_Jn6lWe0D=F?q-M!N?R751x z$!9yr@Cu?mhz!` zQ_Tz9^2IZ7%R3*3A0D-dL8GZN$__5(UcCJpcev#q?(lgHh#*}>f~wEt7#+-*Htqjm z6ux}`&~`tvPm`OgFOABx#*m>e!nkh#x1rF%Nd0ZDOqOjum2ltLiYCaGOcJ$9{#(Ts zvKd_(^nf>$Jk8HPGq}IDFkH5xlKOc!C{C5{rnk!RfZ#1B6`nHk#u-fOmE;!{IYs>; z=GIWlF7C(xn}Qf`!!!9Ak!5<(#$!LC zTDDEw9U(?ElF-`z%SL*OmYV1h=aUOOOersI)qo+?PFzb*Efl zEjcL$d5|kAMbK%JsHh7+&Lq=+IwRjpO@EN^u5HsT=qG0}j`_?1tR`SK6tzVt3ccmM5co6Fow>ZLm$!5iE}PKW=Zd-zyK3&sed`_ZzFmT5Q)Ao6;XJ8@QIao7}12p%J~Mo zu|?qIe1xazpIP2$Q6zr}`-L=7^lt$43DbzlshzX``=>a{0SU=VVto11+#jebXjmYM zUM}CJ!C;7@i}a3Y(Y=z)({S)5zLQS)Aa8pZ&!e612aQ{@NZ!#({gnh@tPTzFleDaw zQ9E88799_2V?MMqCj*nOQoKbfL4bbB8#BEEQl-ID+;lzzW5j zcgC+WvTnbssjRB5mQ4>v^YYipP9HX8Gwr3Oy@s5)KMW^ZP>_NeJJ@-gg{k`C>e>+iu71e_ZvYbDd}Dw$lt*(9*W&@JD6>|t_2#} zD$2(68~6Cnml^AJGj;cR4g8RglZ-C`(MJFJ#K-1n})As11 z29J1yQfS~YI61>NNce`12C&n27Pj(6z7;Z;6yC*GIt~A8+waO05b~z5LKY4wGa@1@ zOzj=z?~4qL6sc$V&OH$TZ4us4-2vNQfDtT3Vcjib7pKtmu zT?IBR{$I$%7vqU5aFP&kP1}9?%=*jz#BEb^%^61oI|m(gKIYb#e&q1En@4uuBlbsr zJWrN<|HG5sPn+*I+=qAaUv;rHX%kqB>Qdkcg^+5_Szd;CTk+*%D|%szx^^^_LY|O8oN;Cu+nQ; z5xXUKPIJgXnN8caKIKPuerp#mTdAd;i@)-^RKy<7z13WNP-gOi+SZ?srwkrEZc4v? zf+0#Dkq})RUKC!KQIuSONRS~sDJ(8DH!wFaTUM;ikIP`A4FQQE zA%SUu`e1MuM8!wN%2F!zmAh3LnJFn5+|``hCyMT6>`tkQ-xqy)+g_(aUAb?Kx53*G z?57QqB_P929h&5o5D^B1xGq^2l!~fSvoo^|Iq9YQ_h*5C5HiMTDgf<~JaH%WN$HW} zC(mR)iMtlt;(gEVut)jE;Kc1oA-Yvzv9e?_b!fDi*{<+)poZN3bnQ0_F3=p}L;n*% z4=$HM6s513S!?Kn@S9#kV~4oeZe8uQZ2RV|n>Jg0nRPbj%Y>al?!KO2c5KG&lX)e3 zrH2^9jJmIqiV_cREcOVrbM~GQw+JNO;^NqaS+*zE%RW2;N47i*ZcUOQ*#;RG$%)X| zRUJvHjVp1>NzB$7q8J5jAI3#r@{?;G#! zsSDU1=HL|taY6H*$R^Qx>AelUg)?q%xf%tGSccx9_SO6OsiKULnUQJ18G-shT}W|Y zdX!ccmyi$Qp-}EKn`1W7EG#Q5HD0UL>ci7R!^0xNqJkqbBK3*dgm^

zA)4ApBHI0o=#zcPGS z;Z&!ro%w+kGBS6KGCVvbHIxgznSHPNtSni2yrej@II|?(+Ig1ml-NnKwsp?RQ^}|F zO}gZTzErxxGax!XBe5dpTEex+YhsT70Ytaq)>Q!VItrMO57SX_GJ&RFEXQ;dM}pfG z%CwLi`bm)1A@Wn5V`+F!62yc`u*X{|xAnJ@ft#TAO8dxuN%m!a+1X@J=KkBMxAk|B z4J=Lf$f9FIV`YFDu2ddRJCS-E*~8M4S`u4+j2P+A0(Gu7q4udQ#fn z^u1|&(+vJuc&TN$IOfr2^-D&yG(}gH)xhW z1L^au(#*n~q+;2Gc9}9_;exFT(~!+7W-QG~8+dWkofw3VW)O=Xe8sm7IW}L0H4P~n zhbobRk`&9Pk?G3V@~Ena-FRLs@H!=()}Kx}4Jab)24o^C4V8IW1(^j=xuMx9kf2UU z!=~BkIq6v$I7M?iv$9Uv8}otWv+2}k8?{3C82S@sR zM>JQ-kfTR~8^ex8Wa;$!thDBWvn6LL$Vdmm&LlQdgI4yf z(Y|p3)=_SeTXfrGyp6wd)9iuE=jayd795MXCW9vxY;I+bPyKeT@W$=+QH0jvjq?*7N7BtP1uUhKU2ONN>MIOxt0$MRYHGsf88a>kP!SoAn0w;bdwSIKH&eZG5rSRI(%=iaN$FRYKKv!9f7%q7{0*GQM%&{vh!d@VV zfPI*uB6wDn;`W|UNT_mMf#qd-8TLXi>r&5rp$as=jAj*)>4}|Z^ry}IR|v<(n+<1OR4D61r~_$K1@K4claWM_vn`DTi;Z|G_zd%>R1miu|hQ@}*$BTX^tN3{Q*2+i8MoIJCn)-T9+yPTxUvsxvq{HDiA^NnC^nE~-7`%bt?wo1x zU9tnAP5RJ8DzA7 z&bYa>r;7G`JeTy(VILZ zF(rjSW!xvizH`Ir&!d8=|gyfYv4Y};Bl%7xBm^uJ|jQY@+M|JV$E zSU}!Ivmkmn5$P@@7QOW?CQuUMQAXp8Uy9$Ok+FlidCPV?2I&qRmL|J@W^61PVTkxB zS2Q4!d){-KC#WaPT|2{@6Qah*`6x-rnqynf1!Ls-r|=H`+y!!scE-yU6=pl+!aE!0 zBgwgvW5-I)$>_o`CHYalb>~hbU$%Bwh(cOka+0iJv3~&Q4m~7}a0Hn3!S+}n7NVj1 zP|kMmFGrT-dZlk{sGqmWyOSoEY?%&Tg;K#>1)I&A!<|`5w%li5$@?RXsLxiNgVvGl zh?Qs?bVrY=5Kn3|Lz^cd6cLAFV*edWLM6n03h)!fl&Y`;Y(xjTQRO;n&bGghtRv=b z@COc5wb{dyqwM$;bOUQ3f~XTMfbz(_ zHHg|su{o=_<1bbL#Yt(cC&NQp^RGHbcJBJ3KYBZGh+8aL>bGSRhqd!P+%jF^W$ZVE zD&n}5gao~o|44%r=!JV1pWGrI0l5SWCGGOm1eT`Pjj|DH>b1|19wd{O`U?nUwVHi@y z)32?C$v{5(skX1+JHB!ys{o1rKR-fd#h&l}P2?)mXkIQC21wdvP`b+7B!?FNAe{JF?#Q4#O=aIHBWfx#3o2xvRn$>*WhQ&2 zopiy;6;~rzc-TiW@eyIVF!j<6r!OC?I&!3#BNOg2{4N@=-0I`x6vD!LZObIYgn_nc z!RDrG_b*jmtmYs{V8vwS7p4`eJMR+>H^nP&N@&*sjF)$)vy+N$l+uWPj8H3?v+BZa z4yncBlV?KrRHy(3dSi)OQ?u&!R~K#-7U&Yd`t)Ns56FT{Ia&gQYd_{pMcvu+IE7QU z)?b>NgOuA-2dc{(kE@8YJ9U;W+hDhJ+4>WgS#nBRlee#;jD-?yZ-!iwkblX!_R-Q6 zPU~0U?0z24L~dBCU5Cd`#3Z4I@S^i^vpkD&2I7n8pGUy~+_75B*mRdJtXR|t8Vsu( z(scl_R-0x?wuw1h6SFn$B26TJR6-5|)lBDh&Y>IBAtx9Z_i-e>zW9R`Zko!OYxdI) zPga|Cq!}&2d%k?l(XXSq#FCWK5*6Int+nl~l5IP7IYx3WN0aNDQP#Fv(r_rq z9qG5X+RK@Xlj;Tz>;wsl0|gU$W%lCGi9w$dKu4rFBVif-@D0^zDPJ=t zk~fUvH8JxUcAs`tQ`yidl)=ETN92eB=t;n}pAn4B1Ro|NKp)_*+L^H<%Y}U-3}6&L z4BGwE+_!3z^%0Ho>WQ^WVnrVUM~4CpUL~SA0-4jf#}A%Wx13zNG$u)07UMvbLUo)9 zyeI(3hcZRw)y6&Qn_t<@bqH{D_2Hlv+JgxV@Q(FXw=a@x-M;T=G&hJJ5dKy6R}o)X zQyK5eBxNNVjjGFMPG3HI+<9Xz`&t-|y-_Rv7$d@=Ac*+-a?_cXGskys$Ysd@;Wa}P z62%Y5aQ&k5aL)W~x?o4`iRBbr(|4lrGS<3xS}$tXX~pbtou3sco_UxoVZvI!TsoT* zuGeDRE9;zL$JDm`W0JvocCDyZvP1J_gZ)|-L_>?>7KJTlM}d{&10JT`@h?-RxLX8k zruez&=J~I0H696c+s#72WedYwN_nGLw`jjetwuN|t#ICwyID*|l>k!RSF~7;lBeHX zd{oB$3~68-Sjk=E{d>qNED{-Udk%R=dk2Sz7W>OB3udS6=zWGBV_xqVcC8<* z9c&&Fu}ECIj1dM%<6%r-E9C$F4knU&M1E!pE@oZ1q9Sua1MC0CmIuR*vW0FtGIyvI z2#$JWDn&B|I~N~;#2osZxf-$J~mrP)e6d$QNriN=;t-RK>c|lZSSV9a( zZRtD4Da6TVYo~RDvCGUy;F=s|E>>4wx({fiAE8RIk!fyn+X!sKCZU3XoIM_5E5T;eMy=TI+iZUF7d+?3K36U!tN=n4u|ZS^*^ud;pg2Qx`7A!i8Tx{9)W zc{PZZOD>;Szig@9hGiUe#>GZV(OGi5vHUcRsGuYj#i1kh@@XT&03p70<3(Uzwvaze_H{=Wzhv$c~?fVDIX*X%;X0YF$Zf_<> zHDHe_%1_aln#mbyQ2_)`+mOo$LDh)7P&Mr*iHwem1_;SVD2fl$hQxx?l}L1tPrL%QHGrOTs8Svl9!W- z6hN|)pLRlc#Dt~fM;1b=Tw)Zt+YOm%cx5}Krx4?M3xxZAVBG!5b2OvqS2jaW0+iWZ z+p0}>m18!n8_U9rxu5iq+}sl%UCJE^D0N(^It$(_ok5qO%aFZly7UL>p&~YO0X$+F z*#hUy#!uDsxlxV+;Qp4om#D?aKd~oLBN6$pPFQKsFF-jotZ)#6zB)l&wvVJwC}QGdd|e zE=HD^`1v3@QEig<5!W4zb=PCvHRmT_-JB$&HbY$3@b|i72Z^Z|Kev7L9`U{pemb;h z?&#l|x4===)#PvTR}LFS8j*UvhOQC(p_Pr#o!Kv6feac{Xfm!AWEmXpNu6XkFh!g2tgVdrrJGvTcj2(+FaXXR4nBRz$VN#fg>o^*S z41V8E(sgAZDS7moEPwsz0txvH!Tl~TdS_rV=kX)piX@MKps>(me(|G65F=+Elf}eB zvHwA{iQ^9{&unX4zi!*M_3Ik9ojudocou09u_?;4+Zxub+vd1VEIlihcI-}uI{Y|j z_&k39=i?{u{}ff?kt~p+>^lyc@sBar(VVO#BY;Qh1v4=cAhcc>s*l86FESDzl#`Jk zYDbr{7o4>tv0T*e!`fJ@CrEG=UE!0$3|1b=DYVgM9qV;Ungxit6U_oUj#)Io?oRLx zWZ@%Dfjk1OFBWp>=G{`#%dtSO7-)-%+(JN`-b!I_lZnLPFxe*ZNzOnT+cM|bWD>{w z30OM|geBNk+<{mp2sCvw{;F8qLFYmgT9`qw=86*XC+lhHL;AHElt70jfh2xCCzwkv z&OJ6FXOV2)a7Q#7y;bO{WaG)ci8pTCL(=D6XQf9s+#ZGVBpXp^XEG{ z>K8UR0V>oRw$p&xjlC5oH=91-k$UH>FwK3S!i?pM_Idgr^n>A z^R|u%U8+61&I%cHtM+>7H+gwk$HsbjZPI(~wcgk?_txxIx|*)G`cM*UwDQ`kKe>1B zsis@E?%X+Z)@qqySkb&=lbd(e)V35KJX3RhtxW%XHaKerKEI=9uQ#9ZDBdaCNdBV) zjrah3L~ii`uqN~I`DZGYv-}D&v9D%5wOk?M3x1|Q+enT>iRULpnc}961Ux+$AxBBZ z&zUox6AGn*AFqJkn=kLpD}Y<|WBEeq<~*Q%XZ{Fb7r94x_y=&pV8MzB4DgKdRO5xWVQf#?pGMMI zH#3EU$o74&zfylnuV=|}emXf|>i>*5AAWl2+?%wNV^#`>EShfr-Enlq-oYvGT-$c`PZ?V>8S3s@SQX~#TVl&hhI~OhK_C+My3gU$y~t(Q%;uL zjC>asgcCs+=*A)D6hfNX7h8!^iZ4w;q`T?Upm#6L^)F4k@H^^d*S3Yw0X*PQ;qKz+ z;pST7S9hSIrj9LGsf-R577If*JHU_ija6@4YTU9iL#x%&I+^na$lsxA2ogRHfESw`@s>+sYLz zgpND{z7UO1%}V0JuhThBbX4B~bcl6sT(ftC3S#o{arSkF7QqK{ z6Bl-a$w*Gm&Qxa^l4HT0zJSbvm?SZKO@>-WWp1j>1Nj_|xY08qo4rB09>fLwMD?hT zu#C3RHes1KC2jmNei`{^DweY^Awwv(Cr9ONy+mA3Q8LY;a-?Fpk-frHtDERHY$9^9 zBgz!&Y&9M1R3E__j(JW$eMmKA2(-<(=_78_8v%k^HN7Ten(1;5S9R!n+NeB1(8( zmHaAxh89AhGr)ULMqj^yqiV=oni)j>x4)Tv;1_H2lB_wP9{VEv z-IotYFWE1#`RDX1MSae3*QRk9wi#O|)1HCUBAA-JIgZ>YZh=)eS&2bU#mTFB)xpzg zmqM~vq*IHOSrySgq0c+}LK7XTqsu3*q+LTR`U2OGL-t#Nhdh(^7VaPq9qq<_bVM(L zPNWaK9cVq^c>4~ZZMhCzqq{bY4IH~jiF1BTgAp4C7q(i6gMi8ad0GFI! z0MGzll^u_fNcK55_fy)#iGHF6kah*|#1O3IhLMjKkS`Jl457YJ&t{Od*U1+z$;UD@ zkyhv#fYwS4d7K_jbKh~~Z2M>>$pv>s1X3m@vW@emS4>uq8t1uoIv5yc0D_%Ozg8h> zc_@Btoyo4b|HSiW^@Drm4L3MYeoe$<8%gp-zO48wCR^fd>JjwpcQM1lMl$(W*DwwL zQb}xFh_!QG- zC0Ub6rXg~$0_1Gu3j`+CWOD65xphJyE#X#?i2@(^Z)pQ2t%gG6sL9*xFp4NBV!^UU zd^B)}h@sb=8k0YgrrwQ_n_7_!@D9Ex|10t`Cr$Y?8;R9#U6Cg|RK9rKy2XIt{vus` zc3lfgc1s|sHO7&6Z6qPf$$=&C^^YQP_2(N;pFApSOYGA+>(a0jR4%v-vReOo+7EPu z`-G6y_P*;p7l)&5eR+qzIJ*2CfUdWK9u+K4x9yAt<|DM)7MYfDcdo2WbknHu#qM8w%quG z)6XorI{(J{`)&{2AH-ZtER}Wg$g_zRfvFw|kx9yPg2wx1 zW6}~6Qxnv&F|qx$W}0;9P6_&H%YxK zD{6aUWcbF4n2aP@(bo{k?w#AX6lcHY%C=jcGLJjogg;O}_@v@P z^kINJoWx!aBALi}UJ72X@L5RCi-9^~c7 zYTv+;liti#w8F!o8$^c3&>r5Pf0NR6@j{TDFdXh)VG(~i1VjCUY-V&;RCbI^e|_#x z6Ik@2{K0^td_%gZ+HC`spikR!h^W&s=7+8febz*_!tZG-2jayNf41b^*?+QV;Hdjk z1Dx*_1ejk+d=STbDfK}FO6sWb*MuO%D}5lADM^)PfQHSJ=NE&93?b(KF`ocHv8X5o z@T0(XcO(Q~&=vA?&}0k&Ju|9%PvE4x`}z83yhMT_?-iUXo$T54j#_(pHEq z){0Jrx?JncC!#u)?5x2of)AD;Z)7EY;tz=&m|saSgG3Le!=2XtQ>6{_34im0PF?Qi z6ILH85mpE*tf)7n%27!JZODr%)#v3}11D?*eTHlMiqAAh#p_inCvkwmM~~9jNTNpr zG968d<$Mo(we<*=19t+JKsYyWzQ(TD*iO0CAtT$7YyT`=WBN=Q#*AQnyk%o?Ux~O%Kc+au zH``Y&7+WM`G-Qm1TP(C9+Qm`hC=KGAyLV?7BQAjz!7bUby<-^CtkRKOCI*Zid233&AOfa?zja72g$abf2%fH$yI-X2Bu zHj>xo`Zn<)BflwypWxU=Y?FT~6^sxG!kIN8ijDJb!hB~rZ)^jFiZ~-Y{qM?8EwIji zw-W{QW(1i(w2^GWyoO_@zxrec^fC4&ZL!gHgTLJMR?jYo`!)ejGD9vRCetll|k zJ~fk3vw7>+x~jK2|3D`1;G&xRNiPqw$&)Po0=X|yYZ4}J>NjHQys5LN%=u=B)tT1D z-MQ-X&9-!Q6S%U+b^f=N(b-qO8~Z{HU(ho2&yIkg1O4&6=r(v}lFwzLRC+g&i)Q&x za&kr^tn2t)NpH~$@V#6hKBkY5+IX5VAt%9yo@T_A{Y{pyhQbEq5`T=~8}RwpVbRu+ z2E|!a&@Q8`$`_L6mrSjsc^LCTlIu2OBBS`RhT^s8d!g?t-`zDtGUEpZo}xa=B}uN! zxhc}PsCWo=he@`JNe-)pPb5L{y5c0342fXI33g9G_}rSw6sKkwN>qGrX%@6&+3ARO z-;t0np5FqmLbrFj=m=;c1u`uuVFiwA{*QLJq~1N2+%jUbtaNN9k>(>&;Af`GHj>h=EHA+K!nD_wMvZZ`bEdsvYt zGnq-(7d-so`t=_kF1S8%<$70pKUQGA4@nP>N(@1WM<}M7;^~5AR6WA_@Q(GBtJJg$ z`Uzd8o|u2#jf?k8baz)Fo7Due*2Vl1V#0HJvo5hVu7P|CQe##{Rh@`h7#rQ;dF8Q8uc2wIP=ADF1$crQIMaXU!l*BkS)6i>Cc~`cdabD zbdmc|SP-rc2oIO($TsCf)PXwj*IDNzye+(z+=hL9(HmZuK$|vu(yDl*xOvkQ0=FY5 z&?<-*FVBgrmP|49F_8Yej?M~ z%J_dt6_3D`=+HhXEP;2HwVB8Y2^qVK44h8j{09ifrB}=ik{7Gf43v#KT*P(6mlc0wv_gU=$@bQU|oAHvEjuXaV8CLEFG- z#1Y?H(|*uX{`S^f{}u#~FY(5WCdo?pGW!9rGo03|g+-JQ0uRO_OfUuYNh-#}fn*Q| zn$}(n=|7N8d_-rf=^5x(YVmy3Iaqo`hJ&b0lo;zCgJuGeN*nqPB|ecH7vQR~eWNlT1*rDdJmYo5Noo`HEmC9y0tDk67f z1Y)ELF;GoA>c*I5p}ajFcE45n68s^prcOi>vZkIv?XMG!EPG?xrKD&vV-1lhFw ztu`h~1&rZqY3=FiuPe{Xh*{Gq()E`5y<|r9t+g01=4i$}?)L$R)K@}B%%fu{yOis@ z35n73)gVgi;x*_YV#9wU5XeWrW1O@X`p1$Rr)ZbHCppSqzKML`5o)C6A<$$eC#|cI z4mDUlY?yTJM%Y6$d(Q8?_t);HWv17F6h;|hvbC%(12k@G10?AYBEkVP*%=sxsB*M9 zF&W6>#7UOJvtSWvDp1~AesKoia0aBF8uZe87oj^t=Jx>?59Au@tPe}*f;LNjE5!*Xt{Cm+qo(^ZW15Mi)XCJGk=PTjOYWh8yTERBY^C?=t=YN2Ha57 zd^~4Uscs@iH+bP)nnt&&XaKwoi%B4hyj3&{BVj*4GnUqeNZd%5#lNzC2kf(5{9OEE zH&wdGPR^^GJW(~lZ_1{5te=a~{(!$MHV>k#@C5Fz%qcJ6T3*zN#D6N#!jrL^$%wI} z59@bulMyxe$JnEWTb~|+A07iS%k8x1+*eeX?J{~$0-yfkd`xuh7ui!kP5oEuTEDa@_1t-K;=$F5H z|9C@ny#+@!fYp=!`nnw~tszT`PM;x~BV-&I2VYW@FhQ7ri;@M-taQ?4AURH17GEHB zSOYb3Q2R(`(qXv!!}Ns@nBNQUTlalU&)C3*sHRf@ zBf>%0hYT-eyE`FcP~tEG%ZYnnNSfP_}v#m8>LmRL)-%27it2F}N z7ooL33@x%vJ6S74{EFlu5UVz(c@h^2bqYgBZiIDYZgE_(8sPZi;w&)pX&D+;KksH@u2-haq3f&MV1d{xfrXGd_AOk0y zI)c-<5aMsq_k;68XVr+~!{Oja#Z!hHWHfNiHjr7>$}gg_JU6=!J&-V5PWfC;<)NZ?~>U5ktZ>u{{U2`DK`aoKZcbZGB zU~84;;_cz0lkuZk$a*=@(YBb7cfus4n{JnnTj$0uY2Gzy2Wok&e4wTpyn z|4Fo)4>wT2Vk?+khG<;|{+WdHAeP&9KbHR{I37(Y{WvUqK&5~tmV>4pZphHwc z)KmQWP7)4LJ{`B3`s-rSVhnNC@djf8gj-rb%8jg3ERTwTS~ZrFJ(|CkOruvZlMTlV z36SLHW#^}J-;?jfef_-z75M+pCErO3uv!{-p7^I_>u@C2e;>(*qr~!Du^KE#uhNM8 za0wEr&EMNFL%W(D@<3mI2dptcI!+fLb14*7grPe&gF0cbQnc|KE9yjq3F=0_03OkUI8_fU_5g9>tB8ddl-Pwg;!D{f= zFj+YndHHZtpf|n^h+7-8C-O47)JEc~)BIt&jdRmW2hvNiyRtnhL#$1FyPTmvwCR=P zhYmf?04It$bT~lD9bL0kAMHUm3cQt`ca*lh?;|d6uj|m8c$2)cIJ+ixkM%%uNl7>I z{D+mT#kCpU5l<@r1*yS%`4S4hz!>AXwFRovG>JY^dd!;?0>XOdWIE+rYW_O;r4^Bl zA=9UjH7So%Zf8E;CmSUdz9o;ak;xJp@y1#uKNaJ)SAPv0k>*1c2kFOGK4n)gcAGj* z1tpG+^b3*%$9Dg3iS#~Ol3b!MDZ$^z{i*am=|7E3R%7u-P;_p8?Dk-F3wPz+L70Dq zN<`;tVLCp16nuY?=mB$Tl7USBUoo}p%IBIGC9J$9$&m003;a^xmnj+jQ~IkOyt?F9 zJ|#WnCtfnP-3?xT!`j5qj02TP)3Ar)z3@r^XcXv|@2K}d?ne+QWk-md9T z7c(;YS}cl<1~huGwEbn<3nhkNLm7Ukge1|SN^n$sn0XYWe7Nx1q|Q1gEnGOMbNxxz z7Cr%KxB+c}TxZ4;W&-K4 z6m7f(&Bxy=@Kp3B+M#6WM3AH`MASwP+Urk{54 zes}>UztKfxKRsmi2Qt{ncMMiupTw`QvG~)5PXd2k`>r7Rg0$1aptrO|=8&z)SPL5Y z7UBr+$daSJ$|HzJmjXM5oi|^&=XonK95R&nSR^a}u16lj`mmP?cxnjiEXBV-=%_V*I>?fabSQ41!Dx+`70EkGp;?DBc^ai;h zSVJ1+2JM^@OnGa-eo)R^BNUC626U>w(cgqA!W8CO$72sj8#C!Y?R0lVE?Y%(0 zp17LdAnQyk$XawtN=!SI0TrG(9!Y{U$O_1c@V)ypkHs9ej;{`{@+pu(vsDO#JJP9g zLxQUZjiats4$g@S4sSiY^?Ks5BXCuYvm!%mX%TIv<{?8id@&2Kb;>dqt~@;OTn%W= z81$Ccj&Yf|dMSqm8s_I$=W#>(s~!hEbh!iZh%6UjX5z}D>%LC3PEJE=r25MfjpsAC zV|-KEzUX~{<#?g_&C1u`J$U`wlWO>6m$L+8N| zML1^GNC!mX6e`*b9v2-shrmU*qpd%)oeQ_Gp6@?fExvL6(RR0h$NaCi4XoQD3Y+Z4 z%LefEPpdSDpi2kA=KT)4Xad>yEDU%0(220x=zT)BM+vWWL|SlO3^AKzl?cicLOU~|NTN_@VC!eYW z3%Kwg+_O#2{a3UHf<5#Q;T9zU9QYuvcG zbH|UnHTN;cH$fvB4R3-GNt?Q~#LPs4Hr-m7$``|?RtCEku2C=B8RI94Ye9sUibLxY z^emHd>@gC34$#{*9ota!t^SgXYTsO;M(wg2@PfY3qjt0lBi_* zd&KE6Nn?}AdkQvTCOR)OORv)B<`(*}d{y{fL=L7zCp+8iVeh^p8~F;nL!) zQ}mKT*RM9-X>4uW@Tb>ZnSLBuGYpU&(^cUorT$Ygn_lAeY+Q7#p4CUkYExNqMTi72 zce-9x=4x;$$<4_OsSKqiHX89dCs+80(fvv@0jv20=qfcmW8U9!a8O5@NNS(A=KH1cVlP zfcUahM8Fvh+?VKa99t?0E(kAXL2pr9P*B2|uJb*VNWif}fH9AyWs>0V@L;YTsX%pR zSh0i^IaewqP=B%m+h`$2Mkg!vi6jAR%hOoJ!Dt60Hd2=)x)B#o2a9e)$FpZ7P{=dM zk(M!0^LN1rv0$NCp#JX~5WS*C8_8R9laXwd^X+tm(sj%RuV_{q9-b7gc5^ctK@dOj zl=JV4NI%(JGAtBN`Xm*ZR7CpUBE#6Lq~GD+$;4AKV{M(WPF+xtq%Gj~MnBu&s`6V) zzle5XwZ2J?!6CA!$iSq~O`CEysUrfD!O9XA8Mg&I34RkJ$J?rG^Tt}ErfU>X<1a@3gQ}xvwsvF){?VH#b zjjwOAQEWFa^RYKZJ=9zZ&3JB$oGs&^ddk zfm+Ki#L`_XN6%mwv3w0=^?y8(bYpiAE(C(_R!8R{cF-+Ta`0g8sv56_ZD0`g7f_2XS>Rrv;n&UcNv`a1iqR6 z?SSL7o6N_!JAAhoC`ilX>hg-}BkN>j$M?#4@Y~7BXg~#}GKFd=woC~03fz_9v^S8b z2EL^>7wKr3Pj+Q^l{zakB`piv7S%};4S2@0scx2Z*#YXlYg>zdGXk=WH z-GahgWm^Ka?%JUC@X9F-;9{~Ezw#)M?O=>``q-{57v=NbPL1@Tc*q*4Capa`gD2hW&<%t_^Mt%M6Za z)yGro0d%E5kcxw8sTCvuKJp5U-cjHI1TSr60&*%ME6{wTW@K{;XMm+XW)yYgsCPkf zesVz)gp*RCD2?3zk3U7gow-B0HggqCffwv6WQM57v1cuZg;chdi>(u$Lyhk!s{d9;6?zd9y1Nd$Yx;Wao` zjnto%h*axjNs=goE$$Qe3}!a%x|Z{|FI&~*FVp7c>GIVPkveS@XYU`ls={7IyEYSM zHtAu=OfjgVJ>0Y|>P=g+%eHZwDpm&hZ}PJ*UDf0#bGvaj^uBt3U0P->w`td!pq24! zwL9!H*UA)j_J)R?O={$dAsbZT{5tp9!Ec-0H#s?M+3x77UB2H@=3i1BwMSi6o>_o6 z*mz?7Z?dw2IAT;*YNfCv+sQ|Ji*oA2YoKb@*6`At|Kt~w-RrJx4PwW?=fK}ZM8*n>^i^Sn&@V*ZFO+Z~q+-J?AWOQM-nSW)`xEy$ zhJr|R|ACwBiYDL zBf-(ck1r+Lde?)Ua|{gRy)v+ znUV3A0RtNL1D9V}ZLC(eWNco`nG)LjEBC-RxzHz@&4}6sW>7fmB`cRvGfwe9m&R0* z2^ZiagojZNGEjylu!^HQU36L(j()Y4E~EdZhgI}EnFGN1IYVuF92+a8-NRdG_ZpMwxMoLO!Xj1%zxX2dW$h}p3L#B9; zo}XsO&y<~qk5^hxdZ}+-42ikH8IqaoJcwd+@9Pd3LL25NS<}^Y$MlEN%PZ11gmc@P zv-E@qw8nZ_g;a+-dM1HHbx7m4}jfjo6`o>nq%9}vYmZy z@~)PzJbyG}e{EKy^&Ngp=Ar1rzI(0dK=Orq{f;`vYHR8X|3_{}kReb#mu^vdl?K&l z_iGPi9VpwImX?;9mIiV4K~^sHtFoOu9NglU*EoVAOP87izP19ZgWEHbh}RCrw35HC zJgeJwY@OOJ*XJ!{S><#G&$oLp7$a56c(nk5cT;I1D;hp_qZQ&-!_nLpFd*Bs_Ezve2TP@ z=|B@r10uLDT|QkVbTO?_R+X1m0jUR8JUZ1UAi&2bpuFnKfM(~z>|y7%<#uXup5wb* zRf6>+lK~w5Q_{c9$-;j>$~^>)0nNaVF=7Pdr-0Wc5K9;u_f3= zBVtzs6r_vvp*QJ6laAOGjbe$45@U+dSV_^um~Nsb0o1I4HR^rWz!=Z@<(~h2p8tKW z<7TbB_Ue6o>-*lXW5{{HaFAa2Ejk z-y}#pgn^%9GI%K>&Yn%&c8bqCS$3lOsI+F`+@iTE`aV3TL4Ql%CTjPnkA_;b5``xj zr~)a^{v0s}v)Gd+90&U#;#LSCWw?XRT8|v<*TvzH{>&FxR02$c!A#uovjt@?bUC@^*#`aq*U3=of zrb{ZTqf9RL8~y4ZGKzPf1scO$`E^uEk^)yJBj|X#j+g(6?ZXHxerxf=L`K%1IG!AP zOcNWF5Re`qE%o1&4?*UU;KOyIL$JdVgOoB#BfkzbCt!Dz;YU-BMjr;&!rqcy<}Gh-*8CG>gX*|zw> zU5^WNaNb}k`SFRuKXq|@06#b6owui{)_B+L-J+4Ve0YEidX)dQRQ~JwQT=BO4VT8$ zCGOs>{O!h(JGK0U9j8w0JSRQ8Y{%SrN^%#vL5irOY!QtsJbUeDK5#?-0u^0KmXH5u=wzx%GTA^XgZ{m`j?;lX>D zm5KP*d411lcKBy|`6|8By)(S|%v`83s;w-qQ|&w$6{K;ewz^fy#9SO=`FF=(pYuzE zv@E?aAyx^|k38IYIImal=p|lf(eV=)IH^|#9W-+cT_g=#o;GEP(miiZ?i@ZfL7So7 z;J?dX<-0OugJw8cRX$!BlM#aIg3mUd@q^bToX0* zgTp6woKn@)WTw?x@LRL$;P-wRdYCZiiPLBa=*(g*VZ&NtUjIx{e@chPVNxuncwz_wv=UzH6xS zA}sFF;3WmxNwhOf-{vRHitw8VY0g=|oGb<>9(bR%bcP|DR%&Rh2j$_EmXVPLrK*{k z$~yo1Lr8p%G#8Rv(LazQD(rpCV-nA3s?w@-x(duizdII|rB=iiO1Gz{XQ!z~mr&nY zIw6Sq`Ofg775$}Io*}(`dE!It?l*(&ZxQs41-?&$6VLwkF)=&7=foZ|?CSCFj^C>! zQ+J-MKd~S9$0rGp9`x6U#w_dOb1nK3qSlwTockE`y1`&(+LgI0t)8a|u_WwvT+_BQ z!6%%kUtg$T9^>EWb9nuJCmh^nwv$b3cCD!PEOmOFhL@29QAln`c5p~=MraS0QmUOo z!aU0Ys7q{tg$eM^1ah^^j+?6JliPA$dg0t|;4hiYe zk0g}QFxOJg>J{~?oyexgfKnU1f8F7YjR8&|#m#h~n@@ZJzQc*@*TRZsqA#siCs=E*ussXGaL6GKD@6H>LzgWxXGpdMD^*?b2#zPu-il% zE6T0kUcXDZ&jDa3JHSKn1)xvL0Cn;exlNe)CHVq?DCP7v-=dc*p7qnqpY=1yMb8Q( z9WXoaE`q}x#j|Dlk)n>vl8$Bi5gp46BSgCbw?XgbvtUuFUxAO0(kIzB&X4zY znLdwNL`vy95^}Z>9Q-*ylVm;MJFFZ@gyDjM^c@9Mg&8(CA_R?2y5K1K75_8Pwo0+N9&Fq=IMl9oi&Q}{(kG%2Q(bz0d*!% zcwc*T-=SkX3w3P2-v(fy0Ta(*Lx3*{l{$24M-GAs9i-vtBHBeliKt0Fcbb(o2dN9hj&RgZXDIy?Jvu_(t=&VY2l)P|(61$=>dKQ4lNzhs|6nwk_o(|rt2ucY~ z4(8X)n;PV%!h+fZoArf{_C0F;MiVtVZq`gC9dd018QpYNSJcGk>|m%4O|>DO8pFJf z0SfokZ_S*!`m@WQp8V|k^^vKsEhG!uR&_9m;FI$7V)GrKd;o2`g44 zdO`kt=~u+*$GS)L-)g?R`A73pmD~nZvl{9(-=+&RsGw$uj0PxvjUqj#UEy~I`P6Sz zg>H?HjM0RWzH^|H&HRxxzo4kFNLjhQDkhKD6&*fQs)TB|^c?=M&(fM@DvzaM>!3m? zV(a#;D$HNv28v%Q-(gakp_YY4tU4(`)N$z%Hc@WBdh9@Pi_ z((Em)uG`N5tsqfiKL(Vyaz=f_PiLgTfjox+rNC}Vp?8PyMl7S)8DHfm^M1Dq(*>JSz`0-nXF7O8 zY^5w+TjKolu&?^uad9GJ7AjKChn?|1w)|7CE1s7&o?Lgr`((|P@n=>p!(GW1#|3Zo z*}mwS&&jMyM^1ujlID2)@cZ>pBsE!l`O`qJ;~LD!vqka<{jUZcFrXb!8kDNVM@F%Q zbfgkj99N)Y?xY@^0dLQV@L8%kymU_W+c*k~>9onXhn7N@onhiQ*|V_{!~#ZxPBAnG zHxO$m-I_OvO#Id9r<9+LU%2sk`DbTNe0sn1&WDG8km_fOQR1=SshBS#>wAgTk@b)* z>J%$#Fp^hqu_JUgW!Rs3ESc<6Goyi}^7Nu7gm%V%5vAC={r%ZciArZKO7%7sj zxBX_{zT;RNn;sFHFnK;TbHxT*WV}UWT>{9~ z>;~~dhlN607LgOHowa0;8`Rc_q~4wbhtE*q_6*3KprOqe`0Kl#8XTg`hI~G&IkseL zx;AFxJC0i1AeCuzf}I6_O}2uy#zV?+JFp2h7t;)p z;jVsy;w@0jGU%E!^lMR_RZrnaED$GwSD^$vx z+g-D1lIU4uM~h-4SR@b7sn-nNqK<0AdIiMbrepxiC5lWCJu3lWcBbARSDoXlz?}jS z{tpzhPZtnwdrn4fdbSgFd64}Cw52{G^2RU)4z9{-TpG;+WI5epa8l%^Lse-GSxkmG zW^V@pLzz=|kc4LxWHNN`Y??t-j`AvO=(3=K6z4w2bZiOJmFd)c{0HgTsafe6PPFIL zRAMb+sX-yE-FHOxi3nmyxw*;+{d!SOIx@j9Z-$AmF$8CiVFp#DW~8TXPjPx^*q9Sf zq~puuo#ZvcR;8wAKs%??E!>kOd^5d7>m+ZUw=tc0O>@c%IZLzhQXxi?>IlH*tei|~ zcJ}t|*%~PPjuYi%Z%59P$++Jq6*O2y6S!gvl-+3_))$W zNDkzjV&L1;C-a6D@#ME}{y}D(09?aN&E^YVc-&Rp{o=v_==Yv^f_hSPh^hKt6wrui ziSgZ+nNY3V7lgPjvoB}}K+xkmYz#*hsc}>B5Lgl(i`7HKxQ4eUOEHB=Dr3tczg1V3 zLAb=q831uzO!AD+fvF&}=q&AoIu92XaaRH?LWsQ~Vk88UCCGcxAjO8aW_!7+TxXv- z`j#dYI_(2!EbTqMdE9;A$&2qde}9h*2p|!3v8Drv_)M`tMa+((?I(fo;E5EE=|LZNwH( zPq6f(wwlgShJ0|=8Cv$q7#p0sgp>*+qN5{t!xeEvba}Pr14(sxc{Q)UBCalvj?gTY zkUXJ$5(@#e*L&fnP&&e}`g(P^`GX(qp?E4&LiO+s6!?i`y^JxcVFAMx)(@y@R^v;7 z@d}Mk#?p`x-T>_#%?B=j%WIly+FNJ#EZ5M{-mC;;FV4NG0oMM_i9Dls%>AEm+P0mwR#{94FO*>n4HHDg4c zs~+-9_YlHFL+BI9PSy@+3^8jAG!Eu1IG73t=TE_FBm++mN}yw6wU3FX0(cG@8VNa@ z5*00h0FDBho-~?WWd4^}-KW$^hx|z7^N2Ikpeq05;g1?JCG1N&X&0R@rD+}W74b4X zq)EUg!Nf6)(zuCWpzaR_>SVo(etQ%ZoIwKNCx@F3Cg7Gk1R0kmU&=b<%4}+G_|Xf0j)13&!pSbR9Nkb!5MSjNAae zv{C%ZY-RXf&!1^>;qJgM%;4)LB z$oe(1Ki0fRHUv3;`0pK-<#i&v;?=QShA~?a>q}oj1I%WeBOUqm>peo}spfg?Jhom# z9XGSQO*^yTBaMEF_@gr)wHWic1<9`uUT87*XsBIwuhOAi-8JB)WB6AtUYf_7Z<2ckLy- z-;n^J{cx&UHGr3|0HJvBeY#jBccoTC*DqV3IXhS+uPCYCoeSL!eOhqKW_1Y+Ch_an zq~ZwF36oRrHqL<;D$Nw=iqj} zBKn=?5LHSV5U@jzEnlS!h}i1y760U53Li?Gx3p5tXVUUb>q>o8@mtcP5{i=x(=?UZ z-M+<<(klP_;Ee!ENdj~|M!hRmMkN`(7*&yxSC^Ql(&_Swixame=4gD&!Ya4!m-;m& zHGK>+zWYw%bZ+yGGNmpjOLy=+kDxMMw{3gM)-CA)Ta;_6Hl5ymwEO^HA5*tenUj^B zQ&zt@p@84Hv3U7v3b@XhTa<}A5({-jd3l9=^X{vk9y}{ObF&JFc^y7m6g8Q(nKgV2 z30VX+SV}TmdfIm=v3g4t5*!rb)3mBCRC9Cc>A9yyNL%QjY7nI-D5=*1pzqtzk^Gj8 z*iD%EDYw=K*Zcyp_hmPZ^S_WGr*Y1ku7va-E>B6MLc4rR{JJ^{g=_$o>??|oPe=$; zm6L5Ea$BY!qvtBi!*!w2PKF}Tg@Uhp?Z`a%QJquA6Y~AB9Sxyz^PKc6XhXM%!)$dY z#?f<4AK7em2W-!bHa%3-Yhj5jNGz43=}e!*U)L-&VTexRtAsH~SrqL>J+zcQ!QtEu@9w0{+~Tjum|ICc1# zx~Ry0$n-*655#}n)z>Zst$vT6N}WpRwB?6DI`r&Jv}@u?GqWyds-MU^*S7eI;SQpxR`O|6jnVA$%< zJ@ijv)p8qq!R5y?xfJvof0T_OwL5G=X#g6|-i1cPTq@{nG3XZIEauz=c*o0yW`aZe z+67o}yuXW5%Day*vCs)Z;$Nc=PqLlo##~oAh6S7iLpozy^ z5FYMvVybR#h|`%BZ|{3k1th~~3@cnH7&3}&hQ_O(+k>x&&Gu{^iY$w*WLs(8{qjpU zz;gnkTzg7AL^c$>K4!o{XSoK0o(yUgG5tDpFsxNOws3DHj}$;#F*}H3vV@v#qN=wF z-YR;V-_du6bA3PQw90EypQ%2(R?$+asc+ly*N(^1qALZTeWuhO)w?S6a|{ylmtj#L zZ+I<~UZFR(8D5K`zX8ANENPblG9VO)3o=%D=-vVwQ3u8kMmsJ?o*Yu+8#?JoNWZZ4zmrJ^ zdf?Pd_5s6;t^RD!%1#q^F|~l-OD6vd9i8b=kjOg?ED|&^4#yfCq2Txo1Q=b%6GZjg z12H`@Jdw!%T8tOA16q!azTUXIN228Wj!yDD69p?Fn-y_!5m|AikSB_D#L+0W>y_Q) z_m3;hsxB>cVyq|Zv*{IIN=q@&aQ@or-6D#N;FWC!&r%V*S{clY1SuFsnh08%;-)KWNT*e;ols z+-vV2yb?Yz*F20}Byqb&}{B9jteD6c~o(?x4hIgJ)d^~$}XwbpHgXcdv z;3G9S(@aHCQC3AlkyI`gXtl*rSqWNgLRM69LXoy2tGHN7CQbz-W7h8Ia_^&#QRP8d z(b2xXj?q!z0*ZoK;|{lXy(^-2XO&ktH8gv^w#aR_v#Fy&UoPhWc9pWp}7AI6> z6%|1r_V0?5_vV~k(>U|W%ssDa<+qgaYqp0Z3<#AT&8~^eQig6^wqjB6gbkrzooFg5DJm)|OesjyWul-` zb?9RZlzweTrCB)Zx!-Q!%gT0E=LxEM@pwzp*=q*G#(QeLnS#cSjS8d!*mHS8gBqI*|zDzUdc7g-Ns4 zEn4g^%_{YYU4_jRP|L!kS!)W`Zs8x*om+W!Y~`kJGZGg{ zsZfCPSbyWGElCd(r#6^+m>Mf^e_M87ym!1!EX^R;SY@H#(M$A}qCUHq`ws|wi_YO45sJh4b*p)LNpdPP`QTwCx&FPPI(K(ac^Mx=k3`*;T#TSvy7ApNhMsZGC_ay;q$ z#`LuTkW2ZVCK}$Z1{#3FCeng?U02Ylra+VDmhHQW?+wjGJT|95uY8Lyx>|O=rcsI! zq#q0)EhDA7CK#S-CYTJkoFN>!DL) z=8o$-m)ZnU^_ppGhbB@hX;!*Fxcq3}N;>J6Eai~}#P`ilFk}i0eISOW;#b~CDnU1; zP9&|4%m#;7W{!%IM@XeqZ>y@`xjlQQ=3>f)+;f$CbbBgxRYFC?802o+&!oEcO7We7 zYYbCoI{`n`Cl`Jyg|x;9vm?hIp6DeE23!GTUergQMSMD*Y@+6yr=(L!&~sHUAq6bi z;f^^{nxtQ%AcyHTkU0+Fw~a>8!vIu)368o$pxZ`42!$MjlxX@zFCtuf*-+9^->Wm% zkWGGh{yiPvd9Rn~9OUHn&(2Ec(g%ttdY{$;-fH(79e2wDdkJqoE8QhcTUU#-61hGW zTZZT;`U~jz_PE!9JkUS?wYzL2@!QMy9|5faf{sFHdvUIj$!nZ%%H%f8Hjvqb%qC+t zGiEcdflaUmHn$^ZqQ!{?$vWsL5qGv=(=$f)tmQJ>9k|LmTBfocbTUa%%e6Ka)ba&3 zJJsc9Bs;;0EzFY1otc~czq?79o9N%&%$b|nf`1Du$b*}}3 z2(g_IO+TIMNOyuN#hy>+ig23E%2jCJDH-?L96J{?`X{ zoX7@n0?^MSNN;36(j0V$TCLkN+35lhrsq8ksN9ec>F*R7P`rL$6q)DjNGER+#kdty z;g>4p2`s_n(@RjGJPPTJqMu%xP#!{Uzm0MtlQ+?M&H+){^_2lml>tY!`zp!2r;Z*_ z_6(Wkb-V9?OSl=O8)-}#IaoaB(Z4QSc0w=49l$1|NH6{(#~0imeYf~iC+M6^G?oYD zYNO4&T`}bbe(l5nmFD%{7kRX}a-UP>KJBr93OesEN5J@iEWNUqFqy2xn0R0R7`^T$ zz=4zKwJLhE3Reh~m87K-$gl^{%Gb7$8{2RdQW;5Gq~uoTI0gNFHT_{V{u+dyP}$NH zX0VK-A>UDdG6pPPf6_l4$@eF_{_8E805;Q9tCyCMka4(f83V4sHqvT@(DLYsn|9GTvEfuFu0$N@MRE~T8V7Pw zbj(B1k0z6(e(g}O(6~Y|3Bq`bCfy~AMCAR|3d3~z1bfiw%*57nI-9~wCUZysb|9at z$s0hQ1gfB}HHJ*kKPG{1>c~{$c$LWRkr80@9acheT!3)j=MP4dn?}X~H$+|?(+h%t z7Zhc~=&XkI)$Rv2w3Oc}eIKh^P~JglLvCb_Ru!{dn;a7!7lFIA^Kl{TTzi+6e4VrN zH?k@BP)>DPZA5WIQD}5>d_oj1lOM+hOG8$L#BRtKnL6vMeZQ6-|B+lj_4U5@ziqr2 zvM=uV){>Mxar+udiuUiWDm#%Z-J4bsQM{ zu+Wt_eo*|T^tn6rSEN-(lx$1emKGn8yDc}OD!vL>s5aW_+>$C_*y*q0kQ`IzpC1+- z9-ZR9Bdk1Ze@b0>ZF&Cw=sM}M3MfU`c{uTmZ@uqMuf$Lv;1Dct2yF;CquY5{YODv@ zvxy2s7ktFCXk)NXaN@H1jqF4H#-_w0^+$H;&V?M2LbDeU>RVaG5$PZ6$Rg@;vI+>o zDUf{8zD}2cqzFF7F;H_pH@H9b{ew<`jzJ-qH^+WYPm)OQ>_rue4tYL+K-@e(qJEH@ zo0o%oFk6h)m7g3Z6R&4nulnQ!3MFJaKjH;IQ|WVk$3R8o?v44ukwM#1HdY2z1|3P+ zRk^z=|41a%Bq1YXfM1YS7hV>g8lD;(o*SMQRvTNJSDRN>n_3GcgmuqnD^hm_R|Ka9 zr$hzk2jvCtirSUGE3aZ#%5Leip`Er0`Mee3M^=>hg!_cYd)02N@i`rTxb{eG@tLjA zB^w9c?zHM{sQ3t0@u>Q$xa!=hywa-FYAIbzQWO#U))j8q8n88aU3EZpKx6X0>b*4u zjS>5>l>L`q&~CsZ?S|?s5Og@U7WC+0{M!@iZh&$5P|+Yadt@#!6Z90Q1V;qTW=>{( z%?6kaF&kkv+RW9=&1{C*+h+64)|>g5Z8i%ui!zHhOEOC{%Qf3&_MzD&vm0ign>{f5 z!>rwWn)yugx6S97FEaNuUuEuZ9%-ItUTEH6e$4!&`8o3s%s)22W`4{3OY`r|e>MNz zyxm-H!C6>a*jqSRs4a$DOtfgW_|oD#i(f4Muy|_GVew2T6iS3v!v4bH!imDyg;Rwy zg>!`qh0BHOgd2qc!cbv^Fk09wyej-f_)ugaau6v+ylA3mn&@rOJkcVNr)ZTZT$Ccp z5`84PCi+5jPb?M>6Gw@Y#M$B^agBJFc)z$o+$g>+ejxrs{8-{DnJZZ$@sg~S_(%dJ zp_2C`7bG7`u1H!WMDjw~M><+MQR*h0A)O~(B@L2plg3F;OYd3QTPiJ`Etgs@w_I(R zZCPYlVR_B+Tgx`f=Q0bKrOZlZD|3{MkWG=zlm*JtW#zI%vPRi^vL@MYvUXVqXU0i5 zp6kyI<=i-LE|iPr;<*$qlgr@>xE)+Aw~sr_o#ejeTDeZ{c@Og*c0FF}q3Yq>V_1(# zJ=}XN>9M|tPY?ed;XPt{B=$(_vA4&^J?{2+-qWI|rss&B^LsAsxxD9^o|}3G_6+YC z-E&9J6Foog`K0GFE1A`6Rw}FhR@1H4S%q4~S>;;ktV*q_t?I4zTD@m=-s+mwEvwsB z_pE-ldT8~h)njXswcL7`^(gBJ)>Eu!Si4)#xAw3Ouuiouw%%=h$oiD^dFzj?FI!)? zZn3^&{j2pK)}1y|n;tf{HcA_3n?W|iZN}TU+Dx}uXya+K#U|7y!=~Eipv`+W=WQ<9 zT($Ya=AO+jHox1n+5BZgZEbA(*-o-`vt45AXB%ysZCho#)AoSvVcSOA)3)brKe7GV z_K|J7?O(WRd|@ZHSmU7TH>U8!A_-5$Gl?M~WV zu>08Viro#nAM7655jlpuTqAdp50np+kCso9&z3I$G_{X>vpifLEsvL{$TQ{n@?v?F ze7F3d{FwZ-{G9xv{IdLp{7d;a^6%xp$e-E^?R(hU+V`?|u^(zb+J3720{eIDm)ozl z-(VkNA7LMBpJrcVztjGJeWU$*_UG*{+F!B1VSn5HJNw`4+w40PW(u)_Q#dL#iXn;# ziW!ReiX{p!#X5zbVv8b75vhn%BrEb16^gxzgNmbyCdDPi=Zd?EpA`=kkFl7UIaoSa zJIEcJ95fCt4uc$qJB)Fd;P9ryJO@vQ)eajR0v)0pQXKLeN*yX4>Kyhs9CUd1hD;A_ zolH?DZ}q0ko$0D~->kkIBI6{l2YODMto%Qx^x~c!lwP-gqx1p{`@c|n-TphJm(h0r zru619N-uU?kZFcw^E7~$gbl)|Ss)`va4`g`9`2O}%O3hM-jJ(mu|W(5j~ZNrI`Ft2 zWwh!VgIGBP*H^KT8h27JyDS+lDV>i3UQ;Aer&z&At2L zO=6^bUKUrDp&Z0RI8V(1w3181{4GgSqt(>L{P3WaGbt_&u@469rG%S_WF%9OgqO^e z$r&=h2tI339Ev>{R>#waGKuxR3IGCwdP|X6F;|#gm7?6X-zE=E^wnFd4T3 zRU}E0ae3+zS+$yD$iJK@1&m2a%B0-H{1l!WgT)SAGiE%~gp>kJb8(hK+k=sO{KDZlhYmtwtU8QFFs&!_^!XDr1R3 zc<01#s<|K(wCh&TW1x(Kz*-8bXPEl3m|J>cO*8l7o43$*-S>vTr-;Sy8y z#eh;3N1sC92LKeANdQgs6bD2vHOC;T@axSn{ZbmPOC4jNdO0dzV8LBpjBYSW&E3aU z!VVcXQf7saV87r}@_Emuchm;d_AD8z^Cjx0rXm@)lF=-D)LewDmqdVDpxH7`u>>;& zdi9t$-yFj&lew>y4dKL7P~SEn&Js^pO4Q^Yn(8vL!w`Oa)m%-!IvqU}DNByZIL2?{ zfgQVth2EpHWtO`0yrD%w($vpZcdQbfTQ>OEbd_OjtIRM~GX2=#bDn(1>St?2VRhs+ zbse-_#p|`?9b^NLW4H#D0E^3xy}hDan0U*KY9efSj_B%sRu`!xh}tc65UZ5UWf$H3kd@)B1zOeOj}+vqk)aY!c4P z5}?&`Swu$VkEmO{loY6$j?~zkxV(7WJ8S^Q{6^}bG(>=H zCJg)@wtQ$ocu52hqBqJi1y1{8BFTJNn%$XriX#C2Hsh z{EoR@l5s41OV^xeZa$&6ldW0Gb5B#%=mMlS2dyHG09IK?Ej26Xl1fugpG`me3hF5oWJi0U@2NL;O=KMF zK5oPpvk~T9E-Ge61=`x46so!UkYic(^-i2(4@RCI%}?X#e*9n>#;#eNleb2*D1VLj z#5YGQ>c7@$*L(FBs&4Ln=s30s=tsW~z??fsN%rHs8K)o1ciJ0t3T_GJMEypL&7taW z8P|K6D%ZmNNX;D}u`;lcK=Qahwbnqs2~vD)3bEkG0QKGmj-RuUsx!Uk zNfRYe*^%3$_}13SRu!m-&f&SFkLJ*JQ8p$!ow6dmBBPvtyN}uh-?>gl1XZAKPFc$H8nFmRbvPPxK~0d6Gz0} zBvJ<9pPW2i9|pXkqPzmgI)c%Mq{uiQuyX-=lk5HcxJt}I`ukv1jlq528)Bd)SwZM` z#=Vx5^ctS7hg@!^XmI4J*&5JkBP9VeMnt^~_c^F|)j2G|RsdpxV=zJIB#+z-DJn|W~c$4yYy({+$-H>epg<|ZW zFacvWe;t)0d=t|>o!9}{d@&dU=H4B5>BG{}!lFEYot22Pqs0lCadAozYbH~%-cQ2a zm9gIPj+z^bySi-{By8Ho0(oQMhckF?m+aebzn$=(e>u_!od!Y~SC~fpFr_;J_$~pQ z5#k@!nBE=5Ef~yaiDeEjZ}PW0ksIQ?OkGM&+8Ju;s1Mt`NKG$^XOPJv<6NYnEw128 z!p>nFXrI8^=D>$$#XxpEIMQEc!HMgz1=*?Q&d7}S*W4I2mMIk09%}>}b~-X2f0+tx zR9C&OV&`tw1I-aij64IR2dNZiq6&uVT+fhwdy}?@zcD?gRS5TnS6(lFRUU~Zt zGr1{hC|3h`TLCB8hxv3jN`Nj2MR4}m5racd&4tPII_`2TR%=j9ImQ`vjzNH&Ll)WH z1-sOJ-hxYArrYwF?q~QWU^~}I*jAW0sIi;kx}m(gkhr;8ETps%TQQKcfeua&b8)4( zppD}ylFQ>uxSJO*-sB{DHR&lT%hQ#VL4UNQD77dlpHIryW+$dYafZ~9BVO36iev>k z4Yb^{Qt=PPtU$mR2R0eDb4;ThHYq5Hha{>jrc!T(T?UPvE{aV}jE@Ckr6eIQp)iF{ z%g+Z+5k$VBQX6S6n$F>DU^SH5`D^+Z#)|^Q)COv%Y%piKs2_4*!Ux;SVKwfrF`e3T zB}LmI|DK<_Jy(@3(I%#*CM6`rI~hcVU7}I?ZzLR5PM3WnI+yb|?%3$yB}Zp;JX1*%x5s>9go16*%wbicZy09WXv?wq&avK*{Qjt=w>Vlf#O4VlEB6Sz1D)u;%-Sgin zfpm!(^;yP{)rrqCuuYl~pL5VQi&c4J6i8<_bcG6{JucWTRN$WWHApM_lc|U|A}c=L zY30iJ_^gPMI46!WR?g35dWRkBiJBjMXR}4vL??ZY77FL zEW*?ZV?Wdp9Ep6@sIwL96F0Vwqt=I=~*i~WsL39t`4h`JK%HrzPH$Gg5=^T`Ru3S@_KL-#SE+k}qR!BXk94+Ip z$;)Dm=)ox#du(`n=*mxSeSY%djjykcoyZ&h;@0vZ5fNJ>L!OLqEG{i6D=n7R)N=!; zPwVH>GPRYz|LN83s)E9z+@egbpA0;)+)>)5f4=56U#$%Xj7%8l^I8qJ9)jxkA^z8J zl*xe^#r!x)aCz9y1U|h$mr? zudY3Zy}d81x>tT#aF+a!l^d8~SX(~75;$H%F3~FrZAM~}R>gT#dK_G>0c@*IH0R7$ z8@^U?CwvdBUF++&W^IG-@#75*$9Xo+**e6Hz$OyRZYU{Bj$`|NOyR7>?a7xiY%Cc# z75mGPN3y+~-WGot-Gxi2#4UuXx+=G*5=S)>##x-gWj{8ioCzL~+){I{lc@P}YNdjL zck{D%CKSJah1mbDoZQl zK1Cm3jQ(z17W7baObWydUGun__0LYQ3}Uz32<He($3v zuqxuBQljJIdE+6Q=f?2QTErZ6Auil>fbVj~t|Rf=9dw8%0`Z~UyANr&9Z(SzkJ*9C8)Y3j&GGH&Bs>flCYs!aj; zrNJ5wcs#W`R9}h<^OKS?LCiwm#ex5l%u0`q3x^e1%&C@zZ42dk4bWSYyVH{Qxw(&%*v3;EmJp|@{S?_V*Kjj!&D*JJ8Gxj72wQlWCta%X47wF!J{zWT09y_I4KB73FXiH*hq|3)A}L ztd~D-Jd(S2FN@lbS8=K=1}`o=bK+|acLWmw*i`w;824fmm8Y}X3`(=+;7+>`0~cCd zqG}U&?@@9fV+*7L0m}z!15*VXqZ`b zE(sg<6!^ua2gi}8+##S=abQ7cz{;AK%+dY<5H~TWBS3=cN87{bE@fOc2a(cYkRz=i zJvefcwGxy#^Bi4)?$`&wKpvd17adFsdkMb~bK-`**qd%C@I@7cp_aosTQFMb3n0}W zRdbNhVq+b3#E$Ts0f##d(olUl0sff@>;x9f^75ZlAYt|wF9foeHp`bb3$d?Ro$MVkC`!#y>{y&H`tn$#R3otWWp1 zUU-8qybH|4Mju^&SjfLazx?nIPA|XxzqH7DSc=3)CDLR6w-Xhbbt1}bs7sMxg1}j@ zPtYJ}6nrH3s&}70e4jO~R;_&Nl-7Bzt6Dd<`n7Ipjcd(mt!iy(J=%J;_1o4zTA#OB zwef8O+6J}_Z=2FKuWeP^mbSRIoVKdAhPHEUSKGdA`=jl7yHz{iKBawL`>OUW?Q!in z?N#j!?dRIBwtw6H$5Ylf1W0-Bf21sEwQ23$>ejlTbxo^J>!#MAR&8ruYfbBs*5=mh zt>3k_wh7v7+MJQ{ptg~1Zfy(N*0cq+Y1{JJYTAypHMd=F`>w6EUC?gR-n-qceL?%0 z_MmocdtQ4@`;qqM_UrB6v6NqYkG{F$#lja;UyS_r{Kj~{{ciop`l0m$>)&vJcHjCJ>z}QEvi{Nf z2kY;xzq7t)eb@RM>#uRScH8o2Xpu>KrZZMUp%a*f8Gw)MX><*NVk?f>5=v7iS= z04HD<#~5~Im%r>6^Vw=^*QWvt<3JT$p6@!6CDAg<_q`V{p1-g(6EmL{2+{QqZ(U=~ zlGPu+|L3?dZ?w<~g3OxXPb=6e(jpmwU^R>VpC0zT+kGV)kO*UXH`>`dCJ2E9=BwWj zCK6${FgN4F{NQ16usGqSG{(o=wSv(mKPId6qbu&7rf|&7RBmQBy_?cDg@L);_-MQGZTt>9>d%e&!BS@| zAB&g08y{_Vxw^kunBHMBe?pkdUw0n=&188pK7W57%KDbcFKZ7|U3I7DhQ9iu+ujwI zDeQlmT7iQ3GnM<_@(lOxwzlauH=5#vf1xq`?)bXht(j@c7wScYcjV>o`mpSdll1}i zm}>=Yc#Q3Da%1Mpc)IKZyW=;yTfo2Zd$(!w&+=%h3sZUE&&}k<^1#@d)7OmB(0afuINbCe(I) zV{T^McIFq~#xaw*v$T!r!+bTK|FoO@!5n6hh%l%amLHZ5%n2|3YXutQSp#?D19y$_ z(RP)k+n>rjrnO`s}--{Qf`0zdj-yKcw-Ql|Znfx0~w!zqd?@PM#J($IXcPY%i zEZ_h1z^@g1Ol|+4@tg8wGTC=#XOF2am>qfKn907Io>$+Q-Sqy_u7zJb-R}@W`8!UQ zcf@Io%VaV)??c4o52#O#V%#1nXgU+|F>@jCcpKZ_J&A z@3MF03-+%5t`!Vm@tMZ>tLZTRq8EaGtY0v9QyVgOxLGr^J1@q*V@d<={Y-i7cC%-3 zywbm3mfe^J;$ivj&b!(ametFDK5R`erNd12{AYbi%)83U;>Nr+5`MbsN-G#{3WIoD znEk*1TOcrh-{|8tGo`?++wTaNU3N3C@eIPM{E6?6zA8c)@KO^scH4!o_z?+Q%*wmn#jm(a1a)TTyWOP%NAtDac1wZ1xhWn_FxWi1+ucgwYJT#~ zK%Cb7e0;;4r?1`W?L2GkmJN~4qeqVV*Kp^l{{GI!Pod5s-l5(hTfH|7pBcC%Y-)se zXkdW%%=z;?=1iS7X}-tI8Os*TU*xgWJ0#REaEtTU;p2yoG{&*O-+OJSH$rdp4si|( zbPn_NcK$oTQ1A6&%>Twfe8iWHh}$_VWbFp;fVCl;o!5qih4`%tH+tC;80NR$I~2)> zggJMo|95_U!@`0ljTphgukFg)aKFHRbQ}R(I`1u^-XjEW3IYW|f=EG#z)#>K@D+p! zoCVVbYXw^c-muMrZHr(7zB>y>3q}e?3H~J*4*OJrKYq@ygbFpjc?&`jF2opm1ANXz z>{}4$R6zvXL-7^>a}gdNK{#Sq3%@f3^9Az+9)daWH4PnaKI}6EGX%>73t(S_x2487 zLyxYu^5reqXbk0y)C1uXhO)6Q|5RQUW<7kE;@^l6 zA+LmC@2nIomJp<|0saGwdEX4TwQyzbeu8x<)8DadK`8dN9==1n>mmd$toB~5jen|b s)(&B4mq{38BT$mA^w<7dxZ%e9{-66Cfg0+{%@$)VvB8fK@L&J^FN3;7EdT%j literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.eot b/functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e9f60ca953f93e35eab4108bd414bc02ddcf3928 GIT binary patch literal 165742 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

5q!RY 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 + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.ttf b/functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mRO}xo^G_%I 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.woff2 b/functions/kirki/assets/vendor/fontawesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/functions/kirki/assets/vendor/selectWoo/css/select2.css b/functions/kirki/assets/vendor/selectWoo/css/select2.css new file mode 100644 index 0000000..6b4d251 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/css/select2.css @@ -0,0 +1,484 @@ +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; } + .select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-selection--single .select2-selection__clear { + position: relative; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; } + .select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-search--inline { + float: left; } + .select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; } + .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; } + +.select2-results { + display: block; } + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; } + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; } + .select2-results__option[data-selected] { + cursor: pointer; } + +.select2-container--open .select2-dropdown { + left: 0; } + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-search--dropdown { + display: block; + padding: 4px; } + .select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; } + .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + .select2-search--dropdown.select2-search--hide { + display: none; } + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); } + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; } + .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; } + .select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; } + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; } + .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; } + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered li { + list-style: none; } + .select2-container--default .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; } + .select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; } + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; } + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; } + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; } + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--default .select2-results__option[role=group] { + padding: 0; } + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; } + +.select2-container--default .select2-results__option[data-selected=true] { + background-color: #ddd; } + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; } + +.select2-container--default .select2-results__option--highlighted[data-selected] { + background-color: #5897fb; + color: white; } + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + .select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; } + .select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } + .select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; } + .select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; } + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; } + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; } + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; } + +.select2-container--classic .select2-dropdown--below { + border-top: none; } + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; } + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; } + +.select2-container--classic .select2-results__option--highlighted[data-selected] { + background-color: #3875d7; + color: white; } + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; } diff --git a/functions/kirki/assets/vendor/selectWoo/css/select2.min.css b/functions/kirki/assets/vendor/selectWoo/css/select2.min.css new file mode 100644 index 0000000..59fa33d --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/css/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[data-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[data-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[data-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[data-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/functions/kirki/assets/vendor/selectWoo/css/selectWoo.css b/functions/kirki/assets/vendor/selectWoo/css/selectWoo.css new file mode 100644 index 0000000..6b4d251 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/css/selectWoo.css @@ -0,0 +1,484 @@ +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; } + .select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-selection--single .select2-selection__clear { + position: relative; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; } + .select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-search--inline { + float: left; } + .select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; } + .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; } + +.select2-results { + display: block; } + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; } + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; } + .select2-results__option[data-selected] { + cursor: pointer; } + +.select2-container--open .select2-dropdown { + left: 0; } + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-search--dropdown { + display: block; + padding: 4px; } + .select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; } + .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + .select2-search--dropdown.select2-search--hide { + display: none; } + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); } + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; } + .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; } + .select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; } + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; } + .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; } + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered li { + list-style: none; } + .select2-container--default .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; } + .select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; } + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; } + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; } + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; } + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--default .select2-results__option[role=group] { + padding: 0; } + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; } + +.select2-container--default .select2-results__option[data-selected=true] { + background-color: #ddd; } + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; } + +.select2-container--default .select2-results__option--highlighted[data-selected] { + background-color: #5897fb; + color: white; } + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + .select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; } + .select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } + .select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; } + .select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; } + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; } + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; } + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; } + +.select2-container--classic .select2-dropdown--below { + border-top: none; } + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; } + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; } + +.select2-container--classic .select2-results__option--highlighted[data-selected] { + background-color: #3875d7; + color: white; } + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; } diff --git a/functions/kirki/assets/vendor/selectWoo/css/selectWoo.min.css b/functions/kirki/assets/vendor/selectWoo/css/selectWoo.min.css new file mode 100644 index 0000000..59fa33d --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/css/selectWoo.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[data-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[data-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[data-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[data-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ar.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ar.js new file mode 100644 index 0000000..f9d1965 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ar.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum;return"الرجاء حذف "+t+" عناصر"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"الرجاء إضافة "+t+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){return"تستطيع إختيار "+e.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/az.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/az.js new file mode 100644 index 0000000..ffd640f --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/az.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/bg.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/bg.js new file mode 100644 index 0000000..c170d3c --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/bg.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ca.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ca.js new file mode 100644 index 0000000..274099d --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ca.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/cs.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/cs.js new file mode 100644 index 0000000..d50faa2 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/cs.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/da.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/da.js new file mode 100644 index 0000000..a59bd1f --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/da.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Angiv venligst "+t+" tegn mindre"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Angiv venligst "+t+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/de.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/de.js new file mode 100644 index 0000000..13c2509 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/de.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/el.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/el.js new file mode 100644 index 0000000..7277ced --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/el.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/en.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/en.js new file mode 100644 index 0000000..6465853 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/en.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/es.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/es.js new file mode 100644 index 0000000..3fb592b --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/es.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/et.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/et.js new file mode 100644 index 0000000..d9a6f09 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/et.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/eu.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/eu.js new file mode 100644 index 0000000..7fb958d --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/eu.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/fa.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/fa.js new file mode 100644 index 0000000..fdc16c6 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/fa.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/fi.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/fi.js new file mode 100644 index 0000000..b406c66 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/fi.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/fr.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/fr.js new file mode 100644 index 0000000..524acb8 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/fr.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/gl.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/gl.js new file mode 100644 index 0000000..2799266 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/gl.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var t=e.input.length-e.maximum;return t===1?"Elimine un carácter":"Elimine "+t+" caracteres"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t===1?"Engada un carácter":"Engada "+t+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return e.maximum===1?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/he.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/he.js new file mode 100644 index 0000000..7e0ed14 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/he.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/hi.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/hi.js new file mode 100644 index 0000000..8a8ebaf --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/hi.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/hr.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/hr.js new file mode 100644 index 0000000..8999b9c --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/hr.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/hu.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/hu.js new file mode 100644 index 0000000..6871068 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/hu.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/hy.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/hy.js new file mode 100644 index 0000000..17cb0e7 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/hy.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Խնդրում ենք հեռացնել "+t+" նշան";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Խնդրում ենք մուտքագրել "+t+" կամ ավել նշաններ";return n},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(e){var t="Դուք կարող եք ընտրել առավելագույնը "+e.maximum+" կետ";return t},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/id.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/id.js new file mode 100644 index 0000000..876edb4 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/id.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/is.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/is.js new file mode 100644 index 0000000..49bceb3 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/is.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/it.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/it.js new file mode 100644 index 0000000..37ab22d --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/it.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ja.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ja.js new file mode 100644 index 0000000..281e8a0 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ja.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/km.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/km.js new file mode 100644 index 0000000..0ace96e --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/km.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ko.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ko.js new file mode 100644 index 0000000..a8c39fb --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ko.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/lt.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/lt.js new file mode 100644 index 0000000..15f1478 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/lt.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/lv.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/lv.js new file mode 100644 index 0000000..c55a484 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/lv.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/mk.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/mk.js new file mode 100644 index 0000000..4884354 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/mk.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ms.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ms.js new file mode 100644 index 0000000..6711f72 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ms.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/nb.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/nb.js new file mode 100644 index 0000000..2001a3b --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/nb.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/nl.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/nl.js new file mode 100644 index 0000000..0c20ad2 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/nl.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/pl.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/pl.js new file mode 100644 index 0000000..157c4b3 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/pl.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js new file mode 100644 index 0000000..1d066d6 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/pt-BR.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/pt.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/pt.js new file mode 100644 index 0000000..e200ea4 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/pt.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"caractere",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ro.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ro.js new file mode 100644 index 0000000..d066a2b --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ro.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/ru.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/ru.js new file mode 100644 index 0000000..7ef8036 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/ru.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/sk.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/sk.js new file mode 100644 index 0000000..574d862 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/sk.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/sl.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/sl.js new file mode 100644 index 0000000..44e5d06 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/sl.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Prosim zbrišite "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Prosim vpišite še "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var t="Označite lahko največ "+e.maximum+" predmet";return e.maximum==2?t+="a":e.maximum!=1&&(t+="e"),t},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js new file mode 100644 index 0000000..9d01257 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/sr-Cyrl.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/sr.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/sr.js new file mode 100644 index 0000000..e635fd3 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/sr.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/sv.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/sv.js new file mode 100644 index 0000000..fe220e3 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/sv.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/th.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/th.js new file mode 100644 index 0000000..6ac7d92 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/th.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/tr.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/tr.js new file mode 100644 index 0000000..5836299 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/tr.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/uk.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/uk.js new file mode 100644 index 0000000..44c603f --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/uk.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/vi.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/vi.js new file mode 100644 index 0000000..1a22705 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/vi.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js new file mode 100644 index 0000000..20b5b9b --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/zh-CN.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js b/functions/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js new file mode 100644 index 0000000..dfb0a2f --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/i18n/zh-TW.js @@ -0,0 +1,3 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/select2.full.js b/functions/kirki/assets/vendor/selectWoo/js/select2.full.js new file mode 100644 index 0000000..d973690 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/select2.full.js @@ -0,0 +1,6553 @@ +/*! + * SelectWoo 1.0.1 + * https://github.com/woocommerce/selectWoo + * + * Released under the MIT license + * https://github.com/woocommerce/selectWoo/blob/master/LICENSE.md + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = function (root, jQuery) { + if (jQuery === undefined) { + // require('jQuery') returns a factory that requires window to + // build a jQuery instance, we normalize how we use modules + // that require this pattern but the window provided is a noop + // if it's defined (how jquery works) + if (typeof window !== 'undefined') { + jQuery = require('jquery'); + } + else { + jQuery = require('jquery')(root); + } + } + factory(jQuery); + return jQuery; + }; + } else { + // Browser globals + factory(jQuery); + } +} (function (jQuery) { + // This is needed so we can catch the AMD loader configuration and use it + // The inner file should be wrapped (by `banner.start.js`) in a function that + // returns the AMD loader references. + var S2 =(function () { + // Restore the Select2 AMD loader so it can be used + // Needed mostly in the language files, where the loader is not inserted + if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { + var S2 = jQuery.fn.select2.amd; + } +var S2;(function () { if (!S2 || !S2.requirejs) { +if (!S2) { S2 = {}; } else { require = S2; } +/** + * @license almond 0.3.3 Copyright jQuery Foundation and other contributors. + * Released under MIT license, http://github.com/requirejs/almond/LICENSE + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice, + jsSuffixRegExp = /\.js$/; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, lastIndex, + foundI, foundStarMap, starI, i, j, part, normalizedBaseParts, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name) { + name = name.split('/'); + lastIndex = name.length - 1; + + // If wanting node ID compatibility, strip .js from end + // of IDs. Have to do this here, and not in nameToUrl + // because node allows either .js or non .js to map + // to same file. + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + // Starts with a '.' so need the baseName + if (name[0].charAt(0) === '.' && baseParts) { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + name = normalizedBaseParts.concat(name); + } + + //start trimDots + for (i = 0; i < name.length; i++) { + part = name[i]; + if (part === '.') { + name.splice(i, 1); + i -= 1; + } else if (part === '..') { + // If at the start, or previous value is still .., + // keep them so that when converted to a path it may + // still work when converted to a path, even though + // as an ID it is less than ideal. In larger point + // releases, may be better to just kick out an error. + if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') { + continue; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join('/'); + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + var args = aps.call(arguments, 0); + + //If first arg is not require('string'), and there is only + //one arg, it is the array form without a callback. Insert + //a null so that the following concat is correct. + if (typeof args[0] !== 'string' && args.length === 1) { + args.push(null); + } + return req.apply(undef, args.concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + //Creates a parts array for a relName where first part is plugin ID, + //second part is resource ID. Assumes relName has already been normalized. + function makeRelParts(relName) { + return relName ? splitPrefix(relName) : []; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relParts) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0], + relResourceName = relParts[1]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relResourceName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relResourceName)); + } else { + name = normalize(name, relResourceName); + } + } else { + name = normalize(name, relResourceName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, relParts, + args = [], + callbackType = typeof callback, + usingExports; + + //Use name if no relName + relName = relName || name; + relParts = makeRelParts(relName); + + //Call the callback to define the module, if necessary. + if (callbackType === 'undefined' || callbackType === 'function') { + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relParts); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback ? callback.apply(defined[name], args) : undefined; + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, makeRelParts(callback)).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (config.deps) { + req(config.deps, config.callback); + } + if (!callback) { + return; + } + + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + return req(cfg); + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + if (typeof name !== 'string') { + throw new Error('See almond README: incorrect module build, no module name'); + } + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); + +S2.requirejs = requirejs;S2.require = require;S2.define = define; +} +}()); +S2.define("almond", function(){}); + +/* global jQuery:false, $:false */ +S2.define('jquery',[],function () { + var _$ = jQuery || $; + + if (_$ == null && console && console.error) { + console.error( + 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + + 'found. Make sure that you are including jQuery before Select2 on your ' + + 'web page.' + ); + } + + return _$; +}); + +S2.define('select2/utils',[ + 'jquery' +], function ($) { + var Utils = {}; + + Utils.Extend = function (ChildClass, SuperClass) { + var __hasProp = {}.hasOwnProperty; + + function BaseConstructor () { + this.constructor = ChildClass; + } + + for (var key in SuperClass) { + if (__hasProp.call(SuperClass, key)) { + ChildClass[key] = SuperClass[key]; + } + } + + BaseConstructor.prototype = SuperClass.prototype; + ChildClass.prototype = new BaseConstructor(); + ChildClass.__super__ = SuperClass.prototype; + + return ChildClass; + }; + + function getMethods (theClass) { + var proto = theClass.prototype; + + var methods = []; + + for (var methodName in proto) { + var m = proto[methodName]; + + if (typeof m !== 'function') { + continue; + } + + if (methodName === 'constructor') { + continue; + } + + methods.push(methodName); + } + + return methods; + } + + Utils.Decorate = function (SuperClass, DecoratorClass) { + var decoratedMethods = getMethods(DecoratorClass); + var superMethods = getMethods(SuperClass); + + function DecoratedClass () { + var unshift = Array.prototype.unshift; + + var argCount = DecoratorClass.prototype.constructor.length; + + var calledConstructor = SuperClass.prototype.constructor; + + if (argCount > 0) { + unshift.call(arguments, SuperClass.prototype.constructor); + + calledConstructor = DecoratorClass.prototype.constructor; + } + + calledConstructor.apply(this, arguments); + } + + DecoratorClass.displayName = SuperClass.displayName; + + function ctr () { + this.constructor = DecoratedClass; + } + + DecoratedClass.prototype = new ctr(); + + for (var m = 0; m < superMethods.length; m++) { + var superMethod = superMethods[m]; + + DecoratedClass.prototype[superMethod] = + SuperClass.prototype[superMethod]; + } + + var calledMethod = function (methodName) { + // Stub out the original method if it's not decorating an actual method + var originalMethod = function () {}; + + if (methodName in DecoratedClass.prototype) { + originalMethod = DecoratedClass.prototype[methodName]; + } + + var decoratedMethod = DecoratorClass.prototype[methodName]; + + return function () { + var unshift = Array.prototype.unshift; + + unshift.call(arguments, originalMethod); + + return decoratedMethod.apply(this, arguments); + }; + }; + + for (var d = 0; d < decoratedMethods.length; d++) { + var decoratedMethod = decoratedMethods[d]; + + DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); + } + + return DecoratedClass; + }; + + var Observable = function () { + this.listeners = {}; + }; + + Observable.prototype.on = function (event, callback) { + this.listeners = this.listeners || {}; + + if (event in this.listeners) { + this.listeners[event].push(callback); + } else { + this.listeners[event] = [callback]; + } + }; + + Observable.prototype.trigger = function (event) { + var slice = Array.prototype.slice; + var params = slice.call(arguments, 1); + + this.listeners = this.listeners || {}; + + // Params should always come in as an array + if (params == null) { + params = []; + } + + // If there are no arguments to the event, use a temporary object + if (params.length === 0) { + params.push({}); + } + + // Set the `_type` of the first object to the event + params[0]._type = event; + + if (event in this.listeners) { + this.invoke(this.listeners[event], slice.call(arguments, 1)); + } + + if ('*' in this.listeners) { + this.invoke(this.listeners['*'], arguments); + } + }; + + Observable.prototype.invoke = function (listeners, params) { + for (var i = 0, len = listeners.length; i < len; i++) { + listeners[i].apply(this, params); + } + }; + + Utils.Observable = Observable; + + Utils.generateChars = function (length) { + var chars = ''; + + for (var i = 0; i < length; i++) { + var randomChar = Math.floor(Math.random() * 36); + chars += randomChar.toString(36); + } + + return chars; + }; + + Utils.bind = function (func, context) { + return function () { + func.apply(context, arguments); + }; + }; + + Utils._convertData = function (data) { + for (var originalKey in data) { + var keys = originalKey.split('-'); + + var dataLevel = data; + + if (keys.length === 1) { + continue; + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k]; + + // Lowercase the first letter + // By default, dash-separated becomes camelCase + key = key.substring(0, 1).toLowerCase() + key.substring(1); + + if (!(key in dataLevel)) { + dataLevel[key] = {}; + } + + if (k == keys.length - 1) { + dataLevel[key] = data[originalKey]; + } + + dataLevel = dataLevel[key]; + } + + delete data[originalKey]; + } + + return data; + }; + + Utils.hasScroll = function (index, el) { + // Adapted from the function created by @ShadowScripter + // and adapted by @BillBarry on the Stack Exchange Code Review website. + // The original code can be found at + // http://codereview.stackexchange.com/q/13338 + // and was designed to be used with the Sizzle selector engine. + + var $el = $(el); + var overflowX = el.style.overflowX; + var overflowY = el.style.overflowY; + + //Check both x and y declarations + if (overflowX === overflowY && + (overflowY === 'hidden' || overflowY === 'visible')) { + return false; + } + + if (overflowX === 'scroll' || overflowY === 'scroll') { + return true; + } + + return ($el.innerHeight() < el.scrollHeight || + $el.innerWidth() < el.scrollWidth); + }; + + Utils.escapeMarkup = function (markup) { + var replaceMap = { + '\\': '\', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + '\'': ''', + '/': '/' + }; + + // Do not try to escape the markup if it's not a string + if (typeof markup !== 'string') { + return markup; + } + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replaceMap[match]; + }); + }; + + // Append an array of jQuery nodes to a given element. + Utils.appendMany = function ($element, $nodes) { + // jQuery 1.7.x does not support $.fn.append() with an array + // Fall back to a jQuery object collection using $.fn.add() + if ($.fn.jquery.substr(0, 3) === '1.7') { + var $jqNodes = $(); + + $.map($nodes, function (node) { + $jqNodes = $jqNodes.add(node); + }); + + $nodes = $jqNodes; + } + + $element.append($nodes); + }; + + // Determine whether the browser is on a touchscreen device. + Utils.isTouchscreen = function() { + if ('undefined' === typeof Utils._isTouchscreenCache) { + Utils._isTouchscreenCache = 'ontouchstart' in document.documentElement; + } + return Utils._isTouchscreenCache; + } + + return Utils; +}); + +S2.define('select2/results',[ + 'jquery', + './utils' +], function ($, Utils) { + function Results ($element, options, dataAdapter) { + this.$element = $element; + this.data = dataAdapter; + this.options = options; + + Results.__super__.constructor.call(this); + } + + Utils.Extend(Results, Utils.Observable); + + Results.prototype.render = function () { + var $results = $( + '

    ' + ); + + if (this.options.get('multiple')) { + $results.attr('aria-multiselectable', 'true'); + } + + this.$results = $results; + + return $results; + }; + + Results.prototype.clear = function () { + this.$results.empty(); + }; + + Results.prototype.displayMessage = function (params) { + var escapeMarkup = this.options.get('escapeMarkup'); + + this.clear(); + this.hideLoading(); + + var $message = $( + '' + ); + + var message = this.options.get('translations').get(params.message); + + $message.append( + escapeMarkup( + message(params.args) + ) + ); + + $message[0].className += ' select2-results__message'; + + this.$results.append($message); + }; + + Results.prototype.hideMessages = function () { + this.$results.find('.select2-results__message').remove(); + }; + + Results.prototype.append = function (data) { + this.hideLoading(); + + var $options = []; + + if (data.results == null || data.results.length === 0) { + if (this.$results.children().length === 0) { + this.trigger('results:message', { + message: 'noResults' + }); + } + + return; + } + + data.results = this.sort(data.results); + + for (var d = 0; d < data.results.length; d++) { + var item = data.results[d]; + + var $option = this.option(item); + + $options.push($option); + } + + this.$results.append($options); + }; + + Results.prototype.position = function ($results, $dropdown) { + var $resultsContainer = $dropdown.find('.select2-results'); + $resultsContainer.append($results); + }; + + Results.prototype.sort = function (data) { + var sorter = this.options.get('sorter'); + + return sorter(data); + }; + + Results.prototype.highlightFirstItem = function () { + var $options = this.$results + .find('.select2-results__option[data-selected]'); + + var $selected = $options.filter('[data-selected=true]'); + + // Check if there are any selected options + if ($selected.length > 0) { + // If there are selected options, highlight the first + $selected.first().trigger('mouseenter'); + } else { + // If there are no selected options, highlight the first option + // in the dropdown + $options.first().trigger('mouseenter'); + } + + this.ensureHighlightVisible(); + }; + + Results.prototype.setClasses = function () { + var self = this; + + this.data.current(function (selected) { + var selectedIds = $.map(selected, function (s) { + return s.id.toString(); + }); + + var $options = self.$results + .find('.select2-results__option[data-selected]'); + + $options.each(function () { + var $option = $(this); + + var item = $.data(this, 'data'); + + // id needs to be converted to a string when comparing + var id = '' + item.id; + + if ((item.element != null && item.element.selected) || + (item.element == null && $.inArray(id, selectedIds) > -1)) { + $option.attr('data-selected', 'true'); + } else { + $option.attr('data-selected', 'false'); + } + }); + + }); + }; + + Results.prototype.showLoading = function (params) { + this.hideLoading(); + + var loadingMore = this.options.get('translations').get('searching'); + + var loading = { + disabled: true, + loading: true, + text: loadingMore(params) + }; + var $loading = this.option(loading); + $loading.className += ' loading-results'; + + this.$results.prepend($loading); + }; + + Results.prototype.hideLoading = function () { + this.$results.find('.loading-results').remove(); + }; + + Results.prototype.option = function (data) { + var option = document.createElement('li'); + option.className = 'select2-results__option'; + + var attrs = { + 'role': 'option', + 'data-selected': 'false', + 'tabindex': -1 + }; + + if (data.disabled) { + delete attrs['data-selected']; + attrs['aria-disabled'] = 'true'; + } + + if (data.id == null) { + delete attrs['data-selected']; + } + + if (data._resultId != null) { + option.id = data._resultId; + } + + if (data.title) { + option.title = data.title; + } + + if (data.children) { + attrs['aria-label'] = data.text; + delete attrs['data-selected']; + } + + for (var attr in attrs) { + var val = attrs[attr]; + + option.setAttribute(attr, val); + } + + if (data.children) { + var $option = $(option); + + var label = document.createElement('strong'); + label.className = 'select2-results__group'; + + var $label = $(label); + this.template(data, label); + $label.attr('role', 'presentation'); + + var $children = []; + + for (var c = 0; c < data.children.length; c++) { + var child = data.children[c]; + + var $child = this.option(child); + + $children.push($child); + } + + var $childrenContainer = $('
      ', { + 'class': 'select2-results__options select2-results__options--nested', + 'role': 'listbox' + }); + $childrenContainer.append($children); + $option.attr('role', 'list'); + + $option.append(label); + $option.append($childrenContainer); + } else { + this.template(data, option); + } + + $.data(option, 'data', data); + + return option; + }; + + Results.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-results'; + + this.$results.attr('id', id); + + container.on('results:all', function (params) { + self.clear(); + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + self.highlightFirstItem(); + } + }); + + container.on('results:append', function (params) { + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + } + }); + + container.on('query', function (params) { + self.hideMessages(); + self.showLoading(params); + }); + + container.on('select', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('unselect', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expended="true" + self.$results.attr('aria-expanded', 'true'); + self.$results.attr('aria-hidden', 'false'); + + self.setClasses(); + self.ensureHighlightVisible(); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expended="false" + self.$results.attr('aria-expanded', 'false'); + self.$results.attr('aria-hidden', 'true'); + self.$results.removeAttr('aria-activedescendant'); + }); + + container.on('results:toggle', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + $highlighted.trigger('mouseup'); + }); + + container.on('results:select', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var data = $highlighted.data('data'); + + if ($highlighted.attr('data-selected') == 'true') { + self.trigger('close', {}); + } else { + self.trigger('select', { + data: data + }); + } + }); + + container.on('results:previous', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[data-selected]'); + + var currentIndex = $options.index($highlighted); + + // If we are already at te top, don't move further + if (currentIndex === 0) { + return; + } + + var nextIndex = currentIndex - 1; + + // If none are highlighted, highlight the first + if ($highlighted.length === 0) { + nextIndex = 0; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top; + var nextTop = $next.offset().top; + var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextTop - currentOffset < 0) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:next', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[data-selected]'); + + var currentIndex = $options.index($highlighted); + + var nextIndex = currentIndex + 1; + + // If we are at the last option, stay there + if (nextIndex >= $options.length) { + return; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var nextBottom = $next.offset().top + $next.outerHeight(false); + var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextBottom > currentOffset) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:focus', function (params) { + params.element.addClass('select2-results__option--highlighted').attr('aria-selected', 'true'); + self.$results.attr('aria-activedescendant', params.element.attr('id')); + }); + + container.on('results:message', function (params) { + self.displayMessage(params); + }); + + if ($.fn.mousewheel) { + this.$results.on('mousewheel', function (e) { + var top = self.$results.scrollTop(); + + var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; + + var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; + var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); + + if (isAtTop) { + self.$results.scrollTop(0); + + e.preventDefault(); + e.stopPropagation(); + } else if (isAtBottom) { + self.$results.scrollTop( + self.$results.get(0).scrollHeight - self.$results.height() + ); + + e.preventDefault(); + e.stopPropagation(); + } + }); + } + + this.$results.on('mouseup', '.select2-results__option[data-selected]', + function (evt) { + var $this = $(this); + + var data = $this.data('data'); + + if ($this.attr('data-selected') === 'true') { + if (self.options.get('multiple')) { + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } else { + self.trigger('close', {}); + } + + return; + } + + self.trigger('select', { + originalEvent: evt, + data: data + }); + }); + + this.$results.on('mouseenter', '.select2-results__option[data-selected]', + function (evt) { + var data = $(this).data('data'); + + self.getHighlightedResults() + .removeClass('select2-results__option--highlighted') + .attr('aria-selected', 'false'); + + self.trigger('results:focus', { + data: data, + element: $(this) + }); + }); + }; + + Results.prototype.getHighlightedResults = function () { + var $highlighted = this.$results + .find('.select2-results__option--highlighted'); + + return $highlighted; + }; + + Results.prototype.destroy = function () { + this.$results.remove(); + }; + + Results.prototype.ensureHighlightVisible = function () { + var $highlighted = this.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var $options = this.$results.find('[data-selected]'); + + var currentIndex = $options.index($highlighted); + + var currentOffset = this.$results.offset().top; + var nextTop = $highlighted.offset().top; + var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); + + var offsetDelta = nextTop - currentOffset; + nextOffset -= $highlighted.outerHeight(false) * 2; + + if (currentIndex <= 2) { + this.$results.scrollTop(0); + } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { + this.$results.scrollTop(nextOffset); + } + }; + + Results.prototype.template = function (result, container) { + var template = this.options.get('templateResult'); + var escapeMarkup = this.options.get('escapeMarkup'); + + var content = template(result, container); + + if (content == null) { + container.style.display = 'none'; + } else if (typeof content === 'string') { + container.innerHTML = escapeMarkup(content); + } else { + $(container).append(content); + } + }; + + return Results; +}); + +S2.define('select2/keys',[ + +], function () { + var KEYS = { + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + DELETE: 46 + }; + + return KEYS; +}); + +S2.define('select2/selection/base',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function BaseSelection ($element, options) { + this.$element = $element; + this.options = options; + + BaseSelection.__super__.constructor.call(this); + } + + Utils.Extend(BaseSelection, Utils.Observable); + + BaseSelection.prototype.render = function () { + var $selection = $( + '' + ); + + this._tabindex = 0; + + if (this.$element.data('old-tabindex') != null) { + this._tabindex = this.$element.data('old-tabindex'); + } else if (this.$element.attr('tabindex') != null) { + this._tabindex = this.$element.attr('tabindex'); + } + + $selection.attr('title', this.$element.attr('title')); + $selection.attr('tabindex', this._tabindex); + + this.$selection = $selection; + + return $selection; + }; + + BaseSelection.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-container'; + var resultsId = container.id + '-results'; + var searchHidden = this.options.get('minimumResultsForSearch') === Infinity; + + this.container = container; + + this.$selection.on('focus', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('blur', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', function (evt) { + self.trigger('keypress', evt); + + if (evt.which === KEYS.SPACE) { + evt.preventDefault(); + } + }); + + container.on('results:focus', function (params) { + self.$selection.attr('aria-activedescendant', params.data._resultId); + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expanded="true" + self.$selection.attr('aria-expanded', 'true'); + self.$selection.attr('aria-owns', resultsId); + + self._attachCloseHandler(container); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expanded="false" + self.$selection.attr('aria-expanded', 'false'); + self.$selection.removeAttr('aria-activedescendant'); + self.$selection.removeAttr('aria-owns'); + + // This needs to be delayed as the active element is the body when the + // key is pressed. + window.setTimeout(function () { + self.$selection.focus(); + }, 1); + + self._detachCloseHandler(container); + }); + + container.on('enable', function () { + self.$selection.attr('tabindex', self._tabindex); + }); + + container.on('disable', function () { + self.$selection.attr('tabindex', '-1'); + }); + }; + + BaseSelection.prototype._handleBlur = function (evt) { + var self = this; + + // This needs to be delayed as the active element is the body when the tab + // key is pressed, possibly along with others. + window.setTimeout(function () { + // Don't trigger `blur` if the focus is still in the selection + if ( + (document.activeElement == self.$selection[0]) || + ($.contains(self.$selection[0], document.activeElement)) + ) { + return; + } + + self.trigger('blur', evt); + }, 1); + }; + + BaseSelection.prototype._attachCloseHandler = function (container) { + var self = this; + + $(document.body).on('mousedown.select2.' + container.id, function (e) { + var $target = $(e.target); + + var $select = $target.closest('.select2'); + + var $all = $('.select2.select2-container--open'); + + $all.each(function () { + var $this = $(this); + + if (this == $select[0]) { + return; + } + + var $element = $this.data('element'); + + $element.select2('close'); + }); + }); + }; + + BaseSelection.prototype._detachCloseHandler = function (container) { + $(document.body).off('mousedown.select2.' + container.id); + }; + + BaseSelection.prototype.position = function ($selection, $container) { + var $selectionContainer = $container.find('.selection'); + $selectionContainer.append($selection); + }; + + BaseSelection.prototype.destroy = function () { + this._detachCloseHandler(this.container); + }; + + BaseSelection.prototype.update = function (data) { + throw new Error('The `update` method must be defined in child classes.'); + }; + + return BaseSelection; +}); + +S2.define('select2/selection/single',[ + 'jquery', + './base', + '../utils', + '../keys' +], function ($, BaseSelection, Utils, KEYS) { + function SingleSelection () { + SingleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(SingleSelection, BaseSelection); + + SingleSelection.prototype.render = function () { + var $selection = SingleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--single'); + + $selection.html( + '' + + '' + + '' + + '' + ); + + return $selection; + }; + + SingleSelection.prototype.bind = function (container, $container) { + var self = this; + + SingleSelection.__super__.bind.apply(this, arguments); + + var id = container.id + '-container'; + + this.$selection.find('.select2-selection__rendered') + .attr('id', id) + .attr('role', 'textbox') + .attr('aria-readonly', 'true'); + this.$selection.attr('aria-labelledby', id); + + // This makes single non-search selects work in screen readers. If it causes problems elsewhere, remove. + this.$selection.attr('role', 'combobox'); + + this.$selection.on('mousedown', function (evt) { + // Only respond to left clicks + if (evt.which !== 1) { + return; + } + + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on('focus', function (evt) { + // User focuses on the container + }); + + this.$selection.on('keydown', function (evt) { + // If user starts typing an alphanumeric key on the keyboard, open if not opened. + if (!container.isOpen() && evt.which >= 48 && evt.which <= 90) { + container.open(); + } + }); + + this.$selection.on('blur', function (evt) { + // User exits the container + }); + + container.on('focus', function (evt) { + if (!container.isOpen()) { + self.$selection.focus(); + } + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + }; + + SingleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + SingleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + SingleSelection.prototype.selectionContainer = function () { + return $(''); + }; + + SingleSelection.prototype.update = function (data) { + if (data.length === 0) { + this.clear(); + return; + } + + var selection = data[0]; + + var $rendered = this.$selection.find('.select2-selection__rendered'); + var formatted = this.display(selection, $rendered); + + $rendered.empty().append(formatted); + $rendered.prop('title', selection.title || selection.text); + }; + + return SingleSelection; +}); + +S2.define('select2/selection/multiple',[ + 'jquery', + './base', + '../utils' +], function ($, BaseSelection, Utils) { + function MultipleSelection ($element, options) { + MultipleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(MultipleSelection, BaseSelection); + + MultipleSelection.prototype.render = function () { + var $selection = MultipleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--multiple'); + + $selection.html( + '
        ' + ); + + return $selection; + }; + + MultipleSelection.prototype.bind = function (container, $container) { + var self = this; + + MultipleSelection.__super__.bind.apply(this, arguments); + + this.$selection.on('click', function (evt) { + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on( + 'click', + '.select2-selection__choice__remove', + function (evt) { + // Ignore the event if it is disabled + if (self.options.get('disabled')) { + return; + } + + var $remove = $(this); + var $selection = $remove.parent(); + + var data = $selection.data('data'); + + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } + ); + }; + + MultipleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + MultipleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + MultipleSelection.prototype.selectionContainer = function () { + var $container = $( + '
      • ' + + '' + + '
      • ' + ); + + return $container; + }; + + MultipleSelection.prototype.update = function (data) { + var self = this; + this.clear(); + + if (data.length === 0) { + return; + } + + var $selections = []; + + for (var d = 0; d < data.length; d++) { + var selection = data[d]; + + var $selection = this.selectionContainer(); + var formatted = this.display(selection, $selection).trim(); + + $selection.append(formatted); + $selection.prop('title', selection.title || selection.text); + + $selection.data('data', selection); + + $selections.push($selection); + } + + var $rendered = this.$selection.find('.select2-selection__rendered'); + + Utils.appendMany($rendered, $selections); + + // Return cursor to search field after updating. + // Needs 1 ms delay because of other 1 ms setTimeouts when rendering. + if ('undefined' !== typeof this.$search) { + setTimeout(function(){ + self.$search.focus(); + }, 1); + } + }; + + return MultipleSelection; +}); + +S2.define('select2/selection/placeholder',[ + '../utils' +], function (Utils) { + function Placeholder (decorated, $element, options) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options); + } + + Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { + var $placeholder = this.selectionContainer(); + + $placeholder.html(this.display(placeholder)); + $placeholder.addClass('select2-selection__placeholder') + .removeClass('select2-selection__choice'); + + return $placeholder; + }; + + Placeholder.prototype.update = function (decorated, data) { + var singlePlaceholder = ( + data.length == 1 && data[0].id != this.placeholder.id + ); + var multipleSelections = data.length > 1; + + if (multipleSelections || singlePlaceholder) { + return decorated.call(this, data); + } + + this.clear(); + + var $placeholder = this.createPlaceholder(this.placeholder); + + this.$selection.find('.select2-selection__rendered').append($placeholder); + }; + + return Placeholder; +}); + +S2.define('select2/selection/allowClear',[ + 'jquery', + '../keys' +], function ($, KEYS) { + function AllowClear () { } + + AllowClear.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + if (this.placeholder == null) { + if (this.options.get('debug') && window.console && console.error) { + console.error( + 'Select2: The `allowClear` option should be used in combination ' + + 'with the `placeholder` option.' + ); + } + } + + this.$selection.on('mousedown', '.select2-selection__clear', + function (evt) { + self._handleClear(evt); + }); + + container.on('keypress', function (evt) { + self._handleKeyboardClear(evt, container); + }); + }; + + AllowClear.prototype._handleClear = function (_, evt) { + // Ignore the event if it is disabled + if (this.options.get('disabled')) { + return; + } + + var $clear = this.$selection.find('.select2-selection__clear'); + + // Ignore the event if nothing has been selected + if ($clear.length === 0) { + return; + } + + evt.stopPropagation(); + + var data = $clear.data('data'); + + for (var d = 0; d < data.length; d++) { + var unselectData = { + data: data[d] + }; + + // Trigger the `unselect` event, so people can prevent it from being + // cleared. + this.trigger('unselect', unselectData); + + // If the event was prevented, don't clear it out. + if (unselectData.prevented) { + return; + } + } + + this.$element.val(this.placeholder.id).trigger('change'); + + this.trigger('toggle', {}); + }; + + AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { + if (container.isOpen()) { + return; + } + + if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { + this._handleClear(evt); + } + }; + + AllowClear.prototype.update = function (decorated, data) { + decorated.call(this, data); + + if (this.$selection.find('.select2-selection__placeholder').length > 0 || + data.length === 0) { + return; + } + + var $remove = $( + '' + + '×' + + '' + ); + $remove.data('data', data); + + this.$selection.find('.select2-selection__rendered').prepend($remove); + }; + + return AllowClear; +}); + +S2.define('select2/selection/search',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function Search (decorated, $element, options) { + decorated.call(this, $element, options); + } + + Search.prototype.render = function (decorated) { + var $search = $( + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + var $rendered = decorated.call(this); + + this._transferTabIndex(); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + container.on('open', function () { + self.$search.attr('aria-owns', resultsId); + self.$search.trigger('focus'); + }); + + container.on('close', function () { + self.$search.val(''); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.trigger('focus'); + }); + + container.on('enable', function () { + self.$search.prop('disabled', false); + + self._transferTabIndex(); + }); + + container.on('disable', function () { + self.$search.prop('disabled', true); + }); + + container.on('focus', function (evt) { + self.$search.trigger('focus'); + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + + this.$selection.on('focusin', '.select2-search--inline', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('focusout', '.select2-search--inline', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', '.select2-search--inline', function (evt) { + evt.stopPropagation(); + + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + + var key = evt.which; + + if (key === KEYS.BACKSPACE && self.$search.val() === '') { + var $previousChoice = self.$searchContainer + .prev('.select2-selection__choice'); + + if ($previousChoice.length > 0) { + var item = $previousChoice.data('data'); + + self.searchRemoveChoice(item); + + evt.preventDefault(); + } + } + }); + + // Try to detect the IE version should the `documentMode` property that + // is stored on the document. This is only implemented in IE and is + // slightly cleaner than doing a user agent check. + // This property is not available in Edge, but Edge also doesn't have + // this bug. + var msie = document.documentMode; + var disableInputEvents = msie && msie <= 11; + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$selection.on( + 'input.searchcheck', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents) { + self.$selection.off('input.search input.searchcheck'); + return; + } + + // Unbind the duplicated `keyup` event + self.$selection.off('keyup.search'); + } + ); + + this.$selection.on( + 'keyup.search input.search', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents && evt.type === 'input') { + self.$selection.off('input.search input.searchcheck'); + return; + } + + var key = evt.which; + + // We can freely ignore events from modifier keys + if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { + return; + } + + // Tabbing will be handled during the `keydown` phase + if (key == KEYS.TAB) { + return; + } + + self.handleSearch(evt); + } + ); + }; + + /** + * This method will transfer the tabindex attribute from the rendered + * selection to the search box. This allows for the search box to be used as + * the primary focus instead of the selection container. + * + * @private + */ + Search.prototype._transferTabIndex = function (decorated) { + this.$search.attr('tabindex', this.$selection.attr('tabindex')); + this.$selection.attr('tabindex', '-1'); + }; + + Search.prototype.createPlaceholder = function (decorated, placeholder) { + this.$search.attr('placeholder', placeholder.text); + }; + + Search.prototype.update = function (decorated, data) { + var searchHadFocus = this.$search[0] == document.activeElement; + + this.$search.attr('placeholder', ''); + + decorated.call(this, data); + + this.$selection.find('.select2-selection__rendered') + .append(this.$searchContainer); + + this.resizeSearch(); + if (searchHadFocus) { + this.$search.focus(); + } + }; + + Search.prototype.handleSearch = function () { + this.resizeSearch(); + + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.searchRemoveChoice = function (decorated, item) { + this.trigger('unselect', { + data: item + }); + + this.$search.val(item.text); + this.handleSearch(); + }; + + Search.prototype.resizeSearch = function () { + this.$search.css('width', '25px'); + + var width = ''; + + if (this.$search.attr('placeholder') !== '') { + width = this.$selection.find('.select2-selection__rendered').innerWidth(); + } else { + var minimumWidth = this.$search.val().length + 1; + + width = (minimumWidth * 0.75) + 'em'; + } + + this.$search.css('width', width); + }; + + return Search; +}); + +S2.define('select2/selection/eventRelay',[ + 'jquery' +], function ($) { + function EventRelay () { } + + EventRelay.prototype.bind = function (decorated, container, $container) { + var self = this; + var relayEvents = [ + 'open', 'opening', + 'close', 'closing', + 'select', 'selecting', + 'unselect', 'unselecting' + ]; + + var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; + + decorated.call(this, container, $container); + + container.on('*', function (name, params) { + // Ignore events that should not be relayed + if ($.inArray(name, relayEvents) === -1) { + return; + } + + // The parameters should always be an object + params = params || {}; + + // Generate the jQuery event for the Select2 event + var evt = $.Event('select2:' + name, { + params: params + }); + + self.$element.trigger(evt); + + // Only handle preventable events if it was one + if ($.inArray(name, preventableEvents) === -1) { + return; + } + + params.prevented = evt.isDefaultPrevented(); + }); + }; + + return EventRelay; +}); + +S2.define('select2/translation',[ + 'jquery', + 'require' +], function ($, require) { + function Translation (dict) { + this.dict = dict || {}; + } + + Translation.prototype.all = function () { + return this.dict; + }; + + Translation.prototype.get = function (key) { + return this.dict[key]; + }; + + Translation.prototype.extend = function (translation) { + this.dict = $.extend({}, translation.all(), this.dict); + }; + + // Static functions + + Translation._cache = {}; + + Translation.loadPath = function (path) { + if (!(path in Translation._cache)) { + var translations = require(path); + + Translation._cache[path] = translations; + } + + return new Translation(Translation._cache[path]); + }; + + return Translation; +}); + +S2.define('select2/diacritics',[ + +], function () { + var diacritics = { + '\u24B6': 'A', + '\uFF21': 'A', + '\u00C0': 'A', + '\u00C1': 'A', + '\u00C2': 'A', + '\u1EA6': 'A', + '\u1EA4': 'A', + '\u1EAA': 'A', + '\u1EA8': 'A', + '\u00C3': 'A', + '\u0100': 'A', + '\u0102': 'A', + '\u1EB0': 'A', + '\u1EAE': 'A', + '\u1EB4': 'A', + '\u1EB2': 'A', + '\u0226': 'A', + '\u01E0': 'A', + '\u00C4': 'A', + '\u01DE': 'A', + '\u1EA2': 'A', + '\u00C5': 'A', + '\u01FA': 'A', + '\u01CD': 'A', + '\u0200': 'A', + '\u0202': 'A', + '\u1EA0': 'A', + '\u1EAC': 'A', + '\u1EB6': 'A', + '\u1E00': 'A', + '\u0104': 'A', + '\u023A': 'A', + '\u2C6F': 'A', + '\uA732': 'AA', + '\u00C6': 'AE', + '\u01FC': 'AE', + '\u01E2': 'AE', + '\uA734': 'AO', + '\uA736': 'AU', + '\uA738': 'AV', + '\uA73A': 'AV', + '\uA73C': 'AY', + '\u24B7': 'B', + '\uFF22': 'B', + '\u1E02': 'B', + '\u1E04': 'B', + '\u1E06': 'B', + '\u0243': 'B', + '\u0182': 'B', + '\u0181': 'B', + '\u24B8': 'C', + '\uFF23': 'C', + '\u0106': 'C', + '\u0108': 'C', + '\u010A': 'C', + '\u010C': 'C', + '\u00C7': 'C', + '\u1E08': 'C', + '\u0187': 'C', + '\u023B': 'C', + '\uA73E': 'C', + '\u24B9': 'D', + '\uFF24': 'D', + '\u1E0A': 'D', + '\u010E': 'D', + '\u1E0C': 'D', + '\u1E10': 'D', + '\u1E12': 'D', + '\u1E0E': 'D', + '\u0110': 'D', + '\u018B': 'D', + '\u018A': 'D', + '\u0189': 'D', + '\uA779': 'D', + '\u01F1': 'DZ', + '\u01C4': 'DZ', + '\u01F2': 'Dz', + '\u01C5': 'Dz', + '\u24BA': 'E', + '\uFF25': 'E', + '\u00C8': 'E', + '\u00C9': 'E', + '\u00CA': 'E', + '\u1EC0': 'E', + '\u1EBE': 'E', + '\u1EC4': 'E', + '\u1EC2': 'E', + '\u1EBC': 'E', + '\u0112': 'E', + '\u1E14': 'E', + '\u1E16': 'E', + '\u0114': 'E', + '\u0116': 'E', + '\u00CB': 'E', + '\u1EBA': 'E', + '\u011A': 'E', + '\u0204': 'E', + '\u0206': 'E', + '\u1EB8': 'E', + '\u1EC6': 'E', + '\u0228': 'E', + '\u1E1C': 'E', + '\u0118': 'E', + '\u1E18': 'E', + '\u1E1A': 'E', + '\u0190': 'E', + '\u018E': 'E', + '\u24BB': 'F', + '\uFF26': 'F', + '\u1E1E': 'F', + '\u0191': 'F', + '\uA77B': 'F', + '\u24BC': 'G', + '\uFF27': 'G', + '\u01F4': 'G', + '\u011C': 'G', + '\u1E20': 'G', + '\u011E': 'G', + '\u0120': 'G', + '\u01E6': 'G', + '\u0122': 'G', + '\u01E4': 'G', + '\u0193': 'G', + '\uA7A0': 'G', + '\uA77D': 'G', + '\uA77E': 'G', + '\u24BD': 'H', + '\uFF28': 'H', + '\u0124': 'H', + '\u1E22': 'H', + '\u1E26': 'H', + '\u021E': 'H', + '\u1E24': 'H', + '\u1E28': 'H', + '\u1E2A': 'H', + '\u0126': 'H', + '\u2C67': 'H', + '\u2C75': 'H', + '\uA78D': 'H', + '\u24BE': 'I', + '\uFF29': 'I', + '\u00CC': 'I', + '\u00CD': 'I', + '\u00CE': 'I', + '\u0128': 'I', + '\u012A': 'I', + '\u012C': 'I', + '\u0130': 'I', + '\u00CF': 'I', + '\u1E2E': 'I', + '\u1EC8': 'I', + '\u01CF': 'I', + '\u0208': 'I', + '\u020A': 'I', + '\u1ECA': 'I', + '\u012E': 'I', + '\u1E2C': 'I', + '\u0197': 'I', + '\u24BF': 'J', + '\uFF2A': 'J', + '\u0134': 'J', + '\u0248': 'J', + '\u24C0': 'K', + '\uFF2B': 'K', + '\u1E30': 'K', + '\u01E8': 'K', + '\u1E32': 'K', + '\u0136': 'K', + '\u1E34': 'K', + '\u0198': 'K', + '\u2C69': 'K', + '\uA740': 'K', + '\uA742': 'K', + '\uA744': 'K', + '\uA7A2': 'K', + '\u24C1': 'L', + '\uFF2C': 'L', + '\u013F': 'L', + '\u0139': 'L', + '\u013D': 'L', + '\u1E36': 'L', + '\u1E38': 'L', + '\u013B': 'L', + '\u1E3C': 'L', + '\u1E3A': 'L', + '\u0141': 'L', + '\u023D': 'L', + '\u2C62': 'L', + '\u2C60': 'L', + '\uA748': 'L', + '\uA746': 'L', + '\uA780': 'L', + '\u01C7': 'LJ', + '\u01C8': 'Lj', + '\u24C2': 'M', + '\uFF2D': 'M', + '\u1E3E': 'M', + '\u1E40': 'M', + '\u1E42': 'M', + '\u2C6E': 'M', + '\u019C': 'M', + '\u24C3': 'N', + '\uFF2E': 'N', + '\u01F8': 'N', + '\u0143': 'N', + '\u00D1': 'N', + '\u1E44': 'N', + '\u0147': 'N', + '\u1E46': 'N', + '\u0145': 'N', + '\u1E4A': 'N', + '\u1E48': 'N', + '\u0220': 'N', + '\u019D': 'N', + '\uA790': 'N', + '\uA7A4': 'N', + '\u01CA': 'NJ', + '\u01CB': 'Nj', + '\u24C4': 'O', + '\uFF2F': 'O', + '\u00D2': 'O', + '\u00D3': 'O', + '\u00D4': 'O', + '\u1ED2': 'O', + '\u1ED0': 'O', + '\u1ED6': 'O', + '\u1ED4': 'O', + '\u00D5': 'O', + '\u1E4C': 'O', + '\u022C': 'O', + '\u1E4E': 'O', + '\u014C': 'O', + '\u1E50': 'O', + '\u1E52': 'O', + '\u014E': 'O', + '\u022E': 'O', + '\u0230': 'O', + '\u00D6': 'O', + '\u022A': 'O', + '\u1ECE': 'O', + '\u0150': 'O', + '\u01D1': 'O', + '\u020C': 'O', + '\u020E': 'O', + '\u01A0': 'O', + '\u1EDC': 'O', + '\u1EDA': 'O', + '\u1EE0': 'O', + '\u1EDE': 'O', + '\u1EE2': 'O', + '\u1ECC': 'O', + '\u1ED8': 'O', + '\u01EA': 'O', + '\u01EC': 'O', + '\u00D8': 'O', + '\u01FE': 'O', + '\u0186': 'O', + '\u019F': 'O', + '\uA74A': 'O', + '\uA74C': 'O', + '\u01A2': 'OI', + '\uA74E': 'OO', + '\u0222': 'OU', + '\u24C5': 'P', + '\uFF30': 'P', + '\u1E54': 'P', + '\u1E56': 'P', + '\u01A4': 'P', + '\u2C63': 'P', + '\uA750': 'P', + '\uA752': 'P', + '\uA754': 'P', + '\u24C6': 'Q', + '\uFF31': 'Q', + '\uA756': 'Q', + '\uA758': 'Q', + '\u024A': 'Q', + '\u24C7': 'R', + '\uFF32': 'R', + '\u0154': 'R', + '\u1E58': 'R', + '\u0158': 'R', + '\u0210': 'R', + '\u0212': 'R', + '\u1E5A': 'R', + '\u1E5C': 'R', + '\u0156': 'R', + '\u1E5E': 'R', + '\u024C': 'R', + '\u2C64': 'R', + '\uA75A': 'R', + '\uA7A6': 'R', + '\uA782': 'R', + '\u24C8': 'S', + '\uFF33': 'S', + '\u1E9E': 'S', + '\u015A': 'S', + '\u1E64': 'S', + '\u015C': 'S', + '\u1E60': 'S', + '\u0160': 'S', + '\u1E66': 'S', + '\u1E62': 'S', + '\u1E68': 'S', + '\u0218': 'S', + '\u015E': 'S', + '\u2C7E': 'S', + '\uA7A8': 'S', + '\uA784': 'S', + '\u24C9': 'T', + '\uFF34': 'T', + '\u1E6A': 'T', + '\u0164': 'T', + '\u1E6C': 'T', + '\u021A': 'T', + '\u0162': 'T', + '\u1E70': 'T', + '\u1E6E': 'T', + '\u0166': 'T', + '\u01AC': 'T', + '\u01AE': 'T', + '\u023E': 'T', + '\uA786': 'T', + '\uA728': 'TZ', + '\u24CA': 'U', + '\uFF35': 'U', + '\u00D9': 'U', + '\u00DA': 'U', + '\u00DB': 'U', + '\u0168': 'U', + '\u1E78': 'U', + '\u016A': 'U', + '\u1E7A': 'U', + '\u016C': 'U', + '\u00DC': 'U', + '\u01DB': 'U', + '\u01D7': 'U', + '\u01D5': 'U', + '\u01D9': 'U', + '\u1EE6': 'U', + '\u016E': 'U', + '\u0170': 'U', + '\u01D3': 'U', + '\u0214': 'U', + '\u0216': 'U', + '\u01AF': 'U', + '\u1EEA': 'U', + '\u1EE8': 'U', + '\u1EEE': 'U', + '\u1EEC': 'U', + '\u1EF0': 'U', + '\u1EE4': 'U', + '\u1E72': 'U', + '\u0172': 'U', + '\u1E76': 'U', + '\u1E74': 'U', + '\u0244': 'U', + '\u24CB': 'V', + '\uFF36': 'V', + '\u1E7C': 'V', + '\u1E7E': 'V', + '\u01B2': 'V', + '\uA75E': 'V', + '\u0245': 'V', + '\uA760': 'VY', + '\u24CC': 'W', + '\uFF37': 'W', + '\u1E80': 'W', + '\u1E82': 'W', + '\u0174': 'W', + '\u1E86': 'W', + '\u1E84': 'W', + '\u1E88': 'W', + '\u2C72': 'W', + '\u24CD': 'X', + '\uFF38': 'X', + '\u1E8A': 'X', + '\u1E8C': 'X', + '\u24CE': 'Y', + '\uFF39': 'Y', + '\u1EF2': 'Y', + '\u00DD': 'Y', + '\u0176': 'Y', + '\u1EF8': 'Y', + '\u0232': 'Y', + '\u1E8E': 'Y', + '\u0178': 'Y', + '\u1EF6': 'Y', + '\u1EF4': 'Y', + '\u01B3': 'Y', + '\u024E': 'Y', + '\u1EFE': 'Y', + '\u24CF': 'Z', + '\uFF3A': 'Z', + '\u0179': 'Z', + '\u1E90': 'Z', + '\u017B': 'Z', + '\u017D': 'Z', + '\u1E92': 'Z', + '\u1E94': 'Z', + '\u01B5': 'Z', + '\u0224': 'Z', + '\u2C7F': 'Z', + '\u2C6B': 'Z', + '\uA762': 'Z', + '\u24D0': 'a', + '\uFF41': 'a', + '\u1E9A': 'a', + '\u00E0': 'a', + '\u00E1': 'a', + '\u00E2': 'a', + '\u1EA7': 'a', + '\u1EA5': 'a', + '\u1EAB': 'a', + '\u1EA9': 'a', + '\u00E3': 'a', + '\u0101': 'a', + '\u0103': 'a', + '\u1EB1': 'a', + '\u1EAF': 'a', + '\u1EB5': 'a', + '\u1EB3': 'a', + '\u0227': 'a', + '\u01E1': 'a', + '\u00E4': 'a', + '\u01DF': 'a', + '\u1EA3': 'a', + '\u00E5': 'a', + '\u01FB': 'a', + '\u01CE': 'a', + '\u0201': 'a', + '\u0203': 'a', + '\u1EA1': 'a', + '\u1EAD': 'a', + '\u1EB7': 'a', + '\u1E01': 'a', + '\u0105': 'a', + '\u2C65': 'a', + '\u0250': 'a', + '\uA733': 'aa', + '\u00E6': 'ae', + '\u01FD': 'ae', + '\u01E3': 'ae', + '\uA735': 'ao', + '\uA737': 'au', + '\uA739': 'av', + '\uA73B': 'av', + '\uA73D': 'ay', + '\u24D1': 'b', + '\uFF42': 'b', + '\u1E03': 'b', + '\u1E05': 'b', + '\u1E07': 'b', + '\u0180': 'b', + '\u0183': 'b', + '\u0253': 'b', + '\u24D2': 'c', + '\uFF43': 'c', + '\u0107': 'c', + '\u0109': 'c', + '\u010B': 'c', + '\u010D': 'c', + '\u00E7': 'c', + '\u1E09': 'c', + '\u0188': 'c', + '\u023C': 'c', + '\uA73F': 'c', + '\u2184': 'c', + '\u24D3': 'd', + '\uFF44': 'd', + '\u1E0B': 'd', + '\u010F': 'd', + '\u1E0D': 'd', + '\u1E11': 'd', + '\u1E13': 'd', + '\u1E0F': 'd', + '\u0111': 'd', + '\u018C': 'd', + '\u0256': 'd', + '\u0257': 'd', + '\uA77A': 'd', + '\u01F3': 'dz', + '\u01C6': 'dz', + '\u24D4': 'e', + '\uFF45': 'e', + '\u00E8': 'e', + '\u00E9': 'e', + '\u00EA': 'e', + '\u1EC1': 'e', + '\u1EBF': 'e', + '\u1EC5': 'e', + '\u1EC3': 'e', + '\u1EBD': 'e', + '\u0113': 'e', + '\u1E15': 'e', + '\u1E17': 'e', + '\u0115': 'e', + '\u0117': 'e', + '\u00EB': 'e', + '\u1EBB': 'e', + '\u011B': 'e', + '\u0205': 'e', + '\u0207': 'e', + '\u1EB9': 'e', + '\u1EC7': 'e', + '\u0229': 'e', + '\u1E1D': 'e', + '\u0119': 'e', + '\u1E19': 'e', + '\u1E1B': 'e', + '\u0247': 'e', + '\u025B': 'e', + '\u01DD': 'e', + '\u24D5': 'f', + '\uFF46': 'f', + '\u1E1F': 'f', + '\u0192': 'f', + '\uA77C': 'f', + '\u24D6': 'g', + '\uFF47': 'g', + '\u01F5': 'g', + '\u011D': 'g', + '\u1E21': 'g', + '\u011F': 'g', + '\u0121': 'g', + '\u01E7': 'g', + '\u0123': 'g', + '\u01E5': 'g', + '\u0260': 'g', + '\uA7A1': 'g', + '\u1D79': 'g', + '\uA77F': 'g', + '\u24D7': 'h', + '\uFF48': 'h', + '\u0125': 'h', + '\u1E23': 'h', + '\u1E27': 'h', + '\u021F': 'h', + '\u1E25': 'h', + '\u1E29': 'h', + '\u1E2B': 'h', + '\u1E96': 'h', + '\u0127': 'h', + '\u2C68': 'h', + '\u2C76': 'h', + '\u0265': 'h', + '\u0195': 'hv', + '\u24D8': 'i', + '\uFF49': 'i', + '\u00EC': 'i', + '\u00ED': 'i', + '\u00EE': 'i', + '\u0129': 'i', + '\u012B': 'i', + '\u012D': 'i', + '\u00EF': 'i', + '\u1E2F': 'i', + '\u1EC9': 'i', + '\u01D0': 'i', + '\u0209': 'i', + '\u020B': 'i', + '\u1ECB': 'i', + '\u012F': 'i', + '\u1E2D': 'i', + '\u0268': 'i', + '\u0131': 'i', + '\u24D9': 'j', + '\uFF4A': 'j', + '\u0135': 'j', + '\u01F0': 'j', + '\u0249': 'j', + '\u24DA': 'k', + '\uFF4B': 'k', + '\u1E31': 'k', + '\u01E9': 'k', + '\u1E33': 'k', + '\u0137': 'k', + '\u1E35': 'k', + '\u0199': 'k', + '\u2C6A': 'k', + '\uA741': 'k', + '\uA743': 'k', + '\uA745': 'k', + '\uA7A3': 'k', + '\u24DB': 'l', + '\uFF4C': 'l', + '\u0140': 'l', + '\u013A': 'l', + '\u013E': 'l', + '\u1E37': 'l', + '\u1E39': 'l', + '\u013C': 'l', + '\u1E3D': 'l', + '\u1E3B': 'l', + '\u017F': 'l', + '\u0142': 'l', + '\u019A': 'l', + '\u026B': 'l', + '\u2C61': 'l', + '\uA749': 'l', + '\uA781': 'l', + '\uA747': 'l', + '\u01C9': 'lj', + '\u24DC': 'm', + '\uFF4D': 'm', + '\u1E3F': 'm', + '\u1E41': 'm', + '\u1E43': 'm', + '\u0271': 'm', + '\u026F': 'm', + '\u24DD': 'n', + '\uFF4E': 'n', + '\u01F9': 'n', + '\u0144': 'n', + '\u00F1': 'n', + '\u1E45': 'n', + '\u0148': 'n', + '\u1E47': 'n', + '\u0146': 'n', + '\u1E4B': 'n', + '\u1E49': 'n', + '\u019E': 'n', + '\u0272': 'n', + '\u0149': 'n', + '\uA791': 'n', + '\uA7A5': 'n', + '\u01CC': 'nj', + '\u24DE': 'o', + '\uFF4F': 'o', + '\u00F2': 'o', + '\u00F3': 'o', + '\u00F4': 'o', + '\u1ED3': 'o', + '\u1ED1': 'o', + '\u1ED7': 'o', + '\u1ED5': 'o', + '\u00F5': 'o', + '\u1E4D': 'o', + '\u022D': 'o', + '\u1E4F': 'o', + '\u014D': 'o', + '\u1E51': 'o', + '\u1E53': 'o', + '\u014F': 'o', + '\u022F': 'o', + '\u0231': 'o', + '\u00F6': 'o', + '\u022B': 'o', + '\u1ECF': 'o', + '\u0151': 'o', + '\u01D2': 'o', + '\u020D': 'o', + '\u020F': 'o', + '\u01A1': 'o', + '\u1EDD': 'o', + '\u1EDB': 'o', + '\u1EE1': 'o', + '\u1EDF': 'o', + '\u1EE3': 'o', + '\u1ECD': 'o', + '\u1ED9': 'o', + '\u01EB': 'o', + '\u01ED': 'o', + '\u00F8': 'o', + '\u01FF': 'o', + '\u0254': 'o', + '\uA74B': 'o', + '\uA74D': 'o', + '\u0275': 'o', + '\u01A3': 'oi', + '\u0223': 'ou', + '\uA74F': 'oo', + '\u24DF': 'p', + '\uFF50': 'p', + '\u1E55': 'p', + '\u1E57': 'p', + '\u01A5': 'p', + '\u1D7D': 'p', + '\uA751': 'p', + '\uA753': 'p', + '\uA755': 'p', + '\u24E0': 'q', + '\uFF51': 'q', + '\u024B': 'q', + '\uA757': 'q', + '\uA759': 'q', + '\u24E1': 'r', + '\uFF52': 'r', + '\u0155': 'r', + '\u1E59': 'r', + '\u0159': 'r', + '\u0211': 'r', + '\u0213': 'r', + '\u1E5B': 'r', + '\u1E5D': 'r', + '\u0157': 'r', + '\u1E5F': 'r', + '\u024D': 'r', + '\u027D': 'r', + '\uA75B': 'r', + '\uA7A7': 'r', + '\uA783': 'r', + '\u24E2': 's', + '\uFF53': 's', + '\u00DF': 's', + '\u015B': 's', + '\u1E65': 's', + '\u015D': 's', + '\u1E61': 's', + '\u0161': 's', + '\u1E67': 's', + '\u1E63': 's', + '\u1E69': 's', + '\u0219': 's', + '\u015F': 's', + '\u023F': 's', + '\uA7A9': 's', + '\uA785': 's', + '\u1E9B': 's', + '\u24E3': 't', + '\uFF54': 't', + '\u1E6B': 't', + '\u1E97': 't', + '\u0165': 't', + '\u1E6D': 't', + '\u021B': 't', + '\u0163': 't', + '\u1E71': 't', + '\u1E6F': 't', + '\u0167': 't', + '\u01AD': 't', + '\u0288': 't', + '\u2C66': 't', + '\uA787': 't', + '\uA729': 'tz', + '\u24E4': 'u', + '\uFF55': 'u', + '\u00F9': 'u', + '\u00FA': 'u', + '\u00FB': 'u', + '\u0169': 'u', + '\u1E79': 'u', + '\u016B': 'u', + '\u1E7B': 'u', + '\u016D': 'u', + '\u00FC': 'u', + '\u01DC': 'u', + '\u01D8': 'u', + '\u01D6': 'u', + '\u01DA': 'u', + '\u1EE7': 'u', + '\u016F': 'u', + '\u0171': 'u', + '\u01D4': 'u', + '\u0215': 'u', + '\u0217': 'u', + '\u01B0': 'u', + '\u1EEB': 'u', + '\u1EE9': 'u', + '\u1EEF': 'u', + '\u1EED': 'u', + '\u1EF1': 'u', + '\u1EE5': 'u', + '\u1E73': 'u', + '\u0173': 'u', + '\u1E77': 'u', + '\u1E75': 'u', + '\u0289': 'u', + '\u24E5': 'v', + '\uFF56': 'v', + '\u1E7D': 'v', + '\u1E7F': 'v', + '\u028B': 'v', + '\uA75F': 'v', + '\u028C': 'v', + '\uA761': 'vy', + '\u24E6': 'w', + '\uFF57': 'w', + '\u1E81': 'w', + '\u1E83': 'w', + '\u0175': 'w', + '\u1E87': 'w', + '\u1E85': 'w', + '\u1E98': 'w', + '\u1E89': 'w', + '\u2C73': 'w', + '\u24E7': 'x', + '\uFF58': 'x', + '\u1E8B': 'x', + '\u1E8D': 'x', + '\u24E8': 'y', + '\uFF59': 'y', + '\u1EF3': 'y', + '\u00FD': 'y', + '\u0177': 'y', + '\u1EF9': 'y', + '\u0233': 'y', + '\u1E8F': 'y', + '\u00FF': 'y', + '\u1EF7': 'y', + '\u1E99': 'y', + '\u1EF5': 'y', + '\u01B4': 'y', + '\u024F': 'y', + '\u1EFF': 'y', + '\u24E9': 'z', + '\uFF5A': 'z', + '\u017A': 'z', + '\u1E91': 'z', + '\u017C': 'z', + '\u017E': 'z', + '\u1E93': 'z', + '\u1E95': 'z', + '\u01B6': 'z', + '\u0225': 'z', + '\u0240': 'z', + '\u2C6C': 'z', + '\uA763': 'z', + '\u0386': '\u0391', + '\u0388': '\u0395', + '\u0389': '\u0397', + '\u038A': '\u0399', + '\u03AA': '\u0399', + '\u038C': '\u039F', + '\u038E': '\u03A5', + '\u03AB': '\u03A5', + '\u038F': '\u03A9', + '\u03AC': '\u03B1', + '\u03AD': '\u03B5', + '\u03AE': '\u03B7', + '\u03AF': '\u03B9', + '\u03CA': '\u03B9', + '\u0390': '\u03B9', + '\u03CC': '\u03BF', + '\u03CD': '\u03C5', + '\u03CB': '\u03C5', + '\u03B0': '\u03C5', + '\u03C9': '\u03C9', + '\u03C2': '\u03C3' + }; + + return diacritics; +}); + +S2.define('select2/data/base',[ + '../utils' +], function (Utils) { + function BaseAdapter ($element, options) { + BaseAdapter.__super__.constructor.call(this); + } + + Utils.Extend(BaseAdapter, Utils.Observable); + + BaseAdapter.prototype.current = function (callback) { + throw new Error('The `current` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.query = function (params, callback) { + throw new Error('The `query` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.bind = function (container, $container) { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.destroy = function () { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.generateResultId = function (container, data) { + var id = ''; + + if (container != null) { + id += container.id + } else { + id += Utils.generateChars(4); + } + + id += '-result-'; + id += Utils.generateChars(4); + + if (data.id != null) { + id += '-' + data.id.toString(); + } else { + id += '-' + Utils.generateChars(4); + } + return id; + }; + + return BaseAdapter; +}); + +S2.define('select2/data/select',[ + './base', + '../utils', + 'jquery' +], function (BaseAdapter, Utils, $) { + function SelectAdapter ($element, options) { + this.$element = $element; + this.options = options; + + SelectAdapter.__super__.constructor.call(this); + } + + Utils.Extend(SelectAdapter, BaseAdapter); + + SelectAdapter.prototype.current = function (callback) { + var data = []; + var self = this; + + this.$element.find(':selected').each(function () { + var $option = $(this); + + var option = self.item($option); + + data.push(option); + }); + + callback(data); + }; + + SelectAdapter.prototype.select = function (data) { + var self = this; + + data.selected = true; + + // If data.element is a DOM node, use it instead + if ($(data.element).is('option')) { + data.element.selected = true; + + this.$element.trigger('change'); + + return; + } + + if (this.$element.prop('multiple')) { + this.current(function (currentData) { + var val = []; + + data = [data]; + data.push.apply(data, currentData); + + for (var d = 0; d < data.length; d++) { + var id = data[d].id; + + if ($.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + self.$element.trigger('change'); + }); + } else { + var val = data.id; + + this.$element.val(val); + this.$element.trigger('change'); + } + }; + + SelectAdapter.prototype.unselect = function (data) { + var self = this; + + if (!this.$element.prop('multiple')) { + return; + } + + data.selected = false; + + if ($(data.element).is('option')) { + data.element.selected = false; + + this.$element.trigger('change'); + + return; + } + + this.current(function (currentData) { + var val = []; + + for (var d = 0; d < currentData.length; d++) { + var id = currentData[d].id; + + if (id !== data.id && $.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + + self.$element.trigger('change'); + }); + }; + + SelectAdapter.prototype.bind = function (container, $container) { + var self = this; + + this.container = container; + + container.on('select', function (params) { + self.select(params.data); + }); + + container.on('unselect', function (params) { + self.unselect(params.data); + }); + }; + + SelectAdapter.prototype.destroy = function () { + // Remove anything added to child elements + this.$element.find('*').each(function () { + // Remove any custom data set by Select2 + $.removeData(this, 'data'); + }); + }; + + SelectAdapter.prototype.query = function (params, callback) { + var data = []; + var self = this; + + var $options = this.$element.children(); + + $options.each(function () { + var $option = $(this); + + if (!$option.is('option') && !$option.is('optgroup')) { + return; + } + + var option = self.item($option); + + var matches = self.matches(params, option); + + if (matches !== null) { + data.push(matches); + } + }); + + callback({ + results: data + }); + }; + + SelectAdapter.prototype.addOptions = function ($options) { + Utils.appendMany(this.$element, $options); + }; + + SelectAdapter.prototype.option = function (data) { + var option; + + if (data.children) { + option = document.createElement('optgroup'); + option.label = data.text; + } else { + option = document.createElement('option'); + + if (option.textContent !== undefined) { + option.textContent = data.text; + } else { + option.innerText = data.text; + } + } + + if (data.id !== undefined) { + option.value = data.id; + } + + if (data.disabled) { + option.disabled = true; + } + + if (data.selected) { + option.selected = true; + } + + if (data.title) { + option.title = data.title; + } + + var $option = $(option); + + var normalizedData = this._normalizeItem(data); + normalizedData.element = option; + + // Override the option's data with the combined data + $.data(option, 'data', normalizedData); + + return $option; + }; + + SelectAdapter.prototype.item = function ($option) { + var data = {}; + + data = $.data($option[0], 'data'); + + if (data != null) { + return data; + } + + if ($option.is('option')) { + data = { + id: $option.val(), + text: $option.text(), + disabled: $option.prop('disabled'), + selected: $option.prop('selected'), + title: $option.prop('title') + }; + } else if ($option.is('optgroup')) { + data = { + text: $option.prop('label'), + children: [], + title: $option.prop('title') + }; + + var $children = $option.children('option'); + var children = []; + + for (var c = 0; c < $children.length; c++) { + var $child = $($children[c]); + + var child = this.item($child); + + children.push(child); + } + + data.children = children; + } + + data = this._normalizeItem(data); + data.element = $option[0]; + + $.data($option[0], 'data', data); + + return data; + }; + + SelectAdapter.prototype._normalizeItem = function (item) { + if (!$.isPlainObject(item)) { + item = { + id: item, + text: item + }; + } + + item = $.extend({}, { + text: '' + }, item); + + var defaults = { + selected: false, + disabled: false + }; + + if (item.id != null) { + item.id = item.id.toString(); + } + + if (item.text != null) { + item.text = item.text.toString(); + } + + if (item._resultId == null && item.id) { + item._resultId = this.generateResultId(this.container, item); + } + + return $.extend({}, defaults, item); + }; + + SelectAdapter.prototype.matches = function (params, data) { + var matcher = this.options.get('matcher'); + + return matcher(params, data); + }; + + return SelectAdapter; +}); + +S2.define('select2/data/array',[ + './select', + '../utils', + 'jquery' +], function (SelectAdapter, Utils, $) { + function ArrayAdapter ($element, options) { + var data = options.get('data') || []; + + ArrayAdapter.__super__.constructor.call(this, $element, options); + + this.addOptions(this.convertToOptions(data)); + } + + Utils.Extend(ArrayAdapter, SelectAdapter); + + ArrayAdapter.prototype.select = function (data) { + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); + + if ($option.length === 0) { + $option = this.option(data); + + this.addOptions($option); + } + + ArrayAdapter.__super__.select.call(this, data); + }; + + ArrayAdapter.prototype.convertToOptions = function (data) { + var self = this; + + var $existing = this.$element.find('option'); + var existingIds = $existing.map(function () { + return self.item($(this)).id; + }).get(); + + var $options = []; + + // Filter out all items except for the one passed in the argument + function onlyItem (item) { + return function () { + return $(this).val() == item.id; + }; + } + + for (var d = 0; d < data.length; d++) { + var item = this._normalizeItem(data[d]); + + // Skip items which were pre-loaded, only merge the data + if ($.inArray(item.id, existingIds) >= 0) { + var $existingOption = $existing.filter(onlyItem(item)); + + var existingData = this.item($existingOption); + var newData = $.extend(true, {}, item, existingData); + + var $newOption = this.option(newData); + + $existingOption.replaceWith($newOption); + + continue; + } + + var $option = this.option(item); + + if (item.children) { + var $children = this.convertToOptions(item.children); + + Utils.appendMany($option, $children); + } + + $options.push($option); + } + + return $options; + }; + + return ArrayAdapter; +}); + +S2.define('select2/data/ajax',[ + './array', + '../utils', + 'jquery' +], function (ArrayAdapter, Utils, $) { + function AjaxAdapter ($element, options) { + this.ajaxOptions = this._applyDefaults(options.get('ajax')); + + if (this.ajaxOptions.processResults != null) { + this.processResults = this.ajaxOptions.processResults; + } + + AjaxAdapter.__super__.constructor.call(this, $element, options); + } + + Utils.Extend(AjaxAdapter, ArrayAdapter); + + AjaxAdapter.prototype._applyDefaults = function (options) { + var defaults = { + data: function (params) { + return $.extend({}, params, { + q: params.term + }); + }, + transport: function (params, success, failure) { + var $request = $.ajax(params); + + $request.then(success); + $request.fail(failure); + + return $request; + } + }; + + return $.extend({}, defaults, options, true); + }; + + AjaxAdapter.prototype.processResults = function (results) { + return results; + }; + + AjaxAdapter.prototype.query = function (params, callback) { + var matches = []; + var self = this; + + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + + this._request = null; + } + + var options = $.extend({ + type: 'GET' + }, this.ajaxOptions); + + if (typeof options.url === 'function') { + options.url = options.url.call(this.$element, params); + } + + if (typeof options.data === 'function') { + options.data = options.data.call(this.$element, params); + } + + function request () { + var $request = options.transport(options, function (data) { + var results = self.processResults(data, params); + + if (self.options.get('debug') && window.console && console.error) { + // Check to make sure that the response included a `results` key. + if (!results || !results.results || !$.isArray(results.results)) { + console.error( + 'Select2: The AJAX results did not return an array in the ' + + '`results` key of the response.' + ); + } + } + + callback(results); + self.container.focusOnActiveElement(); + }, function () { + // Attempt to detect if a request was aborted + // Only works if the transport exposes a status property + if ($request.status && $request.status === '0') { + return; + } + + self.trigger('results:message', { + message: 'errorLoading' + }); + }); + + self._request = $request; + } + + if (this.ajaxOptions.delay && params.term != null) { + if (this._queryTimeout) { + window.clearTimeout(this._queryTimeout); + } + + this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); + } else { + request(); + } + }; + + return AjaxAdapter; +}); + +S2.define('select2/data/tags',[ + 'jquery' +], function ($) { + function Tags (decorated, $element, options) { + var tags = options.get('tags'); + + var createTag = options.get('createTag'); + + if (createTag !== undefined) { + this.createTag = createTag; + } + + var insertTag = options.get('insertTag'); + + if (insertTag !== undefined) { + this.insertTag = insertTag; + } + + decorated.call(this, $element, options); + + if ($.isArray(tags)) { + for (var t = 0; t < tags.length; t++) { + var tag = tags[t]; + var item = this._normalizeItem(tag); + + var $option = this.option(item); + + this.$element.append($option); + } + } + } + + Tags.prototype.query = function (decorated, params, callback) { + var self = this; + + this._removeOldTags(); + + if (params.term == null || params.page != null) { + decorated.call(this, params, callback); + return; + } + + function wrapper (obj, child) { + var data = obj.results; + + for (var i = 0; i < data.length; i++) { + var option = data[i]; + + var checkChildren = ( + option.children != null && + !wrapper({ + results: option.children + }, true) + ); + + var optionText = (option.text || '').toUpperCase(); + var paramsTerm = (params.term || '').toUpperCase(); + + var checkText = optionText === paramsTerm; + + if (checkText || checkChildren) { + if (child) { + return false; + } + + obj.data = data; + callback(obj); + + return; + } + } + + if (child) { + return true; + } + + var tag = self.createTag(params); + + if (tag != null) { + var $option = self.option(tag); + $option.attr('data-select2-tag', true); + + self.addOptions([$option]); + + self.insertTag(data, tag); + } + + obj.results = data; + + callback(obj); + } + + decorated.call(this, params, wrapper); + }; + + Tags.prototype.createTag = function (decorated, params) { + var term = $.trim(params.term); + + if (term === '') { + return null; + } + + return { + id: term, + text: term + }; + }; + + Tags.prototype.insertTag = function (_, data, tag) { + data.unshift(tag); + }; + + Tags.prototype._removeOldTags = function (_) { + var tag = this._lastTag; + + var $options = this.$element.find('option[data-select2-tag]'); + + $options.each(function () { + if (this.selected) { + return; + } + + $(this).remove(); + }); + }; + + return Tags; +}); + +S2.define('select2/data/tokenizer',[ + 'jquery' +], function ($) { + function Tokenizer (decorated, $element, options) { + var tokenizer = options.get('tokenizer'); + + if (tokenizer !== undefined) { + this.tokenizer = tokenizer; + } + + decorated.call(this, $element, options); + } + + Tokenizer.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + this.$search = container.dropdown.$search || container.selection.$search || + $container.find('.select2-search__field'); + }; + + Tokenizer.prototype.query = function (decorated, params, callback) { + var self = this; + + function createAndSelect (data) { + // Normalize the data object so we can use it for checks + var item = self._normalizeItem(data); + + // Check if the data object already exists as a tag + // Select it if it doesn't + var $existingOptions = self.$element.find('option').filter(function () { + return $(this).val() === item.id; + }); + + // If an existing option wasn't found for it, create the option + if (!$existingOptions.length) { + var $option = self.option(item); + $option.attr('data-select2-tag', true); + + self._removeOldTags(); + self.addOptions([$option]); + } + + // Select the item, now that we know there is an option for it + select(item); + } + + function select (data) { + self.trigger('select', { + data: data + }); + } + + params.term = params.term || ''; + + var tokenData = this.tokenizer(params, this.options, createAndSelect); + + if (tokenData.term !== params.term) { + // Replace the search term if we have the search box + if (this.$search.length) { + this.$search.val(tokenData.term); + this.$search.focus(); + } + + params.term = tokenData.term; + } + + decorated.call(this, params, callback); + }; + + Tokenizer.prototype.tokenizer = function (_, params, options, callback) { + var separators = options.get('tokenSeparators') || []; + var term = params.term; + var i = 0; + + var createTag = this.createTag || function (params) { + return { + id: params.term, + text: params.term + }; + }; + + while (i < term.length) { + var termChar = term[i]; + + if ($.inArray(termChar, separators) === -1) { + i++; + + continue; + } + + var part = term.substr(0, i); + var partParams = $.extend({}, params, { + term: part + }); + + var data = createTag(partParams); + + if (data == null) { + i++; + continue; + } + + callback(data); + + // Reset the term to not include the tokenized portion + term = term.substr(i + 1) || ''; + i = 0; + } + + return { + term: term + }; + }; + + return Tokenizer; +}); + +S2.define('select2/data/minimumInputLength',[ + +], function () { + function MinimumInputLength (decorated, $e, options) { + this.minimumInputLength = options.get('minimumInputLength'); + + decorated.call(this, $e, options); + } + + MinimumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (params.term.length < this.minimumInputLength) { + this.trigger('results:message', { + message: 'inputTooShort', + args: { + minimum: this.minimumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MinimumInputLength; +}); + +S2.define('select2/data/maximumInputLength',[ + +], function () { + function MaximumInputLength (decorated, $e, options) { + this.maximumInputLength = options.get('maximumInputLength'); + + decorated.call(this, $e, options); + } + + MaximumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (this.maximumInputLength > 0 && + params.term.length > this.maximumInputLength) { + this.trigger('results:message', { + message: 'inputTooLong', + args: { + maximum: this.maximumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MaximumInputLength; +}); + +S2.define('select2/data/maximumSelectionLength',[ + +], function (){ + function MaximumSelectionLength (decorated, $e, options) { + this.maximumSelectionLength = options.get('maximumSelectionLength'); + + decorated.call(this, $e, options); + } + + MaximumSelectionLength.prototype.query = + function (decorated, params, callback) { + var self = this; + + this.current(function (currentData) { + var count = currentData != null ? currentData.length : 0; + if (self.maximumSelectionLength > 0 && + count >= self.maximumSelectionLength) { + self.trigger('results:message', { + message: 'maximumSelected', + args: { + maximum: self.maximumSelectionLength + } + }); + return; + } + decorated.call(self, params, callback); + }); + }; + + return MaximumSelectionLength; +}); + +S2.define('select2/dropdown',[ + 'jquery', + './utils' +], function ($, Utils) { + function Dropdown ($element, options) { + this.$element = $element; + this.options = options; + + Dropdown.__super__.constructor.call(this); + } + + Utils.Extend(Dropdown, Utils.Observable); + + Dropdown.prototype.render = function () { + var $dropdown = $( + '' + + '' + + '' + ); + + $dropdown.attr('dir', this.options.get('dir')); + + this.$dropdown = $dropdown; + + return $dropdown; + }; + + Dropdown.prototype.bind = function () { + // Should be implemented in subclasses + }; + + Dropdown.prototype.position = function ($dropdown, $container) { + // Should be implmented in subclasses + }; + + Dropdown.prototype.destroy = function () { + // Remove the dropdown from the DOM + this.$dropdown.remove(); + }; + + return Dropdown; +}); + +S2.define('select2/dropdown/search',[ + 'jquery', + '../utils' +], function ($, Utils) { + function Search () { } + + Search.prototype.render = function (decorated) { + var $rendered = decorated.call(this); + + var $search = $( + '' + + '' + + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + $rendered.prepend($search); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + this.$search.on('keydown', function (evt) { + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + }); + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$search.on('input', function (evt) { + // Unbind the duplicated `keyup` event + $(this).off('keyup'); + }); + + this.$search.on('keyup input', function (evt) { + self.handleSearch(evt); + }); + + container.on('open', function () { + self.$search.attr('tabindex', 0); + self.$search.attr('aria-owns', resultsId); + self.$search.focus(); + + window.setTimeout(function () { + self.$search.focus(); + }, 0); + }); + + container.on('close', function () { + self.$search.attr('tabindex', -1); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.val(''); + }); + + container.on('focus', function () { + if (container.isOpen()) { + self.$search.focus(); + } + }); + + container.on('results:all', function (params) { + if (params.query.term == null || params.query.term === '') { + var showSearch = self.showSearch(params); + + if (showSearch) { + self.$searchContainer.removeClass('select2-search--hide'); + } else { + self.$searchContainer.addClass('select2-search--hide'); + } + } + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + }; + + Search.prototype.handleSearch = function (evt) { + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.showSearch = function (_, params) { + return true; + }; + + return Search; +}); + +S2.define('select2/dropdown/hidePlaceholder',[ + +], function () { + function HidePlaceholder (decorated, $element, options, dataAdapter) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options, dataAdapter); + } + + HidePlaceholder.prototype.append = function (decorated, data) { + data.results = this.removePlaceholder(data.results); + + decorated.call(this, data); + }; + + HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + HidePlaceholder.prototype.removePlaceholder = function (_, data) { + var modifiedData = data.slice(0); + + for (var d = data.length - 1; d >= 0; d--) { + var item = data[d]; + + if (this.placeholder.id === item.id) { + modifiedData.splice(d, 1); + } + } + + return modifiedData; + }; + + return HidePlaceholder; +}); + +S2.define('select2/dropdown/infiniteScroll',[ + 'jquery' +], function ($) { + function InfiniteScroll (decorated, $element, options, dataAdapter) { + this.lastParams = {}; + + decorated.call(this, $element, options, dataAdapter); + + this.$loadingMore = this.createLoadingMore(); + this.loading = false; + } + + InfiniteScroll.prototype.append = function (decorated, data) { + this.$loadingMore.remove(); + this.loading = false; + + decorated.call(this, data); + + if (this.showLoadingMore(data)) { + this.$results.append(this.$loadingMore); + } + }; + + InfiniteScroll.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('query', function (params) { + self.lastParams = params; + self.loading = true; + }); + + container.on('query:append', function (params) { + self.lastParams = params; + self.loading = true; + }); + + this.$results.on('scroll', function () { + var isLoadMoreVisible = $.contains( + document.documentElement, + self.$loadingMore[0] + ); + + if (self.loading || !isLoadMoreVisible) { + return; + } + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var loadingMoreOffset = self.$loadingMore.offset().top + + self.$loadingMore.outerHeight(false); + + if (currentOffset + 50 >= loadingMoreOffset) { + self.loadMore(); + } + }); + }; + + InfiniteScroll.prototype.loadMore = function () { + this.loading = true; + + var params = $.extend({}, {page: 1}, this.lastParams); + + params.page++; + + this.trigger('query:append', params); + }; + + InfiniteScroll.prototype.showLoadingMore = function (_, data) { + return data.pagination && data.pagination.more; + }; + + InfiniteScroll.prototype.createLoadingMore = function () { + var $option = $( + '
      • ' + ); + + var message = this.options.get('translations').get('loadingMore'); + + $option.html(message(this.lastParams)); + + return $option; + }; + + return InfiniteScroll; +}); + +S2.define('select2/dropdown/attachBody',[ + 'jquery', + '../utils' +], function ($, Utils) { + function AttachBody (decorated, $element, options) { + this.$dropdownParent = options.get('dropdownParent') || $(document.body); + + decorated.call(this, $element, options); + } + + AttachBody.prototype.bind = function (decorated, container, $container) { + var self = this; + + var setupResultsEvents = false; + + decorated.call(this, container, $container); + + container.on('open', function () { + self._showDropdown(); + self._attachPositioningHandler(container); + + if (!setupResultsEvents) { + setupResultsEvents = true; + + container.on('results:all', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + + container.on('results:append', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + } + }); + + container.on('close', function () { + self._hideDropdown(); + self._detachPositioningHandler(container); + }); + + this.$dropdownContainer.on('mousedown', function (evt) { + evt.stopPropagation(); + }); + }; + + AttachBody.prototype.destroy = function (decorated) { + decorated.call(this); + + this.$dropdownContainer.remove(); + }; + + AttachBody.prototype.position = function (decorated, $dropdown, $container) { + // Clone all of the container classes + $dropdown.attr('class', $container.attr('class')); + + $dropdown.removeClass('select2'); + $dropdown.addClass('select2-container--open'); + + $dropdown.css({ + position: 'absolute', + top: -999999 + }); + + this.$container = $container; + }; + + AttachBody.prototype.render = function (decorated) { + var $container = $(''); + + var $dropdown = decorated.call(this); + $container.append($dropdown); + + this.$dropdownContainer = $container; + + return $container; + }; + + AttachBody.prototype._hideDropdown = function (decorated) { + this.$dropdownContainer.detach(); + }; + + AttachBody.prototype._attachPositioningHandler = + function (decorated, container) { + var self = this; + + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.each(function () { + $(this).data('select2-scroll-position', { + x: $(this).scrollLeft(), + y: $(this).scrollTop() + }); + }); + + $watchers.on(scrollEvent, function (ev) { + var position = $(this).data('select2-scroll-position'); + $(this).scrollTop(position.y); + }); + + $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, + function (e) { + self._positionDropdown(); + self._resizeDropdown(); + }); + }; + + AttachBody.prototype._detachPositioningHandler = + function (decorated, container) { + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.off(scrollEvent); + + $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); + }; + + AttachBody.prototype._positionDropdown = function () { + var $window = $(window); + + var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); + var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); + + var newDirection = null; + + var offset = this.$container.offset(); + + offset.bottom = offset.top + this.$container.outerHeight(false); + + var container = { + height: this.$container.outerHeight(false) + }; + + container.top = offset.top; + container.bottom = offset.top + container.height; + + var dropdown = { + height: this.$dropdown.outerHeight(false) + }; + + var viewport = { + top: $window.scrollTop(), + bottom: $window.scrollTop() + $window.height() + }; + + var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); + var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); + + var css = { + left: offset.left, + top: container.bottom + }; + + // Determine what the parent element is to use for calciulating the offset + var $offsetParent = this.$dropdownParent; + + // For statically positoned elements, we need to get the element + // that is determining the offset + if ($offsetParent.css('position') === 'static') { + $offsetParent = $offsetParent.offsetParent(); + } + + var parentOffset = $offsetParent.offset(); + + css.top -= parentOffset.top; + css.left -= parentOffset.left; + + if (!isCurrentlyAbove && !isCurrentlyBelow) { + newDirection = 'below'; + } + + if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { + newDirection = 'above'; + } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { + newDirection = 'below'; + } + + if (newDirection == 'above' || + (isCurrentlyAbove && newDirection !== 'below')) { + css.top = container.top - parentOffset.top - dropdown.height; + } + + if (newDirection != null) { + this.$dropdown + .removeClass('select2-dropdown--below select2-dropdown--above') + .addClass('select2-dropdown--' + newDirection); + this.$container + .removeClass('select2-container--below select2-container--above') + .addClass('select2-container--' + newDirection); + } + + this.$dropdownContainer.css(css); + }; + + AttachBody.prototype._resizeDropdown = function () { + var css = { + width: this.$container.outerWidth(false) + 'px' + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.position = 'relative'; + css.width = 'auto'; + } + + this.$dropdown.css(css); + }; + + AttachBody.prototype._showDropdown = function (decorated) { + this.$dropdownContainer.appendTo(this.$dropdownParent); + + this._positionDropdown(); + this._resizeDropdown(); + }; + + return AttachBody; +}); + +S2.define('select2/dropdown/minimumResultsForSearch',[ + +], function () { + function countResults (data) { + var count = 0; + + for (var d = 0; d < data.length; d++) { + var item = data[d]; + + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + } + + return count; + } + + function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { + this.minimumResultsForSearch = options.get('minimumResultsForSearch'); + + if (this.minimumResultsForSearch < 0) { + this.minimumResultsForSearch = Infinity; + } + + decorated.call(this, $element, options, dataAdapter); + } + + MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { + if (countResults(params.data.results) < this.minimumResultsForSearch) { + return false; + } + + return decorated.call(this, params); + }; + + return MinimumResultsForSearch; +}); + +S2.define('select2/dropdown/selectOnClose',[ + +], function () { + function SelectOnClose () { } + + SelectOnClose.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('close', function (params) { + self._handleSelectOnClose(params); + }); + }; + + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + + var $highlightedResults = this.getHighlightedResults(); + + // Only select highlighted results + if ($highlightedResults.length < 1) { + return; + } + + var data = $highlightedResults.data('data'); + + // Don't re-select already selected resulte + if ( + (data.element != null && data.element.selected) || + (data.element == null && data.selected) + ) { + return; + } + + this.trigger('select', { + data: data + }); + }; + + return SelectOnClose; +}); + +S2.define('select2/dropdown/closeOnSelect',[ + +], function () { + function CloseOnSelect () { } + + CloseOnSelect.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('select', function (evt) { + self._selectTriggered(evt); + }); + + container.on('unselect', function (evt) { + self._selectTriggered(evt); + }); + }; + + CloseOnSelect.prototype._selectTriggered = function (_, evt) { + var originalEvent = evt.originalEvent; + + // Don't close if the control key is being held + if (originalEvent && originalEvent.ctrlKey) { + return; + } + + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); + }; + + return CloseOnSelect; +}); + +S2.define('select2/i18n/en',[],function () { + // English + return { + errorLoading: function () { + return 'The results could not be loaded.'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'Please delete ' + overChars + ' character'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'Please enter ' + remainingChars + ' or more characters'; + + return message; + }, + loadingMore: function () { + return 'Loading more results…'; + }, + maximumSelected: function (args) { + var message = 'You can only select ' + args.maximum + ' item'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'No results found'; + }, + searching: function () { + return 'Searching…'; + } + }; +}); + +S2.define('select2/defaults',[ + 'jquery', + 'require', + + './results', + + './selection/single', + './selection/multiple', + './selection/placeholder', + './selection/allowClear', + './selection/search', + './selection/eventRelay', + + './utils', + './translation', + './diacritics', + + './data/select', + './data/array', + './data/ajax', + './data/tags', + './data/tokenizer', + './data/minimumInputLength', + './data/maximumInputLength', + './data/maximumSelectionLength', + + './dropdown', + './dropdown/search', + './dropdown/hidePlaceholder', + './dropdown/infiniteScroll', + './dropdown/attachBody', + './dropdown/minimumResultsForSearch', + './dropdown/selectOnClose', + './dropdown/closeOnSelect', + + './i18n/en' +], function ($, require, + + ResultsList, + + SingleSelection, MultipleSelection, Placeholder, AllowClear, + SelectionSearch, EventRelay, + + Utils, Translation, DIACRITICS, + + SelectData, ArrayData, AjaxData, Tags, Tokenizer, + MinimumInputLength, MaximumInputLength, MaximumSelectionLength, + + Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, + AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, + + EnglishTranslation) { + function Defaults () { + this.reset(); + } + + Defaults.prototype.apply = function (options) { + options = $.extend(true, {}, this.defaults, options); + + if (options.dataAdapter == null) { + if (options.ajax != null) { + options.dataAdapter = AjaxData; + } else if (options.data != null) { + options.dataAdapter = ArrayData; + } else { + options.dataAdapter = SelectData; + } + + if (options.minimumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MinimumInputLength + ); + } + + if (options.maximumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumInputLength + ); + } + + if (options.maximumSelectionLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumSelectionLength + ); + } + + if (options.tags) { + options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); + } + + if (options.tokenSeparators != null || options.tokenizer != null) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Tokenizer + ); + } + + if (options.query != null) { + var Query = require(options.amdBase + 'compat/query'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Query + ); + } + + if (options.initSelection != null) { + var InitSelection = require(options.amdBase + 'compat/initSelection'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + InitSelection + ); + } + } + + if (options.resultsAdapter == null) { + options.resultsAdapter = ResultsList; + + if (options.ajax != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + InfiniteScroll + ); + } + + if (options.placeholder != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + HidePlaceholder + ); + } + + if (options.selectOnClose) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + SelectOnClose + ); + } + } + + if (options.dropdownAdapter == null) { + if (options.multiple) { + options.dropdownAdapter = Dropdown; + } else { + var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); + + options.dropdownAdapter = SearchableDropdown; + } + + if (options.minimumResultsForSearch !== 0) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + MinimumResultsForSearch + ); + } + + if (options.closeOnSelect) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + CloseOnSelect + ); + } + + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + AttachBody + ); + } + + if (options.selectionAdapter == null) { + if (options.multiple) { + options.selectionAdapter = MultipleSelection; + } else { + options.selectionAdapter = SingleSelection; + } + + // Add the placeholder mixin if a placeholder was specified + if (options.placeholder != null) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + Placeholder + ); + } + + if (options.allowClear) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + AllowClear + ); + } + + if (options.multiple) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + SelectionSearch + ); + } + + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + EventRelay + ); + } + + if (typeof options.language === 'string') { + // Check if the language is specified with a region + if (options.language.indexOf('-') > 0) { + // Extract the region information if it is included + var languageParts = options.language.split('-'); + var baseLanguage = languageParts[0]; + + options.language = [options.language, baseLanguage]; + } else { + options.language = [options.language]; + } + } + + if ($.isArray(options.language)) { + var languages = new Translation(); + options.language.push('en'); + + var languageNames = options.language; + + for (var l = 0; l < languageNames.length; l++) { + var name = languageNames[l]; + var language = {}; + + try { + // Try to load it with the original name + language = Translation.loadPath(name); + } catch (e) { + try { + // If we couldn't load it, check if it wasn't the full path + name = this.defaults.amdLanguageBase + name; + language = Translation.loadPath(name); + } catch (ex) { + // The translation could not be loaded at all. Sometimes this is + // because of a configuration problem, other times this can be + // because of how Select2 helps load all possible translation files. + if (options.debug && window.console && console.warn) { + console.warn( + 'Select2: The language file for "' + name + '" could not be ' + + 'automatically loaded. A fallback will be used instead.' + ); + } + + continue; + } + } + + languages.extend(language); + } + + options.translations = languages; + } else { + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; + } + + return options; + }; + + Defaults.prototype.reset = function () { + function stripDiacritics (text) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return text.replace(/[^\u0000-\u007E]/g, match); + } + + function matcher (params, data) { + // Always return the object if there is nothing to compare + if ($.trim(params.term) === '') { + return data; + } + + // Do a recursive check for options with children + if (data.children && data.children.length > 0) { + // Clone the data object if there are children + // This is required as we modify the object to remove any non-matches + var match = $.extend(true, {}, data); + + // Check each child of the option + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + var matches = matcher(params, child); + + // If there wasn't a match, remove the object in the array + if (matches == null) { + match.children.splice(c, 1); + } + } + + // If any children matched, return the new object + if (match.children.length > 0) { + return match; + } + + // If there were no matching children, check just the plain object + return matcher(params, match); + } + + var original = stripDiacritics(data.text).toUpperCase(); + var term = stripDiacritics(params.term).toUpperCase(); + + // Check if the text contains the term + if (original.indexOf(term) > -1) { + return data; + } + + // If it doesn't contain the term, don't return anything + return null; + } + + this.defaults = { + amdBase: './', + amdLanguageBase: './i18n/', + closeOnSelect: true, + debug: false, + dropdownAutoWidth: false, + escapeMarkup: Utils.escapeMarkup, + language: EnglishTranslation, + matcher: matcher, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: false, + sorter: function (data) { + return data; + }, + templateResult: function (result) { + return result.text; + }, + templateSelection: function (selection) { + return selection.text; + }, + theme: 'default', + width: 'resolve' + }; + }; + + Defaults.prototype.set = function (key, value) { + var camelKey = $.camelCase(key); + + var data = {}; + data[camelKey] = value; + + var convertedData = Utils._convertData(data); + + $.extend(this.defaults, convertedData); + }; + + var defaults = new Defaults(); + + return defaults; +}); + +S2.define('select2/options',[ + 'require', + 'jquery', + './defaults', + './utils' +], function (require, $, Defaults, Utils) { + function Options (options, $element) { + this.options = options; + + if ($element != null) { + this.fromElement($element); + } + + this.options = Defaults.apply(this.options); + + if ($element && $element.is('input')) { + var InputCompat = require(this.get('amdBase') + 'compat/inputData'); + + this.options.dataAdapter = Utils.Decorate( + this.options.dataAdapter, + InputCompat + ); + } + } + + Options.prototype.fromElement = function ($e) { + var excludedData = ['select2']; + + if (this.options.multiple == null) { + this.options.multiple = $e.prop('multiple'); + } + + if (this.options.disabled == null) { + this.options.disabled = $e.prop('disabled'); + } + + if (this.options.language == null) { + if ($e.prop('lang')) { + this.options.language = $e.prop('lang').toLowerCase(); + } else if ($e.closest('[lang]').prop('lang')) { + this.options.language = $e.closest('[lang]').prop('lang'); + } + } + + if (this.options.dir == null) { + if ($e.prop('dir')) { + this.options.dir = $e.prop('dir'); + } else if ($e.closest('[dir]').prop('dir')) { + this.options.dir = $e.closest('[dir]').prop('dir'); + } else { + this.options.dir = 'ltr'; + } + } + + $e.prop('disabled', this.options.disabled); + $e.prop('multiple', this.options.multiple); + + if ($e.data('select2Tags')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to ' + + 'use the `data-data` and `data-tags="true"` attributes and will be ' + + 'removed in future versions of Select2.' + ); + } + + $e.data('data', $e.data('select2Tags')); + $e.data('tags', true); + } + + if ($e.data('ajaxUrl')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-ajax-url` attribute has been changed to ' + + '`data-ajax--url` and support for the old attribute will be removed' + + ' in future versions of Select2.' + ); + } + + $e.attr('ajax--url', $e.data('ajaxUrl')); + $e.data('ajax--url', $e.data('ajaxUrl')); + } + + var dataset = {}; + + // Prefer the element's `dataset` attribute if it exists + // jQuery 1.x does not correctly handle data attributes with multiple dashes + if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { + dataset = $.extend(true, {}, $e[0].dataset, $e.data()); + } else { + dataset = $e.data(); + } + + var data = $.extend(true, {}, dataset); + + data = Utils._convertData(data); + + for (var key in data) { + if ($.inArray(key, excludedData) > -1) { + continue; + } + + if ($.isPlainObject(this.options[key])) { + $.extend(this.options[key], data[key]); + } else { + this.options[key] = data[key]; + } + } + + return this; + }; + + Options.prototype.get = function (key) { + return this.options[key]; + }; + + Options.prototype.set = function (key, val) { + this.options[key] = val; + }; + + return Options; +}); + +S2.define('select2/core',[ + 'jquery', + './options', + './utils', + './keys' +], function ($, Options, Utils, KEYS) { + var Select2 = function ($element, options) { + if ($element.data('select2') != null) { + $element.data('select2').destroy(); + } + + this.$element = $element; + + this.id = this._generateId($element); + + options = options || {}; + + this.options = new Options(options, $element); + + Select2.__super__.constructor.call(this); + + // Set up the tabindex + + var tabindex = $element.attr('tabindex') || 0; + $element.data('old-tabindex', tabindex); + $element.attr('tabindex', '-1'); + + // Set up containers and adapters + + var DataAdapter = this.options.get('dataAdapter'); + this.dataAdapter = new DataAdapter($element, this.options); + + var $container = this.render(); + + this._placeContainer($container); + + var SelectionAdapter = this.options.get('selectionAdapter'); + this.selection = new SelectionAdapter($element, this.options); + this.$selection = this.selection.render(); + + this.selection.position(this.$selection, $container); + + var DropdownAdapter = this.options.get('dropdownAdapter'); + this.dropdown = new DropdownAdapter($element, this.options); + this.$dropdown = this.dropdown.render(); + + this.dropdown.position(this.$dropdown, $container); + + var ResultsAdapter = this.options.get('resultsAdapter'); + this.results = new ResultsAdapter($element, this.options, this.dataAdapter); + this.$results = this.results.render(); + + this.results.position(this.$results, this.$dropdown); + + // Bind events + + var self = this; + + // Bind the container to all of the adapters + this._bindAdapters(); + + // Register any DOM event handlers + this._registerDomEvents(); + + // Register any internal event handlers + this._registerDataEvents(); + this._registerSelectionEvents(); + this._registerDropdownEvents(); + this._registerResultsEvents(); + this._registerEvents(); + + // Set the initial state + this.dataAdapter.current(function (initialData) { + self.trigger('selection:update', { + data: initialData + }); + }); + + // Hide the original select + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + + // Synchronize any monitored attributes + this._syncAttributes(); + + $element.data('select2', this); + }; + + Utils.Extend(Select2, Utils.Observable); + + Select2.prototype._generateId = function ($element) { + var id = ''; + + if ($element.attr('id') != null) { + id = $element.attr('id'); + } else if ($element.attr('name') != null) { + id = $element.attr('name') + '-' + Utils.generateChars(2); + } else { + id = Utils.generateChars(4); + } + + id = id.replace(/(:|\.|\[|\]|,)/g, ''); + id = 'select2-' + id; + + return id; + }; + + Select2.prototype._placeContainer = function ($container) { + $container.insertAfter(this.$element); + + var width = this._resolveWidth(this.$element, this.options.get('width')); + + if (width != null) { + $container.css('width', width); + } + }; + + Select2.prototype._resolveWidth = function ($element, method) { + var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + + if (method == 'resolve') { + var styleWidth = this._resolveWidth($element, 'style'); + + if (styleWidth != null) { + return styleWidth; + } + + return this._resolveWidth($element, 'element'); + } + + if (method == 'element') { + var elementWidth = $element.outerWidth(false); + + if (elementWidth <= 0) { + return 'auto'; + } + + return elementWidth + 'px'; + } + + if (method == 'style') { + var style = $element.attr('style'); + + if (typeof(style) !== 'string') { + return null; + } + + var attrs = style.split(';'); + + for (var i = 0, l = attrs.length; i < l; i = i + 1) { + var attr = attrs[i].replace(/\s/g, ''); + var matches = attr.match(WIDTH); + + if (matches !== null && matches.length >= 1) { + return matches[1]; + } + } + + return null; + } + + return method; + }; + + Select2.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container); + this.selection.bind(this, this.$container); + + this.dropdown.bind(this, this.$container); + this.results.bind(this, this.$container); + }; + + Select2.prototype._registerDomEvents = function () { + var self = this; + + this.$element.on('change.select2', function () { + self.dataAdapter.current(function (data) { + self.trigger('selection:update', { + data: data + }); + }); + }); + + this.$element.on('focus.select2', function (evt) { + self.trigger('focus', evt); + }); + + this._syncA = Utils.bind(this._syncAttributes, this); + this._syncS = Utils.bind(this._syncSubtree, this); + + if (this.$element[0].attachEvent) { + this.$element[0].attachEvent('onpropertychange', this._syncA); + } + + var observer = window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver + ; + + if (observer != null) { + this._observer = new observer(function (mutations) { + $.each(mutations, self._syncA); + $.each(mutations, self._syncS); + }); + this._observer.observe(this.$element[0], { + attributes: true, + childList: true, + subtree: false + }); + } else if (this.$element[0].addEventListener) { + this.$element[0].addEventListener( + 'DOMAttrModified', + self._syncA, + false + ); + this.$element[0].addEventListener( + 'DOMNodeInserted', + self._syncS, + false + ); + this.$element[0].addEventListener( + 'DOMNodeRemoved', + self._syncS, + false + ); + } + }; + + Select2.prototype._registerDataEvents = function () { + var self = this; + + this.dataAdapter.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerSelectionEvents = function () { + var self = this; + var nonRelayEvents = ['toggle', 'focus']; + + this.selection.on('toggle', function () { + self.toggleDropdown(); + }); + + this.selection.on('focus', function (params) { + self.focus(params); + }); + + this.selection.on('*', function (name, params) { + if ($.inArray(name, nonRelayEvents) !== -1) { + return; + } + + self.trigger(name, params); + }); + }; + + Select2.prototype._registerDropdownEvents = function () { + var self = this; + + this.dropdown.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerResultsEvents = function () { + var self = this; + + this.results.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerEvents = function () { + var self = this; + + this.on('open', function () { + self.$container.addClass('select2-container--open'); + }); + + this.on('close', function () { + self.$container.removeClass('select2-container--open'); + }); + + this.on('enable', function () { + self.$container.removeClass('select2-container--disabled'); + }); + + this.on('disable', function () { + self.$container.addClass('select2-container--disabled'); + }); + + this.on('blur', function () { + self.$container.removeClass('select2-container--focus'); + }); + + this.on('query', function (params) { + if (!self.isOpen()) { + self.trigger('open', {}); + } + + this.dataAdapter.query(params, function (data) { + self.trigger('results:all', { + data: data, + query: params + }); + }); + }); + + this.on('query:append', function (params) { + this.dataAdapter.query(params, function (data) { + self.trigger('results:append', { + data: data, + query: params + }); + }); + }); + + this.on('open', function(){ + // Focus on the active element when opening dropdown. + // Needs 1 ms delay because of other 1 ms setTimeouts when rendering. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1); + }); + + $(document).on('keydown', function (evt) { + var key = evt.which; + if (self.isOpen()) { + if (key === KEYS.ESC || key === KEYS.TAB || + (key === KEYS.UP && evt.altKey)) { + self.close(); + + evt.preventDefault(); + } else if (key === KEYS.ENTER) { + self.trigger('results:select', {}); + + evt.preventDefault(); + } else if ((key === KEYS.SPACE && evt.ctrlKey)) { + self.trigger('results:toggle', {}); + + evt.preventDefault(); + } else if (key === KEYS.UP) { + self.trigger('results:previous', {}); + + evt.preventDefault(); + } else if (key === KEYS.DOWN) { + self.trigger('results:next', {}); + + evt.preventDefault(); + } + + // Move the focus to the selected element on keyboard navigation. + // Required for screen readers to work properly. + if (key === KEYS.DOWN || key === KEYS.UP) { + self.focusOnActiveElement(); + } else { + // Focus on the search if user starts typing. + var $searchField = self.$dropdown.find('.select2-search__field'); + if (! $searchField.length) { + $searchField = self.$container.find('.select2-search__field'); + } + $searchField.focus(); + // Focus back to active selection when finished typing. + // Small delay so typed character can be read by screen reader. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1000); + } + + } else if (self.hasFocus()) { + if (key === KEYS.ENTER || key === KEYS.SPACE || + (key === KEYS.DOWN && evt.altKey)) { + self.open(); + evt.preventDefault(); + } + } + }); + }; + + Select2.prototype.focusOnActiveElement = function () { + // Don't mess with the focus on touchscreens because it causes havoc with on-screen keyboards. + if (! Utils.isTouchscreen()) { + this.$results.find('li.select2-results__option--highlighted').focus(); + } + }; + + Select2.prototype._syncAttributes = function () { + this.options.set('disabled', this.$element.prop('disabled')); + + if (this.options.get('disabled')) { + if (this.isOpen()) { + this.close(); + } + + this.trigger('disable', {}); + } else { + this.trigger('enable', {}); + } + }; + + Select2.prototype._syncSubtree = function (evt, mutations) { + var changed = false; + var self = this; + + // Ignore any mutation events raised for elements that aren't options or + // optgroups. This handles the case when the select element is destroyed + if ( + evt && evt.target && ( + evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' + ) + ) { + return; + } + + if (!mutations) { + // If mutation events aren't supported, then we can only assume that the + // change affected the selections + changed = true; + } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { + for (var n = 0; n < mutations.addedNodes.length; n++) { + var node = mutations.addedNodes[n]; + + if (node.selected) { + changed = true; + } + } + } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { + changed = true; + } + + // Only re-pull the data if we think there is a change + if (changed) { + this.dataAdapter.current(function (currentData) { + self.trigger('selection:update', { + data: currentData + }); + }); + } + }; + + /** + * Override the trigger method to automatically trigger pre-events when + * there are events that can be prevented. + */ + Select2.prototype.trigger = function (name, args) { + var actualTrigger = Select2.__super__.trigger; + var preTriggerMap = { + 'open': 'opening', + 'close': 'closing', + 'select': 'selecting', + 'unselect': 'unselecting' + }; + + if (args === undefined) { + args = {}; + } + + if (name in preTriggerMap) { + var preTriggerName = preTriggerMap[name]; + var preTriggerArgs = { + prevented: false, + name: name, + args: args + }; + + actualTrigger.call(this, preTriggerName, preTriggerArgs); + + if (preTriggerArgs.prevented) { + args.prevented = true; + + return; + } + } + + actualTrigger.call(this, name, args); + }; + + Select2.prototype.toggleDropdown = function () { + if (this.options.get('disabled')) { + return; + } + + if (this.isOpen()) { + this.close(); + } else { + this.open(); + } + }; + + Select2.prototype.open = function () { + if (this.isOpen()) { + return; + } + + this.trigger('query', {}); + }; + + Select2.prototype.close = function () { + if (!this.isOpen()) { + return; + } + + this.trigger('close', {}); + }; + + Select2.prototype.isOpen = function () { + return this.$container.hasClass('select2-container--open'); + }; + + Select2.prototype.hasFocus = function () { + return this.$container.hasClass('select2-container--focus'); + }; + + Select2.prototype.focus = function (data) { + // No need to re-trigger focus events if we are already focused + if (this.hasFocus()) { + return; + } + + this.$container.addClass('select2-container--focus'); + this.trigger('focus', {}); + }; + + Select2.prototype.enable = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will' + + ' be removed in later Select2 versions. Use $element.prop("disabled")' + + ' instead.' + ); + } + + if (args == null || args.length === 0) { + args = [true]; + } + + var disabled = !args[0]; + + this.$element.prop('disabled', disabled); + }; + + Select2.prototype.data = function () { + if (this.options.get('debug') && + arguments.length > 0 && window.console && console.warn) { + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You ' + + 'should consider setting the value instead using `$element.val()`.' + ); + } + + var data = []; + + this.dataAdapter.current(function (currentData) { + data = currentData; + }); + + return data; + }; + + Select2.prototype.val = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be' + + ' removed in later Select2 versions. Use $element.val() instead.' + ); + } + + if (args == null || args.length === 0) { + return this.$element.val(); + } + + var newVal = args[0]; + + if ($.isArray(newVal)) { + newVal = $.map(newVal, function (obj) { + return obj.toString(); + }); + } + + this.$element.val(newVal).trigger('change'); + }; + + Select2.prototype.destroy = function () { + this.$container.remove(); + + if (this.$element[0].detachEvent) { + this.$element[0].detachEvent('onpropertychange', this._syncA); + } + + if (this._observer != null) { + this._observer.disconnect(); + this._observer = null; + } else if (this.$element[0].removeEventListener) { + this.$element[0] + .removeEventListener('DOMAttrModified', this._syncA, false); + this.$element[0] + .removeEventListener('DOMNodeInserted', this._syncS, false); + this.$element[0] + .removeEventListener('DOMNodeRemoved', this._syncS, false); + } + + this._syncA = null; + this._syncS = null; + + this.$element.off('.select2'); + this.$element.attr('tabindex', this.$element.data('old-tabindex')); + + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); + this.$element.removeData('select2'); + + this.dataAdapter.destroy(); + this.selection.destroy(); + this.dropdown.destroy(); + this.results.destroy(); + + this.dataAdapter = null; + this.selection = null; + this.dropdown = null; + this.results = null; + }; + + Select2.prototype.render = function () { + var $container = $( + '' + + '' + + '' + + '' + ); + + $container.attr('dir', this.options.get('dir')); + + this.$container = $container; + + this.$container.addClass('select2-container--' + this.options.get('theme')); + + $container.data('element', this.$element); + + return $container; + }; + + return Select2; +}); + +S2.define('select2/compat/utils',[ + 'jquery' +], function ($) { + function syncCssClasses ($dest, $src, adapter) { + var classes, replacements = [], adapted; + + classes = $.trim($dest.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Save all Select2 classes + if (this.indexOf('select2-') === 0) { + replacements.push(this); + } + }); + } + + classes = $.trim($src.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Only adapt non-Select2 classes + if (this.indexOf('select2-') !== 0) { + adapted = adapter(this); + + if (adapted != null) { + replacements.push(adapted); + } + } + }); + } + + $dest.attr('class', replacements.join(' ')); + } + + return { + syncCssClasses: syncCssClasses + }; +}); + +S2.define('select2/compat/containerCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _containerAdapter (clazz) { + return null; + } + + function ContainerCSS () { } + + ContainerCSS.prototype.render = function (decorated) { + var $container = decorated.call(this); + + var containerCssClass = this.options.get('containerCssClass') || ''; + + if ($.isFunction(containerCssClass)) { + containerCssClass = containerCssClass(this.$element); + } + + var containerCssAdapter = this.options.get('adaptContainerCssClass'); + containerCssAdapter = containerCssAdapter || _containerAdapter; + + if (containerCssClass.indexOf(':all:') !== -1) { + containerCssClass = containerCssClass.replace(':all:', ''); + + var _cssAdapter = containerCssAdapter; + + containerCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var containerCss = this.options.get('containerCss') || {}; + + if ($.isFunction(containerCss)) { + containerCss = containerCss(this.$element); + } + + CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); + + $container.css(containerCss); + $container.addClass(containerCssClass); + + return $container; + }; + + return ContainerCSS; +}); + +S2.define('select2/compat/dropdownCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _dropdownAdapter (clazz) { + return null; + } + + function DropdownCSS () { } + + DropdownCSS.prototype.render = function (decorated) { + var $dropdown = decorated.call(this); + + var dropdownCssClass = this.options.get('dropdownCssClass') || ''; + + if ($.isFunction(dropdownCssClass)) { + dropdownCssClass = dropdownCssClass(this.$element); + } + + var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); + dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; + + if (dropdownCssClass.indexOf(':all:') !== -1) { + dropdownCssClass = dropdownCssClass.replace(':all:', ''); + + var _cssAdapter = dropdownCssAdapter; + + dropdownCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var dropdownCss = this.options.get('dropdownCss') || {}; + + if ($.isFunction(dropdownCss)) { + dropdownCss = dropdownCss(this.$element); + } + + CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); + + $dropdown.css(dropdownCss); + $dropdown.addClass(dropdownCssClass); + + return $dropdown; + }; + + return DropdownCSS; +}); + +S2.define('select2/compat/initSelection',[ + 'jquery' +], function ($) { + function InitSelection (decorated, $element, options) { + if (options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `initSelection` option has been deprecated in favor' + + ' of a custom data adapter that overrides the `current` method. ' + + 'This method is now called multiple times instead of a single ' + + 'time when the instance is initialized. Support will be removed ' + + 'for the `initSelection` option in future versions of Select2' + ); + } + + this.initSelection = options.get('initSelection'); + this._isInitialized = false; + + decorated.call(this, $element, options); + } + + InitSelection.prototype.current = function (decorated, callback) { + var self = this; + + if (this._isInitialized) { + decorated.call(this, callback); + + return; + } + + this.initSelection.call(null, this.$element, function (data) { + self._isInitialized = true; + + if (!$.isArray(data)) { + data = [data]; + } + + callback(data); + }); + }; + + return InitSelection; +}); + +S2.define('select2/compat/inputData',[ + 'jquery' +], function ($) { + function InputData (decorated, $element, options) { + this._currentData = []; + this._valueSeparator = options.get('valueSeparator') || ','; + + if ($element.prop('type') === 'hidden') { + if (options.get('debug') && console && console.warn) { + console.warn( + 'Select2: Using a hidden input with Select2 is no longer ' + + 'supported and may stop working in the future. It is recommended ' + + 'to use a `');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this,f=b.id+"-results";a.call(this,b,d),b.on("open",function(){e.$search.attr("aria-owns",f),e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d="";return d+=null!=b?b.id:a.generateChars(4),d+="-result-",d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f),e.container.focusOnActiveElement()},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this,f=c.id+"-results";b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.attr("aria-owns",f),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}}),c.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
      • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var b=this;this.on("open",function(){b.$container.addClass("select2-container--open")}),this.on("close",function(){b.$container.removeClass("select2-container--open")}),this.on("enable",function(){b.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){b.$container.addClass("select2-container--disabled")}),this.on("blur",function(){b.$container.removeClass("select2-container--focus")}),this.on("query",function(a){b.isOpen()||b.trigger("open",{}),this.dataAdapter.query(a,function(c){b.trigger("results:all",{data:c,query:a})})}),this.on("query:append",function(a){this.dataAdapter.query(a,function(c){b.trigger("results:append",{data:c,query:a})})}),this.on("open",function(){setTimeout(function(){b.focusOnActiveElement()},1)}),a(document).on("keydown",function(a){var c=a.which;if(b.isOpen())if(c===d.ESC||c===d.TAB||c===d.UP&&a.altKey?(b.close(),a.preventDefault()):c===d.ENTER?(b.trigger("results:select",{}),a.preventDefault()):c===d.SPACE&&a.ctrlKey?(b.trigger("results:toggle",{}),a.preventDefault()):c===d.UP?(b.trigger("results:previous",{}),a.preventDefault()):c===d.DOWN&&(b.trigger("results:next",{}),a.preventDefault()),c===d.DOWN||c===d.UP)b.focusOnActiveElement();else{var e=b.$dropdown.find(".select2-search__field");e.length||(e=b.$container.find(".select2-search__field")),e.focus(),setTimeout(function(){b.focusOnActiveElement()},1e3)}else b.hasFocus()&&(c===d.ENTER||c===d.SPACE||c===d.DOWN&&a.altKey)&&(b.open(),a.preventDefault())})},e.prototype.focusOnActiveElement=function(){c.isTouchscreen()||this.$results.find("li.select2-results__option--highlighted").focus()},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `' + + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + var $rendered = decorated.call(this); + + this._transferTabIndex(); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + container.on('open', function () { + self.$search.attr('aria-owns', resultsId); + self.$search.trigger('focus'); + }); + + container.on('close', function () { + self.$search.val(''); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.trigger('focus'); + }); + + container.on('enable', function () { + self.$search.prop('disabled', false); + + self._transferTabIndex(); + }); + + container.on('disable', function () { + self.$search.prop('disabled', true); + }); + + container.on('focus', function (evt) { + self.$search.trigger('focus'); + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + + this.$selection.on('focusin', '.select2-search--inline', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('focusout', '.select2-search--inline', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', '.select2-search--inline', function (evt) { + evt.stopPropagation(); + + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + + var key = evt.which; + + if (key === KEYS.BACKSPACE && self.$search.val() === '') { + var $previousChoice = self.$searchContainer + .prev('.select2-selection__choice'); + + if ($previousChoice.length > 0) { + var item = $previousChoice.data('data'); + + self.searchRemoveChoice(item); + + evt.preventDefault(); + } + } + }); + + // Try to detect the IE version should the `documentMode` property that + // is stored on the document. This is only implemented in IE and is + // slightly cleaner than doing a user agent check. + // This property is not available in Edge, but Edge also doesn't have + // this bug. + var msie = document.documentMode; + var disableInputEvents = msie && msie <= 11; + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$selection.on( + 'input.searchcheck', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents) { + self.$selection.off('input.search input.searchcheck'); + return; + } + + // Unbind the duplicated `keyup` event + self.$selection.off('keyup.search'); + } + ); + + this.$selection.on( + 'keyup.search input.search', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents && evt.type === 'input') { + self.$selection.off('input.search input.searchcheck'); + return; + } + + var key = evt.which; + + // We can freely ignore events from modifier keys + if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { + return; + } + + // Tabbing will be handled during the `keydown` phase + if (key == KEYS.TAB) { + return; + } + + self.handleSearch(evt); + } + ); + }; + + /** + * This method will transfer the tabindex attribute from the rendered + * selection to the search box. This allows for the search box to be used as + * the primary focus instead of the selection container. + * + * @private + */ + Search.prototype._transferTabIndex = function (decorated) { + this.$search.attr('tabindex', this.$selection.attr('tabindex')); + this.$selection.attr('tabindex', '-1'); + }; + + Search.prototype.createPlaceholder = function (decorated, placeholder) { + this.$search.attr('placeholder', placeholder.text); + }; + + Search.prototype.update = function (decorated, data) { + var searchHadFocus = this.$search[0] == document.activeElement; + + this.$search.attr('placeholder', ''); + + decorated.call(this, data); + + this.$selection.find('.select2-selection__rendered') + .append(this.$searchContainer); + + this.resizeSearch(); + if (searchHadFocus) { + this.$search.focus(); + } + }; + + Search.prototype.handleSearch = function () { + this.resizeSearch(); + + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.searchRemoveChoice = function (decorated, item) { + this.trigger('unselect', { + data: item + }); + + this.$search.val(item.text); + this.handleSearch(); + }; + + Search.prototype.resizeSearch = function () { + this.$search.css('width', '25px'); + + var width = ''; + + if (this.$search.attr('placeholder') !== '') { + width = this.$selection.find('.select2-selection__rendered').innerWidth(); + } else { + var minimumWidth = this.$search.val().length + 1; + + width = (minimumWidth * 0.75) + 'em'; + } + + this.$search.css('width', width); + }; + + return Search; +}); + +S2.define('select2/selection/eventRelay',[ + 'jquery' +], function ($) { + function EventRelay () { } + + EventRelay.prototype.bind = function (decorated, container, $container) { + var self = this; + var relayEvents = [ + 'open', 'opening', + 'close', 'closing', + 'select', 'selecting', + 'unselect', 'unselecting' + ]; + + var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; + + decorated.call(this, container, $container); + + container.on('*', function (name, params) { + // Ignore events that should not be relayed + if ($.inArray(name, relayEvents) === -1) { + return; + } + + // The parameters should always be an object + params = params || {}; + + // Generate the jQuery event for the Select2 event + var evt = $.Event('select2:' + name, { + params: params + }); + + self.$element.trigger(evt); + + // Only handle preventable events if it was one + if ($.inArray(name, preventableEvents) === -1) { + return; + } + + params.prevented = evt.isDefaultPrevented(); + }); + }; + + return EventRelay; +}); + +S2.define('select2/translation',[ + 'jquery', + 'require' +], function ($, require) { + function Translation (dict) { + this.dict = dict || {}; + } + + Translation.prototype.all = function () { + return this.dict; + }; + + Translation.prototype.get = function (key) { + return this.dict[key]; + }; + + Translation.prototype.extend = function (translation) { + this.dict = $.extend({}, translation.all(), this.dict); + }; + + // Static functions + + Translation._cache = {}; + + Translation.loadPath = function (path) { + if (!(path in Translation._cache)) { + var translations = require(path); + + Translation._cache[path] = translations; + } + + return new Translation(Translation._cache[path]); + }; + + return Translation; +}); + +S2.define('select2/diacritics',[ + +], function () { + var diacritics = { + '\u24B6': 'A', + '\uFF21': 'A', + '\u00C0': 'A', + '\u00C1': 'A', + '\u00C2': 'A', + '\u1EA6': 'A', + '\u1EA4': 'A', + '\u1EAA': 'A', + '\u1EA8': 'A', + '\u00C3': 'A', + '\u0100': 'A', + '\u0102': 'A', + '\u1EB0': 'A', + '\u1EAE': 'A', + '\u1EB4': 'A', + '\u1EB2': 'A', + '\u0226': 'A', + '\u01E0': 'A', + '\u00C4': 'A', + '\u01DE': 'A', + '\u1EA2': 'A', + '\u00C5': 'A', + '\u01FA': 'A', + '\u01CD': 'A', + '\u0200': 'A', + '\u0202': 'A', + '\u1EA0': 'A', + '\u1EAC': 'A', + '\u1EB6': 'A', + '\u1E00': 'A', + '\u0104': 'A', + '\u023A': 'A', + '\u2C6F': 'A', + '\uA732': 'AA', + '\u00C6': 'AE', + '\u01FC': 'AE', + '\u01E2': 'AE', + '\uA734': 'AO', + '\uA736': 'AU', + '\uA738': 'AV', + '\uA73A': 'AV', + '\uA73C': 'AY', + '\u24B7': 'B', + '\uFF22': 'B', + '\u1E02': 'B', + '\u1E04': 'B', + '\u1E06': 'B', + '\u0243': 'B', + '\u0182': 'B', + '\u0181': 'B', + '\u24B8': 'C', + '\uFF23': 'C', + '\u0106': 'C', + '\u0108': 'C', + '\u010A': 'C', + '\u010C': 'C', + '\u00C7': 'C', + '\u1E08': 'C', + '\u0187': 'C', + '\u023B': 'C', + '\uA73E': 'C', + '\u24B9': 'D', + '\uFF24': 'D', + '\u1E0A': 'D', + '\u010E': 'D', + '\u1E0C': 'D', + '\u1E10': 'D', + '\u1E12': 'D', + '\u1E0E': 'D', + '\u0110': 'D', + '\u018B': 'D', + '\u018A': 'D', + '\u0189': 'D', + '\uA779': 'D', + '\u01F1': 'DZ', + '\u01C4': 'DZ', + '\u01F2': 'Dz', + '\u01C5': 'Dz', + '\u24BA': 'E', + '\uFF25': 'E', + '\u00C8': 'E', + '\u00C9': 'E', + '\u00CA': 'E', + '\u1EC0': 'E', + '\u1EBE': 'E', + '\u1EC4': 'E', + '\u1EC2': 'E', + '\u1EBC': 'E', + '\u0112': 'E', + '\u1E14': 'E', + '\u1E16': 'E', + '\u0114': 'E', + '\u0116': 'E', + '\u00CB': 'E', + '\u1EBA': 'E', + '\u011A': 'E', + '\u0204': 'E', + '\u0206': 'E', + '\u1EB8': 'E', + '\u1EC6': 'E', + '\u0228': 'E', + '\u1E1C': 'E', + '\u0118': 'E', + '\u1E18': 'E', + '\u1E1A': 'E', + '\u0190': 'E', + '\u018E': 'E', + '\u24BB': 'F', + '\uFF26': 'F', + '\u1E1E': 'F', + '\u0191': 'F', + '\uA77B': 'F', + '\u24BC': 'G', + '\uFF27': 'G', + '\u01F4': 'G', + '\u011C': 'G', + '\u1E20': 'G', + '\u011E': 'G', + '\u0120': 'G', + '\u01E6': 'G', + '\u0122': 'G', + '\u01E4': 'G', + '\u0193': 'G', + '\uA7A0': 'G', + '\uA77D': 'G', + '\uA77E': 'G', + '\u24BD': 'H', + '\uFF28': 'H', + '\u0124': 'H', + '\u1E22': 'H', + '\u1E26': 'H', + '\u021E': 'H', + '\u1E24': 'H', + '\u1E28': 'H', + '\u1E2A': 'H', + '\u0126': 'H', + '\u2C67': 'H', + '\u2C75': 'H', + '\uA78D': 'H', + '\u24BE': 'I', + '\uFF29': 'I', + '\u00CC': 'I', + '\u00CD': 'I', + '\u00CE': 'I', + '\u0128': 'I', + '\u012A': 'I', + '\u012C': 'I', + '\u0130': 'I', + '\u00CF': 'I', + '\u1E2E': 'I', + '\u1EC8': 'I', + '\u01CF': 'I', + '\u0208': 'I', + '\u020A': 'I', + '\u1ECA': 'I', + '\u012E': 'I', + '\u1E2C': 'I', + '\u0197': 'I', + '\u24BF': 'J', + '\uFF2A': 'J', + '\u0134': 'J', + '\u0248': 'J', + '\u24C0': 'K', + '\uFF2B': 'K', + '\u1E30': 'K', + '\u01E8': 'K', + '\u1E32': 'K', + '\u0136': 'K', + '\u1E34': 'K', + '\u0198': 'K', + '\u2C69': 'K', + '\uA740': 'K', + '\uA742': 'K', + '\uA744': 'K', + '\uA7A2': 'K', + '\u24C1': 'L', + '\uFF2C': 'L', + '\u013F': 'L', + '\u0139': 'L', + '\u013D': 'L', + '\u1E36': 'L', + '\u1E38': 'L', + '\u013B': 'L', + '\u1E3C': 'L', + '\u1E3A': 'L', + '\u0141': 'L', + '\u023D': 'L', + '\u2C62': 'L', + '\u2C60': 'L', + '\uA748': 'L', + '\uA746': 'L', + '\uA780': 'L', + '\u01C7': 'LJ', + '\u01C8': 'Lj', + '\u24C2': 'M', + '\uFF2D': 'M', + '\u1E3E': 'M', + '\u1E40': 'M', + '\u1E42': 'M', + '\u2C6E': 'M', + '\u019C': 'M', + '\u24C3': 'N', + '\uFF2E': 'N', + '\u01F8': 'N', + '\u0143': 'N', + '\u00D1': 'N', + '\u1E44': 'N', + '\u0147': 'N', + '\u1E46': 'N', + '\u0145': 'N', + '\u1E4A': 'N', + '\u1E48': 'N', + '\u0220': 'N', + '\u019D': 'N', + '\uA790': 'N', + '\uA7A4': 'N', + '\u01CA': 'NJ', + '\u01CB': 'Nj', + '\u24C4': 'O', + '\uFF2F': 'O', + '\u00D2': 'O', + '\u00D3': 'O', + '\u00D4': 'O', + '\u1ED2': 'O', + '\u1ED0': 'O', + '\u1ED6': 'O', + '\u1ED4': 'O', + '\u00D5': 'O', + '\u1E4C': 'O', + '\u022C': 'O', + '\u1E4E': 'O', + '\u014C': 'O', + '\u1E50': 'O', + '\u1E52': 'O', + '\u014E': 'O', + '\u022E': 'O', + '\u0230': 'O', + '\u00D6': 'O', + '\u022A': 'O', + '\u1ECE': 'O', + '\u0150': 'O', + '\u01D1': 'O', + '\u020C': 'O', + '\u020E': 'O', + '\u01A0': 'O', + '\u1EDC': 'O', + '\u1EDA': 'O', + '\u1EE0': 'O', + '\u1EDE': 'O', + '\u1EE2': 'O', + '\u1ECC': 'O', + '\u1ED8': 'O', + '\u01EA': 'O', + '\u01EC': 'O', + '\u00D8': 'O', + '\u01FE': 'O', + '\u0186': 'O', + '\u019F': 'O', + '\uA74A': 'O', + '\uA74C': 'O', + '\u01A2': 'OI', + '\uA74E': 'OO', + '\u0222': 'OU', + '\u24C5': 'P', + '\uFF30': 'P', + '\u1E54': 'P', + '\u1E56': 'P', + '\u01A4': 'P', + '\u2C63': 'P', + '\uA750': 'P', + '\uA752': 'P', + '\uA754': 'P', + '\u24C6': 'Q', + '\uFF31': 'Q', + '\uA756': 'Q', + '\uA758': 'Q', + '\u024A': 'Q', + '\u24C7': 'R', + '\uFF32': 'R', + '\u0154': 'R', + '\u1E58': 'R', + '\u0158': 'R', + '\u0210': 'R', + '\u0212': 'R', + '\u1E5A': 'R', + '\u1E5C': 'R', + '\u0156': 'R', + '\u1E5E': 'R', + '\u024C': 'R', + '\u2C64': 'R', + '\uA75A': 'R', + '\uA7A6': 'R', + '\uA782': 'R', + '\u24C8': 'S', + '\uFF33': 'S', + '\u1E9E': 'S', + '\u015A': 'S', + '\u1E64': 'S', + '\u015C': 'S', + '\u1E60': 'S', + '\u0160': 'S', + '\u1E66': 'S', + '\u1E62': 'S', + '\u1E68': 'S', + '\u0218': 'S', + '\u015E': 'S', + '\u2C7E': 'S', + '\uA7A8': 'S', + '\uA784': 'S', + '\u24C9': 'T', + '\uFF34': 'T', + '\u1E6A': 'T', + '\u0164': 'T', + '\u1E6C': 'T', + '\u021A': 'T', + '\u0162': 'T', + '\u1E70': 'T', + '\u1E6E': 'T', + '\u0166': 'T', + '\u01AC': 'T', + '\u01AE': 'T', + '\u023E': 'T', + '\uA786': 'T', + '\uA728': 'TZ', + '\u24CA': 'U', + '\uFF35': 'U', + '\u00D9': 'U', + '\u00DA': 'U', + '\u00DB': 'U', + '\u0168': 'U', + '\u1E78': 'U', + '\u016A': 'U', + '\u1E7A': 'U', + '\u016C': 'U', + '\u00DC': 'U', + '\u01DB': 'U', + '\u01D7': 'U', + '\u01D5': 'U', + '\u01D9': 'U', + '\u1EE6': 'U', + '\u016E': 'U', + '\u0170': 'U', + '\u01D3': 'U', + '\u0214': 'U', + '\u0216': 'U', + '\u01AF': 'U', + '\u1EEA': 'U', + '\u1EE8': 'U', + '\u1EEE': 'U', + '\u1EEC': 'U', + '\u1EF0': 'U', + '\u1EE4': 'U', + '\u1E72': 'U', + '\u0172': 'U', + '\u1E76': 'U', + '\u1E74': 'U', + '\u0244': 'U', + '\u24CB': 'V', + '\uFF36': 'V', + '\u1E7C': 'V', + '\u1E7E': 'V', + '\u01B2': 'V', + '\uA75E': 'V', + '\u0245': 'V', + '\uA760': 'VY', + '\u24CC': 'W', + '\uFF37': 'W', + '\u1E80': 'W', + '\u1E82': 'W', + '\u0174': 'W', + '\u1E86': 'W', + '\u1E84': 'W', + '\u1E88': 'W', + '\u2C72': 'W', + '\u24CD': 'X', + '\uFF38': 'X', + '\u1E8A': 'X', + '\u1E8C': 'X', + '\u24CE': 'Y', + '\uFF39': 'Y', + '\u1EF2': 'Y', + '\u00DD': 'Y', + '\u0176': 'Y', + '\u1EF8': 'Y', + '\u0232': 'Y', + '\u1E8E': 'Y', + '\u0178': 'Y', + '\u1EF6': 'Y', + '\u1EF4': 'Y', + '\u01B3': 'Y', + '\u024E': 'Y', + '\u1EFE': 'Y', + '\u24CF': 'Z', + '\uFF3A': 'Z', + '\u0179': 'Z', + '\u1E90': 'Z', + '\u017B': 'Z', + '\u017D': 'Z', + '\u1E92': 'Z', + '\u1E94': 'Z', + '\u01B5': 'Z', + '\u0224': 'Z', + '\u2C7F': 'Z', + '\u2C6B': 'Z', + '\uA762': 'Z', + '\u24D0': 'a', + '\uFF41': 'a', + '\u1E9A': 'a', + '\u00E0': 'a', + '\u00E1': 'a', + '\u00E2': 'a', + '\u1EA7': 'a', + '\u1EA5': 'a', + '\u1EAB': 'a', + '\u1EA9': 'a', + '\u00E3': 'a', + '\u0101': 'a', + '\u0103': 'a', + '\u1EB1': 'a', + '\u1EAF': 'a', + '\u1EB5': 'a', + '\u1EB3': 'a', + '\u0227': 'a', + '\u01E1': 'a', + '\u00E4': 'a', + '\u01DF': 'a', + '\u1EA3': 'a', + '\u00E5': 'a', + '\u01FB': 'a', + '\u01CE': 'a', + '\u0201': 'a', + '\u0203': 'a', + '\u1EA1': 'a', + '\u1EAD': 'a', + '\u1EB7': 'a', + '\u1E01': 'a', + '\u0105': 'a', + '\u2C65': 'a', + '\u0250': 'a', + '\uA733': 'aa', + '\u00E6': 'ae', + '\u01FD': 'ae', + '\u01E3': 'ae', + '\uA735': 'ao', + '\uA737': 'au', + '\uA739': 'av', + '\uA73B': 'av', + '\uA73D': 'ay', + '\u24D1': 'b', + '\uFF42': 'b', + '\u1E03': 'b', + '\u1E05': 'b', + '\u1E07': 'b', + '\u0180': 'b', + '\u0183': 'b', + '\u0253': 'b', + '\u24D2': 'c', + '\uFF43': 'c', + '\u0107': 'c', + '\u0109': 'c', + '\u010B': 'c', + '\u010D': 'c', + '\u00E7': 'c', + '\u1E09': 'c', + '\u0188': 'c', + '\u023C': 'c', + '\uA73F': 'c', + '\u2184': 'c', + '\u24D3': 'd', + '\uFF44': 'd', + '\u1E0B': 'd', + '\u010F': 'd', + '\u1E0D': 'd', + '\u1E11': 'd', + '\u1E13': 'd', + '\u1E0F': 'd', + '\u0111': 'd', + '\u018C': 'd', + '\u0256': 'd', + '\u0257': 'd', + '\uA77A': 'd', + '\u01F3': 'dz', + '\u01C6': 'dz', + '\u24D4': 'e', + '\uFF45': 'e', + '\u00E8': 'e', + '\u00E9': 'e', + '\u00EA': 'e', + '\u1EC1': 'e', + '\u1EBF': 'e', + '\u1EC5': 'e', + '\u1EC3': 'e', + '\u1EBD': 'e', + '\u0113': 'e', + '\u1E15': 'e', + '\u1E17': 'e', + '\u0115': 'e', + '\u0117': 'e', + '\u00EB': 'e', + '\u1EBB': 'e', + '\u011B': 'e', + '\u0205': 'e', + '\u0207': 'e', + '\u1EB9': 'e', + '\u1EC7': 'e', + '\u0229': 'e', + '\u1E1D': 'e', + '\u0119': 'e', + '\u1E19': 'e', + '\u1E1B': 'e', + '\u0247': 'e', + '\u025B': 'e', + '\u01DD': 'e', + '\u24D5': 'f', + '\uFF46': 'f', + '\u1E1F': 'f', + '\u0192': 'f', + '\uA77C': 'f', + '\u24D6': 'g', + '\uFF47': 'g', + '\u01F5': 'g', + '\u011D': 'g', + '\u1E21': 'g', + '\u011F': 'g', + '\u0121': 'g', + '\u01E7': 'g', + '\u0123': 'g', + '\u01E5': 'g', + '\u0260': 'g', + '\uA7A1': 'g', + '\u1D79': 'g', + '\uA77F': 'g', + '\u24D7': 'h', + '\uFF48': 'h', + '\u0125': 'h', + '\u1E23': 'h', + '\u1E27': 'h', + '\u021F': 'h', + '\u1E25': 'h', + '\u1E29': 'h', + '\u1E2B': 'h', + '\u1E96': 'h', + '\u0127': 'h', + '\u2C68': 'h', + '\u2C76': 'h', + '\u0265': 'h', + '\u0195': 'hv', + '\u24D8': 'i', + '\uFF49': 'i', + '\u00EC': 'i', + '\u00ED': 'i', + '\u00EE': 'i', + '\u0129': 'i', + '\u012B': 'i', + '\u012D': 'i', + '\u00EF': 'i', + '\u1E2F': 'i', + '\u1EC9': 'i', + '\u01D0': 'i', + '\u0209': 'i', + '\u020B': 'i', + '\u1ECB': 'i', + '\u012F': 'i', + '\u1E2D': 'i', + '\u0268': 'i', + '\u0131': 'i', + '\u24D9': 'j', + '\uFF4A': 'j', + '\u0135': 'j', + '\u01F0': 'j', + '\u0249': 'j', + '\u24DA': 'k', + '\uFF4B': 'k', + '\u1E31': 'k', + '\u01E9': 'k', + '\u1E33': 'k', + '\u0137': 'k', + '\u1E35': 'k', + '\u0199': 'k', + '\u2C6A': 'k', + '\uA741': 'k', + '\uA743': 'k', + '\uA745': 'k', + '\uA7A3': 'k', + '\u24DB': 'l', + '\uFF4C': 'l', + '\u0140': 'l', + '\u013A': 'l', + '\u013E': 'l', + '\u1E37': 'l', + '\u1E39': 'l', + '\u013C': 'l', + '\u1E3D': 'l', + '\u1E3B': 'l', + '\u017F': 'l', + '\u0142': 'l', + '\u019A': 'l', + '\u026B': 'l', + '\u2C61': 'l', + '\uA749': 'l', + '\uA781': 'l', + '\uA747': 'l', + '\u01C9': 'lj', + '\u24DC': 'm', + '\uFF4D': 'm', + '\u1E3F': 'm', + '\u1E41': 'm', + '\u1E43': 'm', + '\u0271': 'm', + '\u026F': 'm', + '\u24DD': 'n', + '\uFF4E': 'n', + '\u01F9': 'n', + '\u0144': 'n', + '\u00F1': 'n', + '\u1E45': 'n', + '\u0148': 'n', + '\u1E47': 'n', + '\u0146': 'n', + '\u1E4B': 'n', + '\u1E49': 'n', + '\u019E': 'n', + '\u0272': 'n', + '\u0149': 'n', + '\uA791': 'n', + '\uA7A5': 'n', + '\u01CC': 'nj', + '\u24DE': 'o', + '\uFF4F': 'o', + '\u00F2': 'o', + '\u00F3': 'o', + '\u00F4': 'o', + '\u1ED3': 'o', + '\u1ED1': 'o', + '\u1ED7': 'o', + '\u1ED5': 'o', + '\u00F5': 'o', + '\u1E4D': 'o', + '\u022D': 'o', + '\u1E4F': 'o', + '\u014D': 'o', + '\u1E51': 'o', + '\u1E53': 'o', + '\u014F': 'o', + '\u022F': 'o', + '\u0231': 'o', + '\u00F6': 'o', + '\u022B': 'o', + '\u1ECF': 'o', + '\u0151': 'o', + '\u01D2': 'o', + '\u020D': 'o', + '\u020F': 'o', + '\u01A1': 'o', + '\u1EDD': 'o', + '\u1EDB': 'o', + '\u1EE1': 'o', + '\u1EDF': 'o', + '\u1EE3': 'o', + '\u1ECD': 'o', + '\u1ED9': 'o', + '\u01EB': 'o', + '\u01ED': 'o', + '\u00F8': 'o', + '\u01FF': 'o', + '\u0254': 'o', + '\uA74B': 'o', + '\uA74D': 'o', + '\u0275': 'o', + '\u01A3': 'oi', + '\u0223': 'ou', + '\uA74F': 'oo', + '\u24DF': 'p', + '\uFF50': 'p', + '\u1E55': 'p', + '\u1E57': 'p', + '\u01A5': 'p', + '\u1D7D': 'p', + '\uA751': 'p', + '\uA753': 'p', + '\uA755': 'p', + '\u24E0': 'q', + '\uFF51': 'q', + '\u024B': 'q', + '\uA757': 'q', + '\uA759': 'q', + '\u24E1': 'r', + '\uFF52': 'r', + '\u0155': 'r', + '\u1E59': 'r', + '\u0159': 'r', + '\u0211': 'r', + '\u0213': 'r', + '\u1E5B': 'r', + '\u1E5D': 'r', + '\u0157': 'r', + '\u1E5F': 'r', + '\u024D': 'r', + '\u027D': 'r', + '\uA75B': 'r', + '\uA7A7': 'r', + '\uA783': 'r', + '\u24E2': 's', + '\uFF53': 's', + '\u00DF': 's', + '\u015B': 's', + '\u1E65': 's', + '\u015D': 's', + '\u1E61': 's', + '\u0161': 's', + '\u1E67': 's', + '\u1E63': 's', + '\u1E69': 's', + '\u0219': 's', + '\u015F': 's', + '\u023F': 's', + '\uA7A9': 's', + '\uA785': 's', + '\u1E9B': 's', + '\u24E3': 't', + '\uFF54': 't', + '\u1E6B': 't', + '\u1E97': 't', + '\u0165': 't', + '\u1E6D': 't', + '\u021B': 't', + '\u0163': 't', + '\u1E71': 't', + '\u1E6F': 't', + '\u0167': 't', + '\u01AD': 't', + '\u0288': 't', + '\u2C66': 't', + '\uA787': 't', + '\uA729': 'tz', + '\u24E4': 'u', + '\uFF55': 'u', + '\u00F9': 'u', + '\u00FA': 'u', + '\u00FB': 'u', + '\u0169': 'u', + '\u1E79': 'u', + '\u016B': 'u', + '\u1E7B': 'u', + '\u016D': 'u', + '\u00FC': 'u', + '\u01DC': 'u', + '\u01D8': 'u', + '\u01D6': 'u', + '\u01DA': 'u', + '\u1EE7': 'u', + '\u016F': 'u', + '\u0171': 'u', + '\u01D4': 'u', + '\u0215': 'u', + '\u0217': 'u', + '\u01B0': 'u', + '\u1EEB': 'u', + '\u1EE9': 'u', + '\u1EEF': 'u', + '\u1EED': 'u', + '\u1EF1': 'u', + '\u1EE5': 'u', + '\u1E73': 'u', + '\u0173': 'u', + '\u1E77': 'u', + '\u1E75': 'u', + '\u0289': 'u', + '\u24E5': 'v', + '\uFF56': 'v', + '\u1E7D': 'v', + '\u1E7F': 'v', + '\u028B': 'v', + '\uA75F': 'v', + '\u028C': 'v', + '\uA761': 'vy', + '\u24E6': 'w', + '\uFF57': 'w', + '\u1E81': 'w', + '\u1E83': 'w', + '\u0175': 'w', + '\u1E87': 'w', + '\u1E85': 'w', + '\u1E98': 'w', + '\u1E89': 'w', + '\u2C73': 'w', + '\u24E7': 'x', + '\uFF58': 'x', + '\u1E8B': 'x', + '\u1E8D': 'x', + '\u24E8': 'y', + '\uFF59': 'y', + '\u1EF3': 'y', + '\u00FD': 'y', + '\u0177': 'y', + '\u1EF9': 'y', + '\u0233': 'y', + '\u1E8F': 'y', + '\u00FF': 'y', + '\u1EF7': 'y', + '\u1E99': 'y', + '\u1EF5': 'y', + '\u01B4': 'y', + '\u024F': 'y', + '\u1EFF': 'y', + '\u24E9': 'z', + '\uFF5A': 'z', + '\u017A': 'z', + '\u1E91': 'z', + '\u017C': 'z', + '\u017E': 'z', + '\u1E93': 'z', + '\u1E95': 'z', + '\u01B6': 'z', + '\u0225': 'z', + '\u0240': 'z', + '\u2C6C': 'z', + '\uA763': 'z', + '\u0386': '\u0391', + '\u0388': '\u0395', + '\u0389': '\u0397', + '\u038A': '\u0399', + '\u03AA': '\u0399', + '\u038C': '\u039F', + '\u038E': '\u03A5', + '\u03AB': '\u03A5', + '\u038F': '\u03A9', + '\u03AC': '\u03B1', + '\u03AD': '\u03B5', + '\u03AE': '\u03B7', + '\u03AF': '\u03B9', + '\u03CA': '\u03B9', + '\u0390': '\u03B9', + '\u03CC': '\u03BF', + '\u03CD': '\u03C5', + '\u03CB': '\u03C5', + '\u03B0': '\u03C5', + '\u03C9': '\u03C9', + '\u03C2': '\u03C3' + }; + + return diacritics; +}); + +S2.define('select2/data/base',[ + '../utils' +], function (Utils) { + function BaseAdapter ($element, options) { + BaseAdapter.__super__.constructor.call(this); + } + + Utils.Extend(BaseAdapter, Utils.Observable); + + BaseAdapter.prototype.current = function (callback) { + throw new Error('The `current` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.query = function (params, callback) { + throw new Error('The `query` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.bind = function (container, $container) { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.destroy = function () { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.generateResultId = function (container, data) { + var id = ''; + + if (container != null) { + id += container.id + } else { + id += Utils.generateChars(4); + } + + id += '-result-'; + id += Utils.generateChars(4); + + if (data.id != null) { + id += '-' + data.id.toString(); + } else { + id += '-' + Utils.generateChars(4); + } + return id; + }; + + return BaseAdapter; +}); + +S2.define('select2/data/select',[ + './base', + '../utils', + 'jquery' +], function (BaseAdapter, Utils, $) { + function SelectAdapter ($element, options) { + this.$element = $element; + this.options = options; + + SelectAdapter.__super__.constructor.call(this); + } + + Utils.Extend(SelectAdapter, BaseAdapter); + + SelectAdapter.prototype.current = function (callback) { + var data = []; + var self = this; + + this.$element.find(':selected').each(function () { + var $option = $(this); + + var option = self.item($option); + + data.push(option); + }); + + callback(data); + }; + + SelectAdapter.prototype.select = function (data) { + var self = this; + + data.selected = true; + + // If data.element is a DOM node, use it instead + if ($(data.element).is('option')) { + data.element.selected = true; + + this.$element.trigger('change'); + + return; + } + + if (this.$element.prop('multiple')) { + this.current(function (currentData) { + var val = []; + + data = [data]; + data.push.apply(data, currentData); + + for (var d = 0; d < data.length; d++) { + var id = data[d].id; + + if ($.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + self.$element.trigger('change'); + }); + } else { + var val = data.id; + + this.$element.val(val); + this.$element.trigger('change'); + } + }; + + SelectAdapter.prototype.unselect = function (data) { + var self = this; + + if (!this.$element.prop('multiple')) { + return; + } + + data.selected = false; + + if ($(data.element).is('option')) { + data.element.selected = false; + + this.$element.trigger('change'); + + return; + } + + this.current(function (currentData) { + var val = []; + + for (var d = 0; d < currentData.length; d++) { + var id = currentData[d].id; + + if (id !== data.id && $.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + + self.$element.trigger('change'); + }); + }; + + SelectAdapter.prototype.bind = function (container, $container) { + var self = this; + + this.container = container; + + container.on('select', function (params) { + self.select(params.data); + }); + + container.on('unselect', function (params) { + self.unselect(params.data); + }); + }; + + SelectAdapter.prototype.destroy = function () { + // Remove anything added to child elements + this.$element.find('*').each(function () { + // Remove any custom data set by Select2 + $.removeData(this, 'data'); + }); + }; + + SelectAdapter.prototype.query = function (params, callback) { + var data = []; + var self = this; + + var $options = this.$element.children(); + + $options.each(function () { + var $option = $(this); + + if (!$option.is('option') && !$option.is('optgroup')) { + return; + } + + var option = self.item($option); + + var matches = self.matches(params, option); + + if (matches !== null) { + data.push(matches); + } + }); + + callback({ + results: data + }); + }; + + SelectAdapter.prototype.addOptions = function ($options) { + Utils.appendMany(this.$element, $options); + }; + + SelectAdapter.prototype.option = function (data) { + var option; + + if (data.children) { + option = document.createElement('optgroup'); + option.label = data.text; + } else { + option = document.createElement('option'); + + if (option.textContent !== undefined) { + option.textContent = data.text; + } else { + option.innerText = data.text; + } + } + + if (data.id !== undefined) { + option.value = data.id; + } + + if (data.disabled) { + option.disabled = true; + } + + if (data.selected) { + option.selected = true; + } + + if (data.title) { + option.title = data.title; + } + + var $option = $(option); + + var normalizedData = this._normalizeItem(data); + normalizedData.element = option; + + // Override the option's data with the combined data + $.data(option, 'data', normalizedData); + + return $option; + }; + + SelectAdapter.prototype.item = function ($option) { + var data = {}; + + data = $.data($option[0], 'data'); + + if (data != null) { + return data; + } + + if ($option.is('option')) { + data = { + id: $option.val(), + text: $option.text(), + disabled: $option.prop('disabled'), + selected: $option.prop('selected'), + title: $option.prop('title') + }; + } else if ($option.is('optgroup')) { + data = { + text: $option.prop('label'), + children: [], + title: $option.prop('title') + }; + + var $children = $option.children('option'); + var children = []; + + for (var c = 0; c < $children.length; c++) { + var $child = $($children[c]); + + var child = this.item($child); + + children.push(child); + } + + data.children = children; + } + + data = this._normalizeItem(data); + data.element = $option[0]; + + $.data($option[0], 'data', data); + + return data; + }; + + SelectAdapter.prototype._normalizeItem = function (item) { + if (!$.isPlainObject(item)) { + item = { + id: item, + text: item + }; + } + + item = $.extend({}, { + text: '' + }, item); + + var defaults = { + selected: false, + disabled: false + }; + + if (item.id != null) { + item.id = item.id.toString(); + } + + if (item.text != null) { + item.text = item.text.toString(); + } + + if (item._resultId == null && item.id) { + item._resultId = this.generateResultId(this.container, item); + } + + return $.extend({}, defaults, item); + }; + + SelectAdapter.prototype.matches = function (params, data) { + var matcher = this.options.get('matcher'); + + return matcher(params, data); + }; + + return SelectAdapter; +}); + +S2.define('select2/data/array',[ + './select', + '../utils', + 'jquery' +], function (SelectAdapter, Utils, $) { + function ArrayAdapter ($element, options) { + var data = options.get('data') || []; + + ArrayAdapter.__super__.constructor.call(this, $element, options); + + this.addOptions(this.convertToOptions(data)); + } + + Utils.Extend(ArrayAdapter, SelectAdapter); + + ArrayAdapter.prototype.select = function (data) { + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); + + if ($option.length === 0) { + $option = this.option(data); + + this.addOptions($option); + } + + ArrayAdapter.__super__.select.call(this, data); + }; + + ArrayAdapter.prototype.convertToOptions = function (data) { + var self = this; + + var $existing = this.$element.find('option'); + var existingIds = $existing.map(function () { + return self.item($(this)).id; + }).get(); + + var $options = []; + + // Filter out all items except for the one passed in the argument + function onlyItem (item) { + return function () { + return $(this).val() == item.id; + }; + } + + for (var d = 0; d < data.length; d++) { + var item = this._normalizeItem(data[d]); + + // Skip items which were pre-loaded, only merge the data + if ($.inArray(item.id, existingIds) >= 0) { + var $existingOption = $existing.filter(onlyItem(item)); + + var existingData = this.item($existingOption); + var newData = $.extend(true, {}, item, existingData); + + var $newOption = this.option(newData); + + $existingOption.replaceWith($newOption); + + continue; + } + + var $option = this.option(item); + + if (item.children) { + var $children = this.convertToOptions(item.children); + + Utils.appendMany($option, $children); + } + + $options.push($option); + } + + return $options; + }; + + return ArrayAdapter; +}); + +S2.define('select2/data/ajax',[ + './array', + '../utils', + 'jquery' +], function (ArrayAdapter, Utils, $) { + function AjaxAdapter ($element, options) { + this.ajaxOptions = this._applyDefaults(options.get('ajax')); + + if (this.ajaxOptions.processResults != null) { + this.processResults = this.ajaxOptions.processResults; + } + + AjaxAdapter.__super__.constructor.call(this, $element, options); + } + + Utils.Extend(AjaxAdapter, ArrayAdapter); + + AjaxAdapter.prototype._applyDefaults = function (options) { + var defaults = { + data: function (params) { + return $.extend({}, params, { + q: params.term + }); + }, + transport: function (params, success, failure) { + var $request = $.ajax(params); + + $request.then(success); + $request.fail(failure); + + return $request; + } + }; + + return $.extend({}, defaults, options, true); + }; + + AjaxAdapter.prototype.processResults = function (results) { + return results; + }; + + AjaxAdapter.prototype.query = function (params, callback) { + var matches = []; + var self = this; + + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + + this._request = null; + } + + var options = $.extend({ + type: 'GET' + }, this.ajaxOptions); + + if (typeof options.url === 'function') { + options.url = options.url.call(this.$element, params); + } + + if (typeof options.data === 'function') { + options.data = options.data.call(this.$element, params); + } + + function request () { + var $request = options.transport(options, function (data) { + var results = self.processResults(data, params); + + if (self.options.get('debug') && window.console && console.error) { + // Check to make sure that the response included a `results` key. + if (!results || !results.results || !$.isArray(results.results)) { + console.error( + 'Select2: The AJAX results did not return an array in the ' + + '`results` key of the response.' + ); + } + } + + callback(results); + self.container.focusOnActiveElement(); + }, function () { + // Attempt to detect if a request was aborted + // Only works if the transport exposes a status property + if ($request.status && $request.status === '0') { + return; + } + + self.trigger('results:message', { + message: 'errorLoading' + }); + }); + + self._request = $request; + } + + if (this.ajaxOptions.delay && params.term != null) { + if (this._queryTimeout) { + window.clearTimeout(this._queryTimeout); + } + + this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); + } else { + request(); + } + }; + + return AjaxAdapter; +}); + +S2.define('select2/data/tags',[ + 'jquery' +], function ($) { + function Tags (decorated, $element, options) { + var tags = options.get('tags'); + + var createTag = options.get('createTag'); + + if (createTag !== undefined) { + this.createTag = createTag; + } + + var insertTag = options.get('insertTag'); + + if (insertTag !== undefined) { + this.insertTag = insertTag; + } + + decorated.call(this, $element, options); + + if ($.isArray(tags)) { + for (var t = 0; t < tags.length; t++) { + var tag = tags[t]; + var item = this._normalizeItem(tag); + + var $option = this.option(item); + + this.$element.append($option); + } + } + } + + Tags.prototype.query = function (decorated, params, callback) { + var self = this; + + this._removeOldTags(); + + if (params.term == null || params.page != null) { + decorated.call(this, params, callback); + return; + } + + function wrapper (obj, child) { + var data = obj.results; + + for (var i = 0; i < data.length; i++) { + var option = data[i]; + + var checkChildren = ( + option.children != null && + !wrapper({ + results: option.children + }, true) + ); + + var optionText = (option.text || '').toUpperCase(); + var paramsTerm = (params.term || '').toUpperCase(); + + var checkText = optionText === paramsTerm; + + if (checkText || checkChildren) { + if (child) { + return false; + } + + obj.data = data; + callback(obj); + + return; + } + } + + if (child) { + return true; + } + + var tag = self.createTag(params); + + if (tag != null) { + var $option = self.option(tag); + $option.attr('data-select2-tag', true); + + self.addOptions([$option]); + + self.insertTag(data, tag); + } + + obj.results = data; + + callback(obj); + } + + decorated.call(this, params, wrapper); + }; + + Tags.prototype.createTag = function (decorated, params) { + var term = $.trim(params.term); + + if (term === '') { + return null; + } + + return { + id: term, + text: term + }; + }; + + Tags.prototype.insertTag = function (_, data, tag) { + data.unshift(tag); + }; + + Tags.prototype._removeOldTags = function (_) { + var tag = this._lastTag; + + var $options = this.$element.find('option[data-select2-tag]'); + + $options.each(function () { + if (this.selected) { + return; + } + + $(this).remove(); + }); + }; + + return Tags; +}); + +S2.define('select2/data/tokenizer',[ + 'jquery' +], function ($) { + function Tokenizer (decorated, $element, options) { + var tokenizer = options.get('tokenizer'); + + if (tokenizer !== undefined) { + this.tokenizer = tokenizer; + } + + decorated.call(this, $element, options); + } + + Tokenizer.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + this.$search = container.dropdown.$search || container.selection.$search || + $container.find('.select2-search__field'); + }; + + Tokenizer.prototype.query = function (decorated, params, callback) { + var self = this; + + function createAndSelect (data) { + // Normalize the data object so we can use it for checks + var item = self._normalizeItem(data); + + // Check if the data object already exists as a tag + // Select it if it doesn't + var $existingOptions = self.$element.find('option').filter(function () { + return $(this).val() === item.id; + }); + + // If an existing option wasn't found for it, create the option + if (!$existingOptions.length) { + var $option = self.option(item); + $option.attr('data-select2-tag', true); + + self._removeOldTags(); + self.addOptions([$option]); + } + + // Select the item, now that we know there is an option for it + select(item); + } + + function select (data) { + self.trigger('select', { + data: data + }); + } + + params.term = params.term || ''; + + var tokenData = this.tokenizer(params, this.options, createAndSelect); + + if (tokenData.term !== params.term) { + // Replace the search term if we have the search box + if (this.$search.length) { + this.$search.val(tokenData.term); + this.$search.focus(); + } + + params.term = tokenData.term; + } + + decorated.call(this, params, callback); + }; + + Tokenizer.prototype.tokenizer = function (_, params, options, callback) { + var separators = options.get('tokenSeparators') || []; + var term = params.term; + var i = 0; + + var createTag = this.createTag || function (params) { + return { + id: params.term, + text: params.term + }; + }; + + while (i < term.length) { + var termChar = term[i]; + + if ($.inArray(termChar, separators) === -1) { + i++; + + continue; + } + + var part = term.substr(0, i); + var partParams = $.extend({}, params, { + term: part + }); + + var data = createTag(partParams); + + if (data == null) { + i++; + continue; + } + + callback(data); + + // Reset the term to not include the tokenized portion + term = term.substr(i + 1) || ''; + i = 0; + } + + return { + term: term + }; + }; + + return Tokenizer; +}); + +S2.define('select2/data/minimumInputLength',[ + +], function () { + function MinimumInputLength (decorated, $e, options) { + this.minimumInputLength = options.get('minimumInputLength'); + + decorated.call(this, $e, options); + } + + MinimumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (params.term.length < this.minimumInputLength) { + this.trigger('results:message', { + message: 'inputTooShort', + args: { + minimum: this.minimumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MinimumInputLength; +}); + +S2.define('select2/data/maximumInputLength',[ + +], function () { + function MaximumInputLength (decorated, $e, options) { + this.maximumInputLength = options.get('maximumInputLength'); + + decorated.call(this, $e, options); + } + + MaximumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (this.maximumInputLength > 0 && + params.term.length > this.maximumInputLength) { + this.trigger('results:message', { + message: 'inputTooLong', + args: { + maximum: this.maximumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MaximumInputLength; +}); + +S2.define('select2/data/maximumSelectionLength',[ + +], function (){ + function MaximumSelectionLength (decorated, $e, options) { + this.maximumSelectionLength = options.get('maximumSelectionLength'); + + decorated.call(this, $e, options); + } + + MaximumSelectionLength.prototype.query = + function (decorated, params, callback) { + var self = this; + + this.current(function (currentData) { + var count = currentData != null ? currentData.length : 0; + if (self.maximumSelectionLength > 0 && + count >= self.maximumSelectionLength) { + self.trigger('results:message', { + message: 'maximumSelected', + args: { + maximum: self.maximumSelectionLength + } + }); + return; + } + decorated.call(self, params, callback); + }); + }; + + return MaximumSelectionLength; +}); + +S2.define('select2/dropdown',[ + 'jquery', + './utils' +], function ($, Utils) { + function Dropdown ($element, options) { + this.$element = $element; + this.options = options; + + Dropdown.__super__.constructor.call(this); + } + + Utils.Extend(Dropdown, Utils.Observable); + + Dropdown.prototype.render = function () { + var $dropdown = $( + '' + + '' + + '' + ); + + $dropdown.attr('dir', this.options.get('dir')); + + this.$dropdown = $dropdown; + + return $dropdown; + }; + + Dropdown.prototype.bind = function () { + // Should be implemented in subclasses + }; + + Dropdown.prototype.position = function ($dropdown, $container) { + // Should be implmented in subclasses + }; + + Dropdown.prototype.destroy = function () { + // Remove the dropdown from the DOM + this.$dropdown.remove(); + }; + + return Dropdown; +}); + +S2.define('select2/dropdown/search',[ + 'jquery', + '../utils' +], function ($, Utils) { + function Search () { } + + Search.prototype.render = function (decorated) { + var $rendered = decorated.call(this); + + var $search = $( + '' + + '' + + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + $rendered.prepend($search); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + this.$search.on('keydown', function (evt) { + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + }); + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$search.on('input', function (evt) { + // Unbind the duplicated `keyup` event + $(this).off('keyup'); + }); + + this.$search.on('keyup input', function (evt) { + self.handleSearch(evt); + }); + + container.on('open', function () { + self.$search.attr('tabindex', 0); + self.$search.attr('aria-owns', resultsId); + self.$search.focus(); + + window.setTimeout(function () { + self.$search.focus(); + }, 0); + }); + + container.on('close', function () { + self.$search.attr('tabindex', -1); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.val(''); + }); + + container.on('focus', function () { + if (container.isOpen()) { + self.$search.focus(); + } + }); + + container.on('results:all', function (params) { + if (params.query.term == null || params.query.term === '') { + var showSearch = self.showSearch(params); + + if (showSearch) { + self.$searchContainer.removeClass('select2-search--hide'); + } else { + self.$searchContainer.addClass('select2-search--hide'); + } + } + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + }; + + Search.prototype.handleSearch = function (evt) { + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.showSearch = function (_, params) { + return true; + }; + + return Search; +}); + +S2.define('select2/dropdown/hidePlaceholder',[ + +], function () { + function HidePlaceholder (decorated, $element, options, dataAdapter) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options, dataAdapter); + } + + HidePlaceholder.prototype.append = function (decorated, data) { + data.results = this.removePlaceholder(data.results); + + decorated.call(this, data); + }; + + HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + HidePlaceholder.prototype.removePlaceholder = function (_, data) { + var modifiedData = data.slice(0); + + for (var d = data.length - 1; d >= 0; d--) { + var item = data[d]; + + if (this.placeholder.id === item.id) { + modifiedData.splice(d, 1); + } + } + + return modifiedData; + }; + + return HidePlaceholder; +}); + +S2.define('select2/dropdown/infiniteScroll',[ + 'jquery' +], function ($) { + function InfiniteScroll (decorated, $element, options, dataAdapter) { + this.lastParams = {}; + + decorated.call(this, $element, options, dataAdapter); + + this.$loadingMore = this.createLoadingMore(); + this.loading = false; + } + + InfiniteScroll.prototype.append = function (decorated, data) { + this.$loadingMore.remove(); + this.loading = false; + + decorated.call(this, data); + + if (this.showLoadingMore(data)) { + this.$results.append(this.$loadingMore); + } + }; + + InfiniteScroll.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('query', function (params) { + self.lastParams = params; + self.loading = true; + }); + + container.on('query:append', function (params) { + self.lastParams = params; + self.loading = true; + }); + + this.$results.on('scroll', function () { + var isLoadMoreVisible = $.contains( + document.documentElement, + self.$loadingMore[0] + ); + + if (self.loading || !isLoadMoreVisible) { + return; + } + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var loadingMoreOffset = self.$loadingMore.offset().top + + self.$loadingMore.outerHeight(false); + + if (currentOffset + 50 >= loadingMoreOffset) { + self.loadMore(); + } + }); + }; + + InfiniteScroll.prototype.loadMore = function () { + this.loading = true; + + var params = $.extend({}, {page: 1}, this.lastParams); + + params.page++; + + this.trigger('query:append', params); + }; + + InfiniteScroll.prototype.showLoadingMore = function (_, data) { + return data.pagination && data.pagination.more; + }; + + InfiniteScroll.prototype.createLoadingMore = function () { + var $option = $( + '
      • ' + ); + + var message = this.options.get('translations').get('loadingMore'); + + $option.html(message(this.lastParams)); + + return $option; + }; + + return InfiniteScroll; +}); + +S2.define('select2/dropdown/attachBody',[ + 'jquery', + '../utils' +], function ($, Utils) { + function AttachBody (decorated, $element, options) { + this.$dropdownParent = options.get('dropdownParent') || $(document.body); + + decorated.call(this, $element, options); + } + + AttachBody.prototype.bind = function (decorated, container, $container) { + var self = this; + + var setupResultsEvents = false; + + decorated.call(this, container, $container); + + container.on('open', function () { + self._showDropdown(); + self._attachPositioningHandler(container); + + if (!setupResultsEvents) { + setupResultsEvents = true; + + container.on('results:all', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + + container.on('results:append', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + } + }); + + container.on('close', function () { + self._hideDropdown(); + self._detachPositioningHandler(container); + }); + + this.$dropdownContainer.on('mousedown', function (evt) { + evt.stopPropagation(); + }); + }; + + AttachBody.prototype.destroy = function (decorated) { + decorated.call(this); + + this.$dropdownContainer.remove(); + }; + + AttachBody.prototype.position = function (decorated, $dropdown, $container) { + // Clone all of the container classes + $dropdown.attr('class', $container.attr('class')); + + $dropdown.removeClass('select2'); + $dropdown.addClass('select2-container--open'); + + $dropdown.css({ + position: 'absolute', + top: -999999 + }); + + this.$container = $container; + }; + + AttachBody.prototype.render = function (decorated) { + var $container = $(''); + + var $dropdown = decorated.call(this); + $container.append($dropdown); + + this.$dropdownContainer = $container; + + return $container; + }; + + AttachBody.prototype._hideDropdown = function (decorated) { + this.$dropdownContainer.detach(); + }; + + AttachBody.prototype._attachPositioningHandler = + function (decorated, container) { + var self = this; + + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.each(function () { + $(this).data('select2-scroll-position', { + x: $(this).scrollLeft(), + y: $(this).scrollTop() + }); + }); + + $watchers.on(scrollEvent, function (ev) { + var position = $(this).data('select2-scroll-position'); + $(this).scrollTop(position.y); + }); + + $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, + function (e) { + self._positionDropdown(); + self._resizeDropdown(); + }); + }; + + AttachBody.prototype._detachPositioningHandler = + function (decorated, container) { + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.off(scrollEvent); + + $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); + }; + + AttachBody.prototype._positionDropdown = function () { + var $window = $(window); + + var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); + var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); + + var newDirection = null; + + var offset = this.$container.offset(); + + offset.bottom = offset.top + this.$container.outerHeight(false); + + var container = { + height: this.$container.outerHeight(false) + }; + + container.top = offset.top; + container.bottom = offset.top + container.height; + + var dropdown = { + height: this.$dropdown.outerHeight(false) + }; + + var viewport = { + top: $window.scrollTop(), + bottom: $window.scrollTop() + $window.height() + }; + + var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); + var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); + + var css = { + left: offset.left, + top: container.bottom + }; + + // Determine what the parent element is to use for calciulating the offset + var $offsetParent = this.$dropdownParent; + + // For statically positoned elements, we need to get the element + // that is determining the offset + if ($offsetParent.css('position') === 'static') { + $offsetParent = $offsetParent.offsetParent(); + } + + var parentOffset = $offsetParent.offset(); + + css.top -= parentOffset.top; + css.left -= parentOffset.left; + + if (!isCurrentlyAbove && !isCurrentlyBelow) { + newDirection = 'below'; + } + + if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { + newDirection = 'above'; + } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { + newDirection = 'below'; + } + + if (newDirection == 'above' || + (isCurrentlyAbove && newDirection !== 'below')) { + css.top = container.top - parentOffset.top - dropdown.height; + } + + if (newDirection != null) { + this.$dropdown + .removeClass('select2-dropdown--below select2-dropdown--above') + .addClass('select2-dropdown--' + newDirection); + this.$container + .removeClass('select2-container--below select2-container--above') + .addClass('select2-container--' + newDirection); + } + + this.$dropdownContainer.css(css); + }; + + AttachBody.prototype._resizeDropdown = function () { + var css = { + width: this.$container.outerWidth(false) + 'px' + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.position = 'relative'; + css.width = 'auto'; + } + + this.$dropdown.css(css); + }; + + AttachBody.prototype._showDropdown = function (decorated) { + this.$dropdownContainer.appendTo(this.$dropdownParent); + + this._positionDropdown(); + this._resizeDropdown(); + }; + + return AttachBody; +}); + +S2.define('select2/dropdown/minimumResultsForSearch',[ + +], function () { + function countResults (data) { + var count = 0; + + for (var d = 0; d < data.length; d++) { + var item = data[d]; + + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + } + + return count; + } + + function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { + this.minimumResultsForSearch = options.get('minimumResultsForSearch'); + + if (this.minimumResultsForSearch < 0) { + this.minimumResultsForSearch = Infinity; + } + + decorated.call(this, $element, options, dataAdapter); + } + + MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { + if (countResults(params.data.results) < this.minimumResultsForSearch) { + return false; + } + + return decorated.call(this, params); + }; + + return MinimumResultsForSearch; +}); + +S2.define('select2/dropdown/selectOnClose',[ + +], function () { + function SelectOnClose () { } + + SelectOnClose.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('close', function (params) { + self._handleSelectOnClose(params); + }); + }; + + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + + var $highlightedResults = this.getHighlightedResults(); + + // Only select highlighted results + if ($highlightedResults.length < 1) { + return; + } + + var data = $highlightedResults.data('data'); + + // Don't re-select already selected resulte + if ( + (data.element != null && data.element.selected) || + (data.element == null && data.selected) + ) { + return; + } + + this.trigger('select', { + data: data + }); + }; + + return SelectOnClose; +}); + +S2.define('select2/dropdown/closeOnSelect',[ + +], function () { + function CloseOnSelect () { } + + CloseOnSelect.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('select', function (evt) { + self._selectTriggered(evt); + }); + + container.on('unselect', function (evt) { + self._selectTriggered(evt); + }); + }; + + CloseOnSelect.prototype._selectTriggered = function (_, evt) { + var originalEvent = evt.originalEvent; + + // Don't close if the control key is being held + if (originalEvent && originalEvent.ctrlKey) { + return; + } + + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); + }; + + return CloseOnSelect; +}); + +S2.define('select2/i18n/en',[],function () { + // English + return { + errorLoading: function () { + return 'The results could not be loaded.'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'Please delete ' + overChars + ' character'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'Please enter ' + remainingChars + ' or more characters'; + + return message; + }, + loadingMore: function () { + return 'Loading more results…'; + }, + maximumSelected: function (args) { + var message = 'You can only select ' + args.maximum + ' item'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'No results found'; + }, + searching: function () { + return 'Searching…'; + } + }; +}); + +S2.define('select2/defaults',[ + 'jquery', + 'require', + + './results', + + './selection/single', + './selection/multiple', + './selection/placeholder', + './selection/allowClear', + './selection/search', + './selection/eventRelay', + + './utils', + './translation', + './diacritics', + + './data/select', + './data/array', + './data/ajax', + './data/tags', + './data/tokenizer', + './data/minimumInputLength', + './data/maximumInputLength', + './data/maximumSelectionLength', + + './dropdown', + './dropdown/search', + './dropdown/hidePlaceholder', + './dropdown/infiniteScroll', + './dropdown/attachBody', + './dropdown/minimumResultsForSearch', + './dropdown/selectOnClose', + './dropdown/closeOnSelect', + + './i18n/en' +], function ($, require, + + ResultsList, + + SingleSelection, MultipleSelection, Placeholder, AllowClear, + SelectionSearch, EventRelay, + + Utils, Translation, DIACRITICS, + + SelectData, ArrayData, AjaxData, Tags, Tokenizer, + MinimumInputLength, MaximumInputLength, MaximumSelectionLength, + + Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, + AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, + + EnglishTranslation) { + function Defaults () { + this.reset(); + } + + Defaults.prototype.apply = function (options) { + options = $.extend(true, {}, this.defaults, options); + + if (options.dataAdapter == null) { + if (options.ajax != null) { + options.dataAdapter = AjaxData; + } else if (options.data != null) { + options.dataAdapter = ArrayData; + } else { + options.dataAdapter = SelectData; + } + + if (options.minimumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MinimumInputLength + ); + } + + if (options.maximumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumInputLength + ); + } + + if (options.maximumSelectionLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumSelectionLength + ); + } + + if (options.tags) { + options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); + } + + if (options.tokenSeparators != null || options.tokenizer != null) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Tokenizer + ); + } + + if (options.query != null) { + var Query = require(options.amdBase + 'compat/query'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Query + ); + } + + if (options.initSelection != null) { + var InitSelection = require(options.amdBase + 'compat/initSelection'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + InitSelection + ); + } + } + + if (options.resultsAdapter == null) { + options.resultsAdapter = ResultsList; + + if (options.ajax != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + InfiniteScroll + ); + } + + if (options.placeholder != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + HidePlaceholder + ); + } + + if (options.selectOnClose) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + SelectOnClose + ); + } + } + + if (options.dropdownAdapter == null) { + if (options.multiple) { + options.dropdownAdapter = Dropdown; + } else { + var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); + + options.dropdownAdapter = SearchableDropdown; + } + + if (options.minimumResultsForSearch !== 0) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + MinimumResultsForSearch + ); + } + + if (options.closeOnSelect) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + CloseOnSelect + ); + } + + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + AttachBody + ); + } + + if (options.selectionAdapter == null) { + if (options.multiple) { + options.selectionAdapter = MultipleSelection; + } else { + options.selectionAdapter = SingleSelection; + } + + // Add the placeholder mixin if a placeholder was specified + if (options.placeholder != null) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + Placeholder + ); + } + + if (options.allowClear) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + AllowClear + ); + } + + if (options.multiple) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + SelectionSearch + ); + } + + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + EventRelay + ); + } + + if (typeof options.language === 'string') { + // Check if the language is specified with a region + if (options.language.indexOf('-') > 0) { + // Extract the region information if it is included + var languageParts = options.language.split('-'); + var baseLanguage = languageParts[0]; + + options.language = [options.language, baseLanguage]; + } else { + options.language = [options.language]; + } + } + + if ($.isArray(options.language)) { + var languages = new Translation(); + options.language.push('en'); + + var languageNames = options.language; + + for (var l = 0; l < languageNames.length; l++) { + var name = languageNames[l]; + var language = {}; + + try { + // Try to load it with the original name + language = Translation.loadPath(name); + } catch (e) { + try { + // If we couldn't load it, check if it wasn't the full path + name = this.defaults.amdLanguageBase + name; + language = Translation.loadPath(name); + } catch (ex) { + // The translation could not be loaded at all. Sometimes this is + // because of a configuration problem, other times this can be + // because of how Select2 helps load all possible translation files. + if (options.debug && window.console && console.warn) { + console.warn( + 'Select2: The language file for "' + name + '" could not be ' + + 'automatically loaded. A fallback will be used instead.' + ); + } + + continue; + } + } + + languages.extend(language); + } + + options.translations = languages; + } else { + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; + } + + return options; + }; + + Defaults.prototype.reset = function () { + function stripDiacritics (text) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return text.replace(/[^\u0000-\u007E]/g, match); + } + + function matcher (params, data) { + // Always return the object if there is nothing to compare + if ($.trim(params.term) === '') { + return data; + } + + // Do a recursive check for options with children + if (data.children && data.children.length > 0) { + // Clone the data object if there are children + // This is required as we modify the object to remove any non-matches + var match = $.extend(true, {}, data); + + // Check each child of the option + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + var matches = matcher(params, child); + + // If there wasn't a match, remove the object in the array + if (matches == null) { + match.children.splice(c, 1); + } + } + + // If any children matched, return the new object + if (match.children.length > 0) { + return match; + } + + // If there were no matching children, check just the plain object + return matcher(params, match); + } + + var original = stripDiacritics(data.text).toUpperCase(); + var term = stripDiacritics(params.term).toUpperCase(); + + // Check if the text contains the term + if (original.indexOf(term) > -1) { + return data; + } + + // If it doesn't contain the term, don't return anything + return null; + } + + this.defaults = { + amdBase: './', + amdLanguageBase: './i18n/', + closeOnSelect: true, + debug: false, + dropdownAutoWidth: false, + escapeMarkup: Utils.escapeMarkup, + language: EnglishTranslation, + matcher: matcher, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: false, + sorter: function (data) { + return data; + }, + templateResult: function (result) { + return result.text; + }, + templateSelection: function (selection) { + return selection.text; + }, + theme: 'default', + width: 'resolve' + }; + }; + + Defaults.prototype.set = function (key, value) { + var camelKey = $.camelCase(key); + + var data = {}; + data[camelKey] = value; + + var convertedData = Utils._convertData(data); + + $.extend(this.defaults, convertedData); + }; + + var defaults = new Defaults(); + + return defaults; +}); + +S2.define('select2/options',[ + 'require', + 'jquery', + './defaults', + './utils' +], function (require, $, Defaults, Utils) { + function Options (options, $element) { + this.options = options; + + if ($element != null) { + this.fromElement($element); + } + + this.options = Defaults.apply(this.options); + + if ($element && $element.is('input')) { + var InputCompat = require(this.get('amdBase') + 'compat/inputData'); + + this.options.dataAdapter = Utils.Decorate( + this.options.dataAdapter, + InputCompat + ); + } + } + + Options.prototype.fromElement = function ($e) { + var excludedData = ['select2']; + + if (this.options.multiple == null) { + this.options.multiple = $e.prop('multiple'); + } + + if (this.options.disabled == null) { + this.options.disabled = $e.prop('disabled'); + } + + if (this.options.language == null) { + if ($e.prop('lang')) { + this.options.language = $e.prop('lang').toLowerCase(); + } else if ($e.closest('[lang]').prop('lang')) { + this.options.language = $e.closest('[lang]').prop('lang'); + } + } + + if (this.options.dir == null) { + if ($e.prop('dir')) { + this.options.dir = $e.prop('dir'); + } else if ($e.closest('[dir]').prop('dir')) { + this.options.dir = $e.closest('[dir]').prop('dir'); + } else { + this.options.dir = 'ltr'; + } + } + + $e.prop('disabled', this.options.disabled); + $e.prop('multiple', this.options.multiple); + + if ($e.data('select2Tags')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to ' + + 'use the `data-data` and `data-tags="true"` attributes and will be ' + + 'removed in future versions of Select2.' + ); + } + + $e.data('data', $e.data('select2Tags')); + $e.data('tags', true); + } + + if ($e.data('ajaxUrl')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-ajax-url` attribute has been changed to ' + + '`data-ajax--url` and support for the old attribute will be removed' + + ' in future versions of Select2.' + ); + } + + $e.attr('ajax--url', $e.data('ajaxUrl')); + $e.data('ajax--url', $e.data('ajaxUrl')); + } + + var dataset = {}; + + // Prefer the element's `dataset` attribute if it exists + // jQuery 1.x does not correctly handle data attributes with multiple dashes + if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { + dataset = $.extend(true, {}, $e[0].dataset, $e.data()); + } else { + dataset = $e.data(); + } + + var data = $.extend(true, {}, dataset); + + data = Utils._convertData(data); + + for (var key in data) { + if ($.inArray(key, excludedData) > -1) { + continue; + } + + if ($.isPlainObject(this.options[key])) { + $.extend(this.options[key], data[key]); + } else { + this.options[key] = data[key]; + } + } + + return this; + }; + + Options.prototype.get = function (key) { + return this.options[key]; + }; + + Options.prototype.set = function (key, val) { + this.options[key] = val; + }; + + return Options; +}); + +S2.define('select2/core',[ + 'jquery', + './options', + './utils', + './keys' +], function ($, Options, Utils, KEYS) { + var Select2 = function ($element, options) { + if ($element.data('select2') != null) { + $element.data('select2').destroy(); + } + + this.$element = $element; + + this.id = this._generateId($element); + + options = options || {}; + + this.options = new Options(options, $element); + + Select2.__super__.constructor.call(this); + + // Set up the tabindex + + var tabindex = $element.attr('tabindex') || 0; + $element.data('old-tabindex', tabindex); + $element.attr('tabindex', '-1'); + + // Set up containers and adapters + + var DataAdapter = this.options.get('dataAdapter'); + this.dataAdapter = new DataAdapter($element, this.options); + + var $container = this.render(); + + this._placeContainer($container); + + var SelectionAdapter = this.options.get('selectionAdapter'); + this.selection = new SelectionAdapter($element, this.options); + this.$selection = this.selection.render(); + + this.selection.position(this.$selection, $container); + + var DropdownAdapter = this.options.get('dropdownAdapter'); + this.dropdown = new DropdownAdapter($element, this.options); + this.$dropdown = this.dropdown.render(); + + this.dropdown.position(this.$dropdown, $container); + + var ResultsAdapter = this.options.get('resultsAdapter'); + this.results = new ResultsAdapter($element, this.options, this.dataAdapter); + this.$results = this.results.render(); + + this.results.position(this.$results, this.$dropdown); + + // Bind events + + var self = this; + + // Bind the container to all of the adapters + this._bindAdapters(); + + // Register any DOM event handlers + this._registerDomEvents(); + + // Register any internal event handlers + this._registerDataEvents(); + this._registerSelectionEvents(); + this._registerDropdownEvents(); + this._registerResultsEvents(); + this._registerEvents(); + + // Set the initial state + this.dataAdapter.current(function (initialData) { + self.trigger('selection:update', { + data: initialData + }); + }); + + // Hide the original select + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + + // Synchronize any monitored attributes + this._syncAttributes(); + + $element.data('select2', this); + }; + + Utils.Extend(Select2, Utils.Observable); + + Select2.prototype._generateId = function ($element) { + var id = ''; + + if ($element.attr('id') != null) { + id = $element.attr('id'); + } else if ($element.attr('name') != null) { + id = $element.attr('name') + '-' + Utils.generateChars(2); + } else { + id = Utils.generateChars(4); + } + + id = id.replace(/(:|\.|\[|\]|,)/g, ''); + id = 'select2-' + id; + + return id; + }; + + Select2.prototype._placeContainer = function ($container) { + $container.insertAfter(this.$element); + + var width = this._resolveWidth(this.$element, this.options.get('width')); + + if (width != null) { + $container.css('width', width); + } + }; + + Select2.prototype._resolveWidth = function ($element, method) { + var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + + if (method == 'resolve') { + var styleWidth = this._resolveWidth($element, 'style'); + + if (styleWidth != null) { + return styleWidth; + } + + return this._resolveWidth($element, 'element'); + } + + if (method == 'element') { + var elementWidth = $element.outerWidth(false); + + if (elementWidth <= 0) { + return 'auto'; + } + + return elementWidth + 'px'; + } + + if (method == 'style') { + var style = $element.attr('style'); + + if (typeof(style) !== 'string') { + return null; + } + + var attrs = style.split(';'); + + for (var i = 0, l = attrs.length; i < l; i = i + 1) { + var attr = attrs[i].replace(/\s/g, ''); + var matches = attr.match(WIDTH); + + if (matches !== null && matches.length >= 1) { + return matches[1]; + } + } + + return null; + } + + return method; + }; + + Select2.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container); + this.selection.bind(this, this.$container); + + this.dropdown.bind(this, this.$container); + this.results.bind(this, this.$container); + }; + + Select2.prototype._registerDomEvents = function () { + var self = this; + + this.$element.on('change.select2', function () { + self.dataAdapter.current(function (data) { + self.trigger('selection:update', { + data: data + }); + }); + }); + + this.$element.on('focus.select2', function (evt) { + self.trigger('focus', evt); + }); + + this._syncA = Utils.bind(this._syncAttributes, this); + this._syncS = Utils.bind(this._syncSubtree, this); + + if (this.$element[0].attachEvent) { + this.$element[0].attachEvent('onpropertychange', this._syncA); + } + + var observer = window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver + ; + + if (observer != null) { + this._observer = new observer(function (mutations) { + $.each(mutations, self._syncA); + $.each(mutations, self._syncS); + }); + this._observer.observe(this.$element[0], { + attributes: true, + childList: true, + subtree: false + }); + } else if (this.$element[0].addEventListener) { + this.$element[0].addEventListener( + 'DOMAttrModified', + self._syncA, + false + ); + this.$element[0].addEventListener( + 'DOMNodeInserted', + self._syncS, + false + ); + this.$element[0].addEventListener( + 'DOMNodeRemoved', + self._syncS, + false + ); + } + }; + + Select2.prototype._registerDataEvents = function () { + var self = this; + + this.dataAdapter.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerSelectionEvents = function () { + var self = this; + var nonRelayEvents = ['toggle', 'focus']; + + this.selection.on('toggle', function () { + self.toggleDropdown(); + }); + + this.selection.on('focus', function (params) { + self.focus(params); + }); + + this.selection.on('*', function (name, params) { + if ($.inArray(name, nonRelayEvents) !== -1) { + return; + } + + self.trigger(name, params); + }); + }; + + Select2.prototype._registerDropdownEvents = function () { + var self = this; + + this.dropdown.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerResultsEvents = function () { + var self = this; + + this.results.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerEvents = function () { + var self = this; + + this.on('open', function () { + self.$container.addClass('select2-container--open'); + }); + + this.on('close', function () { + self.$container.removeClass('select2-container--open'); + }); + + this.on('enable', function () { + self.$container.removeClass('select2-container--disabled'); + }); + + this.on('disable', function () { + self.$container.addClass('select2-container--disabled'); + }); + + this.on('blur', function () { + self.$container.removeClass('select2-container--focus'); + }); + + this.on('query', function (params) { + if (!self.isOpen()) { + self.trigger('open', {}); + } + + this.dataAdapter.query(params, function (data) { + self.trigger('results:all', { + data: data, + query: params + }); + }); + }); + + this.on('query:append', function (params) { + this.dataAdapter.query(params, function (data) { + self.trigger('results:append', { + data: data, + query: params + }); + }); + }); + + this.on('open', function(){ + // Focus on the active element when opening dropdown. + // Needs 1 ms delay because of other 1 ms setTimeouts when rendering. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1); + }); + + $(document).on('keydown', function (evt) { + var key = evt.which; + if (self.isOpen()) { + if (key === KEYS.ESC || key === KEYS.TAB || + (key === KEYS.UP && evt.altKey)) { + self.close(); + + evt.preventDefault(); + } else if (key === KEYS.ENTER) { + self.trigger('results:select', {}); + + evt.preventDefault(); + } else if ((key === KEYS.SPACE && evt.ctrlKey)) { + self.trigger('results:toggle', {}); + + evt.preventDefault(); + } else if (key === KEYS.UP) { + self.trigger('results:previous', {}); + + evt.preventDefault(); + } else if (key === KEYS.DOWN) { + self.trigger('results:next', {}); + + evt.preventDefault(); + } + + // Move the focus to the selected element on keyboard navigation. + // Required for screen readers to work properly. + if (key === KEYS.DOWN || key === KEYS.UP) { + self.focusOnActiveElement(); + } else { + // Focus on the search if user starts typing. + var $searchField = self.$dropdown.find('.select2-search__field'); + if (! $searchField.length) { + $searchField = self.$container.find('.select2-search__field'); + } + $searchField.focus(); + // Focus back to active selection when finished typing. + // Small delay so typed character can be read by screen reader. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1000); + } + + } else if (self.hasFocus()) { + if (key === KEYS.ENTER || key === KEYS.SPACE || + (key === KEYS.DOWN && evt.altKey)) { + self.open(); + evt.preventDefault(); + } + } + }); + }; + + Select2.prototype.focusOnActiveElement = function () { + // Don't mess with the focus on touchscreens because it causes havoc with on-screen keyboards. + if (! Utils.isTouchscreen()) { + this.$results.find('li.select2-results__option--highlighted').focus(); + } + }; + + Select2.prototype._syncAttributes = function () { + this.options.set('disabled', this.$element.prop('disabled')); + + if (this.options.get('disabled')) { + if (this.isOpen()) { + this.close(); + } + + this.trigger('disable', {}); + } else { + this.trigger('enable', {}); + } + }; + + Select2.prototype._syncSubtree = function (evt, mutations) { + var changed = false; + var self = this; + + // Ignore any mutation events raised for elements that aren't options or + // optgroups. This handles the case when the select element is destroyed + if ( + evt && evt.target && ( + evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' + ) + ) { + return; + } + + if (!mutations) { + // If mutation events aren't supported, then we can only assume that the + // change affected the selections + changed = true; + } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { + for (var n = 0; n < mutations.addedNodes.length; n++) { + var node = mutations.addedNodes[n]; + + if (node.selected) { + changed = true; + } + } + } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { + changed = true; + } + + // Only re-pull the data if we think there is a change + if (changed) { + this.dataAdapter.current(function (currentData) { + self.trigger('selection:update', { + data: currentData + }); + }); + } + }; + + /** + * Override the trigger method to automatically trigger pre-events when + * there are events that can be prevented. + */ + Select2.prototype.trigger = function (name, args) { + var actualTrigger = Select2.__super__.trigger; + var preTriggerMap = { + 'open': 'opening', + 'close': 'closing', + 'select': 'selecting', + 'unselect': 'unselecting' + }; + + if (args === undefined) { + args = {}; + } + + if (name in preTriggerMap) { + var preTriggerName = preTriggerMap[name]; + var preTriggerArgs = { + prevented: false, + name: name, + args: args + }; + + actualTrigger.call(this, preTriggerName, preTriggerArgs); + + if (preTriggerArgs.prevented) { + args.prevented = true; + + return; + } + } + + actualTrigger.call(this, name, args); + }; + + Select2.prototype.toggleDropdown = function () { + if (this.options.get('disabled')) { + return; + } + + if (this.isOpen()) { + this.close(); + } else { + this.open(); + } + }; + + Select2.prototype.open = function () { + if (this.isOpen()) { + return; + } + + this.trigger('query', {}); + }; + + Select2.prototype.close = function () { + if (!this.isOpen()) { + return; + } + + this.trigger('close', {}); + }; + + Select2.prototype.isOpen = function () { + return this.$container.hasClass('select2-container--open'); + }; + + Select2.prototype.hasFocus = function () { + return this.$container.hasClass('select2-container--focus'); + }; + + Select2.prototype.focus = function (data) { + // No need to re-trigger focus events if we are already focused + if (this.hasFocus()) { + return; + } + + this.$container.addClass('select2-container--focus'); + this.trigger('focus', {}); + }; + + Select2.prototype.enable = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will' + + ' be removed in later Select2 versions. Use $element.prop("disabled")' + + ' instead.' + ); + } + + if (args == null || args.length === 0) { + args = [true]; + } + + var disabled = !args[0]; + + this.$element.prop('disabled', disabled); + }; + + Select2.prototype.data = function () { + if (this.options.get('debug') && + arguments.length > 0 && window.console && console.warn) { + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You ' + + 'should consider setting the value instead using `$element.val()`.' + ); + } + + var data = []; + + this.dataAdapter.current(function (currentData) { + data = currentData; + }); + + return data; + }; + + Select2.prototype.val = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be' + + ' removed in later Select2 versions. Use $element.val() instead.' + ); + } + + if (args == null || args.length === 0) { + return this.$element.val(); + } + + var newVal = args[0]; + + if ($.isArray(newVal)) { + newVal = $.map(newVal, function (obj) { + return obj.toString(); + }); + } + + this.$element.val(newVal).trigger('change'); + }; + + Select2.prototype.destroy = function () { + this.$container.remove(); + + if (this.$element[0].detachEvent) { + this.$element[0].detachEvent('onpropertychange', this._syncA); + } + + if (this._observer != null) { + this._observer.disconnect(); + this._observer = null; + } else if (this.$element[0].removeEventListener) { + this.$element[0] + .removeEventListener('DOMAttrModified', this._syncA, false); + this.$element[0] + .removeEventListener('DOMNodeInserted', this._syncS, false); + this.$element[0] + .removeEventListener('DOMNodeRemoved', this._syncS, false); + } + + this._syncA = null; + this._syncS = null; + + this.$element.off('.select2'); + this.$element.attr('tabindex', this.$element.data('old-tabindex')); + + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); + this.$element.removeData('select2'); + + this.dataAdapter.destroy(); + this.selection.destroy(); + this.dropdown.destroy(); + this.results.destroy(); + + this.dataAdapter = null; + this.selection = null; + this.dropdown = null; + this.results = null; + }; + + Select2.prototype.render = function () { + var $container = $( + '' + + '' + + '' + + '' + ); + + $container.attr('dir', this.options.get('dir')); + + this.$container = $container; + + this.$container.addClass('select2-container--' + this.options.get('theme')); + + $container.data('element', this.$element); + + return $container; + }; + + return Select2; +}); + +S2.define('jquery-mousewheel',[ + 'jquery' +], function ($) { + // Used to shim jQuery.mousewheel for non-full builds. + return $; +}); + +S2.define('jquery.select2',[ + 'jquery', + 'jquery-mousewheel', + + './select2/core', + './select2/defaults' +], function ($, _, Select2, Defaults) { + if ($.fn.selectWoo == null) { + // All methods that should return the element + var thisMethods = ['open', 'close', 'destroy']; + + $.fn.selectWoo = function (options) { + options = options || {}; + + if (typeof options === 'object') { + this.each(function () { + var instanceOptions = $.extend(true, {}, options); + + var instance = new Select2($(this), instanceOptions); + }); + + return this; + } else if (typeof options === 'string') { + var ret; + var args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + var instance = $(this).data('select2'); + + if (instance == null && window.console && console.error) { + console.error( + 'The select2(\'' + options + '\') method was called on an ' + + 'element that is not using Select2.' + ); + } + + ret = instance[options].apply(instance, args); + }); + + // Check if we should be returning `this` + if ($.inArray(options, thisMethods) > -1) { + return this; + } + + return ret; + } else { + throw new Error('Invalid arguments for Select2: ' + options); + } + }; + } + + if ($.fn.select2 != null && $.fn.select2.defaults != null) { + $.fn.selectWoo.defaults = $.fn.select2.defaults; + } + + if ($.fn.selectWoo.defaults == null) { + $.fn.selectWoo.defaults = Defaults; + } + + // Also register selectWoo under select2 if select2 is not already present. + $.fn.select2 = $.fn.select2 || $.fn.selectWoo; + + return Select2; +}); + + // Return the AMD loader configuration so it can be used outside of this file + return { + define: S2.define, + require: S2.require + }; +}()); + + // Autoload the jQuery bindings + // We know that all of the modules exist above this, so we're safe + var select2 = S2.require('jquery.select2'); + + // Hold the AMD module references on the jQuery function that was just loaded + // This allows Select2 to use the internal loader outside of this file, such + // as in the language files. + jQuery.fn.select2.amd = S2; + jQuery.fn.selectWoo.amd = S2; + + // Return the Select2 instance for anyone who is importing it. + return select2; +})); diff --git a/functions/kirki/assets/vendor/selectWoo/js/select2.min.js b/functions/kirki/assets/vendor/selectWoo/js/select2.min.js new file mode 100644 index 0000000..bf9600c --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/select2.min.js @@ -0,0 +1 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.isTouchscreen=function(){return void 0===c._isTouchscreenCache&&(c._isTouchscreenCache="ontouchstart"in document.documentElement),c._isTouchscreenCache},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
          ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a(''),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[data-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("data-selected","true"):b.attr("data-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"option","data-selected":"false",tabindex:-1};b.disabled&&(delete d["data-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["data-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d["aria-label"]=b.text,delete d["data-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";var i=a(h);this.template(b,h),i.attr("role","presentation");for(var j=[],k=0;k",{class:"select2-results__options select2-results__options--nested",role:"listbox"});n.append(j),g.attr("role","list"),g.append(h),g.append(n)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("data-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[data-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[data-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted").attr("aria-selected","true"),d.$results.attr("aria-activedescendant",a.element.attr("id"))}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[data-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("data-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[data-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected","false"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[data-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.options.get("minimumResultsForSearch");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),window.setTimeout(function(){d.$selection.focus()},1),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&b.data("element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.attr("role","combobox"),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("keydown",function(b){!a.isOpen()&&b.which>=48&&b.which<=90&&a.open()}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
            '),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('
          • ')},d.prototype.update=function(a){var b=this;if(this.clear(),0!==a.length){for(var d=[],e=0;e1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this,f=b.id+"-results";a.call(this,b,d),b.on("open",function(){e.$search.attr("aria-owns",f),e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d="";return d+=null!=b?b.id:a.generateChars(4),d+="-result-",d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f),e.container.focusOnActiveElement()},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this,f=c.id+"-results";b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.attr("aria-owns",f),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}}),c.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
          • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var b=this;this.on("open",function(){b.$container.addClass("select2-container--open")}),this.on("close",function(){b.$container.removeClass("select2-container--open")}),this.on("enable",function(){b.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){b.$container.addClass("select2-container--disabled")}),this.on("blur",function(){b.$container.removeClass("select2-container--focus")}),this.on("query",function(a){b.isOpen()||b.trigger("open",{}),this.dataAdapter.query(a,function(c){b.trigger("results:all",{data:c,query:a})})}),this.on("query:append",function(a){this.dataAdapter.query(a,function(c){b.trigger("results:append",{data:c,query:a})})}),this.on("open",function(){setTimeout(function(){b.focusOnActiveElement()},1)}),a(document).on("keydown",function(a){var c=a.which;if(b.isOpen())if(c===d.ESC||c===d.TAB||c===d.UP&&a.altKey?(b.close(),a.preventDefault()):c===d.ENTER?(b.trigger("results:select",{}),a.preventDefault()):c===d.SPACE&&a.ctrlKey?(b.trigger("results:toggle",{}),a.preventDefault()):c===d.UP?(b.trigger("results:previous",{}),a.preventDefault()):c===d.DOWN&&(b.trigger("results:next",{}),a.preventDefault()),c===d.DOWN||c===d.UP)b.focusOnActiveElement();else{var e=b.$dropdown.find(".select2-search__field");e.length||(e=b.$container.find(".select2-search__field")),e.focus(),setTimeout(function(){b.focusOnActiveElement()},1e3)}else b.hasFocus()&&(c===d.ENTER||c===d.SPACE||c===d.DOWN&&a.altKey)&&(b.open(),a.preventDefault())})},e.prototype.focusOnActiveElement=function(){c.isTouchscreen()||this.$results.find("li.select2-results__option--highlighted").focus()},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.selectWoo){var e=["open","close","destroy"];a.fn.selectWoo=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null!=a.fn.select2&&null!=a.fn.select2.defaults&&(a.fn.selectWoo.defaults=a.fn.select2.defaults),null==a.fn.selectWoo.defaults&&(a.fn.selectWoo.defaults=d),a.fn.select2=a.fn.select2||a.fn.selectWoo,c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,a.fn.selectWoo.amd=b,c}); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/js/selectWoo.full.js b/functions/kirki/assets/vendor/selectWoo/js/selectWoo.full.js new file mode 100644 index 0000000..d973690 --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/selectWoo.full.js @@ -0,0 +1,6553 @@ +/*! + * SelectWoo 1.0.1 + * https://github.com/woocommerce/selectWoo + * + * Released under the MIT license + * https://github.com/woocommerce/selectWoo/blob/master/LICENSE.md + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = function (root, jQuery) { + if (jQuery === undefined) { + // require('jQuery') returns a factory that requires window to + // build a jQuery instance, we normalize how we use modules + // that require this pattern but the window provided is a noop + // if it's defined (how jquery works) + if (typeof window !== 'undefined') { + jQuery = require('jquery'); + } + else { + jQuery = require('jquery')(root); + } + } + factory(jQuery); + return jQuery; + }; + } else { + // Browser globals + factory(jQuery); + } +} (function (jQuery) { + // This is needed so we can catch the AMD loader configuration and use it + // The inner file should be wrapped (by `banner.start.js`) in a function that + // returns the AMD loader references. + var S2 =(function () { + // Restore the Select2 AMD loader so it can be used + // Needed mostly in the language files, where the loader is not inserted + if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { + var S2 = jQuery.fn.select2.amd; + } +var S2;(function () { if (!S2 || !S2.requirejs) { +if (!S2) { S2 = {}; } else { require = S2; } +/** + * @license almond 0.3.3 Copyright jQuery Foundation and other contributors. + * Released under MIT license, http://github.com/requirejs/almond/LICENSE + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice, + jsSuffixRegExp = /\.js$/; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, lastIndex, + foundI, foundStarMap, starI, i, j, part, normalizedBaseParts, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name) { + name = name.split('/'); + lastIndex = name.length - 1; + + // If wanting node ID compatibility, strip .js from end + // of IDs. Have to do this here, and not in nameToUrl + // because node allows either .js or non .js to map + // to same file. + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + // Starts with a '.' so need the baseName + if (name[0].charAt(0) === '.' && baseParts) { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + name = normalizedBaseParts.concat(name); + } + + //start trimDots + for (i = 0; i < name.length; i++) { + part = name[i]; + if (part === '.') { + name.splice(i, 1); + i -= 1; + } else if (part === '..') { + // If at the start, or previous value is still .., + // keep them so that when converted to a path it may + // still work when converted to a path, even though + // as an ID it is less than ideal. In larger point + // releases, may be better to just kick out an error. + if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') { + continue; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join('/'); + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + var args = aps.call(arguments, 0); + + //If first arg is not require('string'), and there is only + //one arg, it is the array form without a callback. Insert + //a null so that the following concat is correct. + if (typeof args[0] !== 'string' && args.length === 1) { + args.push(null); + } + return req.apply(undef, args.concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + //Creates a parts array for a relName where first part is plugin ID, + //second part is resource ID. Assumes relName has already been normalized. + function makeRelParts(relName) { + return relName ? splitPrefix(relName) : []; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relParts) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0], + relResourceName = relParts[1]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relResourceName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relResourceName)); + } else { + name = normalize(name, relResourceName); + } + } else { + name = normalize(name, relResourceName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, relParts, + args = [], + callbackType = typeof callback, + usingExports; + + //Use name if no relName + relName = relName || name; + relParts = makeRelParts(relName); + + //Call the callback to define the module, if necessary. + if (callbackType === 'undefined' || callbackType === 'function') { + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relParts); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback ? callback.apply(defined[name], args) : undefined; + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, makeRelParts(callback)).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (config.deps) { + req(config.deps, config.callback); + } + if (!callback) { + return; + } + + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + return req(cfg); + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + if (typeof name !== 'string') { + throw new Error('See almond README: incorrect module build, no module name'); + } + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); + +S2.requirejs = requirejs;S2.require = require;S2.define = define; +} +}()); +S2.define("almond", function(){}); + +/* global jQuery:false, $:false */ +S2.define('jquery',[],function () { + var _$ = jQuery || $; + + if (_$ == null && console && console.error) { + console.error( + 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + + 'found. Make sure that you are including jQuery before Select2 on your ' + + 'web page.' + ); + } + + return _$; +}); + +S2.define('select2/utils',[ + 'jquery' +], function ($) { + var Utils = {}; + + Utils.Extend = function (ChildClass, SuperClass) { + var __hasProp = {}.hasOwnProperty; + + function BaseConstructor () { + this.constructor = ChildClass; + } + + for (var key in SuperClass) { + if (__hasProp.call(SuperClass, key)) { + ChildClass[key] = SuperClass[key]; + } + } + + BaseConstructor.prototype = SuperClass.prototype; + ChildClass.prototype = new BaseConstructor(); + ChildClass.__super__ = SuperClass.prototype; + + return ChildClass; + }; + + function getMethods (theClass) { + var proto = theClass.prototype; + + var methods = []; + + for (var methodName in proto) { + var m = proto[methodName]; + + if (typeof m !== 'function') { + continue; + } + + if (methodName === 'constructor') { + continue; + } + + methods.push(methodName); + } + + return methods; + } + + Utils.Decorate = function (SuperClass, DecoratorClass) { + var decoratedMethods = getMethods(DecoratorClass); + var superMethods = getMethods(SuperClass); + + function DecoratedClass () { + var unshift = Array.prototype.unshift; + + var argCount = DecoratorClass.prototype.constructor.length; + + var calledConstructor = SuperClass.prototype.constructor; + + if (argCount > 0) { + unshift.call(arguments, SuperClass.prototype.constructor); + + calledConstructor = DecoratorClass.prototype.constructor; + } + + calledConstructor.apply(this, arguments); + } + + DecoratorClass.displayName = SuperClass.displayName; + + function ctr () { + this.constructor = DecoratedClass; + } + + DecoratedClass.prototype = new ctr(); + + for (var m = 0; m < superMethods.length; m++) { + var superMethod = superMethods[m]; + + DecoratedClass.prototype[superMethod] = + SuperClass.prototype[superMethod]; + } + + var calledMethod = function (methodName) { + // Stub out the original method if it's not decorating an actual method + var originalMethod = function () {}; + + if (methodName in DecoratedClass.prototype) { + originalMethod = DecoratedClass.prototype[methodName]; + } + + var decoratedMethod = DecoratorClass.prototype[methodName]; + + return function () { + var unshift = Array.prototype.unshift; + + unshift.call(arguments, originalMethod); + + return decoratedMethod.apply(this, arguments); + }; + }; + + for (var d = 0; d < decoratedMethods.length; d++) { + var decoratedMethod = decoratedMethods[d]; + + DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); + } + + return DecoratedClass; + }; + + var Observable = function () { + this.listeners = {}; + }; + + Observable.prototype.on = function (event, callback) { + this.listeners = this.listeners || {}; + + if (event in this.listeners) { + this.listeners[event].push(callback); + } else { + this.listeners[event] = [callback]; + } + }; + + Observable.prototype.trigger = function (event) { + var slice = Array.prototype.slice; + var params = slice.call(arguments, 1); + + this.listeners = this.listeners || {}; + + // Params should always come in as an array + if (params == null) { + params = []; + } + + // If there are no arguments to the event, use a temporary object + if (params.length === 0) { + params.push({}); + } + + // Set the `_type` of the first object to the event + params[0]._type = event; + + if (event in this.listeners) { + this.invoke(this.listeners[event], slice.call(arguments, 1)); + } + + if ('*' in this.listeners) { + this.invoke(this.listeners['*'], arguments); + } + }; + + Observable.prototype.invoke = function (listeners, params) { + for (var i = 0, len = listeners.length; i < len; i++) { + listeners[i].apply(this, params); + } + }; + + Utils.Observable = Observable; + + Utils.generateChars = function (length) { + var chars = ''; + + for (var i = 0; i < length; i++) { + var randomChar = Math.floor(Math.random() * 36); + chars += randomChar.toString(36); + } + + return chars; + }; + + Utils.bind = function (func, context) { + return function () { + func.apply(context, arguments); + }; + }; + + Utils._convertData = function (data) { + for (var originalKey in data) { + var keys = originalKey.split('-'); + + var dataLevel = data; + + if (keys.length === 1) { + continue; + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k]; + + // Lowercase the first letter + // By default, dash-separated becomes camelCase + key = key.substring(0, 1).toLowerCase() + key.substring(1); + + if (!(key in dataLevel)) { + dataLevel[key] = {}; + } + + if (k == keys.length - 1) { + dataLevel[key] = data[originalKey]; + } + + dataLevel = dataLevel[key]; + } + + delete data[originalKey]; + } + + return data; + }; + + Utils.hasScroll = function (index, el) { + // Adapted from the function created by @ShadowScripter + // and adapted by @BillBarry on the Stack Exchange Code Review website. + // The original code can be found at + // http://codereview.stackexchange.com/q/13338 + // and was designed to be used with the Sizzle selector engine. + + var $el = $(el); + var overflowX = el.style.overflowX; + var overflowY = el.style.overflowY; + + //Check both x and y declarations + if (overflowX === overflowY && + (overflowY === 'hidden' || overflowY === 'visible')) { + return false; + } + + if (overflowX === 'scroll' || overflowY === 'scroll') { + return true; + } + + return ($el.innerHeight() < el.scrollHeight || + $el.innerWidth() < el.scrollWidth); + }; + + Utils.escapeMarkup = function (markup) { + var replaceMap = { + '\\': '\', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + '\'': ''', + '/': '/' + }; + + // Do not try to escape the markup if it's not a string + if (typeof markup !== 'string') { + return markup; + } + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replaceMap[match]; + }); + }; + + // Append an array of jQuery nodes to a given element. + Utils.appendMany = function ($element, $nodes) { + // jQuery 1.7.x does not support $.fn.append() with an array + // Fall back to a jQuery object collection using $.fn.add() + if ($.fn.jquery.substr(0, 3) === '1.7') { + var $jqNodes = $(); + + $.map($nodes, function (node) { + $jqNodes = $jqNodes.add(node); + }); + + $nodes = $jqNodes; + } + + $element.append($nodes); + }; + + // Determine whether the browser is on a touchscreen device. + Utils.isTouchscreen = function() { + if ('undefined' === typeof Utils._isTouchscreenCache) { + Utils._isTouchscreenCache = 'ontouchstart' in document.documentElement; + } + return Utils._isTouchscreenCache; + } + + return Utils; +}); + +S2.define('select2/results',[ + 'jquery', + './utils' +], function ($, Utils) { + function Results ($element, options, dataAdapter) { + this.$element = $element; + this.data = dataAdapter; + this.options = options; + + Results.__super__.constructor.call(this); + } + + Utils.Extend(Results, Utils.Observable); + + Results.prototype.render = function () { + var $results = $( + '
              ' + ); + + if (this.options.get('multiple')) { + $results.attr('aria-multiselectable', 'true'); + } + + this.$results = $results; + + return $results; + }; + + Results.prototype.clear = function () { + this.$results.empty(); + }; + + Results.prototype.displayMessage = function (params) { + var escapeMarkup = this.options.get('escapeMarkup'); + + this.clear(); + this.hideLoading(); + + var $message = $( + '' + ); + + var message = this.options.get('translations').get(params.message); + + $message.append( + escapeMarkup( + message(params.args) + ) + ); + + $message[0].className += ' select2-results__message'; + + this.$results.append($message); + }; + + Results.prototype.hideMessages = function () { + this.$results.find('.select2-results__message').remove(); + }; + + Results.prototype.append = function (data) { + this.hideLoading(); + + var $options = []; + + if (data.results == null || data.results.length === 0) { + if (this.$results.children().length === 0) { + this.trigger('results:message', { + message: 'noResults' + }); + } + + return; + } + + data.results = this.sort(data.results); + + for (var d = 0; d < data.results.length; d++) { + var item = data.results[d]; + + var $option = this.option(item); + + $options.push($option); + } + + this.$results.append($options); + }; + + Results.prototype.position = function ($results, $dropdown) { + var $resultsContainer = $dropdown.find('.select2-results'); + $resultsContainer.append($results); + }; + + Results.prototype.sort = function (data) { + var sorter = this.options.get('sorter'); + + return sorter(data); + }; + + Results.prototype.highlightFirstItem = function () { + var $options = this.$results + .find('.select2-results__option[data-selected]'); + + var $selected = $options.filter('[data-selected=true]'); + + // Check if there are any selected options + if ($selected.length > 0) { + // If there are selected options, highlight the first + $selected.first().trigger('mouseenter'); + } else { + // If there are no selected options, highlight the first option + // in the dropdown + $options.first().trigger('mouseenter'); + } + + this.ensureHighlightVisible(); + }; + + Results.prototype.setClasses = function () { + var self = this; + + this.data.current(function (selected) { + var selectedIds = $.map(selected, function (s) { + return s.id.toString(); + }); + + var $options = self.$results + .find('.select2-results__option[data-selected]'); + + $options.each(function () { + var $option = $(this); + + var item = $.data(this, 'data'); + + // id needs to be converted to a string when comparing + var id = '' + item.id; + + if ((item.element != null && item.element.selected) || + (item.element == null && $.inArray(id, selectedIds) > -1)) { + $option.attr('data-selected', 'true'); + } else { + $option.attr('data-selected', 'false'); + } + }); + + }); + }; + + Results.prototype.showLoading = function (params) { + this.hideLoading(); + + var loadingMore = this.options.get('translations').get('searching'); + + var loading = { + disabled: true, + loading: true, + text: loadingMore(params) + }; + var $loading = this.option(loading); + $loading.className += ' loading-results'; + + this.$results.prepend($loading); + }; + + Results.prototype.hideLoading = function () { + this.$results.find('.loading-results').remove(); + }; + + Results.prototype.option = function (data) { + var option = document.createElement('li'); + option.className = 'select2-results__option'; + + var attrs = { + 'role': 'option', + 'data-selected': 'false', + 'tabindex': -1 + }; + + if (data.disabled) { + delete attrs['data-selected']; + attrs['aria-disabled'] = 'true'; + } + + if (data.id == null) { + delete attrs['data-selected']; + } + + if (data._resultId != null) { + option.id = data._resultId; + } + + if (data.title) { + option.title = data.title; + } + + if (data.children) { + attrs['aria-label'] = data.text; + delete attrs['data-selected']; + } + + for (var attr in attrs) { + var val = attrs[attr]; + + option.setAttribute(attr, val); + } + + if (data.children) { + var $option = $(option); + + var label = document.createElement('strong'); + label.className = 'select2-results__group'; + + var $label = $(label); + this.template(data, label); + $label.attr('role', 'presentation'); + + var $children = []; + + for (var c = 0; c < data.children.length; c++) { + var child = data.children[c]; + + var $child = this.option(child); + + $children.push($child); + } + + var $childrenContainer = $('
                ', { + 'class': 'select2-results__options select2-results__options--nested', + 'role': 'listbox' + }); + $childrenContainer.append($children); + $option.attr('role', 'list'); + + $option.append(label); + $option.append($childrenContainer); + } else { + this.template(data, option); + } + + $.data(option, 'data', data); + + return option; + }; + + Results.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-results'; + + this.$results.attr('id', id); + + container.on('results:all', function (params) { + self.clear(); + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + self.highlightFirstItem(); + } + }); + + container.on('results:append', function (params) { + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + } + }); + + container.on('query', function (params) { + self.hideMessages(); + self.showLoading(params); + }); + + container.on('select', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('unselect', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expended="true" + self.$results.attr('aria-expanded', 'true'); + self.$results.attr('aria-hidden', 'false'); + + self.setClasses(); + self.ensureHighlightVisible(); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expended="false" + self.$results.attr('aria-expanded', 'false'); + self.$results.attr('aria-hidden', 'true'); + self.$results.removeAttr('aria-activedescendant'); + }); + + container.on('results:toggle', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + $highlighted.trigger('mouseup'); + }); + + container.on('results:select', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var data = $highlighted.data('data'); + + if ($highlighted.attr('data-selected') == 'true') { + self.trigger('close', {}); + } else { + self.trigger('select', { + data: data + }); + } + }); + + container.on('results:previous', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[data-selected]'); + + var currentIndex = $options.index($highlighted); + + // If we are already at te top, don't move further + if (currentIndex === 0) { + return; + } + + var nextIndex = currentIndex - 1; + + // If none are highlighted, highlight the first + if ($highlighted.length === 0) { + nextIndex = 0; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top; + var nextTop = $next.offset().top; + var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextTop - currentOffset < 0) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:next', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[data-selected]'); + + var currentIndex = $options.index($highlighted); + + var nextIndex = currentIndex + 1; + + // If we are at the last option, stay there + if (nextIndex >= $options.length) { + return; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var nextBottom = $next.offset().top + $next.outerHeight(false); + var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextBottom > currentOffset) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:focus', function (params) { + params.element.addClass('select2-results__option--highlighted').attr('aria-selected', 'true'); + self.$results.attr('aria-activedescendant', params.element.attr('id')); + }); + + container.on('results:message', function (params) { + self.displayMessage(params); + }); + + if ($.fn.mousewheel) { + this.$results.on('mousewheel', function (e) { + var top = self.$results.scrollTop(); + + var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; + + var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; + var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); + + if (isAtTop) { + self.$results.scrollTop(0); + + e.preventDefault(); + e.stopPropagation(); + } else if (isAtBottom) { + self.$results.scrollTop( + self.$results.get(0).scrollHeight - self.$results.height() + ); + + e.preventDefault(); + e.stopPropagation(); + } + }); + } + + this.$results.on('mouseup', '.select2-results__option[data-selected]', + function (evt) { + var $this = $(this); + + var data = $this.data('data'); + + if ($this.attr('data-selected') === 'true') { + if (self.options.get('multiple')) { + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } else { + self.trigger('close', {}); + } + + return; + } + + self.trigger('select', { + originalEvent: evt, + data: data + }); + }); + + this.$results.on('mouseenter', '.select2-results__option[data-selected]', + function (evt) { + var data = $(this).data('data'); + + self.getHighlightedResults() + .removeClass('select2-results__option--highlighted') + .attr('aria-selected', 'false'); + + self.trigger('results:focus', { + data: data, + element: $(this) + }); + }); + }; + + Results.prototype.getHighlightedResults = function () { + var $highlighted = this.$results + .find('.select2-results__option--highlighted'); + + return $highlighted; + }; + + Results.prototype.destroy = function () { + this.$results.remove(); + }; + + Results.prototype.ensureHighlightVisible = function () { + var $highlighted = this.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var $options = this.$results.find('[data-selected]'); + + var currentIndex = $options.index($highlighted); + + var currentOffset = this.$results.offset().top; + var nextTop = $highlighted.offset().top; + var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); + + var offsetDelta = nextTop - currentOffset; + nextOffset -= $highlighted.outerHeight(false) * 2; + + if (currentIndex <= 2) { + this.$results.scrollTop(0); + } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { + this.$results.scrollTop(nextOffset); + } + }; + + Results.prototype.template = function (result, container) { + var template = this.options.get('templateResult'); + var escapeMarkup = this.options.get('escapeMarkup'); + + var content = template(result, container); + + if (content == null) { + container.style.display = 'none'; + } else if (typeof content === 'string') { + container.innerHTML = escapeMarkup(content); + } else { + $(container).append(content); + } + }; + + return Results; +}); + +S2.define('select2/keys',[ + +], function () { + var KEYS = { + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + DELETE: 46 + }; + + return KEYS; +}); + +S2.define('select2/selection/base',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function BaseSelection ($element, options) { + this.$element = $element; + this.options = options; + + BaseSelection.__super__.constructor.call(this); + } + + Utils.Extend(BaseSelection, Utils.Observable); + + BaseSelection.prototype.render = function () { + var $selection = $( + '' + ); + + this._tabindex = 0; + + if (this.$element.data('old-tabindex') != null) { + this._tabindex = this.$element.data('old-tabindex'); + } else if (this.$element.attr('tabindex') != null) { + this._tabindex = this.$element.attr('tabindex'); + } + + $selection.attr('title', this.$element.attr('title')); + $selection.attr('tabindex', this._tabindex); + + this.$selection = $selection; + + return $selection; + }; + + BaseSelection.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-container'; + var resultsId = container.id + '-results'; + var searchHidden = this.options.get('minimumResultsForSearch') === Infinity; + + this.container = container; + + this.$selection.on('focus', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('blur', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', function (evt) { + self.trigger('keypress', evt); + + if (evt.which === KEYS.SPACE) { + evt.preventDefault(); + } + }); + + container.on('results:focus', function (params) { + self.$selection.attr('aria-activedescendant', params.data._resultId); + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expanded="true" + self.$selection.attr('aria-expanded', 'true'); + self.$selection.attr('aria-owns', resultsId); + + self._attachCloseHandler(container); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expanded="false" + self.$selection.attr('aria-expanded', 'false'); + self.$selection.removeAttr('aria-activedescendant'); + self.$selection.removeAttr('aria-owns'); + + // This needs to be delayed as the active element is the body when the + // key is pressed. + window.setTimeout(function () { + self.$selection.focus(); + }, 1); + + self._detachCloseHandler(container); + }); + + container.on('enable', function () { + self.$selection.attr('tabindex', self._tabindex); + }); + + container.on('disable', function () { + self.$selection.attr('tabindex', '-1'); + }); + }; + + BaseSelection.prototype._handleBlur = function (evt) { + var self = this; + + // This needs to be delayed as the active element is the body when the tab + // key is pressed, possibly along with others. + window.setTimeout(function () { + // Don't trigger `blur` if the focus is still in the selection + if ( + (document.activeElement == self.$selection[0]) || + ($.contains(self.$selection[0], document.activeElement)) + ) { + return; + } + + self.trigger('blur', evt); + }, 1); + }; + + BaseSelection.prototype._attachCloseHandler = function (container) { + var self = this; + + $(document.body).on('mousedown.select2.' + container.id, function (e) { + var $target = $(e.target); + + var $select = $target.closest('.select2'); + + var $all = $('.select2.select2-container--open'); + + $all.each(function () { + var $this = $(this); + + if (this == $select[0]) { + return; + } + + var $element = $this.data('element'); + + $element.select2('close'); + }); + }); + }; + + BaseSelection.prototype._detachCloseHandler = function (container) { + $(document.body).off('mousedown.select2.' + container.id); + }; + + BaseSelection.prototype.position = function ($selection, $container) { + var $selectionContainer = $container.find('.selection'); + $selectionContainer.append($selection); + }; + + BaseSelection.prototype.destroy = function () { + this._detachCloseHandler(this.container); + }; + + BaseSelection.prototype.update = function (data) { + throw new Error('The `update` method must be defined in child classes.'); + }; + + return BaseSelection; +}); + +S2.define('select2/selection/single',[ + 'jquery', + './base', + '../utils', + '../keys' +], function ($, BaseSelection, Utils, KEYS) { + function SingleSelection () { + SingleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(SingleSelection, BaseSelection); + + SingleSelection.prototype.render = function () { + var $selection = SingleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--single'); + + $selection.html( + '' + + '' + + '' + + '' + ); + + return $selection; + }; + + SingleSelection.prototype.bind = function (container, $container) { + var self = this; + + SingleSelection.__super__.bind.apply(this, arguments); + + var id = container.id + '-container'; + + this.$selection.find('.select2-selection__rendered') + .attr('id', id) + .attr('role', 'textbox') + .attr('aria-readonly', 'true'); + this.$selection.attr('aria-labelledby', id); + + // This makes single non-search selects work in screen readers. If it causes problems elsewhere, remove. + this.$selection.attr('role', 'combobox'); + + this.$selection.on('mousedown', function (evt) { + // Only respond to left clicks + if (evt.which !== 1) { + return; + } + + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on('focus', function (evt) { + // User focuses on the container + }); + + this.$selection.on('keydown', function (evt) { + // If user starts typing an alphanumeric key on the keyboard, open if not opened. + if (!container.isOpen() && evt.which >= 48 && evt.which <= 90) { + container.open(); + } + }); + + this.$selection.on('blur', function (evt) { + // User exits the container + }); + + container.on('focus', function (evt) { + if (!container.isOpen()) { + self.$selection.focus(); + } + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + }; + + SingleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + SingleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + SingleSelection.prototype.selectionContainer = function () { + return $(''); + }; + + SingleSelection.prototype.update = function (data) { + if (data.length === 0) { + this.clear(); + return; + } + + var selection = data[0]; + + var $rendered = this.$selection.find('.select2-selection__rendered'); + var formatted = this.display(selection, $rendered); + + $rendered.empty().append(formatted); + $rendered.prop('title', selection.title || selection.text); + }; + + return SingleSelection; +}); + +S2.define('select2/selection/multiple',[ + 'jquery', + './base', + '../utils' +], function ($, BaseSelection, Utils) { + function MultipleSelection ($element, options) { + MultipleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(MultipleSelection, BaseSelection); + + MultipleSelection.prototype.render = function () { + var $selection = MultipleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--multiple'); + + $selection.html( + '
                  ' + ); + + return $selection; + }; + + MultipleSelection.prototype.bind = function (container, $container) { + var self = this; + + MultipleSelection.__super__.bind.apply(this, arguments); + + this.$selection.on('click', function (evt) { + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on( + 'click', + '.select2-selection__choice__remove', + function (evt) { + // Ignore the event if it is disabled + if (self.options.get('disabled')) { + return; + } + + var $remove = $(this); + var $selection = $remove.parent(); + + var data = $selection.data('data'); + + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } + ); + }; + + MultipleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + MultipleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + MultipleSelection.prototype.selectionContainer = function () { + var $container = $( + '
                • ' + + '' + + '
                • ' + ); + + return $container; + }; + + MultipleSelection.prototype.update = function (data) { + var self = this; + this.clear(); + + if (data.length === 0) { + return; + } + + var $selections = []; + + for (var d = 0; d < data.length; d++) { + var selection = data[d]; + + var $selection = this.selectionContainer(); + var formatted = this.display(selection, $selection).trim(); + + $selection.append(formatted); + $selection.prop('title', selection.title || selection.text); + + $selection.data('data', selection); + + $selections.push($selection); + } + + var $rendered = this.$selection.find('.select2-selection__rendered'); + + Utils.appendMany($rendered, $selections); + + // Return cursor to search field after updating. + // Needs 1 ms delay because of other 1 ms setTimeouts when rendering. + if ('undefined' !== typeof this.$search) { + setTimeout(function(){ + self.$search.focus(); + }, 1); + } + }; + + return MultipleSelection; +}); + +S2.define('select2/selection/placeholder',[ + '../utils' +], function (Utils) { + function Placeholder (decorated, $element, options) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options); + } + + Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { + var $placeholder = this.selectionContainer(); + + $placeholder.html(this.display(placeholder)); + $placeholder.addClass('select2-selection__placeholder') + .removeClass('select2-selection__choice'); + + return $placeholder; + }; + + Placeholder.prototype.update = function (decorated, data) { + var singlePlaceholder = ( + data.length == 1 && data[0].id != this.placeholder.id + ); + var multipleSelections = data.length > 1; + + if (multipleSelections || singlePlaceholder) { + return decorated.call(this, data); + } + + this.clear(); + + var $placeholder = this.createPlaceholder(this.placeholder); + + this.$selection.find('.select2-selection__rendered').append($placeholder); + }; + + return Placeholder; +}); + +S2.define('select2/selection/allowClear',[ + 'jquery', + '../keys' +], function ($, KEYS) { + function AllowClear () { } + + AllowClear.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + if (this.placeholder == null) { + if (this.options.get('debug') && window.console && console.error) { + console.error( + 'Select2: The `allowClear` option should be used in combination ' + + 'with the `placeholder` option.' + ); + } + } + + this.$selection.on('mousedown', '.select2-selection__clear', + function (evt) { + self._handleClear(evt); + }); + + container.on('keypress', function (evt) { + self._handleKeyboardClear(evt, container); + }); + }; + + AllowClear.prototype._handleClear = function (_, evt) { + // Ignore the event if it is disabled + if (this.options.get('disabled')) { + return; + } + + var $clear = this.$selection.find('.select2-selection__clear'); + + // Ignore the event if nothing has been selected + if ($clear.length === 0) { + return; + } + + evt.stopPropagation(); + + var data = $clear.data('data'); + + for (var d = 0; d < data.length; d++) { + var unselectData = { + data: data[d] + }; + + // Trigger the `unselect` event, so people can prevent it from being + // cleared. + this.trigger('unselect', unselectData); + + // If the event was prevented, don't clear it out. + if (unselectData.prevented) { + return; + } + } + + this.$element.val(this.placeholder.id).trigger('change'); + + this.trigger('toggle', {}); + }; + + AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { + if (container.isOpen()) { + return; + } + + if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { + this._handleClear(evt); + } + }; + + AllowClear.prototype.update = function (decorated, data) { + decorated.call(this, data); + + if (this.$selection.find('.select2-selection__placeholder').length > 0 || + data.length === 0) { + return; + } + + var $remove = $( + '' + + '×' + + '' + ); + $remove.data('data', data); + + this.$selection.find('.select2-selection__rendered').prepend($remove); + }; + + return AllowClear; +}); + +S2.define('select2/selection/search',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function Search (decorated, $element, options) { + decorated.call(this, $element, options); + } + + Search.prototype.render = function (decorated) { + var $search = $( + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + var $rendered = decorated.call(this); + + this._transferTabIndex(); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + container.on('open', function () { + self.$search.attr('aria-owns', resultsId); + self.$search.trigger('focus'); + }); + + container.on('close', function () { + self.$search.val(''); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.trigger('focus'); + }); + + container.on('enable', function () { + self.$search.prop('disabled', false); + + self._transferTabIndex(); + }); + + container.on('disable', function () { + self.$search.prop('disabled', true); + }); + + container.on('focus', function (evt) { + self.$search.trigger('focus'); + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + + this.$selection.on('focusin', '.select2-search--inline', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('focusout', '.select2-search--inline', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', '.select2-search--inline', function (evt) { + evt.stopPropagation(); + + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + + var key = evt.which; + + if (key === KEYS.BACKSPACE && self.$search.val() === '') { + var $previousChoice = self.$searchContainer + .prev('.select2-selection__choice'); + + if ($previousChoice.length > 0) { + var item = $previousChoice.data('data'); + + self.searchRemoveChoice(item); + + evt.preventDefault(); + } + } + }); + + // Try to detect the IE version should the `documentMode` property that + // is stored on the document. This is only implemented in IE and is + // slightly cleaner than doing a user agent check. + // This property is not available in Edge, but Edge also doesn't have + // this bug. + var msie = document.documentMode; + var disableInputEvents = msie && msie <= 11; + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$selection.on( + 'input.searchcheck', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents) { + self.$selection.off('input.search input.searchcheck'); + return; + } + + // Unbind the duplicated `keyup` event + self.$selection.off('keyup.search'); + } + ); + + this.$selection.on( + 'keyup.search input.search', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents && evt.type === 'input') { + self.$selection.off('input.search input.searchcheck'); + return; + } + + var key = evt.which; + + // We can freely ignore events from modifier keys + if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { + return; + } + + // Tabbing will be handled during the `keydown` phase + if (key == KEYS.TAB) { + return; + } + + self.handleSearch(evt); + } + ); + }; + + /** + * This method will transfer the tabindex attribute from the rendered + * selection to the search box. This allows for the search box to be used as + * the primary focus instead of the selection container. + * + * @private + */ + Search.prototype._transferTabIndex = function (decorated) { + this.$search.attr('tabindex', this.$selection.attr('tabindex')); + this.$selection.attr('tabindex', '-1'); + }; + + Search.prototype.createPlaceholder = function (decorated, placeholder) { + this.$search.attr('placeholder', placeholder.text); + }; + + Search.prototype.update = function (decorated, data) { + var searchHadFocus = this.$search[0] == document.activeElement; + + this.$search.attr('placeholder', ''); + + decorated.call(this, data); + + this.$selection.find('.select2-selection__rendered') + .append(this.$searchContainer); + + this.resizeSearch(); + if (searchHadFocus) { + this.$search.focus(); + } + }; + + Search.prototype.handleSearch = function () { + this.resizeSearch(); + + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.searchRemoveChoice = function (decorated, item) { + this.trigger('unselect', { + data: item + }); + + this.$search.val(item.text); + this.handleSearch(); + }; + + Search.prototype.resizeSearch = function () { + this.$search.css('width', '25px'); + + var width = ''; + + if (this.$search.attr('placeholder') !== '') { + width = this.$selection.find('.select2-selection__rendered').innerWidth(); + } else { + var minimumWidth = this.$search.val().length + 1; + + width = (minimumWidth * 0.75) + 'em'; + } + + this.$search.css('width', width); + }; + + return Search; +}); + +S2.define('select2/selection/eventRelay',[ + 'jquery' +], function ($) { + function EventRelay () { } + + EventRelay.prototype.bind = function (decorated, container, $container) { + var self = this; + var relayEvents = [ + 'open', 'opening', + 'close', 'closing', + 'select', 'selecting', + 'unselect', 'unselecting' + ]; + + var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; + + decorated.call(this, container, $container); + + container.on('*', function (name, params) { + // Ignore events that should not be relayed + if ($.inArray(name, relayEvents) === -1) { + return; + } + + // The parameters should always be an object + params = params || {}; + + // Generate the jQuery event for the Select2 event + var evt = $.Event('select2:' + name, { + params: params + }); + + self.$element.trigger(evt); + + // Only handle preventable events if it was one + if ($.inArray(name, preventableEvents) === -1) { + return; + } + + params.prevented = evt.isDefaultPrevented(); + }); + }; + + return EventRelay; +}); + +S2.define('select2/translation',[ + 'jquery', + 'require' +], function ($, require) { + function Translation (dict) { + this.dict = dict || {}; + } + + Translation.prototype.all = function () { + return this.dict; + }; + + Translation.prototype.get = function (key) { + return this.dict[key]; + }; + + Translation.prototype.extend = function (translation) { + this.dict = $.extend({}, translation.all(), this.dict); + }; + + // Static functions + + Translation._cache = {}; + + Translation.loadPath = function (path) { + if (!(path in Translation._cache)) { + var translations = require(path); + + Translation._cache[path] = translations; + } + + return new Translation(Translation._cache[path]); + }; + + return Translation; +}); + +S2.define('select2/diacritics',[ + +], function () { + var diacritics = { + '\u24B6': 'A', + '\uFF21': 'A', + '\u00C0': 'A', + '\u00C1': 'A', + '\u00C2': 'A', + '\u1EA6': 'A', + '\u1EA4': 'A', + '\u1EAA': 'A', + '\u1EA8': 'A', + '\u00C3': 'A', + '\u0100': 'A', + '\u0102': 'A', + '\u1EB0': 'A', + '\u1EAE': 'A', + '\u1EB4': 'A', + '\u1EB2': 'A', + '\u0226': 'A', + '\u01E0': 'A', + '\u00C4': 'A', + '\u01DE': 'A', + '\u1EA2': 'A', + '\u00C5': 'A', + '\u01FA': 'A', + '\u01CD': 'A', + '\u0200': 'A', + '\u0202': 'A', + '\u1EA0': 'A', + '\u1EAC': 'A', + '\u1EB6': 'A', + '\u1E00': 'A', + '\u0104': 'A', + '\u023A': 'A', + '\u2C6F': 'A', + '\uA732': 'AA', + '\u00C6': 'AE', + '\u01FC': 'AE', + '\u01E2': 'AE', + '\uA734': 'AO', + '\uA736': 'AU', + '\uA738': 'AV', + '\uA73A': 'AV', + '\uA73C': 'AY', + '\u24B7': 'B', + '\uFF22': 'B', + '\u1E02': 'B', + '\u1E04': 'B', + '\u1E06': 'B', + '\u0243': 'B', + '\u0182': 'B', + '\u0181': 'B', + '\u24B8': 'C', + '\uFF23': 'C', + '\u0106': 'C', + '\u0108': 'C', + '\u010A': 'C', + '\u010C': 'C', + '\u00C7': 'C', + '\u1E08': 'C', + '\u0187': 'C', + '\u023B': 'C', + '\uA73E': 'C', + '\u24B9': 'D', + '\uFF24': 'D', + '\u1E0A': 'D', + '\u010E': 'D', + '\u1E0C': 'D', + '\u1E10': 'D', + '\u1E12': 'D', + '\u1E0E': 'D', + '\u0110': 'D', + '\u018B': 'D', + '\u018A': 'D', + '\u0189': 'D', + '\uA779': 'D', + '\u01F1': 'DZ', + '\u01C4': 'DZ', + '\u01F2': 'Dz', + '\u01C5': 'Dz', + '\u24BA': 'E', + '\uFF25': 'E', + '\u00C8': 'E', + '\u00C9': 'E', + '\u00CA': 'E', + '\u1EC0': 'E', + '\u1EBE': 'E', + '\u1EC4': 'E', + '\u1EC2': 'E', + '\u1EBC': 'E', + '\u0112': 'E', + '\u1E14': 'E', + '\u1E16': 'E', + '\u0114': 'E', + '\u0116': 'E', + '\u00CB': 'E', + '\u1EBA': 'E', + '\u011A': 'E', + '\u0204': 'E', + '\u0206': 'E', + '\u1EB8': 'E', + '\u1EC6': 'E', + '\u0228': 'E', + '\u1E1C': 'E', + '\u0118': 'E', + '\u1E18': 'E', + '\u1E1A': 'E', + '\u0190': 'E', + '\u018E': 'E', + '\u24BB': 'F', + '\uFF26': 'F', + '\u1E1E': 'F', + '\u0191': 'F', + '\uA77B': 'F', + '\u24BC': 'G', + '\uFF27': 'G', + '\u01F4': 'G', + '\u011C': 'G', + '\u1E20': 'G', + '\u011E': 'G', + '\u0120': 'G', + '\u01E6': 'G', + '\u0122': 'G', + '\u01E4': 'G', + '\u0193': 'G', + '\uA7A0': 'G', + '\uA77D': 'G', + '\uA77E': 'G', + '\u24BD': 'H', + '\uFF28': 'H', + '\u0124': 'H', + '\u1E22': 'H', + '\u1E26': 'H', + '\u021E': 'H', + '\u1E24': 'H', + '\u1E28': 'H', + '\u1E2A': 'H', + '\u0126': 'H', + '\u2C67': 'H', + '\u2C75': 'H', + '\uA78D': 'H', + '\u24BE': 'I', + '\uFF29': 'I', + '\u00CC': 'I', + '\u00CD': 'I', + '\u00CE': 'I', + '\u0128': 'I', + '\u012A': 'I', + '\u012C': 'I', + '\u0130': 'I', + '\u00CF': 'I', + '\u1E2E': 'I', + '\u1EC8': 'I', + '\u01CF': 'I', + '\u0208': 'I', + '\u020A': 'I', + '\u1ECA': 'I', + '\u012E': 'I', + '\u1E2C': 'I', + '\u0197': 'I', + '\u24BF': 'J', + '\uFF2A': 'J', + '\u0134': 'J', + '\u0248': 'J', + '\u24C0': 'K', + '\uFF2B': 'K', + '\u1E30': 'K', + '\u01E8': 'K', + '\u1E32': 'K', + '\u0136': 'K', + '\u1E34': 'K', + '\u0198': 'K', + '\u2C69': 'K', + '\uA740': 'K', + '\uA742': 'K', + '\uA744': 'K', + '\uA7A2': 'K', + '\u24C1': 'L', + '\uFF2C': 'L', + '\u013F': 'L', + '\u0139': 'L', + '\u013D': 'L', + '\u1E36': 'L', + '\u1E38': 'L', + '\u013B': 'L', + '\u1E3C': 'L', + '\u1E3A': 'L', + '\u0141': 'L', + '\u023D': 'L', + '\u2C62': 'L', + '\u2C60': 'L', + '\uA748': 'L', + '\uA746': 'L', + '\uA780': 'L', + '\u01C7': 'LJ', + '\u01C8': 'Lj', + '\u24C2': 'M', + '\uFF2D': 'M', + '\u1E3E': 'M', + '\u1E40': 'M', + '\u1E42': 'M', + '\u2C6E': 'M', + '\u019C': 'M', + '\u24C3': 'N', + '\uFF2E': 'N', + '\u01F8': 'N', + '\u0143': 'N', + '\u00D1': 'N', + '\u1E44': 'N', + '\u0147': 'N', + '\u1E46': 'N', + '\u0145': 'N', + '\u1E4A': 'N', + '\u1E48': 'N', + '\u0220': 'N', + '\u019D': 'N', + '\uA790': 'N', + '\uA7A4': 'N', + '\u01CA': 'NJ', + '\u01CB': 'Nj', + '\u24C4': 'O', + '\uFF2F': 'O', + '\u00D2': 'O', + '\u00D3': 'O', + '\u00D4': 'O', + '\u1ED2': 'O', + '\u1ED0': 'O', + '\u1ED6': 'O', + '\u1ED4': 'O', + '\u00D5': 'O', + '\u1E4C': 'O', + '\u022C': 'O', + '\u1E4E': 'O', + '\u014C': 'O', + '\u1E50': 'O', + '\u1E52': 'O', + '\u014E': 'O', + '\u022E': 'O', + '\u0230': 'O', + '\u00D6': 'O', + '\u022A': 'O', + '\u1ECE': 'O', + '\u0150': 'O', + '\u01D1': 'O', + '\u020C': 'O', + '\u020E': 'O', + '\u01A0': 'O', + '\u1EDC': 'O', + '\u1EDA': 'O', + '\u1EE0': 'O', + '\u1EDE': 'O', + '\u1EE2': 'O', + '\u1ECC': 'O', + '\u1ED8': 'O', + '\u01EA': 'O', + '\u01EC': 'O', + '\u00D8': 'O', + '\u01FE': 'O', + '\u0186': 'O', + '\u019F': 'O', + '\uA74A': 'O', + '\uA74C': 'O', + '\u01A2': 'OI', + '\uA74E': 'OO', + '\u0222': 'OU', + '\u24C5': 'P', + '\uFF30': 'P', + '\u1E54': 'P', + '\u1E56': 'P', + '\u01A4': 'P', + '\u2C63': 'P', + '\uA750': 'P', + '\uA752': 'P', + '\uA754': 'P', + '\u24C6': 'Q', + '\uFF31': 'Q', + '\uA756': 'Q', + '\uA758': 'Q', + '\u024A': 'Q', + '\u24C7': 'R', + '\uFF32': 'R', + '\u0154': 'R', + '\u1E58': 'R', + '\u0158': 'R', + '\u0210': 'R', + '\u0212': 'R', + '\u1E5A': 'R', + '\u1E5C': 'R', + '\u0156': 'R', + '\u1E5E': 'R', + '\u024C': 'R', + '\u2C64': 'R', + '\uA75A': 'R', + '\uA7A6': 'R', + '\uA782': 'R', + '\u24C8': 'S', + '\uFF33': 'S', + '\u1E9E': 'S', + '\u015A': 'S', + '\u1E64': 'S', + '\u015C': 'S', + '\u1E60': 'S', + '\u0160': 'S', + '\u1E66': 'S', + '\u1E62': 'S', + '\u1E68': 'S', + '\u0218': 'S', + '\u015E': 'S', + '\u2C7E': 'S', + '\uA7A8': 'S', + '\uA784': 'S', + '\u24C9': 'T', + '\uFF34': 'T', + '\u1E6A': 'T', + '\u0164': 'T', + '\u1E6C': 'T', + '\u021A': 'T', + '\u0162': 'T', + '\u1E70': 'T', + '\u1E6E': 'T', + '\u0166': 'T', + '\u01AC': 'T', + '\u01AE': 'T', + '\u023E': 'T', + '\uA786': 'T', + '\uA728': 'TZ', + '\u24CA': 'U', + '\uFF35': 'U', + '\u00D9': 'U', + '\u00DA': 'U', + '\u00DB': 'U', + '\u0168': 'U', + '\u1E78': 'U', + '\u016A': 'U', + '\u1E7A': 'U', + '\u016C': 'U', + '\u00DC': 'U', + '\u01DB': 'U', + '\u01D7': 'U', + '\u01D5': 'U', + '\u01D9': 'U', + '\u1EE6': 'U', + '\u016E': 'U', + '\u0170': 'U', + '\u01D3': 'U', + '\u0214': 'U', + '\u0216': 'U', + '\u01AF': 'U', + '\u1EEA': 'U', + '\u1EE8': 'U', + '\u1EEE': 'U', + '\u1EEC': 'U', + '\u1EF0': 'U', + '\u1EE4': 'U', + '\u1E72': 'U', + '\u0172': 'U', + '\u1E76': 'U', + '\u1E74': 'U', + '\u0244': 'U', + '\u24CB': 'V', + '\uFF36': 'V', + '\u1E7C': 'V', + '\u1E7E': 'V', + '\u01B2': 'V', + '\uA75E': 'V', + '\u0245': 'V', + '\uA760': 'VY', + '\u24CC': 'W', + '\uFF37': 'W', + '\u1E80': 'W', + '\u1E82': 'W', + '\u0174': 'W', + '\u1E86': 'W', + '\u1E84': 'W', + '\u1E88': 'W', + '\u2C72': 'W', + '\u24CD': 'X', + '\uFF38': 'X', + '\u1E8A': 'X', + '\u1E8C': 'X', + '\u24CE': 'Y', + '\uFF39': 'Y', + '\u1EF2': 'Y', + '\u00DD': 'Y', + '\u0176': 'Y', + '\u1EF8': 'Y', + '\u0232': 'Y', + '\u1E8E': 'Y', + '\u0178': 'Y', + '\u1EF6': 'Y', + '\u1EF4': 'Y', + '\u01B3': 'Y', + '\u024E': 'Y', + '\u1EFE': 'Y', + '\u24CF': 'Z', + '\uFF3A': 'Z', + '\u0179': 'Z', + '\u1E90': 'Z', + '\u017B': 'Z', + '\u017D': 'Z', + '\u1E92': 'Z', + '\u1E94': 'Z', + '\u01B5': 'Z', + '\u0224': 'Z', + '\u2C7F': 'Z', + '\u2C6B': 'Z', + '\uA762': 'Z', + '\u24D0': 'a', + '\uFF41': 'a', + '\u1E9A': 'a', + '\u00E0': 'a', + '\u00E1': 'a', + '\u00E2': 'a', + '\u1EA7': 'a', + '\u1EA5': 'a', + '\u1EAB': 'a', + '\u1EA9': 'a', + '\u00E3': 'a', + '\u0101': 'a', + '\u0103': 'a', + '\u1EB1': 'a', + '\u1EAF': 'a', + '\u1EB5': 'a', + '\u1EB3': 'a', + '\u0227': 'a', + '\u01E1': 'a', + '\u00E4': 'a', + '\u01DF': 'a', + '\u1EA3': 'a', + '\u00E5': 'a', + '\u01FB': 'a', + '\u01CE': 'a', + '\u0201': 'a', + '\u0203': 'a', + '\u1EA1': 'a', + '\u1EAD': 'a', + '\u1EB7': 'a', + '\u1E01': 'a', + '\u0105': 'a', + '\u2C65': 'a', + '\u0250': 'a', + '\uA733': 'aa', + '\u00E6': 'ae', + '\u01FD': 'ae', + '\u01E3': 'ae', + '\uA735': 'ao', + '\uA737': 'au', + '\uA739': 'av', + '\uA73B': 'av', + '\uA73D': 'ay', + '\u24D1': 'b', + '\uFF42': 'b', + '\u1E03': 'b', + '\u1E05': 'b', + '\u1E07': 'b', + '\u0180': 'b', + '\u0183': 'b', + '\u0253': 'b', + '\u24D2': 'c', + '\uFF43': 'c', + '\u0107': 'c', + '\u0109': 'c', + '\u010B': 'c', + '\u010D': 'c', + '\u00E7': 'c', + '\u1E09': 'c', + '\u0188': 'c', + '\u023C': 'c', + '\uA73F': 'c', + '\u2184': 'c', + '\u24D3': 'd', + '\uFF44': 'd', + '\u1E0B': 'd', + '\u010F': 'd', + '\u1E0D': 'd', + '\u1E11': 'd', + '\u1E13': 'd', + '\u1E0F': 'd', + '\u0111': 'd', + '\u018C': 'd', + '\u0256': 'd', + '\u0257': 'd', + '\uA77A': 'd', + '\u01F3': 'dz', + '\u01C6': 'dz', + '\u24D4': 'e', + '\uFF45': 'e', + '\u00E8': 'e', + '\u00E9': 'e', + '\u00EA': 'e', + '\u1EC1': 'e', + '\u1EBF': 'e', + '\u1EC5': 'e', + '\u1EC3': 'e', + '\u1EBD': 'e', + '\u0113': 'e', + '\u1E15': 'e', + '\u1E17': 'e', + '\u0115': 'e', + '\u0117': 'e', + '\u00EB': 'e', + '\u1EBB': 'e', + '\u011B': 'e', + '\u0205': 'e', + '\u0207': 'e', + '\u1EB9': 'e', + '\u1EC7': 'e', + '\u0229': 'e', + '\u1E1D': 'e', + '\u0119': 'e', + '\u1E19': 'e', + '\u1E1B': 'e', + '\u0247': 'e', + '\u025B': 'e', + '\u01DD': 'e', + '\u24D5': 'f', + '\uFF46': 'f', + '\u1E1F': 'f', + '\u0192': 'f', + '\uA77C': 'f', + '\u24D6': 'g', + '\uFF47': 'g', + '\u01F5': 'g', + '\u011D': 'g', + '\u1E21': 'g', + '\u011F': 'g', + '\u0121': 'g', + '\u01E7': 'g', + '\u0123': 'g', + '\u01E5': 'g', + '\u0260': 'g', + '\uA7A1': 'g', + '\u1D79': 'g', + '\uA77F': 'g', + '\u24D7': 'h', + '\uFF48': 'h', + '\u0125': 'h', + '\u1E23': 'h', + '\u1E27': 'h', + '\u021F': 'h', + '\u1E25': 'h', + '\u1E29': 'h', + '\u1E2B': 'h', + '\u1E96': 'h', + '\u0127': 'h', + '\u2C68': 'h', + '\u2C76': 'h', + '\u0265': 'h', + '\u0195': 'hv', + '\u24D8': 'i', + '\uFF49': 'i', + '\u00EC': 'i', + '\u00ED': 'i', + '\u00EE': 'i', + '\u0129': 'i', + '\u012B': 'i', + '\u012D': 'i', + '\u00EF': 'i', + '\u1E2F': 'i', + '\u1EC9': 'i', + '\u01D0': 'i', + '\u0209': 'i', + '\u020B': 'i', + '\u1ECB': 'i', + '\u012F': 'i', + '\u1E2D': 'i', + '\u0268': 'i', + '\u0131': 'i', + '\u24D9': 'j', + '\uFF4A': 'j', + '\u0135': 'j', + '\u01F0': 'j', + '\u0249': 'j', + '\u24DA': 'k', + '\uFF4B': 'k', + '\u1E31': 'k', + '\u01E9': 'k', + '\u1E33': 'k', + '\u0137': 'k', + '\u1E35': 'k', + '\u0199': 'k', + '\u2C6A': 'k', + '\uA741': 'k', + '\uA743': 'k', + '\uA745': 'k', + '\uA7A3': 'k', + '\u24DB': 'l', + '\uFF4C': 'l', + '\u0140': 'l', + '\u013A': 'l', + '\u013E': 'l', + '\u1E37': 'l', + '\u1E39': 'l', + '\u013C': 'l', + '\u1E3D': 'l', + '\u1E3B': 'l', + '\u017F': 'l', + '\u0142': 'l', + '\u019A': 'l', + '\u026B': 'l', + '\u2C61': 'l', + '\uA749': 'l', + '\uA781': 'l', + '\uA747': 'l', + '\u01C9': 'lj', + '\u24DC': 'm', + '\uFF4D': 'm', + '\u1E3F': 'm', + '\u1E41': 'm', + '\u1E43': 'm', + '\u0271': 'm', + '\u026F': 'm', + '\u24DD': 'n', + '\uFF4E': 'n', + '\u01F9': 'n', + '\u0144': 'n', + '\u00F1': 'n', + '\u1E45': 'n', + '\u0148': 'n', + '\u1E47': 'n', + '\u0146': 'n', + '\u1E4B': 'n', + '\u1E49': 'n', + '\u019E': 'n', + '\u0272': 'n', + '\u0149': 'n', + '\uA791': 'n', + '\uA7A5': 'n', + '\u01CC': 'nj', + '\u24DE': 'o', + '\uFF4F': 'o', + '\u00F2': 'o', + '\u00F3': 'o', + '\u00F4': 'o', + '\u1ED3': 'o', + '\u1ED1': 'o', + '\u1ED7': 'o', + '\u1ED5': 'o', + '\u00F5': 'o', + '\u1E4D': 'o', + '\u022D': 'o', + '\u1E4F': 'o', + '\u014D': 'o', + '\u1E51': 'o', + '\u1E53': 'o', + '\u014F': 'o', + '\u022F': 'o', + '\u0231': 'o', + '\u00F6': 'o', + '\u022B': 'o', + '\u1ECF': 'o', + '\u0151': 'o', + '\u01D2': 'o', + '\u020D': 'o', + '\u020F': 'o', + '\u01A1': 'o', + '\u1EDD': 'o', + '\u1EDB': 'o', + '\u1EE1': 'o', + '\u1EDF': 'o', + '\u1EE3': 'o', + '\u1ECD': 'o', + '\u1ED9': 'o', + '\u01EB': 'o', + '\u01ED': 'o', + '\u00F8': 'o', + '\u01FF': 'o', + '\u0254': 'o', + '\uA74B': 'o', + '\uA74D': 'o', + '\u0275': 'o', + '\u01A3': 'oi', + '\u0223': 'ou', + '\uA74F': 'oo', + '\u24DF': 'p', + '\uFF50': 'p', + '\u1E55': 'p', + '\u1E57': 'p', + '\u01A5': 'p', + '\u1D7D': 'p', + '\uA751': 'p', + '\uA753': 'p', + '\uA755': 'p', + '\u24E0': 'q', + '\uFF51': 'q', + '\u024B': 'q', + '\uA757': 'q', + '\uA759': 'q', + '\u24E1': 'r', + '\uFF52': 'r', + '\u0155': 'r', + '\u1E59': 'r', + '\u0159': 'r', + '\u0211': 'r', + '\u0213': 'r', + '\u1E5B': 'r', + '\u1E5D': 'r', + '\u0157': 'r', + '\u1E5F': 'r', + '\u024D': 'r', + '\u027D': 'r', + '\uA75B': 'r', + '\uA7A7': 'r', + '\uA783': 'r', + '\u24E2': 's', + '\uFF53': 's', + '\u00DF': 's', + '\u015B': 's', + '\u1E65': 's', + '\u015D': 's', + '\u1E61': 's', + '\u0161': 's', + '\u1E67': 's', + '\u1E63': 's', + '\u1E69': 's', + '\u0219': 's', + '\u015F': 's', + '\u023F': 's', + '\uA7A9': 's', + '\uA785': 's', + '\u1E9B': 's', + '\u24E3': 't', + '\uFF54': 't', + '\u1E6B': 't', + '\u1E97': 't', + '\u0165': 't', + '\u1E6D': 't', + '\u021B': 't', + '\u0163': 't', + '\u1E71': 't', + '\u1E6F': 't', + '\u0167': 't', + '\u01AD': 't', + '\u0288': 't', + '\u2C66': 't', + '\uA787': 't', + '\uA729': 'tz', + '\u24E4': 'u', + '\uFF55': 'u', + '\u00F9': 'u', + '\u00FA': 'u', + '\u00FB': 'u', + '\u0169': 'u', + '\u1E79': 'u', + '\u016B': 'u', + '\u1E7B': 'u', + '\u016D': 'u', + '\u00FC': 'u', + '\u01DC': 'u', + '\u01D8': 'u', + '\u01D6': 'u', + '\u01DA': 'u', + '\u1EE7': 'u', + '\u016F': 'u', + '\u0171': 'u', + '\u01D4': 'u', + '\u0215': 'u', + '\u0217': 'u', + '\u01B0': 'u', + '\u1EEB': 'u', + '\u1EE9': 'u', + '\u1EEF': 'u', + '\u1EED': 'u', + '\u1EF1': 'u', + '\u1EE5': 'u', + '\u1E73': 'u', + '\u0173': 'u', + '\u1E77': 'u', + '\u1E75': 'u', + '\u0289': 'u', + '\u24E5': 'v', + '\uFF56': 'v', + '\u1E7D': 'v', + '\u1E7F': 'v', + '\u028B': 'v', + '\uA75F': 'v', + '\u028C': 'v', + '\uA761': 'vy', + '\u24E6': 'w', + '\uFF57': 'w', + '\u1E81': 'w', + '\u1E83': 'w', + '\u0175': 'w', + '\u1E87': 'w', + '\u1E85': 'w', + '\u1E98': 'w', + '\u1E89': 'w', + '\u2C73': 'w', + '\u24E7': 'x', + '\uFF58': 'x', + '\u1E8B': 'x', + '\u1E8D': 'x', + '\u24E8': 'y', + '\uFF59': 'y', + '\u1EF3': 'y', + '\u00FD': 'y', + '\u0177': 'y', + '\u1EF9': 'y', + '\u0233': 'y', + '\u1E8F': 'y', + '\u00FF': 'y', + '\u1EF7': 'y', + '\u1E99': 'y', + '\u1EF5': 'y', + '\u01B4': 'y', + '\u024F': 'y', + '\u1EFF': 'y', + '\u24E9': 'z', + '\uFF5A': 'z', + '\u017A': 'z', + '\u1E91': 'z', + '\u017C': 'z', + '\u017E': 'z', + '\u1E93': 'z', + '\u1E95': 'z', + '\u01B6': 'z', + '\u0225': 'z', + '\u0240': 'z', + '\u2C6C': 'z', + '\uA763': 'z', + '\u0386': '\u0391', + '\u0388': '\u0395', + '\u0389': '\u0397', + '\u038A': '\u0399', + '\u03AA': '\u0399', + '\u038C': '\u039F', + '\u038E': '\u03A5', + '\u03AB': '\u03A5', + '\u038F': '\u03A9', + '\u03AC': '\u03B1', + '\u03AD': '\u03B5', + '\u03AE': '\u03B7', + '\u03AF': '\u03B9', + '\u03CA': '\u03B9', + '\u0390': '\u03B9', + '\u03CC': '\u03BF', + '\u03CD': '\u03C5', + '\u03CB': '\u03C5', + '\u03B0': '\u03C5', + '\u03C9': '\u03C9', + '\u03C2': '\u03C3' + }; + + return diacritics; +}); + +S2.define('select2/data/base',[ + '../utils' +], function (Utils) { + function BaseAdapter ($element, options) { + BaseAdapter.__super__.constructor.call(this); + } + + Utils.Extend(BaseAdapter, Utils.Observable); + + BaseAdapter.prototype.current = function (callback) { + throw new Error('The `current` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.query = function (params, callback) { + throw new Error('The `query` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.bind = function (container, $container) { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.destroy = function () { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.generateResultId = function (container, data) { + var id = ''; + + if (container != null) { + id += container.id + } else { + id += Utils.generateChars(4); + } + + id += '-result-'; + id += Utils.generateChars(4); + + if (data.id != null) { + id += '-' + data.id.toString(); + } else { + id += '-' + Utils.generateChars(4); + } + return id; + }; + + return BaseAdapter; +}); + +S2.define('select2/data/select',[ + './base', + '../utils', + 'jquery' +], function (BaseAdapter, Utils, $) { + function SelectAdapter ($element, options) { + this.$element = $element; + this.options = options; + + SelectAdapter.__super__.constructor.call(this); + } + + Utils.Extend(SelectAdapter, BaseAdapter); + + SelectAdapter.prototype.current = function (callback) { + var data = []; + var self = this; + + this.$element.find(':selected').each(function () { + var $option = $(this); + + var option = self.item($option); + + data.push(option); + }); + + callback(data); + }; + + SelectAdapter.prototype.select = function (data) { + var self = this; + + data.selected = true; + + // If data.element is a DOM node, use it instead + if ($(data.element).is('option')) { + data.element.selected = true; + + this.$element.trigger('change'); + + return; + } + + if (this.$element.prop('multiple')) { + this.current(function (currentData) { + var val = []; + + data = [data]; + data.push.apply(data, currentData); + + for (var d = 0; d < data.length; d++) { + var id = data[d].id; + + if ($.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + self.$element.trigger('change'); + }); + } else { + var val = data.id; + + this.$element.val(val); + this.$element.trigger('change'); + } + }; + + SelectAdapter.prototype.unselect = function (data) { + var self = this; + + if (!this.$element.prop('multiple')) { + return; + } + + data.selected = false; + + if ($(data.element).is('option')) { + data.element.selected = false; + + this.$element.trigger('change'); + + return; + } + + this.current(function (currentData) { + var val = []; + + for (var d = 0; d < currentData.length; d++) { + var id = currentData[d].id; + + if (id !== data.id && $.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + + self.$element.trigger('change'); + }); + }; + + SelectAdapter.prototype.bind = function (container, $container) { + var self = this; + + this.container = container; + + container.on('select', function (params) { + self.select(params.data); + }); + + container.on('unselect', function (params) { + self.unselect(params.data); + }); + }; + + SelectAdapter.prototype.destroy = function () { + // Remove anything added to child elements + this.$element.find('*').each(function () { + // Remove any custom data set by Select2 + $.removeData(this, 'data'); + }); + }; + + SelectAdapter.prototype.query = function (params, callback) { + var data = []; + var self = this; + + var $options = this.$element.children(); + + $options.each(function () { + var $option = $(this); + + if (!$option.is('option') && !$option.is('optgroup')) { + return; + } + + var option = self.item($option); + + var matches = self.matches(params, option); + + if (matches !== null) { + data.push(matches); + } + }); + + callback({ + results: data + }); + }; + + SelectAdapter.prototype.addOptions = function ($options) { + Utils.appendMany(this.$element, $options); + }; + + SelectAdapter.prototype.option = function (data) { + var option; + + if (data.children) { + option = document.createElement('optgroup'); + option.label = data.text; + } else { + option = document.createElement('option'); + + if (option.textContent !== undefined) { + option.textContent = data.text; + } else { + option.innerText = data.text; + } + } + + if (data.id !== undefined) { + option.value = data.id; + } + + if (data.disabled) { + option.disabled = true; + } + + if (data.selected) { + option.selected = true; + } + + if (data.title) { + option.title = data.title; + } + + var $option = $(option); + + var normalizedData = this._normalizeItem(data); + normalizedData.element = option; + + // Override the option's data with the combined data + $.data(option, 'data', normalizedData); + + return $option; + }; + + SelectAdapter.prototype.item = function ($option) { + var data = {}; + + data = $.data($option[0], 'data'); + + if (data != null) { + return data; + } + + if ($option.is('option')) { + data = { + id: $option.val(), + text: $option.text(), + disabled: $option.prop('disabled'), + selected: $option.prop('selected'), + title: $option.prop('title') + }; + } else if ($option.is('optgroup')) { + data = { + text: $option.prop('label'), + children: [], + title: $option.prop('title') + }; + + var $children = $option.children('option'); + var children = []; + + for (var c = 0; c < $children.length; c++) { + var $child = $($children[c]); + + var child = this.item($child); + + children.push(child); + } + + data.children = children; + } + + data = this._normalizeItem(data); + data.element = $option[0]; + + $.data($option[0], 'data', data); + + return data; + }; + + SelectAdapter.prototype._normalizeItem = function (item) { + if (!$.isPlainObject(item)) { + item = { + id: item, + text: item + }; + } + + item = $.extend({}, { + text: '' + }, item); + + var defaults = { + selected: false, + disabled: false + }; + + if (item.id != null) { + item.id = item.id.toString(); + } + + if (item.text != null) { + item.text = item.text.toString(); + } + + if (item._resultId == null && item.id) { + item._resultId = this.generateResultId(this.container, item); + } + + return $.extend({}, defaults, item); + }; + + SelectAdapter.prototype.matches = function (params, data) { + var matcher = this.options.get('matcher'); + + return matcher(params, data); + }; + + return SelectAdapter; +}); + +S2.define('select2/data/array',[ + './select', + '../utils', + 'jquery' +], function (SelectAdapter, Utils, $) { + function ArrayAdapter ($element, options) { + var data = options.get('data') || []; + + ArrayAdapter.__super__.constructor.call(this, $element, options); + + this.addOptions(this.convertToOptions(data)); + } + + Utils.Extend(ArrayAdapter, SelectAdapter); + + ArrayAdapter.prototype.select = function (data) { + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); + + if ($option.length === 0) { + $option = this.option(data); + + this.addOptions($option); + } + + ArrayAdapter.__super__.select.call(this, data); + }; + + ArrayAdapter.prototype.convertToOptions = function (data) { + var self = this; + + var $existing = this.$element.find('option'); + var existingIds = $existing.map(function () { + return self.item($(this)).id; + }).get(); + + var $options = []; + + // Filter out all items except for the one passed in the argument + function onlyItem (item) { + return function () { + return $(this).val() == item.id; + }; + } + + for (var d = 0; d < data.length; d++) { + var item = this._normalizeItem(data[d]); + + // Skip items which were pre-loaded, only merge the data + if ($.inArray(item.id, existingIds) >= 0) { + var $existingOption = $existing.filter(onlyItem(item)); + + var existingData = this.item($existingOption); + var newData = $.extend(true, {}, item, existingData); + + var $newOption = this.option(newData); + + $existingOption.replaceWith($newOption); + + continue; + } + + var $option = this.option(item); + + if (item.children) { + var $children = this.convertToOptions(item.children); + + Utils.appendMany($option, $children); + } + + $options.push($option); + } + + return $options; + }; + + return ArrayAdapter; +}); + +S2.define('select2/data/ajax',[ + './array', + '../utils', + 'jquery' +], function (ArrayAdapter, Utils, $) { + function AjaxAdapter ($element, options) { + this.ajaxOptions = this._applyDefaults(options.get('ajax')); + + if (this.ajaxOptions.processResults != null) { + this.processResults = this.ajaxOptions.processResults; + } + + AjaxAdapter.__super__.constructor.call(this, $element, options); + } + + Utils.Extend(AjaxAdapter, ArrayAdapter); + + AjaxAdapter.prototype._applyDefaults = function (options) { + var defaults = { + data: function (params) { + return $.extend({}, params, { + q: params.term + }); + }, + transport: function (params, success, failure) { + var $request = $.ajax(params); + + $request.then(success); + $request.fail(failure); + + return $request; + } + }; + + return $.extend({}, defaults, options, true); + }; + + AjaxAdapter.prototype.processResults = function (results) { + return results; + }; + + AjaxAdapter.prototype.query = function (params, callback) { + var matches = []; + var self = this; + + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + + this._request = null; + } + + var options = $.extend({ + type: 'GET' + }, this.ajaxOptions); + + if (typeof options.url === 'function') { + options.url = options.url.call(this.$element, params); + } + + if (typeof options.data === 'function') { + options.data = options.data.call(this.$element, params); + } + + function request () { + var $request = options.transport(options, function (data) { + var results = self.processResults(data, params); + + if (self.options.get('debug') && window.console && console.error) { + // Check to make sure that the response included a `results` key. + if (!results || !results.results || !$.isArray(results.results)) { + console.error( + 'Select2: The AJAX results did not return an array in the ' + + '`results` key of the response.' + ); + } + } + + callback(results); + self.container.focusOnActiveElement(); + }, function () { + // Attempt to detect if a request was aborted + // Only works if the transport exposes a status property + if ($request.status && $request.status === '0') { + return; + } + + self.trigger('results:message', { + message: 'errorLoading' + }); + }); + + self._request = $request; + } + + if (this.ajaxOptions.delay && params.term != null) { + if (this._queryTimeout) { + window.clearTimeout(this._queryTimeout); + } + + this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); + } else { + request(); + } + }; + + return AjaxAdapter; +}); + +S2.define('select2/data/tags',[ + 'jquery' +], function ($) { + function Tags (decorated, $element, options) { + var tags = options.get('tags'); + + var createTag = options.get('createTag'); + + if (createTag !== undefined) { + this.createTag = createTag; + } + + var insertTag = options.get('insertTag'); + + if (insertTag !== undefined) { + this.insertTag = insertTag; + } + + decorated.call(this, $element, options); + + if ($.isArray(tags)) { + for (var t = 0; t < tags.length; t++) { + var tag = tags[t]; + var item = this._normalizeItem(tag); + + var $option = this.option(item); + + this.$element.append($option); + } + } + } + + Tags.prototype.query = function (decorated, params, callback) { + var self = this; + + this._removeOldTags(); + + if (params.term == null || params.page != null) { + decorated.call(this, params, callback); + return; + } + + function wrapper (obj, child) { + var data = obj.results; + + for (var i = 0; i < data.length; i++) { + var option = data[i]; + + var checkChildren = ( + option.children != null && + !wrapper({ + results: option.children + }, true) + ); + + var optionText = (option.text || '').toUpperCase(); + var paramsTerm = (params.term || '').toUpperCase(); + + var checkText = optionText === paramsTerm; + + if (checkText || checkChildren) { + if (child) { + return false; + } + + obj.data = data; + callback(obj); + + return; + } + } + + if (child) { + return true; + } + + var tag = self.createTag(params); + + if (tag != null) { + var $option = self.option(tag); + $option.attr('data-select2-tag', true); + + self.addOptions([$option]); + + self.insertTag(data, tag); + } + + obj.results = data; + + callback(obj); + } + + decorated.call(this, params, wrapper); + }; + + Tags.prototype.createTag = function (decorated, params) { + var term = $.trim(params.term); + + if (term === '') { + return null; + } + + return { + id: term, + text: term + }; + }; + + Tags.prototype.insertTag = function (_, data, tag) { + data.unshift(tag); + }; + + Tags.prototype._removeOldTags = function (_) { + var tag = this._lastTag; + + var $options = this.$element.find('option[data-select2-tag]'); + + $options.each(function () { + if (this.selected) { + return; + } + + $(this).remove(); + }); + }; + + return Tags; +}); + +S2.define('select2/data/tokenizer',[ + 'jquery' +], function ($) { + function Tokenizer (decorated, $element, options) { + var tokenizer = options.get('tokenizer'); + + if (tokenizer !== undefined) { + this.tokenizer = tokenizer; + } + + decorated.call(this, $element, options); + } + + Tokenizer.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + this.$search = container.dropdown.$search || container.selection.$search || + $container.find('.select2-search__field'); + }; + + Tokenizer.prototype.query = function (decorated, params, callback) { + var self = this; + + function createAndSelect (data) { + // Normalize the data object so we can use it for checks + var item = self._normalizeItem(data); + + // Check if the data object already exists as a tag + // Select it if it doesn't + var $existingOptions = self.$element.find('option').filter(function () { + return $(this).val() === item.id; + }); + + // If an existing option wasn't found for it, create the option + if (!$existingOptions.length) { + var $option = self.option(item); + $option.attr('data-select2-tag', true); + + self._removeOldTags(); + self.addOptions([$option]); + } + + // Select the item, now that we know there is an option for it + select(item); + } + + function select (data) { + self.trigger('select', { + data: data + }); + } + + params.term = params.term || ''; + + var tokenData = this.tokenizer(params, this.options, createAndSelect); + + if (tokenData.term !== params.term) { + // Replace the search term if we have the search box + if (this.$search.length) { + this.$search.val(tokenData.term); + this.$search.focus(); + } + + params.term = tokenData.term; + } + + decorated.call(this, params, callback); + }; + + Tokenizer.prototype.tokenizer = function (_, params, options, callback) { + var separators = options.get('tokenSeparators') || []; + var term = params.term; + var i = 0; + + var createTag = this.createTag || function (params) { + return { + id: params.term, + text: params.term + }; + }; + + while (i < term.length) { + var termChar = term[i]; + + if ($.inArray(termChar, separators) === -1) { + i++; + + continue; + } + + var part = term.substr(0, i); + var partParams = $.extend({}, params, { + term: part + }); + + var data = createTag(partParams); + + if (data == null) { + i++; + continue; + } + + callback(data); + + // Reset the term to not include the tokenized portion + term = term.substr(i + 1) || ''; + i = 0; + } + + return { + term: term + }; + }; + + return Tokenizer; +}); + +S2.define('select2/data/minimumInputLength',[ + +], function () { + function MinimumInputLength (decorated, $e, options) { + this.minimumInputLength = options.get('minimumInputLength'); + + decorated.call(this, $e, options); + } + + MinimumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (params.term.length < this.minimumInputLength) { + this.trigger('results:message', { + message: 'inputTooShort', + args: { + minimum: this.minimumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MinimumInputLength; +}); + +S2.define('select2/data/maximumInputLength',[ + +], function () { + function MaximumInputLength (decorated, $e, options) { + this.maximumInputLength = options.get('maximumInputLength'); + + decorated.call(this, $e, options); + } + + MaximumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (this.maximumInputLength > 0 && + params.term.length > this.maximumInputLength) { + this.trigger('results:message', { + message: 'inputTooLong', + args: { + maximum: this.maximumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MaximumInputLength; +}); + +S2.define('select2/data/maximumSelectionLength',[ + +], function (){ + function MaximumSelectionLength (decorated, $e, options) { + this.maximumSelectionLength = options.get('maximumSelectionLength'); + + decorated.call(this, $e, options); + } + + MaximumSelectionLength.prototype.query = + function (decorated, params, callback) { + var self = this; + + this.current(function (currentData) { + var count = currentData != null ? currentData.length : 0; + if (self.maximumSelectionLength > 0 && + count >= self.maximumSelectionLength) { + self.trigger('results:message', { + message: 'maximumSelected', + args: { + maximum: self.maximumSelectionLength + } + }); + return; + } + decorated.call(self, params, callback); + }); + }; + + return MaximumSelectionLength; +}); + +S2.define('select2/dropdown',[ + 'jquery', + './utils' +], function ($, Utils) { + function Dropdown ($element, options) { + this.$element = $element; + this.options = options; + + Dropdown.__super__.constructor.call(this); + } + + Utils.Extend(Dropdown, Utils.Observable); + + Dropdown.prototype.render = function () { + var $dropdown = $( + '' + + '' + + '' + ); + + $dropdown.attr('dir', this.options.get('dir')); + + this.$dropdown = $dropdown; + + return $dropdown; + }; + + Dropdown.prototype.bind = function () { + // Should be implemented in subclasses + }; + + Dropdown.prototype.position = function ($dropdown, $container) { + // Should be implmented in subclasses + }; + + Dropdown.prototype.destroy = function () { + // Remove the dropdown from the DOM + this.$dropdown.remove(); + }; + + return Dropdown; +}); + +S2.define('select2/dropdown/search',[ + 'jquery', + '../utils' +], function ($, Utils) { + function Search () { } + + Search.prototype.render = function (decorated) { + var $rendered = decorated.call(this); + + var $search = $( + '' + + '' + + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + $rendered.prepend($search); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + this.$search.on('keydown', function (evt) { + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + }); + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$search.on('input', function (evt) { + // Unbind the duplicated `keyup` event + $(this).off('keyup'); + }); + + this.$search.on('keyup input', function (evt) { + self.handleSearch(evt); + }); + + container.on('open', function () { + self.$search.attr('tabindex', 0); + self.$search.attr('aria-owns', resultsId); + self.$search.focus(); + + window.setTimeout(function () { + self.$search.focus(); + }, 0); + }); + + container.on('close', function () { + self.$search.attr('tabindex', -1); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.val(''); + }); + + container.on('focus', function () { + if (container.isOpen()) { + self.$search.focus(); + } + }); + + container.on('results:all', function (params) { + if (params.query.term == null || params.query.term === '') { + var showSearch = self.showSearch(params); + + if (showSearch) { + self.$searchContainer.removeClass('select2-search--hide'); + } else { + self.$searchContainer.addClass('select2-search--hide'); + } + } + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + }; + + Search.prototype.handleSearch = function (evt) { + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.showSearch = function (_, params) { + return true; + }; + + return Search; +}); + +S2.define('select2/dropdown/hidePlaceholder',[ + +], function () { + function HidePlaceholder (decorated, $element, options, dataAdapter) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options, dataAdapter); + } + + HidePlaceholder.prototype.append = function (decorated, data) { + data.results = this.removePlaceholder(data.results); + + decorated.call(this, data); + }; + + HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + HidePlaceholder.prototype.removePlaceholder = function (_, data) { + var modifiedData = data.slice(0); + + for (var d = data.length - 1; d >= 0; d--) { + var item = data[d]; + + if (this.placeholder.id === item.id) { + modifiedData.splice(d, 1); + } + } + + return modifiedData; + }; + + return HidePlaceholder; +}); + +S2.define('select2/dropdown/infiniteScroll',[ + 'jquery' +], function ($) { + function InfiniteScroll (decorated, $element, options, dataAdapter) { + this.lastParams = {}; + + decorated.call(this, $element, options, dataAdapter); + + this.$loadingMore = this.createLoadingMore(); + this.loading = false; + } + + InfiniteScroll.prototype.append = function (decorated, data) { + this.$loadingMore.remove(); + this.loading = false; + + decorated.call(this, data); + + if (this.showLoadingMore(data)) { + this.$results.append(this.$loadingMore); + } + }; + + InfiniteScroll.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('query', function (params) { + self.lastParams = params; + self.loading = true; + }); + + container.on('query:append', function (params) { + self.lastParams = params; + self.loading = true; + }); + + this.$results.on('scroll', function () { + var isLoadMoreVisible = $.contains( + document.documentElement, + self.$loadingMore[0] + ); + + if (self.loading || !isLoadMoreVisible) { + return; + } + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var loadingMoreOffset = self.$loadingMore.offset().top + + self.$loadingMore.outerHeight(false); + + if (currentOffset + 50 >= loadingMoreOffset) { + self.loadMore(); + } + }); + }; + + InfiniteScroll.prototype.loadMore = function () { + this.loading = true; + + var params = $.extend({}, {page: 1}, this.lastParams); + + params.page++; + + this.trigger('query:append', params); + }; + + InfiniteScroll.prototype.showLoadingMore = function (_, data) { + return data.pagination && data.pagination.more; + }; + + InfiniteScroll.prototype.createLoadingMore = function () { + var $option = $( + '
                • ' + ); + + var message = this.options.get('translations').get('loadingMore'); + + $option.html(message(this.lastParams)); + + return $option; + }; + + return InfiniteScroll; +}); + +S2.define('select2/dropdown/attachBody',[ + 'jquery', + '../utils' +], function ($, Utils) { + function AttachBody (decorated, $element, options) { + this.$dropdownParent = options.get('dropdownParent') || $(document.body); + + decorated.call(this, $element, options); + } + + AttachBody.prototype.bind = function (decorated, container, $container) { + var self = this; + + var setupResultsEvents = false; + + decorated.call(this, container, $container); + + container.on('open', function () { + self._showDropdown(); + self._attachPositioningHandler(container); + + if (!setupResultsEvents) { + setupResultsEvents = true; + + container.on('results:all', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + + container.on('results:append', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + } + }); + + container.on('close', function () { + self._hideDropdown(); + self._detachPositioningHandler(container); + }); + + this.$dropdownContainer.on('mousedown', function (evt) { + evt.stopPropagation(); + }); + }; + + AttachBody.prototype.destroy = function (decorated) { + decorated.call(this); + + this.$dropdownContainer.remove(); + }; + + AttachBody.prototype.position = function (decorated, $dropdown, $container) { + // Clone all of the container classes + $dropdown.attr('class', $container.attr('class')); + + $dropdown.removeClass('select2'); + $dropdown.addClass('select2-container--open'); + + $dropdown.css({ + position: 'absolute', + top: -999999 + }); + + this.$container = $container; + }; + + AttachBody.prototype.render = function (decorated) { + var $container = $(''); + + var $dropdown = decorated.call(this); + $container.append($dropdown); + + this.$dropdownContainer = $container; + + return $container; + }; + + AttachBody.prototype._hideDropdown = function (decorated) { + this.$dropdownContainer.detach(); + }; + + AttachBody.prototype._attachPositioningHandler = + function (decorated, container) { + var self = this; + + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.each(function () { + $(this).data('select2-scroll-position', { + x: $(this).scrollLeft(), + y: $(this).scrollTop() + }); + }); + + $watchers.on(scrollEvent, function (ev) { + var position = $(this).data('select2-scroll-position'); + $(this).scrollTop(position.y); + }); + + $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, + function (e) { + self._positionDropdown(); + self._resizeDropdown(); + }); + }; + + AttachBody.prototype._detachPositioningHandler = + function (decorated, container) { + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.off(scrollEvent); + + $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); + }; + + AttachBody.prototype._positionDropdown = function () { + var $window = $(window); + + var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); + var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); + + var newDirection = null; + + var offset = this.$container.offset(); + + offset.bottom = offset.top + this.$container.outerHeight(false); + + var container = { + height: this.$container.outerHeight(false) + }; + + container.top = offset.top; + container.bottom = offset.top + container.height; + + var dropdown = { + height: this.$dropdown.outerHeight(false) + }; + + var viewport = { + top: $window.scrollTop(), + bottom: $window.scrollTop() + $window.height() + }; + + var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); + var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); + + var css = { + left: offset.left, + top: container.bottom + }; + + // Determine what the parent element is to use for calciulating the offset + var $offsetParent = this.$dropdownParent; + + // For statically positoned elements, we need to get the element + // that is determining the offset + if ($offsetParent.css('position') === 'static') { + $offsetParent = $offsetParent.offsetParent(); + } + + var parentOffset = $offsetParent.offset(); + + css.top -= parentOffset.top; + css.left -= parentOffset.left; + + if (!isCurrentlyAbove && !isCurrentlyBelow) { + newDirection = 'below'; + } + + if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { + newDirection = 'above'; + } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { + newDirection = 'below'; + } + + if (newDirection == 'above' || + (isCurrentlyAbove && newDirection !== 'below')) { + css.top = container.top - parentOffset.top - dropdown.height; + } + + if (newDirection != null) { + this.$dropdown + .removeClass('select2-dropdown--below select2-dropdown--above') + .addClass('select2-dropdown--' + newDirection); + this.$container + .removeClass('select2-container--below select2-container--above') + .addClass('select2-container--' + newDirection); + } + + this.$dropdownContainer.css(css); + }; + + AttachBody.prototype._resizeDropdown = function () { + var css = { + width: this.$container.outerWidth(false) + 'px' + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.position = 'relative'; + css.width = 'auto'; + } + + this.$dropdown.css(css); + }; + + AttachBody.prototype._showDropdown = function (decorated) { + this.$dropdownContainer.appendTo(this.$dropdownParent); + + this._positionDropdown(); + this._resizeDropdown(); + }; + + return AttachBody; +}); + +S2.define('select2/dropdown/minimumResultsForSearch',[ + +], function () { + function countResults (data) { + var count = 0; + + for (var d = 0; d < data.length; d++) { + var item = data[d]; + + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + } + + return count; + } + + function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { + this.minimumResultsForSearch = options.get('minimumResultsForSearch'); + + if (this.minimumResultsForSearch < 0) { + this.minimumResultsForSearch = Infinity; + } + + decorated.call(this, $element, options, dataAdapter); + } + + MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { + if (countResults(params.data.results) < this.minimumResultsForSearch) { + return false; + } + + return decorated.call(this, params); + }; + + return MinimumResultsForSearch; +}); + +S2.define('select2/dropdown/selectOnClose',[ + +], function () { + function SelectOnClose () { } + + SelectOnClose.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('close', function (params) { + self._handleSelectOnClose(params); + }); + }; + + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + + var $highlightedResults = this.getHighlightedResults(); + + // Only select highlighted results + if ($highlightedResults.length < 1) { + return; + } + + var data = $highlightedResults.data('data'); + + // Don't re-select already selected resulte + if ( + (data.element != null && data.element.selected) || + (data.element == null && data.selected) + ) { + return; + } + + this.trigger('select', { + data: data + }); + }; + + return SelectOnClose; +}); + +S2.define('select2/dropdown/closeOnSelect',[ + +], function () { + function CloseOnSelect () { } + + CloseOnSelect.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('select', function (evt) { + self._selectTriggered(evt); + }); + + container.on('unselect', function (evt) { + self._selectTriggered(evt); + }); + }; + + CloseOnSelect.prototype._selectTriggered = function (_, evt) { + var originalEvent = evt.originalEvent; + + // Don't close if the control key is being held + if (originalEvent && originalEvent.ctrlKey) { + return; + } + + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); + }; + + return CloseOnSelect; +}); + +S2.define('select2/i18n/en',[],function () { + // English + return { + errorLoading: function () { + return 'The results could not be loaded.'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'Please delete ' + overChars + ' character'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'Please enter ' + remainingChars + ' or more characters'; + + return message; + }, + loadingMore: function () { + return 'Loading more results…'; + }, + maximumSelected: function (args) { + var message = 'You can only select ' + args.maximum + ' item'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'No results found'; + }, + searching: function () { + return 'Searching…'; + } + }; +}); + +S2.define('select2/defaults',[ + 'jquery', + 'require', + + './results', + + './selection/single', + './selection/multiple', + './selection/placeholder', + './selection/allowClear', + './selection/search', + './selection/eventRelay', + + './utils', + './translation', + './diacritics', + + './data/select', + './data/array', + './data/ajax', + './data/tags', + './data/tokenizer', + './data/minimumInputLength', + './data/maximumInputLength', + './data/maximumSelectionLength', + + './dropdown', + './dropdown/search', + './dropdown/hidePlaceholder', + './dropdown/infiniteScroll', + './dropdown/attachBody', + './dropdown/minimumResultsForSearch', + './dropdown/selectOnClose', + './dropdown/closeOnSelect', + + './i18n/en' +], function ($, require, + + ResultsList, + + SingleSelection, MultipleSelection, Placeholder, AllowClear, + SelectionSearch, EventRelay, + + Utils, Translation, DIACRITICS, + + SelectData, ArrayData, AjaxData, Tags, Tokenizer, + MinimumInputLength, MaximumInputLength, MaximumSelectionLength, + + Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, + AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, + + EnglishTranslation) { + function Defaults () { + this.reset(); + } + + Defaults.prototype.apply = function (options) { + options = $.extend(true, {}, this.defaults, options); + + if (options.dataAdapter == null) { + if (options.ajax != null) { + options.dataAdapter = AjaxData; + } else if (options.data != null) { + options.dataAdapter = ArrayData; + } else { + options.dataAdapter = SelectData; + } + + if (options.minimumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MinimumInputLength + ); + } + + if (options.maximumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumInputLength + ); + } + + if (options.maximumSelectionLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumSelectionLength + ); + } + + if (options.tags) { + options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); + } + + if (options.tokenSeparators != null || options.tokenizer != null) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Tokenizer + ); + } + + if (options.query != null) { + var Query = require(options.amdBase + 'compat/query'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Query + ); + } + + if (options.initSelection != null) { + var InitSelection = require(options.amdBase + 'compat/initSelection'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + InitSelection + ); + } + } + + if (options.resultsAdapter == null) { + options.resultsAdapter = ResultsList; + + if (options.ajax != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + InfiniteScroll + ); + } + + if (options.placeholder != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + HidePlaceholder + ); + } + + if (options.selectOnClose) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + SelectOnClose + ); + } + } + + if (options.dropdownAdapter == null) { + if (options.multiple) { + options.dropdownAdapter = Dropdown; + } else { + var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); + + options.dropdownAdapter = SearchableDropdown; + } + + if (options.minimumResultsForSearch !== 0) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + MinimumResultsForSearch + ); + } + + if (options.closeOnSelect) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + CloseOnSelect + ); + } + + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + AttachBody + ); + } + + if (options.selectionAdapter == null) { + if (options.multiple) { + options.selectionAdapter = MultipleSelection; + } else { + options.selectionAdapter = SingleSelection; + } + + // Add the placeholder mixin if a placeholder was specified + if (options.placeholder != null) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + Placeholder + ); + } + + if (options.allowClear) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + AllowClear + ); + } + + if (options.multiple) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + SelectionSearch + ); + } + + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + EventRelay + ); + } + + if (typeof options.language === 'string') { + // Check if the language is specified with a region + if (options.language.indexOf('-') > 0) { + // Extract the region information if it is included + var languageParts = options.language.split('-'); + var baseLanguage = languageParts[0]; + + options.language = [options.language, baseLanguage]; + } else { + options.language = [options.language]; + } + } + + if ($.isArray(options.language)) { + var languages = new Translation(); + options.language.push('en'); + + var languageNames = options.language; + + for (var l = 0; l < languageNames.length; l++) { + var name = languageNames[l]; + var language = {}; + + try { + // Try to load it with the original name + language = Translation.loadPath(name); + } catch (e) { + try { + // If we couldn't load it, check if it wasn't the full path + name = this.defaults.amdLanguageBase + name; + language = Translation.loadPath(name); + } catch (ex) { + // The translation could not be loaded at all. Sometimes this is + // because of a configuration problem, other times this can be + // because of how Select2 helps load all possible translation files. + if (options.debug && window.console && console.warn) { + console.warn( + 'Select2: The language file for "' + name + '" could not be ' + + 'automatically loaded. A fallback will be used instead.' + ); + } + + continue; + } + } + + languages.extend(language); + } + + options.translations = languages; + } else { + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; + } + + return options; + }; + + Defaults.prototype.reset = function () { + function stripDiacritics (text) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return text.replace(/[^\u0000-\u007E]/g, match); + } + + function matcher (params, data) { + // Always return the object if there is nothing to compare + if ($.trim(params.term) === '') { + return data; + } + + // Do a recursive check for options with children + if (data.children && data.children.length > 0) { + // Clone the data object if there are children + // This is required as we modify the object to remove any non-matches + var match = $.extend(true, {}, data); + + // Check each child of the option + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + var matches = matcher(params, child); + + // If there wasn't a match, remove the object in the array + if (matches == null) { + match.children.splice(c, 1); + } + } + + // If any children matched, return the new object + if (match.children.length > 0) { + return match; + } + + // If there were no matching children, check just the plain object + return matcher(params, match); + } + + var original = stripDiacritics(data.text).toUpperCase(); + var term = stripDiacritics(params.term).toUpperCase(); + + // Check if the text contains the term + if (original.indexOf(term) > -1) { + return data; + } + + // If it doesn't contain the term, don't return anything + return null; + } + + this.defaults = { + amdBase: './', + amdLanguageBase: './i18n/', + closeOnSelect: true, + debug: false, + dropdownAutoWidth: false, + escapeMarkup: Utils.escapeMarkup, + language: EnglishTranslation, + matcher: matcher, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: false, + sorter: function (data) { + return data; + }, + templateResult: function (result) { + return result.text; + }, + templateSelection: function (selection) { + return selection.text; + }, + theme: 'default', + width: 'resolve' + }; + }; + + Defaults.prototype.set = function (key, value) { + var camelKey = $.camelCase(key); + + var data = {}; + data[camelKey] = value; + + var convertedData = Utils._convertData(data); + + $.extend(this.defaults, convertedData); + }; + + var defaults = new Defaults(); + + return defaults; +}); + +S2.define('select2/options',[ + 'require', + 'jquery', + './defaults', + './utils' +], function (require, $, Defaults, Utils) { + function Options (options, $element) { + this.options = options; + + if ($element != null) { + this.fromElement($element); + } + + this.options = Defaults.apply(this.options); + + if ($element && $element.is('input')) { + var InputCompat = require(this.get('amdBase') + 'compat/inputData'); + + this.options.dataAdapter = Utils.Decorate( + this.options.dataAdapter, + InputCompat + ); + } + } + + Options.prototype.fromElement = function ($e) { + var excludedData = ['select2']; + + if (this.options.multiple == null) { + this.options.multiple = $e.prop('multiple'); + } + + if (this.options.disabled == null) { + this.options.disabled = $e.prop('disabled'); + } + + if (this.options.language == null) { + if ($e.prop('lang')) { + this.options.language = $e.prop('lang').toLowerCase(); + } else if ($e.closest('[lang]').prop('lang')) { + this.options.language = $e.closest('[lang]').prop('lang'); + } + } + + if (this.options.dir == null) { + if ($e.prop('dir')) { + this.options.dir = $e.prop('dir'); + } else if ($e.closest('[dir]').prop('dir')) { + this.options.dir = $e.closest('[dir]').prop('dir'); + } else { + this.options.dir = 'ltr'; + } + } + + $e.prop('disabled', this.options.disabled); + $e.prop('multiple', this.options.multiple); + + if ($e.data('select2Tags')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to ' + + 'use the `data-data` and `data-tags="true"` attributes and will be ' + + 'removed in future versions of Select2.' + ); + } + + $e.data('data', $e.data('select2Tags')); + $e.data('tags', true); + } + + if ($e.data('ajaxUrl')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-ajax-url` attribute has been changed to ' + + '`data-ajax--url` and support for the old attribute will be removed' + + ' in future versions of Select2.' + ); + } + + $e.attr('ajax--url', $e.data('ajaxUrl')); + $e.data('ajax--url', $e.data('ajaxUrl')); + } + + var dataset = {}; + + // Prefer the element's `dataset` attribute if it exists + // jQuery 1.x does not correctly handle data attributes with multiple dashes + if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { + dataset = $.extend(true, {}, $e[0].dataset, $e.data()); + } else { + dataset = $e.data(); + } + + var data = $.extend(true, {}, dataset); + + data = Utils._convertData(data); + + for (var key in data) { + if ($.inArray(key, excludedData) > -1) { + continue; + } + + if ($.isPlainObject(this.options[key])) { + $.extend(this.options[key], data[key]); + } else { + this.options[key] = data[key]; + } + } + + return this; + }; + + Options.prototype.get = function (key) { + return this.options[key]; + }; + + Options.prototype.set = function (key, val) { + this.options[key] = val; + }; + + return Options; +}); + +S2.define('select2/core',[ + 'jquery', + './options', + './utils', + './keys' +], function ($, Options, Utils, KEYS) { + var Select2 = function ($element, options) { + if ($element.data('select2') != null) { + $element.data('select2').destroy(); + } + + this.$element = $element; + + this.id = this._generateId($element); + + options = options || {}; + + this.options = new Options(options, $element); + + Select2.__super__.constructor.call(this); + + // Set up the tabindex + + var tabindex = $element.attr('tabindex') || 0; + $element.data('old-tabindex', tabindex); + $element.attr('tabindex', '-1'); + + // Set up containers and adapters + + var DataAdapter = this.options.get('dataAdapter'); + this.dataAdapter = new DataAdapter($element, this.options); + + var $container = this.render(); + + this._placeContainer($container); + + var SelectionAdapter = this.options.get('selectionAdapter'); + this.selection = new SelectionAdapter($element, this.options); + this.$selection = this.selection.render(); + + this.selection.position(this.$selection, $container); + + var DropdownAdapter = this.options.get('dropdownAdapter'); + this.dropdown = new DropdownAdapter($element, this.options); + this.$dropdown = this.dropdown.render(); + + this.dropdown.position(this.$dropdown, $container); + + var ResultsAdapter = this.options.get('resultsAdapter'); + this.results = new ResultsAdapter($element, this.options, this.dataAdapter); + this.$results = this.results.render(); + + this.results.position(this.$results, this.$dropdown); + + // Bind events + + var self = this; + + // Bind the container to all of the adapters + this._bindAdapters(); + + // Register any DOM event handlers + this._registerDomEvents(); + + // Register any internal event handlers + this._registerDataEvents(); + this._registerSelectionEvents(); + this._registerDropdownEvents(); + this._registerResultsEvents(); + this._registerEvents(); + + // Set the initial state + this.dataAdapter.current(function (initialData) { + self.trigger('selection:update', { + data: initialData + }); + }); + + // Hide the original select + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + + // Synchronize any monitored attributes + this._syncAttributes(); + + $element.data('select2', this); + }; + + Utils.Extend(Select2, Utils.Observable); + + Select2.prototype._generateId = function ($element) { + var id = ''; + + if ($element.attr('id') != null) { + id = $element.attr('id'); + } else if ($element.attr('name') != null) { + id = $element.attr('name') + '-' + Utils.generateChars(2); + } else { + id = Utils.generateChars(4); + } + + id = id.replace(/(:|\.|\[|\]|,)/g, ''); + id = 'select2-' + id; + + return id; + }; + + Select2.prototype._placeContainer = function ($container) { + $container.insertAfter(this.$element); + + var width = this._resolveWidth(this.$element, this.options.get('width')); + + if (width != null) { + $container.css('width', width); + } + }; + + Select2.prototype._resolveWidth = function ($element, method) { + var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + + if (method == 'resolve') { + var styleWidth = this._resolveWidth($element, 'style'); + + if (styleWidth != null) { + return styleWidth; + } + + return this._resolveWidth($element, 'element'); + } + + if (method == 'element') { + var elementWidth = $element.outerWidth(false); + + if (elementWidth <= 0) { + return 'auto'; + } + + return elementWidth + 'px'; + } + + if (method == 'style') { + var style = $element.attr('style'); + + if (typeof(style) !== 'string') { + return null; + } + + var attrs = style.split(';'); + + for (var i = 0, l = attrs.length; i < l; i = i + 1) { + var attr = attrs[i].replace(/\s/g, ''); + var matches = attr.match(WIDTH); + + if (matches !== null && matches.length >= 1) { + return matches[1]; + } + } + + return null; + } + + return method; + }; + + Select2.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container); + this.selection.bind(this, this.$container); + + this.dropdown.bind(this, this.$container); + this.results.bind(this, this.$container); + }; + + Select2.prototype._registerDomEvents = function () { + var self = this; + + this.$element.on('change.select2', function () { + self.dataAdapter.current(function (data) { + self.trigger('selection:update', { + data: data + }); + }); + }); + + this.$element.on('focus.select2', function (evt) { + self.trigger('focus', evt); + }); + + this._syncA = Utils.bind(this._syncAttributes, this); + this._syncS = Utils.bind(this._syncSubtree, this); + + if (this.$element[0].attachEvent) { + this.$element[0].attachEvent('onpropertychange', this._syncA); + } + + var observer = window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver + ; + + if (observer != null) { + this._observer = new observer(function (mutations) { + $.each(mutations, self._syncA); + $.each(mutations, self._syncS); + }); + this._observer.observe(this.$element[0], { + attributes: true, + childList: true, + subtree: false + }); + } else if (this.$element[0].addEventListener) { + this.$element[0].addEventListener( + 'DOMAttrModified', + self._syncA, + false + ); + this.$element[0].addEventListener( + 'DOMNodeInserted', + self._syncS, + false + ); + this.$element[0].addEventListener( + 'DOMNodeRemoved', + self._syncS, + false + ); + } + }; + + Select2.prototype._registerDataEvents = function () { + var self = this; + + this.dataAdapter.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerSelectionEvents = function () { + var self = this; + var nonRelayEvents = ['toggle', 'focus']; + + this.selection.on('toggle', function () { + self.toggleDropdown(); + }); + + this.selection.on('focus', function (params) { + self.focus(params); + }); + + this.selection.on('*', function (name, params) { + if ($.inArray(name, nonRelayEvents) !== -1) { + return; + } + + self.trigger(name, params); + }); + }; + + Select2.prototype._registerDropdownEvents = function () { + var self = this; + + this.dropdown.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerResultsEvents = function () { + var self = this; + + this.results.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerEvents = function () { + var self = this; + + this.on('open', function () { + self.$container.addClass('select2-container--open'); + }); + + this.on('close', function () { + self.$container.removeClass('select2-container--open'); + }); + + this.on('enable', function () { + self.$container.removeClass('select2-container--disabled'); + }); + + this.on('disable', function () { + self.$container.addClass('select2-container--disabled'); + }); + + this.on('blur', function () { + self.$container.removeClass('select2-container--focus'); + }); + + this.on('query', function (params) { + if (!self.isOpen()) { + self.trigger('open', {}); + } + + this.dataAdapter.query(params, function (data) { + self.trigger('results:all', { + data: data, + query: params + }); + }); + }); + + this.on('query:append', function (params) { + this.dataAdapter.query(params, function (data) { + self.trigger('results:append', { + data: data, + query: params + }); + }); + }); + + this.on('open', function(){ + // Focus on the active element when opening dropdown. + // Needs 1 ms delay because of other 1 ms setTimeouts when rendering. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1); + }); + + $(document).on('keydown', function (evt) { + var key = evt.which; + if (self.isOpen()) { + if (key === KEYS.ESC || key === KEYS.TAB || + (key === KEYS.UP && evt.altKey)) { + self.close(); + + evt.preventDefault(); + } else if (key === KEYS.ENTER) { + self.trigger('results:select', {}); + + evt.preventDefault(); + } else if ((key === KEYS.SPACE && evt.ctrlKey)) { + self.trigger('results:toggle', {}); + + evt.preventDefault(); + } else if (key === KEYS.UP) { + self.trigger('results:previous', {}); + + evt.preventDefault(); + } else if (key === KEYS.DOWN) { + self.trigger('results:next', {}); + + evt.preventDefault(); + } + + // Move the focus to the selected element on keyboard navigation. + // Required for screen readers to work properly. + if (key === KEYS.DOWN || key === KEYS.UP) { + self.focusOnActiveElement(); + } else { + // Focus on the search if user starts typing. + var $searchField = self.$dropdown.find('.select2-search__field'); + if (! $searchField.length) { + $searchField = self.$container.find('.select2-search__field'); + } + $searchField.focus(); + // Focus back to active selection when finished typing. + // Small delay so typed character can be read by screen reader. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1000); + } + + } else if (self.hasFocus()) { + if (key === KEYS.ENTER || key === KEYS.SPACE || + (key === KEYS.DOWN && evt.altKey)) { + self.open(); + evt.preventDefault(); + } + } + }); + }; + + Select2.prototype.focusOnActiveElement = function () { + // Don't mess with the focus on touchscreens because it causes havoc with on-screen keyboards. + if (! Utils.isTouchscreen()) { + this.$results.find('li.select2-results__option--highlighted').focus(); + } + }; + + Select2.prototype._syncAttributes = function () { + this.options.set('disabled', this.$element.prop('disabled')); + + if (this.options.get('disabled')) { + if (this.isOpen()) { + this.close(); + } + + this.trigger('disable', {}); + } else { + this.trigger('enable', {}); + } + }; + + Select2.prototype._syncSubtree = function (evt, mutations) { + var changed = false; + var self = this; + + // Ignore any mutation events raised for elements that aren't options or + // optgroups. This handles the case when the select element is destroyed + if ( + evt && evt.target && ( + evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' + ) + ) { + return; + } + + if (!mutations) { + // If mutation events aren't supported, then we can only assume that the + // change affected the selections + changed = true; + } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { + for (var n = 0; n < mutations.addedNodes.length; n++) { + var node = mutations.addedNodes[n]; + + if (node.selected) { + changed = true; + } + } + } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { + changed = true; + } + + // Only re-pull the data if we think there is a change + if (changed) { + this.dataAdapter.current(function (currentData) { + self.trigger('selection:update', { + data: currentData + }); + }); + } + }; + + /** + * Override the trigger method to automatically trigger pre-events when + * there are events that can be prevented. + */ + Select2.prototype.trigger = function (name, args) { + var actualTrigger = Select2.__super__.trigger; + var preTriggerMap = { + 'open': 'opening', + 'close': 'closing', + 'select': 'selecting', + 'unselect': 'unselecting' + }; + + if (args === undefined) { + args = {}; + } + + if (name in preTriggerMap) { + var preTriggerName = preTriggerMap[name]; + var preTriggerArgs = { + prevented: false, + name: name, + args: args + }; + + actualTrigger.call(this, preTriggerName, preTriggerArgs); + + if (preTriggerArgs.prevented) { + args.prevented = true; + + return; + } + } + + actualTrigger.call(this, name, args); + }; + + Select2.prototype.toggleDropdown = function () { + if (this.options.get('disabled')) { + return; + } + + if (this.isOpen()) { + this.close(); + } else { + this.open(); + } + }; + + Select2.prototype.open = function () { + if (this.isOpen()) { + return; + } + + this.trigger('query', {}); + }; + + Select2.prototype.close = function () { + if (!this.isOpen()) { + return; + } + + this.trigger('close', {}); + }; + + Select2.prototype.isOpen = function () { + return this.$container.hasClass('select2-container--open'); + }; + + Select2.prototype.hasFocus = function () { + return this.$container.hasClass('select2-container--focus'); + }; + + Select2.prototype.focus = function (data) { + // No need to re-trigger focus events if we are already focused + if (this.hasFocus()) { + return; + } + + this.$container.addClass('select2-container--focus'); + this.trigger('focus', {}); + }; + + Select2.prototype.enable = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will' + + ' be removed in later Select2 versions. Use $element.prop("disabled")' + + ' instead.' + ); + } + + if (args == null || args.length === 0) { + args = [true]; + } + + var disabled = !args[0]; + + this.$element.prop('disabled', disabled); + }; + + Select2.prototype.data = function () { + if (this.options.get('debug') && + arguments.length > 0 && window.console && console.warn) { + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You ' + + 'should consider setting the value instead using `$element.val()`.' + ); + } + + var data = []; + + this.dataAdapter.current(function (currentData) { + data = currentData; + }); + + return data; + }; + + Select2.prototype.val = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be' + + ' removed in later Select2 versions. Use $element.val() instead.' + ); + } + + if (args == null || args.length === 0) { + return this.$element.val(); + } + + var newVal = args[0]; + + if ($.isArray(newVal)) { + newVal = $.map(newVal, function (obj) { + return obj.toString(); + }); + } + + this.$element.val(newVal).trigger('change'); + }; + + Select2.prototype.destroy = function () { + this.$container.remove(); + + if (this.$element[0].detachEvent) { + this.$element[0].detachEvent('onpropertychange', this._syncA); + } + + if (this._observer != null) { + this._observer.disconnect(); + this._observer = null; + } else if (this.$element[0].removeEventListener) { + this.$element[0] + .removeEventListener('DOMAttrModified', this._syncA, false); + this.$element[0] + .removeEventListener('DOMNodeInserted', this._syncS, false); + this.$element[0] + .removeEventListener('DOMNodeRemoved', this._syncS, false); + } + + this._syncA = null; + this._syncS = null; + + this.$element.off('.select2'); + this.$element.attr('tabindex', this.$element.data('old-tabindex')); + + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); + this.$element.removeData('select2'); + + this.dataAdapter.destroy(); + this.selection.destroy(); + this.dropdown.destroy(); + this.results.destroy(); + + this.dataAdapter = null; + this.selection = null; + this.dropdown = null; + this.results = null; + }; + + Select2.prototype.render = function () { + var $container = $( + '' + + '' + + '' + + '' + ); + + $container.attr('dir', this.options.get('dir')); + + this.$container = $container; + + this.$container.addClass('select2-container--' + this.options.get('theme')); + + $container.data('element', this.$element); + + return $container; + }; + + return Select2; +}); + +S2.define('select2/compat/utils',[ + 'jquery' +], function ($) { + function syncCssClasses ($dest, $src, adapter) { + var classes, replacements = [], adapted; + + classes = $.trim($dest.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Save all Select2 classes + if (this.indexOf('select2-') === 0) { + replacements.push(this); + } + }); + } + + classes = $.trim($src.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Only adapt non-Select2 classes + if (this.indexOf('select2-') !== 0) { + adapted = adapter(this); + + if (adapted != null) { + replacements.push(adapted); + } + } + }); + } + + $dest.attr('class', replacements.join(' ')); + } + + return { + syncCssClasses: syncCssClasses + }; +}); + +S2.define('select2/compat/containerCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _containerAdapter (clazz) { + return null; + } + + function ContainerCSS () { } + + ContainerCSS.prototype.render = function (decorated) { + var $container = decorated.call(this); + + var containerCssClass = this.options.get('containerCssClass') || ''; + + if ($.isFunction(containerCssClass)) { + containerCssClass = containerCssClass(this.$element); + } + + var containerCssAdapter = this.options.get('adaptContainerCssClass'); + containerCssAdapter = containerCssAdapter || _containerAdapter; + + if (containerCssClass.indexOf(':all:') !== -1) { + containerCssClass = containerCssClass.replace(':all:', ''); + + var _cssAdapter = containerCssAdapter; + + containerCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var containerCss = this.options.get('containerCss') || {}; + + if ($.isFunction(containerCss)) { + containerCss = containerCss(this.$element); + } + + CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); + + $container.css(containerCss); + $container.addClass(containerCssClass); + + return $container; + }; + + return ContainerCSS; +}); + +S2.define('select2/compat/dropdownCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _dropdownAdapter (clazz) { + return null; + } + + function DropdownCSS () { } + + DropdownCSS.prototype.render = function (decorated) { + var $dropdown = decorated.call(this); + + var dropdownCssClass = this.options.get('dropdownCssClass') || ''; + + if ($.isFunction(dropdownCssClass)) { + dropdownCssClass = dropdownCssClass(this.$element); + } + + var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); + dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; + + if (dropdownCssClass.indexOf(':all:') !== -1) { + dropdownCssClass = dropdownCssClass.replace(':all:', ''); + + var _cssAdapter = dropdownCssAdapter; + + dropdownCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var dropdownCss = this.options.get('dropdownCss') || {}; + + if ($.isFunction(dropdownCss)) { + dropdownCss = dropdownCss(this.$element); + } + + CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); + + $dropdown.css(dropdownCss); + $dropdown.addClass(dropdownCssClass); + + return $dropdown; + }; + + return DropdownCSS; +}); + +S2.define('select2/compat/initSelection',[ + 'jquery' +], function ($) { + function InitSelection (decorated, $element, options) { + if (options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `initSelection` option has been deprecated in favor' + + ' of a custom data adapter that overrides the `current` method. ' + + 'This method is now called multiple times instead of a single ' + + 'time when the instance is initialized. Support will be removed ' + + 'for the `initSelection` option in future versions of Select2' + ); + } + + this.initSelection = options.get('initSelection'); + this._isInitialized = false; + + decorated.call(this, $element, options); + } + + InitSelection.prototype.current = function (decorated, callback) { + var self = this; + + if (this._isInitialized) { + decorated.call(this, callback); + + return; + } + + this.initSelection.call(null, this.$element, function (data) { + self._isInitialized = true; + + if (!$.isArray(data)) { + data = [data]; + } + + callback(data); + }); + }; + + return InitSelection; +}); + +S2.define('select2/compat/inputData',[ + 'jquery' +], function ($) { + function InputData (decorated, $element, options) { + this._currentData = []; + this._valueSeparator = options.get('valueSeparator') || ','; + + if ($element.prop('type') === 'hidden') { + if (options.get('debug') && console && console.warn) { + console.warn( + 'Select2: Using a hidden input with Select2 is no longer ' + + 'supported and may stop working in the future. It is recommended ' + + 'to use a `');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this,f=b.id+"-results";a.call(this,b,d),b.on("open",function(){e.$search.attr("aria-owns",f),e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d="";return d+=null!=b?b.id:a.generateChars(4),d+="-result-",d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f),e.container.focusOnActiveElement()},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this,f=c.id+"-results";b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.attr("aria-owns",f),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}}),c.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
                • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var b=this;this.on("open",function(){b.$container.addClass("select2-container--open")}),this.on("close",function(){b.$container.removeClass("select2-container--open")}),this.on("enable",function(){b.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){b.$container.addClass("select2-container--disabled")}),this.on("blur",function(){b.$container.removeClass("select2-container--focus")}),this.on("query",function(a){b.isOpen()||b.trigger("open",{}),this.dataAdapter.query(a,function(c){b.trigger("results:all",{data:c,query:a})})}),this.on("query:append",function(a){this.dataAdapter.query(a,function(c){b.trigger("results:append",{data:c,query:a})})}),this.on("open",function(){setTimeout(function(){b.focusOnActiveElement()},1)}),a(document).on("keydown",function(a){var c=a.which;if(b.isOpen())if(c===d.ESC||c===d.TAB||c===d.UP&&a.altKey?(b.close(),a.preventDefault()):c===d.ENTER?(b.trigger("results:select",{}),a.preventDefault()):c===d.SPACE&&a.ctrlKey?(b.trigger("results:toggle",{}),a.preventDefault()):c===d.UP?(b.trigger("results:previous",{}),a.preventDefault()):c===d.DOWN&&(b.trigger("results:next",{}),a.preventDefault()),c===d.DOWN||c===d.UP)b.focusOnActiveElement();else{var e=b.$dropdown.find(".select2-search__field");e.length||(e=b.$container.find(".select2-search__field")),e.focus(),setTimeout(function(){b.focusOnActiveElement()},1e3)}else b.hasFocus()&&(c===d.ENTER||c===d.SPACE||c===d.DOWN&&a.altKey)&&(b.open(),a.preventDefault())})},e.prototype.focusOnActiveElement=function(){c.isTouchscreen()||this.$results.find("li.select2-results__option--highlighted").focus()},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `' + + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + var $rendered = decorated.call(this); + + this._transferTabIndex(); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + container.on('open', function () { + self.$search.attr('aria-owns', resultsId); + self.$search.trigger('focus'); + }); + + container.on('close', function () { + self.$search.val(''); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.trigger('focus'); + }); + + container.on('enable', function () { + self.$search.prop('disabled', false); + + self._transferTabIndex(); + }); + + container.on('disable', function () { + self.$search.prop('disabled', true); + }); + + container.on('focus', function (evt) { + self.$search.trigger('focus'); + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + + this.$selection.on('focusin', '.select2-search--inline', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('focusout', '.select2-search--inline', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', '.select2-search--inline', function (evt) { + evt.stopPropagation(); + + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + + var key = evt.which; + + if (key === KEYS.BACKSPACE && self.$search.val() === '') { + var $previousChoice = self.$searchContainer + .prev('.select2-selection__choice'); + + if ($previousChoice.length > 0) { + var item = $previousChoice.data('data'); + + self.searchRemoveChoice(item); + + evt.preventDefault(); + } + } + }); + + // Try to detect the IE version should the `documentMode` property that + // is stored on the document. This is only implemented in IE and is + // slightly cleaner than doing a user agent check. + // This property is not available in Edge, but Edge also doesn't have + // this bug. + var msie = document.documentMode; + var disableInputEvents = msie && msie <= 11; + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$selection.on( + 'input.searchcheck', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents) { + self.$selection.off('input.search input.searchcheck'); + return; + } + + // Unbind the duplicated `keyup` event + self.$selection.off('keyup.search'); + } + ); + + this.$selection.on( + 'keyup.search input.search', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents && evt.type === 'input') { + self.$selection.off('input.search input.searchcheck'); + return; + } + + var key = evt.which; + + // We can freely ignore events from modifier keys + if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { + return; + } + + // Tabbing will be handled during the `keydown` phase + if (key == KEYS.TAB) { + return; + } + + self.handleSearch(evt); + } + ); + }; + + /** + * This method will transfer the tabindex attribute from the rendered + * selection to the search box. This allows for the search box to be used as + * the primary focus instead of the selection container. + * + * @private + */ + Search.prototype._transferTabIndex = function (decorated) { + this.$search.attr('tabindex', this.$selection.attr('tabindex')); + this.$selection.attr('tabindex', '-1'); + }; + + Search.prototype.createPlaceholder = function (decorated, placeholder) { + this.$search.attr('placeholder', placeholder.text); + }; + + Search.prototype.update = function (decorated, data) { + var searchHadFocus = this.$search[0] == document.activeElement; + + this.$search.attr('placeholder', ''); + + decorated.call(this, data); + + this.$selection.find('.select2-selection__rendered') + .append(this.$searchContainer); + + this.resizeSearch(); + if (searchHadFocus) { + this.$search.focus(); + } + }; + + Search.prototype.handleSearch = function () { + this.resizeSearch(); + + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.searchRemoveChoice = function (decorated, item) { + this.trigger('unselect', { + data: item + }); + + this.$search.val(item.text); + this.handleSearch(); + }; + + Search.prototype.resizeSearch = function () { + this.$search.css('width', '25px'); + + var width = ''; + + if (this.$search.attr('placeholder') !== '') { + width = this.$selection.find('.select2-selection__rendered').innerWidth(); + } else { + var minimumWidth = this.$search.val().length + 1; + + width = (minimumWidth * 0.75) + 'em'; + } + + this.$search.css('width', width); + }; + + return Search; +}); + +S2.define('select2/selection/eventRelay',[ + 'jquery' +], function ($) { + function EventRelay () { } + + EventRelay.prototype.bind = function (decorated, container, $container) { + var self = this; + var relayEvents = [ + 'open', 'opening', + 'close', 'closing', + 'select', 'selecting', + 'unselect', 'unselecting' + ]; + + var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; + + decorated.call(this, container, $container); + + container.on('*', function (name, params) { + // Ignore events that should not be relayed + if ($.inArray(name, relayEvents) === -1) { + return; + } + + // The parameters should always be an object + params = params || {}; + + // Generate the jQuery event for the Select2 event + var evt = $.Event('select2:' + name, { + params: params + }); + + self.$element.trigger(evt); + + // Only handle preventable events if it was one + if ($.inArray(name, preventableEvents) === -1) { + return; + } + + params.prevented = evt.isDefaultPrevented(); + }); + }; + + return EventRelay; +}); + +S2.define('select2/translation',[ + 'jquery', + 'require' +], function ($, require) { + function Translation (dict) { + this.dict = dict || {}; + } + + Translation.prototype.all = function () { + return this.dict; + }; + + Translation.prototype.get = function (key) { + return this.dict[key]; + }; + + Translation.prototype.extend = function (translation) { + this.dict = $.extend({}, translation.all(), this.dict); + }; + + // Static functions + + Translation._cache = {}; + + Translation.loadPath = function (path) { + if (!(path in Translation._cache)) { + var translations = require(path); + + Translation._cache[path] = translations; + } + + return new Translation(Translation._cache[path]); + }; + + return Translation; +}); + +S2.define('select2/diacritics',[ + +], function () { + var diacritics = { + '\u24B6': 'A', + '\uFF21': 'A', + '\u00C0': 'A', + '\u00C1': 'A', + '\u00C2': 'A', + '\u1EA6': 'A', + '\u1EA4': 'A', + '\u1EAA': 'A', + '\u1EA8': 'A', + '\u00C3': 'A', + '\u0100': 'A', + '\u0102': 'A', + '\u1EB0': 'A', + '\u1EAE': 'A', + '\u1EB4': 'A', + '\u1EB2': 'A', + '\u0226': 'A', + '\u01E0': 'A', + '\u00C4': 'A', + '\u01DE': 'A', + '\u1EA2': 'A', + '\u00C5': 'A', + '\u01FA': 'A', + '\u01CD': 'A', + '\u0200': 'A', + '\u0202': 'A', + '\u1EA0': 'A', + '\u1EAC': 'A', + '\u1EB6': 'A', + '\u1E00': 'A', + '\u0104': 'A', + '\u023A': 'A', + '\u2C6F': 'A', + '\uA732': 'AA', + '\u00C6': 'AE', + '\u01FC': 'AE', + '\u01E2': 'AE', + '\uA734': 'AO', + '\uA736': 'AU', + '\uA738': 'AV', + '\uA73A': 'AV', + '\uA73C': 'AY', + '\u24B7': 'B', + '\uFF22': 'B', + '\u1E02': 'B', + '\u1E04': 'B', + '\u1E06': 'B', + '\u0243': 'B', + '\u0182': 'B', + '\u0181': 'B', + '\u24B8': 'C', + '\uFF23': 'C', + '\u0106': 'C', + '\u0108': 'C', + '\u010A': 'C', + '\u010C': 'C', + '\u00C7': 'C', + '\u1E08': 'C', + '\u0187': 'C', + '\u023B': 'C', + '\uA73E': 'C', + '\u24B9': 'D', + '\uFF24': 'D', + '\u1E0A': 'D', + '\u010E': 'D', + '\u1E0C': 'D', + '\u1E10': 'D', + '\u1E12': 'D', + '\u1E0E': 'D', + '\u0110': 'D', + '\u018B': 'D', + '\u018A': 'D', + '\u0189': 'D', + '\uA779': 'D', + '\u01F1': 'DZ', + '\u01C4': 'DZ', + '\u01F2': 'Dz', + '\u01C5': 'Dz', + '\u24BA': 'E', + '\uFF25': 'E', + '\u00C8': 'E', + '\u00C9': 'E', + '\u00CA': 'E', + '\u1EC0': 'E', + '\u1EBE': 'E', + '\u1EC4': 'E', + '\u1EC2': 'E', + '\u1EBC': 'E', + '\u0112': 'E', + '\u1E14': 'E', + '\u1E16': 'E', + '\u0114': 'E', + '\u0116': 'E', + '\u00CB': 'E', + '\u1EBA': 'E', + '\u011A': 'E', + '\u0204': 'E', + '\u0206': 'E', + '\u1EB8': 'E', + '\u1EC6': 'E', + '\u0228': 'E', + '\u1E1C': 'E', + '\u0118': 'E', + '\u1E18': 'E', + '\u1E1A': 'E', + '\u0190': 'E', + '\u018E': 'E', + '\u24BB': 'F', + '\uFF26': 'F', + '\u1E1E': 'F', + '\u0191': 'F', + '\uA77B': 'F', + '\u24BC': 'G', + '\uFF27': 'G', + '\u01F4': 'G', + '\u011C': 'G', + '\u1E20': 'G', + '\u011E': 'G', + '\u0120': 'G', + '\u01E6': 'G', + '\u0122': 'G', + '\u01E4': 'G', + '\u0193': 'G', + '\uA7A0': 'G', + '\uA77D': 'G', + '\uA77E': 'G', + '\u24BD': 'H', + '\uFF28': 'H', + '\u0124': 'H', + '\u1E22': 'H', + '\u1E26': 'H', + '\u021E': 'H', + '\u1E24': 'H', + '\u1E28': 'H', + '\u1E2A': 'H', + '\u0126': 'H', + '\u2C67': 'H', + '\u2C75': 'H', + '\uA78D': 'H', + '\u24BE': 'I', + '\uFF29': 'I', + '\u00CC': 'I', + '\u00CD': 'I', + '\u00CE': 'I', + '\u0128': 'I', + '\u012A': 'I', + '\u012C': 'I', + '\u0130': 'I', + '\u00CF': 'I', + '\u1E2E': 'I', + '\u1EC8': 'I', + '\u01CF': 'I', + '\u0208': 'I', + '\u020A': 'I', + '\u1ECA': 'I', + '\u012E': 'I', + '\u1E2C': 'I', + '\u0197': 'I', + '\u24BF': 'J', + '\uFF2A': 'J', + '\u0134': 'J', + '\u0248': 'J', + '\u24C0': 'K', + '\uFF2B': 'K', + '\u1E30': 'K', + '\u01E8': 'K', + '\u1E32': 'K', + '\u0136': 'K', + '\u1E34': 'K', + '\u0198': 'K', + '\u2C69': 'K', + '\uA740': 'K', + '\uA742': 'K', + '\uA744': 'K', + '\uA7A2': 'K', + '\u24C1': 'L', + '\uFF2C': 'L', + '\u013F': 'L', + '\u0139': 'L', + '\u013D': 'L', + '\u1E36': 'L', + '\u1E38': 'L', + '\u013B': 'L', + '\u1E3C': 'L', + '\u1E3A': 'L', + '\u0141': 'L', + '\u023D': 'L', + '\u2C62': 'L', + '\u2C60': 'L', + '\uA748': 'L', + '\uA746': 'L', + '\uA780': 'L', + '\u01C7': 'LJ', + '\u01C8': 'Lj', + '\u24C2': 'M', + '\uFF2D': 'M', + '\u1E3E': 'M', + '\u1E40': 'M', + '\u1E42': 'M', + '\u2C6E': 'M', + '\u019C': 'M', + '\u24C3': 'N', + '\uFF2E': 'N', + '\u01F8': 'N', + '\u0143': 'N', + '\u00D1': 'N', + '\u1E44': 'N', + '\u0147': 'N', + '\u1E46': 'N', + '\u0145': 'N', + '\u1E4A': 'N', + '\u1E48': 'N', + '\u0220': 'N', + '\u019D': 'N', + '\uA790': 'N', + '\uA7A4': 'N', + '\u01CA': 'NJ', + '\u01CB': 'Nj', + '\u24C4': 'O', + '\uFF2F': 'O', + '\u00D2': 'O', + '\u00D3': 'O', + '\u00D4': 'O', + '\u1ED2': 'O', + '\u1ED0': 'O', + '\u1ED6': 'O', + '\u1ED4': 'O', + '\u00D5': 'O', + '\u1E4C': 'O', + '\u022C': 'O', + '\u1E4E': 'O', + '\u014C': 'O', + '\u1E50': 'O', + '\u1E52': 'O', + '\u014E': 'O', + '\u022E': 'O', + '\u0230': 'O', + '\u00D6': 'O', + '\u022A': 'O', + '\u1ECE': 'O', + '\u0150': 'O', + '\u01D1': 'O', + '\u020C': 'O', + '\u020E': 'O', + '\u01A0': 'O', + '\u1EDC': 'O', + '\u1EDA': 'O', + '\u1EE0': 'O', + '\u1EDE': 'O', + '\u1EE2': 'O', + '\u1ECC': 'O', + '\u1ED8': 'O', + '\u01EA': 'O', + '\u01EC': 'O', + '\u00D8': 'O', + '\u01FE': 'O', + '\u0186': 'O', + '\u019F': 'O', + '\uA74A': 'O', + '\uA74C': 'O', + '\u01A2': 'OI', + '\uA74E': 'OO', + '\u0222': 'OU', + '\u24C5': 'P', + '\uFF30': 'P', + '\u1E54': 'P', + '\u1E56': 'P', + '\u01A4': 'P', + '\u2C63': 'P', + '\uA750': 'P', + '\uA752': 'P', + '\uA754': 'P', + '\u24C6': 'Q', + '\uFF31': 'Q', + '\uA756': 'Q', + '\uA758': 'Q', + '\u024A': 'Q', + '\u24C7': 'R', + '\uFF32': 'R', + '\u0154': 'R', + '\u1E58': 'R', + '\u0158': 'R', + '\u0210': 'R', + '\u0212': 'R', + '\u1E5A': 'R', + '\u1E5C': 'R', + '\u0156': 'R', + '\u1E5E': 'R', + '\u024C': 'R', + '\u2C64': 'R', + '\uA75A': 'R', + '\uA7A6': 'R', + '\uA782': 'R', + '\u24C8': 'S', + '\uFF33': 'S', + '\u1E9E': 'S', + '\u015A': 'S', + '\u1E64': 'S', + '\u015C': 'S', + '\u1E60': 'S', + '\u0160': 'S', + '\u1E66': 'S', + '\u1E62': 'S', + '\u1E68': 'S', + '\u0218': 'S', + '\u015E': 'S', + '\u2C7E': 'S', + '\uA7A8': 'S', + '\uA784': 'S', + '\u24C9': 'T', + '\uFF34': 'T', + '\u1E6A': 'T', + '\u0164': 'T', + '\u1E6C': 'T', + '\u021A': 'T', + '\u0162': 'T', + '\u1E70': 'T', + '\u1E6E': 'T', + '\u0166': 'T', + '\u01AC': 'T', + '\u01AE': 'T', + '\u023E': 'T', + '\uA786': 'T', + '\uA728': 'TZ', + '\u24CA': 'U', + '\uFF35': 'U', + '\u00D9': 'U', + '\u00DA': 'U', + '\u00DB': 'U', + '\u0168': 'U', + '\u1E78': 'U', + '\u016A': 'U', + '\u1E7A': 'U', + '\u016C': 'U', + '\u00DC': 'U', + '\u01DB': 'U', + '\u01D7': 'U', + '\u01D5': 'U', + '\u01D9': 'U', + '\u1EE6': 'U', + '\u016E': 'U', + '\u0170': 'U', + '\u01D3': 'U', + '\u0214': 'U', + '\u0216': 'U', + '\u01AF': 'U', + '\u1EEA': 'U', + '\u1EE8': 'U', + '\u1EEE': 'U', + '\u1EEC': 'U', + '\u1EF0': 'U', + '\u1EE4': 'U', + '\u1E72': 'U', + '\u0172': 'U', + '\u1E76': 'U', + '\u1E74': 'U', + '\u0244': 'U', + '\u24CB': 'V', + '\uFF36': 'V', + '\u1E7C': 'V', + '\u1E7E': 'V', + '\u01B2': 'V', + '\uA75E': 'V', + '\u0245': 'V', + '\uA760': 'VY', + '\u24CC': 'W', + '\uFF37': 'W', + '\u1E80': 'W', + '\u1E82': 'W', + '\u0174': 'W', + '\u1E86': 'W', + '\u1E84': 'W', + '\u1E88': 'W', + '\u2C72': 'W', + '\u24CD': 'X', + '\uFF38': 'X', + '\u1E8A': 'X', + '\u1E8C': 'X', + '\u24CE': 'Y', + '\uFF39': 'Y', + '\u1EF2': 'Y', + '\u00DD': 'Y', + '\u0176': 'Y', + '\u1EF8': 'Y', + '\u0232': 'Y', + '\u1E8E': 'Y', + '\u0178': 'Y', + '\u1EF6': 'Y', + '\u1EF4': 'Y', + '\u01B3': 'Y', + '\u024E': 'Y', + '\u1EFE': 'Y', + '\u24CF': 'Z', + '\uFF3A': 'Z', + '\u0179': 'Z', + '\u1E90': 'Z', + '\u017B': 'Z', + '\u017D': 'Z', + '\u1E92': 'Z', + '\u1E94': 'Z', + '\u01B5': 'Z', + '\u0224': 'Z', + '\u2C7F': 'Z', + '\u2C6B': 'Z', + '\uA762': 'Z', + '\u24D0': 'a', + '\uFF41': 'a', + '\u1E9A': 'a', + '\u00E0': 'a', + '\u00E1': 'a', + '\u00E2': 'a', + '\u1EA7': 'a', + '\u1EA5': 'a', + '\u1EAB': 'a', + '\u1EA9': 'a', + '\u00E3': 'a', + '\u0101': 'a', + '\u0103': 'a', + '\u1EB1': 'a', + '\u1EAF': 'a', + '\u1EB5': 'a', + '\u1EB3': 'a', + '\u0227': 'a', + '\u01E1': 'a', + '\u00E4': 'a', + '\u01DF': 'a', + '\u1EA3': 'a', + '\u00E5': 'a', + '\u01FB': 'a', + '\u01CE': 'a', + '\u0201': 'a', + '\u0203': 'a', + '\u1EA1': 'a', + '\u1EAD': 'a', + '\u1EB7': 'a', + '\u1E01': 'a', + '\u0105': 'a', + '\u2C65': 'a', + '\u0250': 'a', + '\uA733': 'aa', + '\u00E6': 'ae', + '\u01FD': 'ae', + '\u01E3': 'ae', + '\uA735': 'ao', + '\uA737': 'au', + '\uA739': 'av', + '\uA73B': 'av', + '\uA73D': 'ay', + '\u24D1': 'b', + '\uFF42': 'b', + '\u1E03': 'b', + '\u1E05': 'b', + '\u1E07': 'b', + '\u0180': 'b', + '\u0183': 'b', + '\u0253': 'b', + '\u24D2': 'c', + '\uFF43': 'c', + '\u0107': 'c', + '\u0109': 'c', + '\u010B': 'c', + '\u010D': 'c', + '\u00E7': 'c', + '\u1E09': 'c', + '\u0188': 'c', + '\u023C': 'c', + '\uA73F': 'c', + '\u2184': 'c', + '\u24D3': 'd', + '\uFF44': 'd', + '\u1E0B': 'd', + '\u010F': 'd', + '\u1E0D': 'd', + '\u1E11': 'd', + '\u1E13': 'd', + '\u1E0F': 'd', + '\u0111': 'd', + '\u018C': 'd', + '\u0256': 'd', + '\u0257': 'd', + '\uA77A': 'd', + '\u01F3': 'dz', + '\u01C6': 'dz', + '\u24D4': 'e', + '\uFF45': 'e', + '\u00E8': 'e', + '\u00E9': 'e', + '\u00EA': 'e', + '\u1EC1': 'e', + '\u1EBF': 'e', + '\u1EC5': 'e', + '\u1EC3': 'e', + '\u1EBD': 'e', + '\u0113': 'e', + '\u1E15': 'e', + '\u1E17': 'e', + '\u0115': 'e', + '\u0117': 'e', + '\u00EB': 'e', + '\u1EBB': 'e', + '\u011B': 'e', + '\u0205': 'e', + '\u0207': 'e', + '\u1EB9': 'e', + '\u1EC7': 'e', + '\u0229': 'e', + '\u1E1D': 'e', + '\u0119': 'e', + '\u1E19': 'e', + '\u1E1B': 'e', + '\u0247': 'e', + '\u025B': 'e', + '\u01DD': 'e', + '\u24D5': 'f', + '\uFF46': 'f', + '\u1E1F': 'f', + '\u0192': 'f', + '\uA77C': 'f', + '\u24D6': 'g', + '\uFF47': 'g', + '\u01F5': 'g', + '\u011D': 'g', + '\u1E21': 'g', + '\u011F': 'g', + '\u0121': 'g', + '\u01E7': 'g', + '\u0123': 'g', + '\u01E5': 'g', + '\u0260': 'g', + '\uA7A1': 'g', + '\u1D79': 'g', + '\uA77F': 'g', + '\u24D7': 'h', + '\uFF48': 'h', + '\u0125': 'h', + '\u1E23': 'h', + '\u1E27': 'h', + '\u021F': 'h', + '\u1E25': 'h', + '\u1E29': 'h', + '\u1E2B': 'h', + '\u1E96': 'h', + '\u0127': 'h', + '\u2C68': 'h', + '\u2C76': 'h', + '\u0265': 'h', + '\u0195': 'hv', + '\u24D8': 'i', + '\uFF49': 'i', + '\u00EC': 'i', + '\u00ED': 'i', + '\u00EE': 'i', + '\u0129': 'i', + '\u012B': 'i', + '\u012D': 'i', + '\u00EF': 'i', + '\u1E2F': 'i', + '\u1EC9': 'i', + '\u01D0': 'i', + '\u0209': 'i', + '\u020B': 'i', + '\u1ECB': 'i', + '\u012F': 'i', + '\u1E2D': 'i', + '\u0268': 'i', + '\u0131': 'i', + '\u24D9': 'j', + '\uFF4A': 'j', + '\u0135': 'j', + '\u01F0': 'j', + '\u0249': 'j', + '\u24DA': 'k', + '\uFF4B': 'k', + '\u1E31': 'k', + '\u01E9': 'k', + '\u1E33': 'k', + '\u0137': 'k', + '\u1E35': 'k', + '\u0199': 'k', + '\u2C6A': 'k', + '\uA741': 'k', + '\uA743': 'k', + '\uA745': 'k', + '\uA7A3': 'k', + '\u24DB': 'l', + '\uFF4C': 'l', + '\u0140': 'l', + '\u013A': 'l', + '\u013E': 'l', + '\u1E37': 'l', + '\u1E39': 'l', + '\u013C': 'l', + '\u1E3D': 'l', + '\u1E3B': 'l', + '\u017F': 'l', + '\u0142': 'l', + '\u019A': 'l', + '\u026B': 'l', + '\u2C61': 'l', + '\uA749': 'l', + '\uA781': 'l', + '\uA747': 'l', + '\u01C9': 'lj', + '\u24DC': 'm', + '\uFF4D': 'm', + '\u1E3F': 'm', + '\u1E41': 'm', + '\u1E43': 'm', + '\u0271': 'm', + '\u026F': 'm', + '\u24DD': 'n', + '\uFF4E': 'n', + '\u01F9': 'n', + '\u0144': 'n', + '\u00F1': 'n', + '\u1E45': 'n', + '\u0148': 'n', + '\u1E47': 'n', + '\u0146': 'n', + '\u1E4B': 'n', + '\u1E49': 'n', + '\u019E': 'n', + '\u0272': 'n', + '\u0149': 'n', + '\uA791': 'n', + '\uA7A5': 'n', + '\u01CC': 'nj', + '\u24DE': 'o', + '\uFF4F': 'o', + '\u00F2': 'o', + '\u00F3': 'o', + '\u00F4': 'o', + '\u1ED3': 'o', + '\u1ED1': 'o', + '\u1ED7': 'o', + '\u1ED5': 'o', + '\u00F5': 'o', + '\u1E4D': 'o', + '\u022D': 'o', + '\u1E4F': 'o', + '\u014D': 'o', + '\u1E51': 'o', + '\u1E53': 'o', + '\u014F': 'o', + '\u022F': 'o', + '\u0231': 'o', + '\u00F6': 'o', + '\u022B': 'o', + '\u1ECF': 'o', + '\u0151': 'o', + '\u01D2': 'o', + '\u020D': 'o', + '\u020F': 'o', + '\u01A1': 'o', + '\u1EDD': 'o', + '\u1EDB': 'o', + '\u1EE1': 'o', + '\u1EDF': 'o', + '\u1EE3': 'o', + '\u1ECD': 'o', + '\u1ED9': 'o', + '\u01EB': 'o', + '\u01ED': 'o', + '\u00F8': 'o', + '\u01FF': 'o', + '\u0254': 'o', + '\uA74B': 'o', + '\uA74D': 'o', + '\u0275': 'o', + '\u01A3': 'oi', + '\u0223': 'ou', + '\uA74F': 'oo', + '\u24DF': 'p', + '\uFF50': 'p', + '\u1E55': 'p', + '\u1E57': 'p', + '\u01A5': 'p', + '\u1D7D': 'p', + '\uA751': 'p', + '\uA753': 'p', + '\uA755': 'p', + '\u24E0': 'q', + '\uFF51': 'q', + '\u024B': 'q', + '\uA757': 'q', + '\uA759': 'q', + '\u24E1': 'r', + '\uFF52': 'r', + '\u0155': 'r', + '\u1E59': 'r', + '\u0159': 'r', + '\u0211': 'r', + '\u0213': 'r', + '\u1E5B': 'r', + '\u1E5D': 'r', + '\u0157': 'r', + '\u1E5F': 'r', + '\u024D': 'r', + '\u027D': 'r', + '\uA75B': 'r', + '\uA7A7': 'r', + '\uA783': 'r', + '\u24E2': 's', + '\uFF53': 's', + '\u00DF': 's', + '\u015B': 's', + '\u1E65': 's', + '\u015D': 's', + '\u1E61': 's', + '\u0161': 's', + '\u1E67': 's', + '\u1E63': 's', + '\u1E69': 's', + '\u0219': 's', + '\u015F': 's', + '\u023F': 's', + '\uA7A9': 's', + '\uA785': 's', + '\u1E9B': 's', + '\u24E3': 't', + '\uFF54': 't', + '\u1E6B': 't', + '\u1E97': 't', + '\u0165': 't', + '\u1E6D': 't', + '\u021B': 't', + '\u0163': 't', + '\u1E71': 't', + '\u1E6F': 't', + '\u0167': 't', + '\u01AD': 't', + '\u0288': 't', + '\u2C66': 't', + '\uA787': 't', + '\uA729': 'tz', + '\u24E4': 'u', + '\uFF55': 'u', + '\u00F9': 'u', + '\u00FA': 'u', + '\u00FB': 'u', + '\u0169': 'u', + '\u1E79': 'u', + '\u016B': 'u', + '\u1E7B': 'u', + '\u016D': 'u', + '\u00FC': 'u', + '\u01DC': 'u', + '\u01D8': 'u', + '\u01D6': 'u', + '\u01DA': 'u', + '\u1EE7': 'u', + '\u016F': 'u', + '\u0171': 'u', + '\u01D4': 'u', + '\u0215': 'u', + '\u0217': 'u', + '\u01B0': 'u', + '\u1EEB': 'u', + '\u1EE9': 'u', + '\u1EEF': 'u', + '\u1EED': 'u', + '\u1EF1': 'u', + '\u1EE5': 'u', + '\u1E73': 'u', + '\u0173': 'u', + '\u1E77': 'u', + '\u1E75': 'u', + '\u0289': 'u', + '\u24E5': 'v', + '\uFF56': 'v', + '\u1E7D': 'v', + '\u1E7F': 'v', + '\u028B': 'v', + '\uA75F': 'v', + '\u028C': 'v', + '\uA761': 'vy', + '\u24E6': 'w', + '\uFF57': 'w', + '\u1E81': 'w', + '\u1E83': 'w', + '\u0175': 'w', + '\u1E87': 'w', + '\u1E85': 'w', + '\u1E98': 'w', + '\u1E89': 'w', + '\u2C73': 'w', + '\u24E7': 'x', + '\uFF58': 'x', + '\u1E8B': 'x', + '\u1E8D': 'x', + '\u24E8': 'y', + '\uFF59': 'y', + '\u1EF3': 'y', + '\u00FD': 'y', + '\u0177': 'y', + '\u1EF9': 'y', + '\u0233': 'y', + '\u1E8F': 'y', + '\u00FF': 'y', + '\u1EF7': 'y', + '\u1E99': 'y', + '\u1EF5': 'y', + '\u01B4': 'y', + '\u024F': 'y', + '\u1EFF': 'y', + '\u24E9': 'z', + '\uFF5A': 'z', + '\u017A': 'z', + '\u1E91': 'z', + '\u017C': 'z', + '\u017E': 'z', + '\u1E93': 'z', + '\u1E95': 'z', + '\u01B6': 'z', + '\u0225': 'z', + '\u0240': 'z', + '\u2C6C': 'z', + '\uA763': 'z', + '\u0386': '\u0391', + '\u0388': '\u0395', + '\u0389': '\u0397', + '\u038A': '\u0399', + '\u03AA': '\u0399', + '\u038C': '\u039F', + '\u038E': '\u03A5', + '\u03AB': '\u03A5', + '\u038F': '\u03A9', + '\u03AC': '\u03B1', + '\u03AD': '\u03B5', + '\u03AE': '\u03B7', + '\u03AF': '\u03B9', + '\u03CA': '\u03B9', + '\u0390': '\u03B9', + '\u03CC': '\u03BF', + '\u03CD': '\u03C5', + '\u03CB': '\u03C5', + '\u03B0': '\u03C5', + '\u03C9': '\u03C9', + '\u03C2': '\u03C3' + }; + + return diacritics; +}); + +S2.define('select2/data/base',[ + '../utils' +], function (Utils) { + function BaseAdapter ($element, options) { + BaseAdapter.__super__.constructor.call(this); + } + + Utils.Extend(BaseAdapter, Utils.Observable); + + BaseAdapter.prototype.current = function (callback) { + throw new Error('The `current` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.query = function (params, callback) { + throw new Error('The `query` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.bind = function (container, $container) { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.destroy = function () { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.generateResultId = function (container, data) { + var id = ''; + + if (container != null) { + id += container.id + } else { + id += Utils.generateChars(4); + } + + id += '-result-'; + id += Utils.generateChars(4); + + if (data.id != null) { + id += '-' + data.id.toString(); + } else { + id += '-' + Utils.generateChars(4); + } + return id; + }; + + return BaseAdapter; +}); + +S2.define('select2/data/select',[ + './base', + '../utils', + 'jquery' +], function (BaseAdapter, Utils, $) { + function SelectAdapter ($element, options) { + this.$element = $element; + this.options = options; + + SelectAdapter.__super__.constructor.call(this); + } + + Utils.Extend(SelectAdapter, BaseAdapter); + + SelectAdapter.prototype.current = function (callback) { + var data = []; + var self = this; + + this.$element.find(':selected').each(function () { + var $option = $(this); + + var option = self.item($option); + + data.push(option); + }); + + callback(data); + }; + + SelectAdapter.prototype.select = function (data) { + var self = this; + + data.selected = true; + + // If data.element is a DOM node, use it instead + if ($(data.element).is('option')) { + data.element.selected = true; + + this.$element.trigger('change'); + + return; + } + + if (this.$element.prop('multiple')) { + this.current(function (currentData) { + var val = []; + + data = [data]; + data.push.apply(data, currentData); + + for (var d = 0; d < data.length; d++) { + var id = data[d].id; + + if ($.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + self.$element.trigger('change'); + }); + } else { + var val = data.id; + + this.$element.val(val); + this.$element.trigger('change'); + } + }; + + SelectAdapter.prototype.unselect = function (data) { + var self = this; + + if (!this.$element.prop('multiple')) { + return; + } + + data.selected = false; + + if ($(data.element).is('option')) { + data.element.selected = false; + + this.$element.trigger('change'); + + return; + } + + this.current(function (currentData) { + var val = []; + + for (var d = 0; d < currentData.length; d++) { + var id = currentData[d].id; + + if (id !== data.id && $.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + + self.$element.trigger('change'); + }); + }; + + SelectAdapter.prototype.bind = function (container, $container) { + var self = this; + + this.container = container; + + container.on('select', function (params) { + self.select(params.data); + }); + + container.on('unselect', function (params) { + self.unselect(params.data); + }); + }; + + SelectAdapter.prototype.destroy = function () { + // Remove anything added to child elements + this.$element.find('*').each(function () { + // Remove any custom data set by Select2 + $.removeData(this, 'data'); + }); + }; + + SelectAdapter.prototype.query = function (params, callback) { + var data = []; + var self = this; + + var $options = this.$element.children(); + + $options.each(function () { + var $option = $(this); + + if (!$option.is('option') && !$option.is('optgroup')) { + return; + } + + var option = self.item($option); + + var matches = self.matches(params, option); + + if (matches !== null) { + data.push(matches); + } + }); + + callback({ + results: data + }); + }; + + SelectAdapter.prototype.addOptions = function ($options) { + Utils.appendMany(this.$element, $options); + }; + + SelectAdapter.prototype.option = function (data) { + var option; + + if (data.children) { + option = document.createElement('optgroup'); + option.label = data.text; + } else { + option = document.createElement('option'); + + if (option.textContent !== undefined) { + option.textContent = data.text; + } else { + option.innerText = data.text; + } + } + + if (data.id !== undefined) { + option.value = data.id; + } + + if (data.disabled) { + option.disabled = true; + } + + if (data.selected) { + option.selected = true; + } + + if (data.title) { + option.title = data.title; + } + + var $option = $(option); + + var normalizedData = this._normalizeItem(data); + normalizedData.element = option; + + // Override the option's data with the combined data + $.data(option, 'data', normalizedData); + + return $option; + }; + + SelectAdapter.prototype.item = function ($option) { + var data = {}; + + data = $.data($option[0], 'data'); + + if (data != null) { + return data; + } + + if ($option.is('option')) { + data = { + id: $option.val(), + text: $option.text(), + disabled: $option.prop('disabled'), + selected: $option.prop('selected'), + title: $option.prop('title') + }; + } else if ($option.is('optgroup')) { + data = { + text: $option.prop('label'), + children: [], + title: $option.prop('title') + }; + + var $children = $option.children('option'); + var children = []; + + for (var c = 0; c < $children.length; c++) { + var $child = $($children[c]); + + var child = this.item($child); + + children.push(child); + } + + data.children = children; + } + + data = this._normalizeItem(data); + data.element = $option[0]; + + $.data($option[0], 'data', data); + + return data; + }; + + SelectAdapter.prototype._normalizeItem = function (item) { + if (!$.isPlainObject(item)) { + item = { + id: item, + text: item + }; + } + + item = $.extend({}, { + text: '' + }, item); + + var defaults = { + selected: false, + disabled: false + }; + + if (item.id != null) { + item.id = item.id.toString(); + } + + if (item.text != null) { + item.text = item.text.toString(); + } + + if (item._resultId == null && item.id) { + item._resultId = this.generateResultId(this.container, item); + } + + return $.extend({}, defaults, item); + }; + + SelectAdapter.prototype.matches = function (params, data) { + var matcher = this.options.get('matcher'); + + return matcher(params, data); + }; + + return SelectAdapter; +}); + +S2.define('select2/data/array',[ + './select', + '../utils', + 'jquery' +], function (SelectAdapter, Utils, $) { + function ArrayAdapter ($element, options) { + var data = options.get('data') || []; + + ArrayAdapter.__super__.constructor.call(this, $element, options); + + this.addOptions(this.convertToOptions(data)); + } + + Utils.Extend(ArrayAdapter, SelectAdapter); + + ArrayAdapter.prototype.select = function (data) { + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); + + if ($option.length === 0) { + $option = this.option(data); + + this.addOptions($option); + } + + ArrayAdapter.__super__.select.call(this, data); + }; + + ArrayAdapter.prototype.convertToOptions = function (data) { + var self = this; + + var $existing = this.$element.find('option'); + var existingIds = $existing.map(function () { + return self.item($(this)).id; + }).get(); + + var $options = []; + + // Filter out all items except for the one passed in the argument + function onlyItem (item) { + return function () { + return $(this).val() == item.id; + }; + } + + for (var d = 0; d < data.length; d++) { + var item = this._normalizeItem(data[d]); + + // Skip items which were pre-loaded, only merge the data + if ($.inArray(item.id, existingIds) >= 0) { + var $existingOption = $existing.filter(onlyItem(item)); + + var existingData = this.item($existingOption); + var newData = $.extend(true, {}, item, existingData); + + var $newOption = this.option(newData); + + $existingOption.replaceWith($newOption); + + continue; + } + + var $option = this.option(item); + + if (item.children) { + var $children = this.convertToOptions(item.children); + + Utils.appendMany($option, $children); + } + + $options.push($option); + } + + return $options; + }; + + return ArrayAdapter; +}); + +S2.define('select2/data/ajax',[ + './array', + '../utils', + 'jquery' +], function (ArrayAdapter, Utils, $) { + function AjaxAdapter ($element, options) { + this.ajaxOptions = this._applyDefaults(options.get('ajax')); + + if (this.ajaxOptions.processResults != null) { + this.processResults = this.ajaxOptions.processResults; + } + + AjaxAdapter.__super__.constructor.call(this, $element, options); + } + + Utils.Extend(AjaxAdapter, ArrayAdapter); + + AjaxAdapter.prototype._applyDefaults = function (options) { + var defaults = { + data: function (params) { + return $.extend({}, params, { + q: params.term + }); + }, + transport: function (params, success, failure) { + var $request = $.ajax(params); + + $request.then(success); + $request.fail(failure); + + return $request; + } + }; + + return $.extend({}, defaults, options, true); + }; + + AjaxAdapter.prototype.processResults = function (results) { + return results; + }; + + AjaxAdapter.prototype.query = function (params, callback) { + var matches = []; + var self = this; + + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + + this._request = null; + } + + var options = $.extend({ + type: 'GET' + }, this.ajaxOptions); + + if (typeof options.url === 'function') { + options.url = options.url.call(this.$element, params); + } + + if (typeof options.data === 'function') { + options.data = options.data.call(this.$element, params); + } + + function request () { + var $request = options.transport(options, function (data) { + var results = self.processResults(data, params); + + if (self.options.get('debug') && window.console && console.error) { + // Check to make sure that the response included a `results` key. + if (!results || !results.results || !$.isArray(results.results)) { + console.error( + 'Select2: The AJAX results did not return an array in the ' + + '`results` key of the response.' + ); + } + } + + callback(results); + self.container.focusOnActiveElement(); + }, function () { + // Attempt to detect if a request was aborted + // Only works if the transport exposes a status property + if ($request.status && $request.status === '0') { + return; + } + + self.trigger('results:message', { + message: 'errorLoading' + }); + }); + + self._request = $request; + } + + if (this.ajaxOptions.delay && params.term != null) { + if (this._queryTimeout) { + window.clearTimeout(this._queryTimeout); + } + + this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); + } else { + request(); + } + }; + + return AjaxAdapter; +}); + +S2.define('select2/data/tags',[ + 'jquery' +], function ($) { + function Tags (decorated, $element, options) { + var tags = options.get('tags'); + + var createTag = options.get('createTag'); + + if (createTag !== undefined) { + this.createTag = createTag; + } + + var insertTag = options.get('insertTag'); + + if (insertTag !== undefined) { + this.insertTag = insertTag; + } + + decorated.call(this, $element, options); + + if ($.isArray(tags)) { + for (var t = 0; t < tags.length; t++) { + var tag = tags[t]; + var item = this._normalizeItem(tag); + + var $option = this.option(item); + + this.$element.append($option); + } + } + } + + Tags.prototype.query = function (decorated, params, callback) { + var self = this; + + this._removeOldTags(); + + if (params.term == null || params.page != null) { + decorated.call(this, params, callback); + return; + } + + function wrapper (obj, child) { + var data = obj.results; + + for (var i = 0; i < data.length; i++) { + var option = data[i]; + + var checkChildren = ( + option.children != null && + !wrapper({ + results: option.children + }, true) + ); + + var optionText = (option.text || '').toUpperCase(); + var paramsTerm = (params.term || '').toUpperCase(); + + var checkText = optionText === paramsTerm; + + if (checkText || checkChildren) { + if (child) { + return false; + } + + obj.data = data; + callback(obj); + + return; + } + } + + if (child) { + return true; + } + + var tag = self.createTag(params); + + if (tag != null) { + var $option = self.option(tag); + $option.attr('data-select2-tag', true); + + self.addOptions([$option]); + + self.insertTag(data, tag); + } + + obj.results = data; + + callback(obj); + } + + decorated.call(this, params, wrapper); + }; + + Tags.prototype.createTag = function (decorated, params) { + var term = $.trim(params.term); + + if (term === '') { + return null; + } + + return { + id: term, + text: term + }; + }; + + Tags.prototype.insertTag = function (_, data, tag) { + data.unshift(tag); + }; + + Tags.prototype._removeOldTags = function (_) { + var tag = this._lastTag; + + var $options = this.$element.find('option[data-select2-tag]'); + + $options.each(function () { + if (this.selected) { + return; + } + + $(this).remove(); + }); + }; + + return Tags; +}); + +S2.define('select2/data/tokenizer',[ + 'jquery' +], function ($) { + function Tokenizer (decorated, $element, options) { + var tokenizer = options.get('tokenizer'); + + if (tokenizer !== undefined) { + this.tokenizer = tokenizer; + } + + decorated.call(this, $element, options); + } + + Tokenizer.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + this.$search = container.dropdown.$search || container.selection.$search || + $container.find('.select2-search__field'); + }; + + Tokenizer.prototype.query = function (decorated, params, callback) { + var self = this; + + function createAndSelect (data) { + // Normalize the data object so we can use it for checks + var item = self._normalizeItem(data); + + // Check if the data object already exists as a tag + // Select it if it doesn't + var $existingOptions = self.$element.find('option').filter(function () { + return $(this).val() === item.id; + }); + + // If an existing option wasn't found for it, create the option + if (!$existingOptions.length) { + var $option = self.option(item); + $option.attr('data-select2-tag', true); + + self._removeOldTags(); + self.addOptions([$option]); + } + + // Select the item, now that we know there is an option for it + select(item); + } + + function select (data) { + self.trigger('select', { + data: data + }); + } + + params.term = params.term || ''; + + var tokenData = this.tokenizer(params, this.options, createAndSelect); + + if (tokenData.term !== params.term) { + // Replace the search term if we have the search box + if (this.$search.length) { + this.$search.val(tokenData.term); + this.$search.focus(); + } + + params.term = tokenData.term; + } + + decorated.call(this, params, callback); + }; + + Tokenizer.prototype.tokenizer = function (_, params, options, callback) { + var separators = options.get('tokenSeparators') || []; + var term = params.term; + var i = 0; + + var createTag = this.createTag || function (params) { + return { + id: params.term, + text: params.term + }; + }; + + while (i < term.length) { + var termChar = term[i]; + + if ($.inArray(termChar, separators) === -1) { + i++; + + continue; + } + + var part = term.substr(0, i); + var partParams = $.extend({}, params, { + term: part + }); + + var data = createTag(partParams); + + if (data == null) { + i++; + continue; + } + + callback(data); + + // Reset the term to not include the tokenized portion + term = term.substr(i + 1) || ''; + i = 0; + } + + return { + term: term + }; + }; + + return Tokenizer; +}); + +S2.define('select2/data/minimumInputLength',[ + +], function () { + function MinimumInputLength (decorated, $e, options) { + this.minimumInputLength = options.get('minimumInputLength'); + + decorated.call(this, $e, options); + } + + MinimumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (params.term.length < this.minimumInputLength) { + this.trigger('results:message', { + message: 'inputTooShort', + args: { + minimum: this.minimumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MinimumInputLength; +}); + +S2.define('select2/data/maximumInputLength',[ + +], function () { + function MaximumInputLength (decorated, $e, options) { + this.maximumInputLength = options.get('maximumInputLength'); + + decorated.call(this, $e, options); + } + + MaximumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (this.maximumInputLength > 0 && + params.term.length > this.maximumInputLength) { + this.trigger('results:message', { + message: 'inputTooLong', + args: { + maximum: this.maximumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MaximumInputLength; +}); + +S2.define('select2/data/maximumSelectionLength',[ + +], function (){ + function MaximumSelectionLength (decorated, $e, options) { + this.maximumSelectionLength = options.get('maximumSelectionLength'); + + decorated.call(this, $e, options); + } + + MaximumSelectionLength.prototype.query = + function (decorated, params, callback) { + var self = this; + + this.current(function (currentData) { + var count = currentData != null ? currentData.length : 0; + if (self.maximumSelectionLength > 0 && + count >= self.maximumSelectionLength) { + self.trigger('results:message', { + message: 'maximumSelected', + args: { + maximum: self.maximumSelectionLength + } + }); + return; + } + decorated.call(self, params, callback); + }); + }; + + return MaximumSelectionLength; +}); + +S2.define('select2/dropdown',[ + 'jquery', + './utils' +], function ($, Utils) { + function Dropdown ($element, options) { + this.$element = $element; + this.options = options; + + Dropdown.__super__.constructor.call(this); + } + + Utils.Extend(Dropdown, Utils.Observable); + + Dropdown.prototype.render = function () { + var $dropdown = $( + '' + + '' + + '' + ); + + $dropdown.attr('dir', this.options.get('dir')); + + this.$dropdown = $dropdown; + + return $dropdown; + }; + + Dropdown.prototype.bind = function () { + // Should be implemented in subclasses + }; + + Dropdown.prototype.position = function ($dropdown, $container) { + // Should be implmented in subclasses + }; + + Dropdown.prototype.destroy = function () { + // Remove the dropdown from the DOM + this.$dropdown.remove(); + }; + + return Dropdown; +}); + +S2.define('select2/dropdown/search',[ + 'jquery', + '../utils' +], function ($, Utils) { + function Search () { } + + Search.prototype.render = function (decorated) { + var $rendered = decorated.call(this); + + var $search = $( + '' + + '' + + '' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + $rendered.prepend($search); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + var resultsId = container.id + '-results'; + + decorated.call(this, container, $container); + + this.$search.on('keydown', function (evt) { + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + }); + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$search.on('input', function (evt) { + // Unbind the duplicated `keyup` event + $(this).off('keyup'); + }); + + this.$search.on('keyup input', function (evt) { + self.handleSearch(evt); + }); + + container.on('open', function () { + self.$search.attr('tabindex', 0); + self.$search.attr('aria-owns', resultsId); + self.$search.focus(); + + window.setTimeout(function () { + self.$search.focus(); + }, 0); + }); + + container.on('close', function () { + self.$search.attr('tabindex', -1); + self.$search.removeAttr('aria-activedescendant'); + self.$search.removeAttr('aria-owns'); + self.$search.val(''); + }); + + container.on('focus', function () { + if (container.isOpen()) { + self.$search.focus(); + } + }); + + container.on('results:all', function (params) { + if (params.query.term == null || params.query.term === '') { + var showSearch = self.showSearch(params); + + if (showSearch) { + self.$searchContainer.removeClass('select2-search--hide'); + } else { + self.$searchContainer.addClass('select2-search--hide'); + } + } + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.data._resultId); + }); + }; + + Search.prototype.handleSearch = function (evt) { + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.showSearch = function (_, params) { + return true; + }; + + return Search; +}); + +S2.define('select2/dropdown/hidePlaceholder',[ + +], function () { + function HidePlaceholder (decorated, $element, options, dataAdapter) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options, dataAdapter); + } + + HidePlaceholder.prototype.append = function (decorated, data) { + data.results = this.removePlaceholder(data.results); + + decorated.call(this, data); + }; + + HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + HidePlaceholder.prototype.removePlaceholder = function (_, data) { + var modifiedData = data.slice(0); + + for (var d = data.length - 1; d >= 0; d--) { + var item = data[d]; + + if (this.placeholder.id === item.id) { + modifiedData.splice(d, 1); + } + } + + return modifiedData; + }; + + return HidePlaceholder; +}); + +S2.define('select2/dropdown/infiniteScroll',[ + 'jquery' +], function ($) { + function InfiniteScroll (decorated, $element, options, dataAdapter) { + this.lastParams = {}; + + decorated.call(this, $element, options, dataAdapter); + + this.$loadingMore = this.createLoadingMore(); + this.loading = false; + } + + InfiniteScroll.prototype.append = function (decorated, data) { + this.$loadingMore.remove(); + this.loading = false; + + decorated.call(this, data); + + if (this.showLoadingMore(data)) { + this.$results.append(this.$loadingMore); + } + }; + + InfiniteScroll.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('query', function (params) { + self.lastParams = params; + self.loading = true; + }); + + container.on('query:append', function (params) { + self.lastParams = params; + self.loading = true; + }); + + this.$results.on('scroll', function () { + var isLoadMoreVisible = $.contains( + document.documentElement, + self.$loadingMore[0] + ); + + if (self.loading || !isLoadMoreVisible) { + return; + } + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var loadingMoreOffset = self.$loadingMore.offset().top + + self.$loadingMore.outerHeight(false); + + if (currentOffset + 50 >= loadingMoreOffset) { + self.loadMore(); + } + }); + }; + + InfiniteScroll.prototype.loadMore = function () { + this.loading = true; + + var params = $.extend({}, {page: 1}, this.lastParams); + + params.page++; + + this.trigger('query:append', params); + }; + + InfiniteScroll.prototype.showLoadingMore = function (_, data) { + return data.pagination && data.pagination.more; + }; + + InfiniteScroll.prototype.createLoadingMore = function () { + var $option = $( + '
                • ' + ); + + var message = this.options.get('translations').get('loadingMore'); + + $option.html(message(this.lastParams)); + + return $option; + }; + + return InfiniteScroll; +}); + +S2.define('select2/dropdown/attachBody',[ + 'jquery', + '../utils' +], function ($, Utils) { + function AttachBody (decorated, $element, options) { + this.$dropdownParent = options.get('dropdownParent') || $(document.body); + + decorated.call(this, $element, options); + } + + AttachBody.prototype.bind = function (decorated, container, $container) { + var self = this; + + var setupResultsEvents = false; + + decorated.call(this, container, $container); + + container.on('open', function () { + self._showDropdown(); + self._attachPositioningHandler(container); + + if (!setupResultsEvents) { + setupResultsEvents = true; + + container.on('results:all', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + + container.on('results:append', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + } + }); + + container.on('close', function () { + self._hideDropdown(); + self._detachPositioningHandler(container); + }); + + this.$dropdownContainer.on('mousedown', function (evt) { + evt.stopPropagation(); + }); + }; + + AttachBody.prototype.destroy = function (decorated) { + decorated.call(this); + + this.$dropdownContainer.remove(); + }; + + AttachBody.prototype.position = function (decorated, $dropdown, $container) { + // Clone all of the container classes + $dropdown.attr('class', $container.attr('class')); + + $dropdown.removeClass('select2'); + $dropdown.addClass('select2-container--open'); + + $dropdown.css({ + position: 'absolute', + top: -999999 + }); + + this.$container = $container; + }; + + AttachBody.prototype.render = function (decorated) { + var $container = $(''); + + var $dropdown = decorated.call(this); + $container.append($dropdown); + + this.$dropdownContainer = $container; + + return $container; + }; + + AttachBody.prototype._hideDropdown = function (decorated) { + this.$dropdownContainer.detach(); + }; + + AttachBody.prototype._attachPositioningHandler = + function (decorated, container) { + var self = this; + + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.each(function () { + $(this).data('select2-scroll-position', { + x: $(this).scrollLeft(), + y: $(this).scrollTop() + }); + }); + + $watchers.on(scrollEvent, function (ev) { + var position = $(this).data('select2-scroll-position'); + $(this).scrollTop(position.y); + }); + + $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, + function (e) { + self._positionDropdown(); + self._resizeDropdown(); + }); + }; + + AttachBody.prototype._detachPositioningHandler = + function (decorated, container) { + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.off(scrollEvent); + + $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); + }; + + AttachBody.prototype._positionDropdown = function () { + var $window = $(window); + + var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); + var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); + + var newDirection = null; + + var offset = this.$container.offset(); + + offset.bottom = offset.top + this.$container.outerHeight(false); + + var container = { + height: this.$container.outerHeight(false) + }; + + container.top = offset.top; + container.bottom = offset.top + container.height; + + var dropdown = { + height: this.$dropdown.outerHeight(false) + }; + + var viewport = { + top: $window.scrollTop(), + bottom: $window.scrollTop() + $window.height() + }; + + var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); + var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); + + var css = { + left: offset.left, + top: container.bottom + }; + + // Determine what the parent element is to use for calciulating the offset + var $offsetParent = this.$dropdownParent; + + // For statically positoned elements, we need to get the element + // that is determining the offset + if ($offsetParent.css('position') === 'static') { + $offsetParent = $offsetParent.offsetParent(); + } + + var parentOffset = $offsetParent.offset(); + + css.top -= parentOffset.top; + css.left -= parentOffset.left; + + if (!isCurrentlyAbove && !isCurrentlyBelow) { + newDirection = 'below'; + } + + if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { + newDirection = 'above'; + } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { + newDirection = 'below'; + } + + if (newDirection == 'above' || + (isCurrentlyAbove && newDirection !== 'below')) { + css.top = container.top - parentOffset.top - dropdown.height; + } + + if (newDirection != null) { + this.$dropdown + .removeClass('select2-dropdown--below select2-dropdown--above') + .addClass('select2-dropdown--' + newDirection); + this.$container + .removeClass('select2-container--below select2-container--above') + .addClass('select2-container--' + newDirection); + } + + this.$dropdownContainer.css(css); + }; + + AttachBody.prototype._resizeDropdown = function () { + var css = { + width: this.$container.outerWidth(false) + 'px' + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.position = 'relative'; + css.width = 'auto'; + } + + this.$dropdown.css(css); + }; + + AttachBody.prototype._showDropdown = function (decorated) { + this.$dropdownContainer.appendTo(this.$dropdownParent); + + this._positionDropdown(); + this._resizeDropdown(); + }; + + return AttachBody; +}); + +S2.define('select2/dropdown/minimumResultsForSearch',[ + +], function () { + function countResults (data) { + var count = 0; + + for (var d = 0; d < data.length; d++) { + var item = data[d]; + + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + } + + return count; + } + + function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { + this.minimumResultsForSearch = options.get('minimumResultsForSearch'); + + if (this.minimumResultsForSearch < 0) { + this.minimumResultsForSearch = Infinity; + } + + decorated.call(this, $element, options, dataAdapter); + } + + MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { + if (countResults(params.data.results) < this.minimumResultsForSearch) { + return false; + } + + return decorated.call(this, params); + }; + + return MinimumResultsForSearch; +}); + +S2.define('select2/dropdown/selectOnClose',[ + +], function () { + function SelectOnClose () { } + + SelectOnClose.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('close', function (params) { + self._handleSelectOnClose(params); + }); + }; + + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + + var $highlightedResults = this.getHighlightedResults(); + + // Only select highlighted results + if ($highlightedResults.length < 1) { + return; + } + + var data = $highlightedResults.data('data'); + + // Don't re-select already selected resulte + if ( + (data.element != null && data.element.selected) || + (data.element == null && data.selected) + ) { + return; + } + + this.trigger('select', { + data: data + }); + }; + + return SelectOnClose; +}); + +S2.define('select2/dropdown/closeOnSelect',[ + +], function () { + function CloseOnSelect () { } + + CloseOnSelect.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('select', function (evt) { + self._selectTriggered(evt); + }); + + container.on('unselect', function (evt) { + self._selectTriggered(evt); + }); + }; + + CloseOnSelect.prototype._selectTriggered = function (_, evt) { + var originalEvent = evt.originalEvent; + + // Don't close if the control key is being held + if (originalEvent && originalEvent.ctrlKey) { + return; + } + + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); + }; + + return CloseOnSelect; +}); + +S2.define('select2/i18n/en',[],function () { + // English + return { + errorLoading: function () { + return 'The results could not be loaded.'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'Please delete ' + overChars + ' character'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'Please enter ' + remainingChars + ' or more characters'; + + return message; + }, + loadingMore: function () { + return 'Loading more results…'; + }, + maximumSelected: function (args) { + var message = 'You can only select ' + args.maximum + ' item'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'No results found'; + }, + searching: function () { + return 'Searching…'; + } + }; +}); + +S2.define('select2/defaults',[ + 'jquery', + 'require', + + './results', + + './selection/single', + './selection/multiple', + './selection/placeholder', + './selection/allowClear', + './selection/search', + './selection/eventRelay', + + './utils', + './translation', + './diacritics', + + './data/select', + './data/array', + './data/ajax', + './data/tags', + './data/tokenizer', + './data/minimumInputLength', + './data/maximumInputLength', + './data/maximumSelectionLength', + + './dropdown', + './dropdown/search', + './dropdown/hidePlaceholder', + './dropdown/infiniteScroll', + './dropdown/attachBody', + './dropdown/minimumResultsForSearch', + './dropdown/selectOnClose', + './dropdown/closeOnSelect', + + './i18n/en' +], function ($, require, + + ResultsList, + + SingleSelection, MultipleSelection, Placeholder, AllowClear, + SelectionSearch, EventRelay, + + Utils, Translation, DIACRITICS, + + SelectData, ArrayData, AjaxData, Tags, Tokenizer, + MinimumInputLength, MaximumInputLength, MaximumSelectionLength, + + Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, + AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, + + EnglishTranslation) { + function Defaults () { + this.reset(); + } + + Defaults.prototype.apply = function (options) { + options = $.extend(true, {}, this.defaults, options); + + if (options.dataAdapter == null) { + if (options.ajax != null) { + options.dataAdapter = AjaxData; + } else if (options.data != null) { + options.dataAdapter = ArrayData; + } else { + options.dataAdapter = SelectData; + } + + if (options.minimumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MinimumInputLength + ); + } + + if (options.maximumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumInputLength + ); + } + + if (options.maximumSelectionLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumSelectionLength + ); + } + + if (options.tags) { + options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); + } + + if (options.tokenSeparators != null || options.tokenizer != null) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Tokenizer + ); + } + + if (options.query != null) { + var Query = require(options.amdBase + 'compat/query'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Query + ); + } + + if (options.initSelection != null) { + var InitSelection = require(options.amdBase + 'compat/initSelection'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + InitSelection + ); + } + } + + if (options.resultsAdapter == null) { + options.resultsAdapter = ResultsList; + + if (options.ajax != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + InfiniteScroll + ); + } + + if (options.placeholder != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + HidePlaceholder + ); + } + + if (options.selectOnClose) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + SelectOnClose + ); + } + } + + if (options.dropdownAdapter == null) { + if (options.multiple) { + options.dropdownAdapter = Dropdown; + } else { + var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); + + options.dropdownAdapter = SearchableDropdown; + } + + if (options.minimumResultsForSearch !== 0) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + MinimumResultsForSearch + ); + } + + if (options.closeOnSelect) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + CloseOnSelect + ); + } + + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + AttachBody + ); + } + + if (options.selectionAdapter == null) { + if (options.multiple) { + options.selectionAdapter = MultipleSelection; + } else { + options.selectionAdapter = SingleSelection; + } + + // Add the placeholder mixin if a placeholder was specified + if (options.placeholder != null) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + Placeholder + ); + } + + if (options.allowClear) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + AllowClear + ); + } + + if (options.multiple) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + SelectionSearch + ); + } + + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + EventRelay + ); + } + + if (typeof options.language === 'string') { + // Check if the language is specified with a region + if (options.language.indexOf('-') > 0) { + // Extract the region information if it is included + var languageParts = options.language.split('-'); + var baseLanguage = languageParts[0]; + + options.language = [options.language, baseLanguage]; + } else { + options.language = [options.language]; + } + } + + if ($.isArray(options.language)) { + var languages = new Translation(); + options.language.push('en'); + + var languageNames = options.language; + + for (var l = 0; l < languageNames.length; l++) { + var name = languageNames[l]; + var language = {}; + + try { + // Try to load it with the original name + language = Translation.loadPath(name); + } catch (e) { + try { + // If we couldn't load it, check if it wasn't the full path + name = this.defaults.amdLanguageBase + name; + language = Translation.loadPath(name); + } catch (ex) { + // The translation could not be loaded at all. Sometimes this is + // because of a configuration problem, other times this can be + // because of how Select2 helps load all possible translation files. + if (options.debug && window.console && console.warn) { + console.warn( + 'Select2: The language file for "' + name + '" could not be ' + + 'automatically loaded. A fallback will be used instead.' + ); + } + + continue; + } + } + + languages.extend(language); + } + + options.translations = languages; + } else { + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; + } + + return options; + }; + + Defaults.prototype.reset = function () { + function stripDiacritics (text) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return text.replace(/[^\u0000-\u007E]/g, match); + } + + function matcher (params, data) { + // Always return the object if there is nothing to compare + if ($.trim(params.term) === '') { + return data; + } + + // Do a recursive check for options with children + if (data.children && data.children.length > 0) { + // Clone the data object if there are children + // This is required as we modify the object to remove any non-matches + var match = $.extend(true, {}, data); + + // Check each child of the option + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + var matches = matcher(params, child); + + // If there wasn't a match, remove the object in the array + if (matches == null) { + match.children.splice(c, 1); + } + } + + // If any children matched, return the new object + if (match.children.length > 0) { + return match; + } + + // If there were no matching children, check just the plain object + return matcher(params, match); + } + + var original = stripDiacritics(data.text).toUpperCase(); + var term = stripDiacritics(params.term).toUpperCase(); + + // Check if the text contains the term + if (original.indexOf(term) > -1) { + return data; + } + + // If it doesn't contain the term, don't return anything + return null; + } + + this.defaults = { + amdBase: './', + amdLanguageBase: './i18n/', + closeOnSelect: true, + debug: false, + dropdownAutoWidth: false, + escapeMarkup: Utils.escapeMarkup, + language: EnglishTranslation, + matcher: matcher, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: false, + sorter: function (data) { + return data; + }, + templateResult: function (result) { + return result.text; + }, + templateSelection: function (selection) { + return selection.text; + }, + theme: 'default', + width: 'resolve' + }; + }; + + Defaults.prototype.set = function (key, value) { + var camelKey = $.camelCase(key); + + var data = {}; + data[camelKey] = value; + + var convertedData = Utils._convertData(data); + + $.extend(this.defaults, convertedData); + }; + + var defaults = new Defaults(); + + return defaults; +}); + +S2.define('select2/options',[ + 'require', + 'jquery', + './defaults', + './utils' +], function (require, $, Defaults, Utils) { + function Options (options, $element) { + this.options = options; + + if ($element != null) { + this.fromElement($element); + } + + this.options = Defaults.apply(this.options); + + if ($element && $element.is('input')) { + var InputCompat = require(this.get('amdBase') + 'compat/inputData'); + + this.options.dataAdapter = Utils.Decorate( + this.options.dataAdapter, + InputCompat + ); + } + } + + Options.prototype.fromElement = function ($e) { + var excludedData = ['select2']; + + if (this.options.multiple == null) { + this.options.multiple = $e.prop('multiple'); + } + + if (this.options.disabled == null) { + this.options.disabled = $e.prop('disabled'); + } + + if (this.options.language == null) { + if ($e.prop('lang')) { + this.options.language = $e.prop('lang').toLowerCase(); + } else if ($e.closest('[lang]').prop('lang')) { + this.options.language = $e.closest('[lang]').prop('lang'); + } + } + + if (this.options.dir == null) { + if ($e.prop('dir')) { + this.options.dir = $e.prop('dir'); + } else if ($e.closest('[dir]').prop('dir')) { + this.options.dir = $e.closest('[dir]').prop('dir'); + } else { + this.options.dir = 'ltr'; + } + } + + $e.prop('disabled', this.options.disabled); + $e.prop('multiple', this.options.multiple); + + if ($e.data('select2Tags')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to ' + + 'use the `data-data` and `data-tags="true"` attributes and will be ' + + 'removed in future versions of Select2.' + ); + } + + $e.data('data', $e.data('select2Tags')); + $e.data('tags', true); + } + + if ($e.data('ajaxUrl')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-ajax-url` attribute has been changed to ' + + '`data-ajax--url` and support for the old attribute will be removed' + + ' in future versions of Select2.' + ); + } + + $e.attr('ajax--url', $e.data('ajaxUrl')); + $e.data('ajax--url', $e.data('ajaxUrl')); + } + + var dataset = {}; + + // Prefer the element's `dataset` attribute if it exists + // jQuery 1.x does not correctly handle data attributes with multiple dashes + if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { + dataset = $.extend(true, {}, $e[0].dataset, $e.data()); + } else { + dataset = $e.data(); + } + + var data = $.extend(true, {}, dataset); + + data = Utils._convertData(data); + + for (var key in data) { + if ($.inArray(key, excludedData) > -1) { + continue; + } + + if ($.isPlainObject(this.options[key])) { + $.extend(this.options[key], data[key]); + } else { + this.options[key] = data[key]; + } + } + + return this; + }; + + Options.prototype.get = function (key) { + return this.options[key]; + }; + + Options.prototype.set = function (key, val) { + this.options[key] = val; + }; + + return Options; +}); + +S2.define('select2/core',[ + 'jquery', + './options', + './utils', + './keys' +], function ($, Options, Utils, KEYS) { + var Select2 = function ($element, options) { + if ($element.data('select2') != null) { + $element.data('select2').destroy(); + } + + this.$element = $element; + + this.id = this._generateId($element); + + options = options || {}; + + this.options = new Options(options, $element); + + Select2.__super__.constructor.call(this); + + // Set up the tabindex + + var tabindex = $element.attr('tabindex') || 0; + $element.data('old-tabindex', tabindex); + $element.attr('tabindex', '-1'); + + // Set up containers and adapters + + var DataAdapter = this.options.get('dataAdapter'); + this.dataAdapter = new DataAdapter($element, this.options); + + var $container = this.render(); + + this._placeContainer($container); + + var SelectionAdapter = this.options.get('selectionAdapter'); + this.selection = new SelectionAdapter($element, this.options); + this.$selection = this.selection.render(); + + this.selection.position(this.$selection, $container); + + var DropdownAdapter = this.options.get('dropdownAdapter'); + this.dropdown = new DropdownAdapter($element, this.options); + this.$dropdown = this.dropdown.render(); + + this.dropdown.position(this.$dropdown, $container); + + var ResultsAdapter = this.options.get('resultsAdapter'); + this.results = new ResultsAdapter($element, this.options, this.dataAdapter); + this.$results = this.results.render(); + + this.results.position(this.$results, this.$dropdown); + + // Bind events + + var self = this; + + // Bind the container to all of the adapters + this._bindAdapters(); + + // Register any DOM event handlers + this._registerDomEvents(); + + // Register any internal event handlers + this._registerDataEvents(); + this._registerSelectionEvents(); + this._registerDropdownEvents(); + this._registerResultsEvents(); + this._registerEvents(); + + // Set the initial state + this.dataAdapter.current(function (initialData) { + self.trigger('selection:update', { + data: initialData + }); + }); + + // Hide the original select + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + + // Synchronize any monitored attributes + this._syncAttributes(); + + $element.data('select2', this); + }; + + Utils.Extend(Select2, Utils.Observable); + + Select2.prototype._generateId = function ($element) { + var id = ''; + + if ($element.attr('id') != null) { + id = $element.attr('id'); + } else if ($element.attr('name') != null) { + id = $element.attr('name') + '-' + Utils.generateChars(2); + } else { + id = Utils.generateChars(4); + } + + id = id.replace(/(:|\.|\[|\]|,)/g, ''); + id = 'select2-' + id; + + return id; + }; + + Select2.prototype._placeContainer = function ($container) { + $container.insertAfter(this.$element); + + var width = this._resolveWidth(this.$element, this.options.get('width')); + + if (width != null) { + $container.css('width', width); + } + }; + + Select2.prototype._resolveWidth = function ($element, method) { + var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + + if (method == 'resolve') { + var styleWidth = this._resolveWidth($element, 'style'); + + if (styleWidth != null) { + return styleWidth; + } + + return this._resolveWidth($element, 'element'); + } + + if (method == 'element') { + var elementWidth = $element.outerWidth(false); + + if (elementWidth <= 0) { + return 'auto'; + } + + return elementWidth + 'px'; + } + + if (method == 'style') { + var style = $element.attr('style'); + + if (typeof(style) !== 'string') { + return null; + } + + var attrs = style.split(';'); + + for (var i = 0, l = attrs.length; i < l; i = i + 1) { + var attr = attrs[i].replace(/\s/g, ''); + var matches = attr.match(WIDTH); + + if (matches !== null && matches.length >= 1) { + return matches[1]; + } + } + + return null; + } + + return method; + }; + + Select2.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container); + this.selection.bind(this, this.$container); + + this.dropdown.bind(this, this.$container); + this.results.bind(this, this.$container); + }; + + Select2.prototype._registerDomEvents = function () { + var self = this; + + this.$element.on('change.select2', function () { + self.dataAdapter.current(function (data) { + self.trigger('selection:update', { + data: data + }); + }); + }); + + this.$element.on('focus.select2', function (evt) { + self.trigger('focus', evt); + }); + + this._syncA = Utils.bind(this._syncAttributes, this); + this._syncS = Utils.bind(this._syncSubtree, this); + + if (this.$element[0].attachEvent) { + this.$element[0].attachEvent('onpropertychange', this._syncA); + } + + var observer = window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver + ; + + if (observer != null) { + this._observer = new observer(function (mutations) { + $.each(mutations, self._syncA); + $.each(mutations, self._syncS); + }); + this._observer.observe(this.$element[0], { + attributes: true, + childList: true, + subtree: false + }); + } else if (this.$element[0].addEventListener) { + this.$element[0].addEventListener( + 'DOMAttrModified', + self._syncA, + false + ); + this.$element[0].addEventListener( + 'DOMNodeInserted', + self._syncS, + false + ); + this.$element[0].addEventListener( + 'DOMNodeRemoved', + self._syncS, + false + ); + } + }; + + Select2.prototype._registerDataEvents = function () { + var self = this; + + this.dataAdapter.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerSelectionEvents = function () { + var self = this; + var nonRelayEvents = ['toggle', 'focus']; + + this.selection.on('toggle', function () { + self.toggleDropdown(); + }); + + this.selection.on('focus', function (params) { + self.focus(params); + }); + + this.selection.on('*', function (name, params) { + if ($.inArray(name, nonRelayEvents) !== -1) { + return; + } + + self.trigger(name, params); + }); + }; + + Select2.prototype._registerDropdownEvents = function () { + var self = this; + + this.dropdown.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerResultsEvents = function () { + var self = this; + + this.results.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerEvents = function () { + var self = this; + + this.on('open', function () { + self.$container.addClass('select2-container--open'); + }); + + this.on('close', function () { + self.$container.removeClass('select2-container--open'); + }); + + this.on('enable', function () { + self.$container.removeClass('select2-container--disabled'); + }); + + this.on('disable', function () { + self.$container.addClass('select2-container--disabled'); + }); + + this.on('blur', function () { + self.$container.removeClass('select2-container--focus'); + }); + + this.on('query', function (params) { + if (!self.isOpen()) { + self.trigger('open', {}); + } + + this.dataAdapter.query(params, function (data) { + self.trigger('results:all', { + data: data, + query: params + }); + }); + }); + + this.on('query:append', function (params) { + this.dataAdapter.query(params, function (data) { + self.trigger('results:append', { + data: data, + query: params + }); + }); + }); + + this.on('open', function(){ + // Focus on the active element when opening dropdown. + // Needs 1 ms delay because of other 1 ms setTimeouts when rendering. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1); + }); + + $(document).on('keydown', function (evt) { + var key = evt.which; + if (self.isOpen()) { + if (key === KEYS.ESC || key === KEYS.TAB || + (key === KEYS.UP && evt.altKey)) { + self.close(); + + evt.preventDefault(); + } else if (key === KEYS.ENTER) { + self.trigger('results:select', {}); + + evt.preventDefault(); + } else if ((key === KEYS.SPACE && evt.ctrlKey)) { + self.trigger('results:toggle', {}); + + evt.preventDefault(); + } else if (key === KEYS.UP) { + self.trigger('results:previous', {}); + + evt.preventDefault(); + } else if (key === KEYS.DOWN) { + self.trigger('results:next', {}); + + evt.preventDefault(); + } + + // Move the focus to the selected element on keyboard navigation. + // Required for screen readers to work properly. + if (key === KEYS.DOWN || key === KEYS.UP) { + self.focusOnActiveElement(); + } else { + // Focus on the search if user starts typing. + var $searchField = self.$dropdown.find('.select2-search__field'); + if (! $searchField.length) { + $searchField = self.$container.find('.select2-search__field'); + } + $searchField.focus(); + // Focus back to active selection when finished typing. + // Small delay so typed character can be read by screen reader. + setTimeout(function(){ + self.focusOnActiveElement(); + }, 1000); + } + + } else if (self.hasFocus()) { + if (key === KEYS.ENTER || key === KEYS.SPACE || + (key === KEYS.DOWN && evt.altKey)) { + self.open(); + evt.preventDefault(); + } + } + }); + }; + + Select2.prototype.focusOnActiveElement = function () { + // Don't mess with the focus on touchscreens because it causes havoc with on-screen keyboards. + if (! Utils.isTouchscreen()) { + this.$results.find('li.select2-results__option--highlighted').focus(); + } + }; + + Select2.prototype._syncAttributes = function () { + this.options.set('disabled', this.$element.prop('disabled')); + + if (this.options.get('disabled')) { + if (this.isOpen()) { + this.close(); + } + + this.trigger('disable', {}); + } else { + this.trigger('enable', {}); + } + }; + + Select2.prototype._syncSubtree = function (evt, mutations) { + var changed = false; + var self = this; + + // Ignore any mutation events raised for elements that aren't options or + // optgroups. This handles the case when the select element is destroyed + if ( + evt && evt.target && ( + evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' + ) + ) { + return; + } + + if (!mutations) { + // If mutation events aren't supported, then we can only assume that the + // change affected the selections + changed = true; + } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { + for (var n = 0; n < mutations.addedNodes.length; n++) { + var node = mutations.addedNodes[n]; + + if (node.selected) { + changed = true; + } + } + } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { + changed = true; + } + + // Only re-pull the data if we think there is a change + if (changed) { + this.dataAdapter.current(function (currentData) { + self.trigger('selection:update', { + data: currentData + }); + }); + } + }; + + /** + * Override the trigger method to automatically trigger pre-events when + * there are events that can be prevented. + */ + Select2.prototype.trigger = function (name, args) { + var actualTrigger = Select2.__super__.trigger; + var preTriggerMap = { + 'open': 'opening', + 'close': 'closing', + 'select': 'selecting', + 'unselect': 'unselecting' + }; + + if (args === undefined) { + args = {}; + } + + if (name in preTriggerMap) { + var preTriggerName = preTriggerMap[name]; + var preTriggerArgs = { + prevented: false, + name: name, + args: args + }; + + actualTrigger.call(this, preTriggerName, preTriggerArgs); + + if (preTriggerArgs.prevented) { + args.prevented = true; + + return; + } + } + + actualTrigger.call(this, name, args); + }; + + Select2.prototype.toggleDropdown = function () { + if (this.options.get('disabled')) { + return; + } + + if (this.isOpen()) { + this.close(); + } else { + this.open(); + } + }; + + Select2.prototype.open = function () { + if (this.isOpen()) { + return; + } + + this.trigger('query', {}); + }; + + Select2.prototype.close = function () { + if (!this.isOpen()) { + return; + } + + this.trigger('close', {}); + }; + + Select2.prototype.isOpen = function () { + return this.$container.hasClass('select2-container--open'); + }; + + Select2.prototype.hasFocus = function () { + return this.$container.hasClass('select2-container--focus'); + }; + + Select2.prototype.focus = function (data) { + // No need to re-trigger focus events if we are already focused + if (this.hasFocus()) { + return; + } + + this.$container.addClass('select2-container--focus'); + this.trigger('focus', {}); + }; + + Select2.prototype.enable = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will' + + ' be removed in later Select2 versions. Use $element.prop("disabled")' + + ' instead.' + ); + } + + if (args == null || args.length === 0) { + args = [true]; + } + + var disabled = !args[0]; + + this.$element.prop('disabled', disabled); + }; + + Select2.prototype.data = function () { + if (this.options.get('debug') && + arguments.length > 0 && window.console && console.warn) { + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You ' + + 'should consider setting the value instead using `$element.val()`.' + ); + } + + var data = []; + + this.dataAdapter.current(function (currentData) { + data = currentData; + }); + + return data; + }; + + Select2.prototype.val = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be' + + ' removed in later Select2 versions. Use $element.val() instead.' + ); + } + + if (args == null || args.length === 0) { + return this.$element.val(); + } + + var newVal = args[0]; + + if ($.isArray(newVal)) { + newVal = $.map(newVal, function (obj) { + return obj.toString(); + }); + } + + this.$element.val(newVal).trigger('change'); + }; + + Select2.prototype.destroy = function () { + this.$container.remove(); + + if (this.$element[0].detachEvent) { + this.$element[0].detachEvent('onpropertychange', this._syncA); + } + + if (this._observer != null) { + this._observer.disconnect(); + this._observer = null; + } else if (this.$element[0].removeEventListener) { + this.$element[0] + .removeEventListener('DOMAttrModified', this._syncA, false); + this.$element[0] + .removeEventListener('DOMNodeInserted', this._syncS, false); + this.$element[0] + .removeEventListener('DOMNodeRemoved', this._syncS, false); + } + + this._syncA = null; + this._syncS = null; + + this.$element.off('.select2'); + this.$element.attr('tabindex', this.$element.data('old-tabindex')); + + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); + this.$element.removeData('select2'); + + this.dataAdapter.destroy(); + this.selection.destroy(); + this.dropdown.destroy(); + this.results.destroy(); + + this.dataAdapter = null; + this.selection = null; + this.dropdown = null; + this.results = null; + }; + + Select2.prototype.render = function () { + var $container = $( + '' + + '' + + '' + + '' + ); + + $container.attr('dir', this.options.get('dir')); + + this.$container = $container; + + this.$container.addClass('select2-container--' + this.options.get('theme')); + + $container.data('element', this.$element); + + return $container; + }; + + return Select2; +}); + +S2.define('jquery-mousewheel',[ + 'jquery' +], function ($) { + // Used to shim jQuery.mousewheel for non-full builds. + return $; +}); + +S2.define('jquery.select2',[ + 'jquery', + 'jquery-mousewheel', + + './select2/core', + './select2/defaults' +], function ($, _, Select2, Defaults) { + if ($.fn.selectWoo == null) { + // All methods that should return the element + var thisMethods = ['open', 'close', 'destroy']; + + $.fn.selectWoo = function (options) { + options = options || {}; + + if (typeof options === 'object') { + this.each(function () { + var instanceOptions = $.extend(true, {}, options); + + var instance = new Select2($(this), instanceOptions); + }); + + return this; + } else if (typeof options === 'string') { + var ret; + var args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + var instance = $(this).data('select2'); + + if (instance == null && window.console && console.error) { + console.error( + 'The select2(\'' + options + '\') method was called on an ' + + 'element that is not using Select2.' + ); + } + + ret = instance[options].apply(instance, args); + }); + + // Check if we should be returning `this` + if ($.inArray(options, thisMethods) > -1) { + return this; + } + + return ret; + } else { + throw new Error('Invalid arguments for Select2: ' + options); + } + }; + } + + if ($.fn.select2 != null && $.fn.select2.defaults != null) { + $.fn.selectWoo.defaults = $.fn.select2.defaults; + } + + if ($.fn.selectWoo.defaults == null) { + $.fn.selectWoo.defaults = Defaults; + } + + // Also register selectWoo under select2 if select2 is not already present. + $.fn.select2 = $.fn.select2 || $.fn.selectWoo; + + return Select2; +}); + + // Return the AMD loader configuration so it can be used outside of this file + return { + define: S2.define, + require: S2.require + }; +}()); + + // Autoload the jQuery bindings + // We know that all of the modules exist above this, so we're safe + var select2 = S2.require('jquery.select2'); + + // Hold the AMD module references on the jQuery function that was just loaded + // This allows Select2 to use the internal loader outside of this file, such + // as in the language files. + jQuery.fn.select2.amd = S2; + jQuery.fn.selectWoo.amd = S2; + + // Return the Select2 instance for anyone who is importing it. + return select2; +})); diff --git a/functions/kirki/assets/vendor/selectWoo/js/selectWoo.min.js b/functions/kirki/assets/vendor/selectWoo/js/selectWoo.min.js new file mode 100644 index 0000000..bf9600c --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/js/selectWoo.min.js @@ -0,0 +1 @@ +/*! Select2 1.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.isTouchscreen=function(){return void 0===c._isTouchscreenCache&&(c._isTouchscreenCache="ontouchstart"in document.documentElement),c._isTouchscreenCache},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
                    ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a(''),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[data-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("data-selected","true"):b.attr("data-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"option","data-selected":"false",tabindex:-1};b.disabled&&(delete d["data-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["data-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d["aria-label"]=b.text,delete d["data-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";var i=a(h);this.template(b,h),i.attr("role","presentation");for(var j=[],k=0;k",{class:"select2-results__options select2-results__options--nested",role:"listbox"});n.append(j),g.attr("role","list"),g.append(h),g.append(n)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("data-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[data-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[data-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted").attr("aria-selected","true"),d.$results.attr("aria-activedescendant",a.element.attr("id"))}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[data-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("data-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[data-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected","false"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[data-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.options.get("minimumResultsForSearch");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),window.setTimeout(function(){d.$selection.focus()},1),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&b.data("element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.attr("role","combobox"),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("keydown",function(b){!a.isOpen()&&b.which>=48&&b.which<=90&&a.open()}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
                      '),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('
                    • ')},d.prototype.update=function(a){var b=this;if(this.clear(),0!==a.length){for(var d=[],e=0;e1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this,f=b.id+"-results";a.call(this,b,d),b.on("open",function(){e.$search.attr("aria-owns",f),e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var b=e.$searchContainer.prev(".select2-selection__choice");if(b.length>0){var d=b.data("data");e.searchRemoveChoice(d),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d="";return d+=null!=b?b.id:a.generateChars(4),d+="-result-",d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f),e.container.focusOnActiveElement()},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this,f=c.id+"-results";b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.attr("aria-owns",f),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}}),c.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
                    • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var b=this;this.on("open",function(){b.$container.addClass("select2-container--open")}),this.on("close",function(){b.$container.removeClass("select2-container--open")}),this.on("enable",function(){b.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){b.$container.addClass("select2-container--disabled")}),this.on("blur",function(){b.$container.removeClass("select2-container--focus")}),this.on("query",function(a){b.isOpen()||b.trigger("open",{}),this.dataAdapter.query(a,function(c){b.trigger("results:all",{data:c,query:a})})}),this.on("query:append",function(a){this.dataAdapter.query(a,function(c){b.trigger("results:append",{data:c,query:a})})}),this.on("open",function(){setTimeout(function(){b.focusOnActiveElement()},1)}),a(document).on("keydown",function(a){var c=a.which;if(b.isOpen())if(c===d.ESC||c===d.TAB||c===d.UP&&a.altKey?(b.close(),a.preventDefault()):c===d.ENTER?(b.trigger("results:select",{}),a.preventDefault()):c===d.SPACE&&a.ctrlKey?(b.trigger("results:toggle",{}),a.preventDefault()):c===d.UP?(b.trigger("results:previous",{}),a.preventDefault()):c===d.DOWN&&(b.trigger("results:next",{}),a.preventDefault()),c===d.DOWN||c===d.UP)b.focusOnActiveElement();else{var e=b.$dropdown.find(".select2-search__field");e.length||(e=b.$container.find(".select2-search__field")),e.focus(),setTimeout(function(){b.focusOnActiveElement()},1e3)}else b.hasFocus()&&(c===d.ENTER||c===d.SPACE||c===d.DOWN&&a.altKey)&&(b.open(),a.preventDefault())})},e.prototype.focusOnActiveElement=function(){c.isTouchscreen()||this.$results.find("li.select2-results__option--highlighted").focus()},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.selectWoo){var e=["open","close","destroy"];a.fn.selectWoo=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null!=a.fn.select2&&null!=a.fn.select2.defaults&&(a.fn.selectWoo.defaults=a.fn.select2.defaults),null==a.fn.selectWoo.defaults&&(a.fn.selectWoo.defaults=d),a.fn.select2=a.fn.select2||a.fn.selectWoo,c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,a.fn.selectWoo.amd=b,c}); \ No newline at end of file diff --git a/functions/kirki/assets/vendor/selectWoo/kirki.css b/functions/kirki/assets/vendor/selectWoo/kirki.css new file mode 100644 index 0000000..94090fd --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/kirki.css @@ -0,0 +1,28 @@ +.select2-dropdown { + border-color: rgba(0, 0, 0, 0.1); + border-radius: 0; } + +.select2-container { + min-width: 100px; + width: 100% !important; } + .select2-container--open .select2-dropdown--above, + .select2-container--open .select2-dropdown--below { + z-index: 9999999; + min-width: 100px; } + .select2-container--default .select2-search--dropdown .select2-search__field { + border-color: rgba(0, 0, 0, 0.1); } + .select2-container--default .select2-selection--multiple, .select2-container--default .select2-selection--single { + border-color: rgba(0, 0, 0, 0.1); + border-radius: 0; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: rgba(255, 255, 255, 0); + background-color: transparent; + border: none; + border-radius: 0; } + +.wp-customizer .select2-container { + z-index: 8 !important; } + .wp-customizer .select2-container.select2-container--open { + z-index: 999999 !important; } + +/*# sourceMappingURL=kirki.css.map */ diff --git a/functions/kirki/assets/vendor/selectWoo/kirki.css.map b/functions/kirki/assets/vendor/selectWoo/kirki.css.map new file mode 100644 index 0000000..4d384aa --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/kirki.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,iBAAkB;EAChB,YAAY,EAAE,kBAAc;EAC5B,aAAa,EAAE,CAAC;;AAGlB,kBAAmB;EACjB,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,eAAe;EAGpB;mDACyB;IACvB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,KAAK;EAMhB,4EAAuB;IACrB,YAAY,EAAE,kBAAc;EAK9B,gHACU;IACR,YAAY,EAAE,kBAAc;IAC5B,aAAa,EAAE,CAAC;EAIhB,mFAA2B;IACzB,gBAAgB,EAAE,sBAAmB;IACrC,gBAAgB,EAAE,WAAW;IAC7B,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,CAAC;;AAO1B,iCAAkC;EAChC,OAAO,EAAE,YAAY;EAGnB,yDAAQ;IAEN,OAAO,EAAE,iBAAiB", +"sources": ["kirki.scss"], +"names": [], +"file": "kirki.css" +} diff --git a/functions/kirki/assets/vendor/selectWoo/kirki.scss b/functions/kirki/assets/vendor/selectWoo/kirki.scss new file mode 100644 index 0000000..39ee9ae --- /dev/null +++ b/functions/kirki/assets/vendor/selectWoo/kirki.scss @@ -0,0 +1,53 @@ +.select2-dropdown { + border-color: rgba(0,0,0,.1); + border-radius: 0; +} + +.select2-container { + min-width: 100px; + width: 100% !important; + + &--open { + .select2-dropdown--above, + .select2-dropdown--below { + z-index: 9999999; + min-width: 100px; + } + } + + &--default { + .select2-search--dropdown { + .select2-search__field { + border-color: rgba(0,0,0,.1); + } + } + + .select2-selection { + &--multiple, + &--single { + border-color: rgba(0,0,0,.1); + border-radius: 0; + } + + &--multiple { + .select2-selection__choice { + background-color: rgba(255,255,255,0); + background-color: transparent; + border: none; + border-radius: 0; + } + } + } + } +} + +.wp-customizer .select2-container { + z-index: 8 !important; + + &.select2-container { + &--open { + // @See https://github.com/aristath/kirki/issues/1418 + z-index: 999999 !important; + } + } +} diff --git a/functions/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js b/functions/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js new file mode 100644 index 0000000..7764f5b --- /dev/null +++ b/functions/kirki/assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js @@ -0,0 +1,477 @@ +/**! + * wp-color-picker-alpha + * + * Overwrite Automattic Iris for enabled Alpha Channel in wpColorPicker + * Only run in input and is defined data alpha in true + * + * Version: 2.0 + * https://github.com/kallookoo/wp-color-picker-alpha + * Licensed under the GPLv2 license. + */ +( function( $ ) { + // Variable for some backgrounds ( grid ) + var image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAAHnlligAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNpi+P///4EDBxiAGMgCCCAGFB5AADGCRBgYDh48CCRZIJS9vT2QBAggFBkmBiSAogxFBiCAoHogAKIKAlBUYTELAiAmEtABEECk20G6BOmuIl0CIMBQ/IEMkO0myiSSraaaBhZcbkUOs0HuBwDplz5uFJ3Z4gAAAABJRU5ErkJggg==', + // Html stuff for wpColorPicker copy of the original color-picker.js + _before = '', + _after = '
                      ', + _wrap = '
                      ', + _button = '', + _wrappingLabel = '', + _wrappingLabelText = ''; + + /** + * Overwrite Color + * for enable support rbga + */ + Color.fn.toString = function() { + if ( this._alpha < 1 ) + return this.toCSS( 'rgba', this._alpha ).replace( /\s+/g, '' ); + + var hex = parseInt( this._color, 10 ).toString( 16 ); + + if ( this.error ) + return ''; + + if ( hex.length < 6 ) + hex = ( '00000' + hex ).substr( -6 ); + + return '#' + hex; + }; + + /** + * Overwrite wpColorPicker + */ + $.widget( 'wp.wpColorPicker', $.wp.wpColorPicker, { + /** + * @summary Creates the color picker. + * + * Creates the color picker, sets default values, css classes and wraps it all in HTML. + * + * @since 3.5.0 + * + * @access private + * + * @returns {void} + */ + _create: function() { + // Return early if Iris support is missing. + if ( ! $.support.iris ) { + return; + } + + var self = this, + el = self.element; + + // Override default options with options bound to the element. + $.extend( self.options, el.data() ); + + // Create a color picker which only allows adjustments to the hue. + if ( self.options.type === 'hue' ) { + return self._createHueOnly(); + } + + // Bind the close event. + self.close = $.proxy( self.close, self ); + + self.initialValue = el.val(); + + // Add a CSS class to the input field. + el.addClass( 'wp-color-picker' ); + + /* + * Check if there's already a wrapping label, e.g. in the Customizer. + * If there's no label, add a default one to match the Customizer template. + */ + if ( ! el.parent( 'label' ).length ) { + // Wrap the input field in the default label. + el.wrap( _wrappingLabel ); + // Insert the default label text. + self.wrappingLabelText = $( _wrappingLabelText ) + .insertBefore( el ) + .text( wpColorPickerL10n.defaultLabel ); + } + + /* + * At this point, either it's the standalone version or the Customizer + * one, we have a wrapping label to use as hook in the DOM, let's store it. + */ + self.wrappingLabel = el.parent(); + + // Wrap the label in the main wrapper. + self.wrappingLabel.wrap( _wrap ); + // Store a reference to the main wrapper. + self.wrap = self.wrappingLabel.parent(); + // Set up the toggle button and insert it before the wrapping label. + self.toggler = $( _before ) + .insertBefore( self.wrappingLabel ) + .css( { backgroundColor: self.initialValue } ); + // Set the toggle button span element text. + if ( el.data( 'label' ) ) { + self.toggler.find( '.wp-color-result-text' ).text( el.data( 'label' ) ); + } else { + self.toggler.find( '.wp-color-result-text' ).text( wpColorPickerL10n.pick ); + } + // Set up the Iris container and insert it after the wrapping label. + self.pickerContainer = $( _after ).insertAfter( self.wrappingLabel ); + // Store a reference to the Clear/Default button. + self.button = $( _button ); + + // Set up the Clear/Default button. + if ( self.options.defaultColor ) { + self.button + .addClass( 'wp-picker-default' ) + .val( wpColorPickerL10n.defaultString ) + .attr( 'aria-label', wpColorPickerL10n.defaultAriaLabel ); + } else { + self.button + .addClass( 'wp-picker-clear' ) + .val( wpColorPickerL10n.clear ) + .attr( 'aria-label', wpColorPickerL10n.clearAriaLabel ); + } + + // Wrap the wrapping label in its wrapper and append the Clear/Default button. + self.wrappingLabel + .wrap( ' '+e.text},templateSelection:function(e){return' '+e.text}};_.each(a.icons,function(e){r.data.push({id:e.id,text:e.name})}),(t=jQuery(n).selectWoo(r)).on("change",function(){e=jQuery(this).val(),i.setting.set(e)}),t.val(i.setting._value).trigger("change")}}),wp.customize.controlConstructor["kirki-image"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){var e=this,t=e.getValue(),i=_.isUndefined(e.params.choices)||_.isUndefined(e.params.choices.save_as)?"url":e.params.choices.save_as,n=e.container.find(".placeholder, .thumbnail"),a="array"===i?t.url:t,r=e.container.find(".image-upload-remove-button"),s=e.container.find(".image-default-button");e.container.find(".kirki-controls-loading-spinner").hide(),"id"!==i&&"ID"!==i||""===t||wp.media.attachment(t).fetch().then(function(){setTimeout(function(){var e=wp.media.attachment(t).get("url");n.removeClass().addClass("thumbnail thumbnail-image").html('')},700)}),("url"===i&&""!==t||"array"===i&&!_.isUndefined(t.url)&&""!==t.url)&&e.container.find("image-default-button").hide(),("url"===i&&""===t||"array"===i&&(_.isUndefined(t.url)||""===t.url))&&r.hide(),t===e.params.default&&e.container.find("image-default-button").hide(),""!==a&&n.removeClass().addClass("thumbnail thumbnail-image").html(''),e.container.on("click",".image-upload-button",function(t){var a=wp.media({multiple:!1}).open().on("select",function(){var t=a.state().get("selection").first(),o=t.toJSON().sizes.full.url;_.isUndefined(t.toJSON().sizes.medium)?_.isUndefined(t.toJSON().sizes.thumbnail)||(o=t.toJSON().sizes.thumbnail.url):o=t.toJSON().sizes.medium.url,"array"===i?(e.saveValue("id",t.toJSON().id),e.saveValue("url",t.toJSON().sizes.full.url),e.saveValue("width",t.toJSON().width),e.saveValue("height",t.toJSON().height)):"id"===i?e.saveValue("id",t.toJSON().id):e.saveValue("url",t.toJSON().sizes.full.url),n.length&&n.removeClass().addClass("thumbnail thumbnail-image").html(''),r.length&&(r.show(),s.hide())});t.preventDefault()}),e.container.on("click",".image-upload-remove-button",function(t){var i,n,a;t.preventDefault(),e.saveValue("id",""),e.saveValue("url",""),e.saveValue("width",""),e.saveValue("height",""),i=e.container.find(".placeholder, .thumbnail"),n=e.container.find(".image-upload-remove-button"),a=e.container.find(".image-default-button"),i.length&&i.removeClass().addClass("placeholder").html("No file selected"),n.length&&(n.hide(),jQuery(a).hasClass("button")&&a.show())}),e.container.on("click",".image-default-button",function(t){var i,n,a;t.preventDefault(),e.saveValue("url",e.params.default),i=e.container.find(".placeholder, .thumbnail"),n=e.container.find(".image-upload-remove-button"),a=e.container.find(".image-default-button"),i.length&&i.removeClass().addClass("thumbnail thumbnail-image").html(''),n.length&&(n.show(),a.hide())})},getValue:function(){var e=this.setting._value;return"array"===(_.isUndefined(this.params.choices)||_.isUndefined(this.params.choices.save_as)?"url":this.params.choices.save_as)&&_.isString(e)&&(e={url:e}),e},saveValue:function(e,t){var i=this.setting._value;if("array"===(_.isUndefined(this.params.choices)||_.isUndefined(this.params.choices.save_as)?"url":this.params.choices.save_as))return _.isString(i)&&(i={}),i[e]=t,this.setting.set(i),void this.container.find("button").trigger("change");this.setting.set(t),this.container.find("button").trigger("change")}}),wp.customize.controlConstructor["kirki-multicheck"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e=this;e.container.on("change","input",function(){var t=[],i=0;jQuery.each(e.params.choices,function(n){e.container.find('input[value="'+n+'"]').is(":checked")&&(t[i]=n,i++)}),e.setting.set(t)})}}),wp.customize.controlConstructor["kirki-multicolor"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";function e(e,t,i){var a=e.container.find(".multicolor-index-"+i),s={target:r[0],change:function(){setTimeout(function(){e.saveValue(i,a.val()),e.container.find(".multicolor-index-"+i).trigger("change")},100)}};_.isObject(n.irisArgs)&&_.each(n.irisArgs,function(e,t){s[t]=e}),a.wpColorPicker(s)}for(var t,i,n=this.params.choices,a=Object.keys(n),r=(this.params.value,this.container.find(".iris-target")),s=0;sn.params.choices.min&&0",n.params.label&&(r+=''+n.params.label+""),n.params.description&&(r+=''+n.params.description+""),r+='
                      ',r+="',r+='
                      -
                      ',r+='
                      +
                      ',r+="
                      ",r+="",n.container.html(r),e=n.container.find("input"),t=n.container.find(".plus"),i=n.container.find(".minus"),t.click(function(){var t,i=parseFloat(e.val());t=i>=n.params.choices.max?i:i+n.params.choices.step,e.val(t),e.trigger("change")}),i.click(function(){var t,i=parseFloat(e.val());t=i<=n.params.choices.min?i:i-n.params.choices.step,e.val(t),e.trigger("change")}),this.container.on("change keyup paste click","input",function(){n.setting.set(jQuery(this).val())})}}),wp.customize.controlConstructor["kirki-palette"]=wp.customize.kirkiDynamicControl.extend({}),wp.customize.controlConstructor["kirki-preset"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e,t=this;this.container.on("change","select",function(){e=jQuery(this).val(),t.setting.set(e),jQuery.each(t.params.choices,function(t,i){e===t&&jQuery.each(i.settings,function(e,t){kirkiSetSettingValue.set(e,t)})}),wp.customize.previewer.refresh()})}}),wp.customize.controlConstructor["kirki-radio-buttonset"]=wp.customize.kirkiDynamicControl.extend({}),wp.customize.controlConstructor["kirki-radio-image"]=wp.customize.kirkiDynamicControl.extend({});var RepeaterRow=function(e,t,i,n){"use strict";var a=this;this.rowIndex=e,this.container=t,this.label=i,this.header=this.container.find(".repeater-row-header"),this.header.on("click",function(){a.toggleMinimize()}),this.container.on("click",".repeater-row-remove",function(){a.remove()}),this.header.on("mousedown",function(){a.container.trigger("row:start-dragging")}),this.container.on("keyup change","input, select, textarea",function(e){a.container.trigger("row:update",[a.rowIndex,jQuery(e.target).data("field"),e.target])}),this.setRowIndex=function(e){this.rowIndex=e,this.container.attr("data-row",e),this.container.data("row",e),this.updateLabel()},this.toggleMinimize=function(){this.container.toggleClass("minimized"),this.header.find(".dashicons").toggleClass("dashicons-arrow-up").toggleClass("dashicons-arrow-down")},this.remove=function(){this.container.slideUp(300,function(){jQuery(this).detach()}),this.container.trigger("row:remove",[this.rowIndex])},this.updateLabel=function(){var e,t,i;if("field"===this.label.type&&(e=this.container.find('.repeater-field [data-field="'+this.label.field+'"]'),_.isFunction(e.val)&&""!==(t=e.val())))return _.isUndefined(n.params.fields[this.label.field])||_.isUndefined(n.params.fields[this.label.field].type)||("select"===n.params.fields[this.label.field].type?_.isUndefined(n.params.fields[this.label.field].choices)||_.isUndefined(n.params.fields[this.label.field].choices[e.val()])||(t=n.params.fields[this.label.field].choices[e.val()]):"radio"!==n.params.fields[this.label.field].type&&"radio-image"!==n.params.fields[this.label.field].type||(i=n.selector+' [data-row="'+this.rowIndex+'"] .repeater-field [data-field="'+this.label.field+'"]:checked',t=jQuery(i).val())),void this.header.find(".repeater-row-label").text(t);this.header.find(".repeater-row-label").text(this.label.value+" "+(this.rowIndex+1))},this.updateLabel()};wp.customize.controlConstructor.repeater=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";var e,t,i=this,n=this.params.value;i.container.find(".kirki-controls-loading-spinner").hide(),this.settingField=this.container.find("[data-customize-setting-link]").first(),this.setValue([],!1),this.repeaterFieldsContainer=this.container.find(".repeater-fields").first(),this.currentIndex=0,this.rows=[],e=!1,_.isUndefined(this.params.choices.limit)||(e=!(0>=this.params.choices.limit)&&parseInt(this.params.choices.limit,10)),this.container.on("click","button.repeater-add",function(n){n.preventDefault(),!e||i.currentIndex/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(t){return _.template(i.container.find(".customize-control-repeater-content").first().html(),null,e)(t)}}),n.length&&_.each(n,function(e){t=i.addRow(e),i.initColorPicker(),i.initSelect(t,e)}),this.setValue(n,!0,!0),this.repeaterFieldsContainer.sortable({handle:".repeater-row-header",update:function(){i.sort()}})},openFrame:function(e){"use strict";wp.customize.utils.isKeydownButNotEnterEvent(e)||(this.$thisButton.closest(".repeater-field").hasClass("repeater-field-cropped_image")?this.initCropperFrame():this.initFrame(),this.frame.open())},initFrame:function(){"use strict";var e=this.getMimeType();this.frame=wp.media({states:[new wp.media.controller.Library({library:wp.media.query({type:e}),multiple:!1,date:!1})]}),this.frame.on("select",this.onSelect,this)},initCropperFrame:function(){"use strict";var e=this.$thisButton.siblings("input.hidden-field").attr("data-field"),t=this.getMimeType();_.isString(e)&&""!==e&&_.isObject(this.params.fields[e])&&"cropped_image"===this.params.fields[e].type&&["width","height","flex_width","flex_height"].forEach(function(t){_.isUndefined(this.params.fields[e][t])||(this.params[t]=this.params.fields[e][t])}.bind(this)),this.frame=wp.media({button:{text:"Select and Crop",close:!1},states:[new wp.media.controller.Library({library:wp.media.query({type:t}),multiple:!1,date:!1,suggestedWidth:this.params.width,suggestedHeight:this.params.height}),new wp.media.controller.CustomizeImageCropper({imgSelectOptions:this.calculateImageSelectOptions,control:this})]}),this.frame.on("select",this.onSelectForCrop,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this)},onSelect:function(){"use strict";var e=this.frame.state().get("selection").first().toJSON();this.$thisButton.closest(".repeater-field").hasClass("repeater-field-upload")?this.setFileInRepeaterField(e):this.setImageInRepeaterField(e)},onSelectForCrop:function(){"use strict";var e=this.frame.state().get("selection").first().toJSON();this.params.width!==e.width||this.params.height!==e.height||this.params.flex_width||this.params.flex_height?this.frame.setState("cropper"):this.setImageInRepeaterField(e)},onCropped:function(e){"use strict";this.setImageInRepeaterField(e)},calculateImageSelectOptions:function(e,t){"use strict";var i,n,a,r=t.get("control"),s=!!parseInt(r.params.flex_width,10),o=!!parseInt(r.params.flex_height,10),c=e.get("width"),l=e.get("height"),u=parseInt(r.params.width,10),d=parseInt(r.params.height,10),p=u/d,h=c,f=l;return t.set("canSkipCrop",!r.mustBeCropped(s,o,u,d,c,l)),h/f>p?u=(d=f)*p:d=(u=h)/p,i=(h-u)/2,n=(f-d)/2,a={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:c,imageHeight:l,x1:i,y1:n,x2:u+i,y2:d+n},!1===o&&!1===s&&(a.aspectRatio=u+":"+d),!1===o&&(a.maxHeight=d),!1===s&&(a.maxWidth=u),a},mustBeCropped:function(e,t,i,n,a,r){"use strict";return!(!0===e&&!0===t||!0===e&&n===r||!0===t&&i===a||i===a&&n===r||a<=i)},onSkippedCrop:function(){"use strict";var e=this.frame.state().get("selection").first().toJSON();this.setImageInRepeaterField(e)},setImageInRepeaterField:function(e){"use strict";var t=this.$thisButton.closest(".repeater-field-image,.repeater-field-cropped_image");t.find(".kirki-image-attachment").html('').hide().slideDown("slow"),t.find(".hidden-field").val(e.id),this.$thisButton.text(this.$thisButton.data("alt-label")),t.find(".remove-button").show(),t.find("input, textarea, select").trigger("change"),this.frame.close()},setFileInRepeaterField:function(e){"use strict";var t=this.$thisButton.closest(".repeater-field-upload");t.find(".kirki-file-attachment").html(' '+e.filename+"").hide().slideDown("slow"),t.find(".hidden-field").val(e.id),this.$thisButton.text(this.$thisButton.data("alt-label")),t.find(".upload-button").show(),t.find(".remove-button").show(),t.find("input, textarea, select").trigger("change"),this.frame.close()},getMimeType:function(){"use strict";var e=this.$thisButton.siblings("input.hidden-field").attr("data-field");return _.isString(e)&&""!==e&&_.isObject(this.params.fields[e])&&"upload"===this.params.fields[e].type&&!_.isUndefined(this.params.fields[e].mime_type)?this.params.fields[e].mime_type:"image"},removeImage:function(e){"use strict";var t,i;wp.customize.utils.isKeydownButNotEnterEvent(e)||(i=(t=this.$thisButton.closest(".repeater-field-image,.repeater-field-cropped_image,.repeater-field-upload")).find(".upload-button"),t.find(".kirki-image-attachment").slideUp("fast",function(){jQuery(this).show().html(jQuery(this).data("placeholder"))}),t.find(".hidden-field").val(""),i.text(i.data("label")),this.$thisButton.hide(),t.find("input, textarea, select").trigger("change"))},removeFile:function(e){"use strict";var t,i;wp.customize.utils.isKeydownButNotEnterEvent(e)||(i=(t=this.$thisButton.closest(".repeater-field-upload")).find(".upload-button"),t.find(".kirki-file-attachment").slideUp("fast",function(){jQuery(this).show().html(jQuery(this).data("placeholder"))}),t.find(".hidden-field").val(""),i.text(i.data("label")),this.$thisButton.hide(),t.find("input, textarea, select").trigger("change"))},getValue:function(){"use strict";return JSON.parse(decodeURI(this.setting.get()))},setValue:function(e,t,i){"use strict";var n=e,a=[];i&&(jQuery.each(this.params.fields,function(e,t){"image"!==t.type&&"cropped_image"!==t.type&&"upload"!==t.type||a.push(e)}),jQuery.each(e,function(e,t){jQuery.each(a,function(i,a){_.isUndefined(t[a])||_.isUndefined(t[a].id)||(n[e][a]=t[a].id)})})),this.setting.set(encodeURI(JSON.stringify(n))),t&&this.settingField.trigger("change")},addRow:function(e){"use strict";var t,i,n,a=this,r=a.repeaterTemplate(),s=this.getValue(),o={};if(r){if(t=jQuery.extend(!0,{},a.params.fields),e)for(n in e)e.hasOwnProperty(n)&&t.hasOwnProperty(n)&&(t[n].default=e[n]);t.index=this.currentIndex,r=r(t),(i=new RepeaterRow(a.currentIndex,jQuery(r).appendTo(a.repeaterFieldsContainer),a.params.row_label,a)).container.on("row:remove",function(e,t){a.deleteRow(t)}),i.container.on("row:update",function(e,t,n,r){a.updateField.call(a,e,t,n,r),i.updateLabel()}),this.rows[this.currentIndex]=i;for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n].default);return s[this.currentIndex]=o,this.setValue(s,!0),this.currentIndex++,i}},sort:function(){"use strict";var e=this,t=this.repeaterFieldsContainer.find(".repeater-row"),i=[],n=e.getValue(),a=[],r=[];t.each(function(e,t){i.push(jQuery(t).data("row"))}),jQuery.each(i,function(t,i){a[t]=e.rows[i],a[t].setRowIndex(t),r[t]=n[i]}),e.rows=a,e.setValue(r)},deleteRow:function(e){"use strict";var t,i=this.getValue();i[e]&&this.rows[e]&&(delete i[e],delete this.rows[e],this.setValue(i,!0));for(t in this.rows)this.rows.hasOwnProperty(t)&&this.rows[t]&&(this.rows[t].updateLabel(),0)},updateField:function(e,t,i,n){"use strict";var a,r,s;this.rows[t]&&this.params.fields[i]&&(a=this.params.fields[i].type,r=this.rows[t],s=this.getValue(),n=jQuery(n),_.isUndefined(s[r.rowIndex][i])||(s[r.rowIndex][i]="checkbox"===a?n.is(":checked"):n.val(),this.setValue(s,!0)))},initColorPicker:function(){"use strict";var e=this,t=e.container.find(".color-picker-hex"),i={},n=t.data("field");_.isUndefined(n)||_.isUndefined(e.params.fields[n])||_.isUndefined(e.params.fields[n].palettes)||!_.isObject(e.params.fields[n].palettes)||(i.palettes=e.params.fields[n].palettes),i.change=function(t,i){var n=jQuery(t.target),a=n.closest(".repeater-row").data("row"),r=e.getValue();r[a][n.data("field")]=i.color.toString(),e.setValue(r,!0)},0!==t.length&&t.wpColorPicker(i)},initSelect:function(e,t){"use strict";var i,n,a=this,r=e.container.find(".repeater-field select"),s={};0!==r.length&&(i=r.data("field"),"undefed"!==(n=jQuery(r).data("multiple"))&&jQuery.isNumeric(n)&&1<(n=parseInt(n,10))&&(s.maximumSelectionLength=n),(t=t||{})[i]=t[i]||"",jQuery(r).selectWoo(s).val(t[i]),this.container.on("change",".repeater-field select",function(e){var t=jQuery(e.target),i=t.closest(".repeater-row").data("row"),n=a.getValue();n[i][t.data("field")]=jQuery(this).val(),a.setValue(n)}))}}),wp.customize.controlConstructor["kirki-slider"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e=this,t="postMessage"===e.setting.transport?"mousemove change":"change",i=e.container.find('input[type="range"]'),n=e.container.find('input[type="text"]'),a=e.setting._value;n.attr("value",a),i.on("mousemove change",function(){n.attr("value",i.val())}),i.on(t,function(){e.setting.set(i.val())}),n.on("input paste change",function(){i.attr("value",n.val()),e.setting.set(n.val())}),e.container.find(".slider-reset").on("click",function(){n.attr("value",e.params.default),i.attr("value",e.params.default),e.setting.set(n.val())})}}),wp.customize.controlConstructor["kirki-sortable"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";var e=this;e.container.find(".kirki-controls-loading-spinner").hide(),e.sortableContainer=e.container.find("ul.sortable").first(),e.sortableContainer.sortable({stop:function(){e.updateValue()}}).disableSelection().find("li").each(function(){jQuery(this).find("i.visibility").click(function(){jQuery(this).toggleClass("dashicons-visibility-faint").parents("li:eq(0)").toggleClass("invisible")})}).click(function(){e.updateValue()})},updateValue:function(){"use strict";var e=[];this.sortableContainer.find("li").each(function(){jQuery(this).is(".invisible")||e.push(jQuery(this).data("value"))}),this.setting.set(e)}}),wp.customize.controlConstructor["kirki-switch"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){"use strict";var e=this,t=e.setting._value;this.container.on("change","input",function(){t=!!jQuery(this).is(":checked"),e.setting.set(t)})}}),wp.customize.controlConstructor["kirki-toggle"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e=this,t=e.setting._value;this.container.on("change","input",function(){t=!!jQuery(this).is(":checked"),e.setting.set(t)})}}),wp.customize.controlConstructor["kirki-typography"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";var e,t=this,i=t.getValue();t.renderFontSelector(),t.renderBackupFontSelector(),t.renderVariantSelector(),t.renderSubsetSelector(),t.params.default["font-size"]&&this.container.on("change keyup paste",".font-size input",function(){t.saveValue("font-size",jQuery(this).val())}),t.params.default["line-height"]&&this.container.on("change keyup paste",".line-height input",function(){t.saveValue("line-height",jQuery(this).val())}),t.params.default["margin-top"]&&this.container.on("change keyup paste",".margin-top input",function(){t.saveValue("margin-top",jQuery(this).val())}),t.params.default["margin-bottom"]&&this.container.on("change keyup paste",".margin-bottom input",function(){t.saveValue("margin-bottom",jQuery(this).val())}),t.params.default["letter-spacing"]&&(i["letter-spacing"]=jQuery.isNumeric(i["letter-spacing"])?i["letter-spacing"]+"px":i["letter-spacing"],this.container.on("change keyup paste",".letter-spacing input",function(){i["letter-spacing"]=jQuery.isNumeric(jQuery(this).val())?jQuery(this).val()+"px":jQuery(this).val(),t.saveValue("letter-spacing",i["letter-spacing"])})),t.params.default["word-spacing"]&&this.container.on("change keyup paste",".word-spacing input",function(){t.saveValue("word-spacing",jQuery(this).val())}),t.params.default["text-align"]&&this.container.on("change",".text-align input",function(){t.saveValue("text-align",jQuery(this).val())}),t.params.default["text-transform"]&&jQuery(t.selector+" .text-transform select").selectWoo().on("change",function(){t.saveValue("text-transform",jQuery(this).val())}),t.params.default.color&&(e=this.container.find(".kirki-color-control")).wpColorPicker({change:function(){setTimeout(function(){t.saveValue("color",e.val())},100)}})},renderFontSelector:function(){var e,t=this,i=t.selector+" .font-family select",n=[],a=[],r=[],s=t.getValue(),o=t.getFonts();_.isUndefined(o.standard)||_.each(o.standard,function(e){a.push({id:e.family.replace(/"/g,"'"),text:e.label})}),_.isUndefined(o.standard)||_.each(o.google,function(e){r.push({id:e.family,text:e.label})}),n=[{text:"Standard Fonts",children:a},{text:"Google Fonts",children:r}],e=jQuery(i).selectWoo({data:n}),s["font-family"]&&e.val(s["font-family"].replace(/'/g,'"')).trigger("change"),e.on("change",function(){t.saveValue("font-family",jQuery(this).val()),t.renderBackupFontSelector(),t.renderVariantSelector(),t.renderSubsetSelector()})},renderBackupFontSelector:function(){var e,t=this,i=t.selector+" .font-backup select",n=[],a=t.getValue(),r=a["font-family"],s=t.getVariants(r),o=t.getFonts();(_.isUndefined(a["font-backup"])||null===a["font-backup"])&&(a["font-backup"]=""),!1!==s?jQuery(t.selector+" .font-backup").show():jQuery(t.selector+" .font-backup").hide(),_.isUndefined(o.standard)||_.each(o.standard,function(e){n.push({id:e.family.replace(/"/g,"'"),text:e.label})}),e=jQuery(i).selectWoo({data:n}),void 0!==a["font-backup"]&&e.val(a["font-backup"].replace(/'/g,'"')).trigger("change"),e.on("change",function(){t.saveValue("font-backup",jQuery(this).val())})},renderVariantSelector:function(){var e,t,i,n=this,a=n.getValue(),r=a["font-family"],s=n.getVariants(r),o=n.selector+" .variant select",c=[],l=!1;!1!==s?(jQuery(n.selector+" .variant").show(),_.each(s,function(e){a.variant===e.id&&(l=!0),c.push({id:e.id,text:e.label})}),l||(a.variant="regular"),jQuery(o).hasClass("select2-hidden-accessible")&&(jQuery(o).selectWoo("destroy"),jQuery(o).empty()),(t=jQuery(o).selectWoo({data:c})).val(a.variant).trigger("change"),t.on("change",function(){n.saveValue("variant",jQuery(this).val()),e=_.isString(a.variant)?a.variant.match(/\d/g):"400",e=_.isObject(e)?e.join(""):"400",i=-1!==a.variant.indexOf("italic")?"italic":"normal",n.saveValue("font-weight",e),n.saveValue("font-style",i)})):jQuery(n.selector+" .variant").hide()},renderSubsetSelector:function(){var e,t=this,i=t.getValue(),n=i["font-family"],a=t.getSubsets(n),r=t.selector+" .subsets select",s=[],o=i.subsets;!1!==a?(jQuery(t.selector+" .subsets").show(),_.each(a,function(e){_.isObject(o)&&-1===o.indexOf(e.id)&&(o=_.reject(o,function(t){return t===e.id})),s.push({id:e.id,text:e.label})})):jQuery(t.selector+" .subsets").hide(),jQuery(r).hasClass("select2-hidden-accessible")&&(jQuery(r).selectWoo("destroy"),jQuery(r).empty()),(e=jQuery(r).selectWoo({data:s})).val(o).trigger("change"),e.on("change",function(){t.saveValue("subsets",jQuery(this).val())})},getFonts:function(){return _.isUndefined(window["kirkiFonts"+this.id])?"undefined"!=typeof kirkiAllFonts?kirkiAllFonts:{google:[],standard:[]}:window["kirkiFonts"+this.id]},getVariants:function(e){var t=this.getFonts(),i=!1;return _.each(t.standard,function(t){if(e&&t.family===e.replace(/'/g,'"'))return i=t.variants,t.variants}),_.each(t.google,function(t){if(t.family===e)return i=t.variants,t.variants}),i},getSubsets:function(e){var t=!1,i=this.getFonts();return _.each(i.google,function(i){i.family===e&&(t=i.subsets)}),t},getValue:function(){"use strict";var e=this.container.find(".typography-hidden-value"),t=jQuery(e).val();return JSON.parse(t)},saveValue:function(e,t){"use strict";var i=this.container.find(".typography-hidden-value"),n=jQuery(i).val(),a=JSON.parse(n);a[e]=t,wp.customize.control(this.id).setting.set(a),jQuery(i).attr("value",JSON.stringify(a)).trigger("change")}}); \ No newline at end of file diff --git a/functions/kirki/controls/js/dist/script.js b/functions/kirki/controls/js/dist/script.js new file mode 100644 index 0000000..847027a --- /dev/null +++ b/functions/kirki/controls/js/dist/script.js @@ -0,0 +1,3639 @@ +/* jshint -W079 */ +/* jshint unused:false */ +if ( _.isUndefined( window.kirkiSetSettingValue ) ) { + var kirkiSetSettingValue = { // jscs:ignore requireVarDeclFirst + + /** + * Set the value of the control. + * + * @since 3.0.0 + * @param string setting The setting-ID. + * @param mixed value The value. + */ + set: function( setting, value ) { + + /** + * Get the control of the sub-setting. + * This will be used to get properties we need from that control, + * and determine if we need to do any further work based on those. + */ + var $this = this, + subControl = wp.customize.settings.controls[ setting ], + valueJSON; + + // If the control doesn't exist then return. + if ( _.isUndefined( subControl ) ) { + return true; + } + + // First set the value in the wp object. The control type doesn't matter here. + $this.setValue( setting, value ); + + // Process visually changing the value based on the control type. + switch ( subControl.type ) { + + case 'kirki-background': + if ( ! _.isUndefined( value['background-color'] ) ) { + $this.setColorPicker( $this.findElement( setting, '.kirki-color-control' ), value['background-color'] ); + } + $this.findElement( setting, '.placeholder, .thumbnail' ).removeClass().addClass( 'placeholder' ).html( 'No file selected' ); + _.each( ['background-repeat', 'background-position'], function( subVal ) { + if ( ! _.isUndefined( value[ subVal ] ) ) { + $this.setSelectWoo( $this.findElement( setting, '.' + subVal + ' select' ), value[ subVal ] ); + } + }); + _.each( ['background-size', 'background-attachment'], function( subVal ) { + jQuery( $this.findElement( setting, '.' + subVal + ' input[value="' + value + '"]' ) ).prop( 'checked', true ); + }); + valueJSON = JSON.stringify( value ).replace( /'/g, ''' ); + jQuery( $this.findElement( setting, '.background-hidden-value' ).attr( 'value', valueJSON ) ).trigger( 'change' ); + break; + + case 'kirki-code': + jQuery( $this.findElement( setting, '.CodeMirror' ) )[0].CodeMirror.setValue( value ); + break; + + case 'checkbox': + case 'kirki-switch': + case 'kirki-toggle': + value = ( 1 === value || '1' === value || true === value ) ? true : false; + jQuery( $this.findElement( setting, 'input' ) ).prop( 'checked', value ); + wp.customize.instance( setting ).set( value ); + break; + + case 'kirki-select': + case 'kirki-preset': + case 'kirki-fontawesome': + $this.setSelectWoo( $this.findElement( setting, 'select' ), value ); + break; + + case 'kirki-slider': + jQuery( $this.findElement( setting, 'input' ) ).prop( 'value', value ); + jQuery( $this.findElement( setting, '.kirki_range_value .value' ) ).html( value ); + break; + + case 'kirki-generic': + if ( _.isUndefined( subControl.choices ) || _.isUndefined( subControl.choices.element ) ) { + subControl.choices.element = 'input'; + } + jQuery( $this.findElement( setting, subControl.choices.element ) ).prop( 'value', value ); + break; + + case 'kirki-color': + $this.setColorPicker( $this.findElement( setting, '.kirki-color-control' ), value ); + break; + + case 'kirki-multicheck': + $this.findElement( setting, 'input' ).each( function() { + jQuery( this ).prop( 'checked', false ); + }); + _.each( value, function( subValue, i ) { + jQuery( $this.findElement( setting, 'input[value="' + value[ i ] + '"]' ) ).prop( 'checked', true ); + }); + break; + + case 'kirki-multicolor': + _.each( value, function( subVal, index ) { + $this.setColorPicker( $this.findElement( setting, '.multicolor-index-' + index ), subVal ); + }); + break; + + case 'kirki-radio-buttonset': + case 'kirki-radio-image': + case 'kirki-radio': + case 'kirki-dashicons': + case 'kirki-color-palette': + case 'kirki-palette': + jQuery( $this.findElement( setting, 'input[value="' + value + '"]' ) ).prop( 'checked', true ); + break; + + case 'kirki-typography': + _.each( ['font-family', 'variant', 'subsets'], function( subVal ) { + if ( ! _.isUndefined( value[ subVal ] ) ) { + $this.setSelectWoo( $this.findElement( setting, '.' + subVal + ' select' ), value[ subVal ] ); + } + }); + _.each( ['font-size', 'line-height', 'letter-spacing', 'word-spacing'], function( subVal ) { + if ( ! _.isUndefined( value[ subVal ] ) ) { + jQuery( $this.findElement( setting, '.' + subVal + ' input' ) ).prop( 'value', value[ subVal ] ); + } + }); + + if ( ! _.isUndefined( value.color ) ) { + $this.setColorPicker( $this.findElement( setting, '.kirki-color-control' ), value.color ); + } + valueJSON = JSON.stringify( value ).replace( /'/g, ''' ); + jQuery( $this.findElement( setting, '.typography-hidden-value' ).attr( 'value', valueJSON ) ).trigger( 'change' ); + break; + + case 'kirki-dimensions': + _.each( value, function( subValue, id ) { + jQuery( $this.findElement( setting, '.' + id + ' input' ) ).prop( 'value', subValue ); + }); + break; + + case 'kirki-repeater': + + // Not yet implemented. + break; + + case 'kirki-custom': + + // Do nothing. + break; + default: + jQuery( $this.findElement( setting, 'input' ) ).prop( 'value', value ); + } + }, + + /** + * Set the value for colorpickers. + * CAUTION: This only sets the value visually, it does not change it in th wp object. + * + * @since 3.0.0 + * @param object selector jQuery object for this element. + * @param string value The value we want to set. + */ + setColorPicker: function( selector, value ) { + selector.attr( 'data-default-color', value ).data( 'default-color', value ).wpColorPicker( 'color', value ); + }, + + /** + * Sets the value in a selectWoo element. + * CAUTION: This only sets the value visually, it does not change it in th wp object. + * + * @since 3.0.0 + * @param string selector The CSS identifier for this selectWoo. + * @param string value The value we want to set. + */ + setSelectWoo: function( selector, value ) { + jQuery( selector ).selectWoo().val( value ).trigger( 'change' ); + }, + + /** + * Sets the value in textarea elements. + * CAUTION: This only sets the value visually, it does not change it in th wp object. + * + * @since 3.0.0 + * @param string selector The CSS identifier for this textarea. + * @param string value The value we want to set. + */ + setTextarea: function( selector, value ) { + jQuery( selector ).prop( 'value', value ); + }, + + /** + * Finds an element inside this control. + * + * @since 3.0.0 + * @param string setting The setting ID. + * @param string element The CSS identifier. + */ + findElement: function( setting, element ) { + return wp.customize.control( setting ).container.find( element ); + }, + + /** + * Updates the value in the wp.customize object. + * + * @since 3.0.0 + * @param string setting The setting-ID. + * @param mixed value The value. + */ + setValue: function( setting, value, timeout ) { + timeout = ( _.isUndefined( timeout ) ) ? 100 : parseInt( timeout, 10 ); + wp.customize.instance( setting ).set({}); + setTimeout( function() { + wp.customize.instance( setting ).set( value ); + }, timeout ); + } + }; +} +var kirki = { + + initialized: false, + + /** + * Initialize the object. + * + * @since 3.0.17 + * @returns {null} + */ + initialize: function() { + var self = this; + + // We only need to initialize once. + if ( self.initialized ) { + return; + } + + setTimeout( function() { + kirki.util.webfonts.standard.initialize(); + kirki.util.webfonts.google.initialize(); + }, 150 ); + + // Mark as initialized. + self.initialized = true; + } +}; + +// Initialize the kirki object. +kirki.initialize(); +var kirki = kirki || {}; +kirki = jQuery.extend( kirki, { + + /** + * An object containing definitions for controls. + * + * @since 3.0.16 + */ + control: { + + /** + * The code control. + * + * @since 3.0.18 + */ + 'kirki-code': { + + }, + + /** + * The radio control. + * + * @since 3.0.17 + */ + 'kirki-radio': { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The customizer control object. + * @returns {null} + */ + init: function( control ) { + var self = this; + + // Render the template. + self.template( control ); + + // Init the control. + kirki.input.radio.init( control ); + + }, + + /** + * Render the template. + * + * @since 3.0.17 + * @param {Object} control - The customizer control object. + * @param {Object} control.params - The control parameters. + * @param {string} control.params.label - The control label. + * @param {string} control.params.description - The control description. + * @param {string} control.params.inputAttrs - extra input arguments. + * @param {string} control.params.default - The default value. + * @param {Object} control.params.choices - Any extra choices we may need. + * @param {string} control.id - The setting. + * @returns {null} + */ + template: function( control ) { + var template = wp.template( 'kirki-input-radio' ); + control.container.html( template( { + label: control.params.label, + description: control.params.description, + 'data-id': control.id, + inputAttrs: control.params.inputAttrs, + 'default': control.params['default'], + value: kirki.setting.get( control.id ), + choices: control.params.choices + } ) ); + } + }, + + /** + * The color control. + * + * @since 3.0.16 + */ + 'kirki-color': { + + /** + * Init the control. + * + * @since 3.0.16 + * @param {Object} control - The customizer control object. + * @returns {null} + */ + init: function( control ) { + var self = this; + + // Render the template. + self.template( control ); + + // Init the control. + kirki.input.color.init( control ); + + }, + + /** + * Render the template. + * + * @since 3.0.16 + * @param {Object} control - The customizer control object. + * @param {Object} control.params - The control parameters. + * @param {string} control.params.label - The control label. + * @param {string} control.params.description - The control description. + * @param {string} control.params.mode - The colorpicker mode. Can be 'full' or 'hue'. + * @param {bool|array} control.params.palette - false if we don't want a palette, + * true to use the default palette, + * array of custom hex colors if we want a custom palette. + * @param {string} control.params.inputAttrs - extra input arguments. + * @param {string} control.params.default - The default value. + * @param {Object} control.params.choices - Any extra choices we may need. + * @param {boolean} control.params.choices.alpha - should we add an alpha channel? + * @param {string} control.id - The setting. + * @returns {null} + */ + template: function( control ) { + var template = wp.template( 'kirki-input-color' ); + control.container.html( template( { + label: control.params.label, + description: control.params.description, + 'data-id': control.id, + mode: control.params.mode, + inputAttrs: control.params.inputAttrs, + 'data-palette': control.params.palette, + 'data-default-color': control.params['default'], + 'data-alpha': control.params.choices.alpha, + value: kirki.setting.get( control.id ) + } ) ); + } + }, + + /** + * The generic control. + * + * @since 3.0.16 + */ + 'kirki-generic': { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The customizer control object. + * @param {Object} control.params - Control parameters. + * @param {Object} control.params.choices - Define the specifics for this input. + * @param {string} control.params.choices.element - The HTML element we want to use ('input', 'div', 'span' etc). + * @returns {null} + */ + init: function( control ) { + var self = this; + + // Render the template. + self.template( control ); + + // Init the control. + if ( ! _.isUndefined( control.params ) && ! _.isUndefined( control.params.choices ) && ! _.isUndefined( control.params.choices.element ) && 'textarea' === control.params.choices.element ) { + kirki.input.textarea.init( control ); + return; + } + kirki.input.genericInput.init( control ); + }, + + /** + * Render the template. + * + * @since 3.0.17 + * @param {Object} control - The customizer control object. + * @param {Object} control.params - The control parameters. + * @param {string} control.params.label - The control label. + * @param {string} control.params.description - The control description. + * @param {string} control.params.inputAttrs - extra input arguments. + * @param {string} control.params.default - The default value. + * @param {Object} control.params.choices - Any extra choices we may need. + * @param {boolean} control.params.choices.alpha - should we add an alpha channel? + * @param {string} control.id - The setting. + * @returns {null} + */ + template: function( control ) { + var args = { + label: control.params.label, + description: control.params.description, + 'data-id': control.id, + inputAttrs: control.params.inputAttrs, + choices: control.params.choices, + value: kirki.setting.get( control.id ) + }, + template; + + if ( ! _.isUndefined( control.params ) && ! _.isUndefined( control.params.choices ) && ! _.isUndefined( control.params.choices.element ) && 'textarea' === control.params.choices.element ) { + template = wp.template( 'kirki-input-textarea' ); + control.container.html( template( args ) ); + return; + } + template = wp.template( 'kirki-input-generic' ); + control.container.html( template( args ) ); + } + }, + + 'kirki-select': { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The customizer control object. + * @returns {null} + */ + init: function( control ) { + var self = this; + + // Render the template. + self.template( control ); + + // Init the control. + kirki.input.select.init( control ); + }, + + /** + * Render the template. + * + * @since 3.0.17 + * @param {Object} control - The customizer control object. + * @param {Object} control.params - The control parameters. + * @param {string} control.params.label - The control label. + * @param {string} control.params.description - The control description. + * @param {string} control.params.inputAttrs - extra input arguments. + * @param {Object} control.params.default - The default value. + * @param {Object} control.params.choices - The choices for the select dropdown. + * @param {string} control.id - The setting. + * @returns {null} + */ + template: function( control ) { + var template = wp.template( 'kirki-input-select' ); + + control.container.html( template( { + label: control.params.label, + description: control.params.description, + 'data-id': control.id, + inputAttrs: control.params.inputAttrs, + choices: control.params.choices, + value: kirki.setting.get( control.id ), + multiple: control.params.multiple || 1 + } ) ); + } + } + } +} ); +/* global kirkiL10n */ +var kirki = kirki || {}; +kirki = jQuery.extend( kirki, { + /** + * An object containing definitions for input fields. + * + * @since 3.0.16 + */ + input: { + + /** + * Radio input fields. + * + * @since 3.0.17 + */ + radio: { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The control object. + * @param {Object} control.id - The setting. + * @returns {null} + */ + init: function( control ) { + var input = jQuery( 'input[data-id="' + control.id + '"]' ); + + // Save the value + input.on( 'change keyup paste click', function() { + kirki.setting.set( control.id, jQuery( this ).val() ); + }); + } + }, + + /** + * Color input fields. + * + * @since 3.0.16 + */ + color: { + + /** + * Init the control. + * + * @since 3.0.16 + * @param {Object} control - The control object. + * @param {Object} control.id - The setting. + * @param {Object} control.choices - Additional options for the colorpickers. + * @param {Object} control.params - Control parameters. + * @param {Object} control.params.choices - alias for control.choices. + + * @returns {null} + */ + init: function( control ) { + var picker = jQuery( '.kirki-color-control[data-id="' + control.id + '"]' ), + clear; + + control.choices = control.choices || {}; + if ( _.isEmpty( control.choices ) && control.params.choices ) { + control.choices = control.params.choices; + } + + // If we have defined any extra choices, make sure they are passed-on to Iris. + if ( ! _.isEmpty( control.choices ) ) { + picker.wpColorPicker( control.choices ); + } + + // Tweaks to make the "clear" buttons work. + setTimeout( function() { + clear = jQuery( '.kirki-input-container[data-id="' + control.id + '"] .wp-picker-clear' ); + if ( clear.length ) { + clear.click( function() { + kirki.setting.set( control.id, '' ); + }); + } + }, 200 ); + + // Saves our settings to the WP API + picker.wpColorPicker({ + change: function() { + + // Small hack: the picker needs a small delay + setTimeout( function() { + kirki.setting.set( control.id, picker.val() ); + }, 20 ); + } + }); + } + }, + + /** + * Generic input fields. + * + * @since 3.0.17 + */ + genericInput: { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The control object. + * @param {Object} control.id - The setting. + * @returns {null} + */ + init: function( control ) { + var input = jQuery( 'input[data-id="' + control.id + '"]' ); + + // Save the value + input.on( 'change keyup paste click', function() { + kirki.setting.set( control.id, jQuery( this ).val() ); + }); + } + }, + + /** + * Generic input fields. + * + * @since 3.0.17 + */ + textarea: { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The control object. + * @param {Object} control.id - The setting. + * @returns {null} + */ + init: function( control ) { + var textarea = jQuery( 'textarea[data-id="' + control.id + '"]' ); + + // Save the value + textarea.on( 'change keyup paste click', function() { + kirki.setting.set( control.id, jQuery( this ).val() ); + }); + } + }, + + select: { + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The control object. + * @param {Object} control.id - The setting. + * @returns {null} + */ + init: function( control ) { + var element = jQuery( 'select[data-id="' + control.id + '"]' ), + multiple = parseInt( element.data( 'multiple' ), 10 ), + selectValue, + selectWooOptions = { + escapeMarkup: function( markup ) { + return markup; + } + }; + + if ( 1 < multiple ) { + selectWooOptions.maximumSelectionLength = multiple; + } + jQuery( element ).selectWoo( selectWooOptions ).on( 'change', function() { + selectValue = jQuery( this ).val(); + selectValue = ( null === selectValue && 1 < multiple ) ? [] : selectValue; + kirki.setting.set( control.id, selectValue ); + }); + } + }, + + image: { + + /** + * Get the HTML for image inputs. + * + * @since 3.0.17 + * @param {Object} data - The arguments. + * @returns {string} + */ + getTemplate: function( data ) { + var html = '', + saveAs = 'url', + url; + + data = _.defaults( data, { + label: '', + description: '', + inputAttrs: '', + 'data-id': '', + choices: {}, + value: '' + } ); + + if ( ! _.isUndefined( data.choices ) && ! _.isUndefined( data.choices.save_as ) ) { + saveAs = data.choices.save_as; + } + url = data.value; + if ( _.isObject( data.value ) && ! _.isUndefined( data.value.url ) ) { + url = data.value.url; + } + + html += ''; + html += '
                      '; + if ( data.value.url || '' !== url ) { + html += '
                      '; + } else { + html += '
                      ' + kirkiL10n.noFileSelected + '
                      '; + } + html += '
                      '; + html += ''; + if ( data['default'] && '' !== data['default'] ) { + html += ''; + html += '
                      '; + + return '
                      ' + html + '
                      '; + }, + + /** + * Init the control. + * + * @since 3.0.17 + * @param {Object} control - The control object. + * @returns {null} + */ + init: function( control ) { // jshint ignore:line + } + } + } +} ); +var kirki = kirki || {}; +kirki = jQuery.extend( kirki, { + /** + * An object containing definitions for settings. + * + * @since 3.0.16 + */ + setting: { + + /** + * Gets the value of a setting. + * + * This is a helper function that allows us to get the value of + * control[key1][key2] for example, when the setting used in the + * customizer API is "control". + * + * @since 3.0.16 + * @param {string} setting - The setting for which we're getting the value. + * @returns {mixed} Depends on the value. + */ + get: function( setting ) { + var parts = setting.split( '[' ), + foundSetting = '', + foundInStep = 0, + currentVal = ''; + + _.each( parts, function( part, i ) { + part = part.replace( ']', '' ); + + if ( 0 === i ) { + foundSetting = part; + } else { + foundSetting += '[' + part + ']'; + } + + if ( ! _.isUndefined( wp.customize.instance( foundSetting ) ) ) { + currentVal = wp.customize.instance( foundSetting ).get(); + foundInStep = i; + } + + if ( foundInStep < i ) { + if ( _.isObject( currentVal ) && ! _.isUndefined( currentVal[ part ] ) ) { + currentVal = currentVal[ part ]; + } + } + }); + + return currentVal; + }, + + /** + * Sets the value of a setting. + * + * This function is a bit complicated because there any many scenarios to consider. + * Example: We want to save the value for my_setting[something][3][something-else]. + * The control's setting is my_setting[something]. + * So we need to find that first, then figure out the remaining parts, + * merge the values recursively to avoid destroying my_setting[something][2] + * and also take into account any defined "key" arguments which take this even deeper. + * + * @since 3.0.16 + * @param {object|string} element - The DOM element whose value has changed, + * or an ID. + * @param {mixed} value - Depends on the control-type. + * @param {string} key - If we only want to save an item in an object + * we can define the key here. + * @returns {null} + */ + set: function( element, value, key ) { + var setting, + parts, + currentNode = '', + foundNode = '', + subSettingObj = {}, + currentVal, + subSetting, + subSettingParts; + + // Get the setting from the element. + setting = element; + if ( _.isObject( element ) ) { + if ( jQuery( element ).attr( 'data-id' ) ) { + setting = element.attr( 'data-id' ); + } else { + setting = element.parents( '[data-id]' ).attr( 'data-id' ); + } + } + + if ( 'undefined' !== typeof wp.customize.control( setting ) ) { + wp.customize.control( setting ).setting.set( value ); + return; + } + + parts = setting.split( '[' ), + + // Find the setting we're using in the control using the customizer API. + _.each( parts, function( part, i ) { + part = part.replace( ']', '' ); + + // The current part of the setting. + currentNode = ( 0 === i ) ? part : '[' + part + ']'; + + // When we find the node, get the value from it. + // In case of an object we'll need to merge with current values. + if ( ! _.isUndefined( wp.customize.instance( currentNode ) ) ) { + foundNode = currentNode; + currentVal = wp.customize.instance( foundNode ).get(); + } + } ); + + // Get the remaining part of the setting that was unused. + subSetting = setting.replace( foundNode, '' ); + + // If subSetting is not empty, then we're dealing with an object + // and we need to dig deeper and recursively merge the values. + if ( '' !== subSetting ) { + if ( ! _.isObject( currentVal ) ) { + currentVal = {}; + } + if ( '[' === subSetting.charAt( 0 ) ) { + subSetting = subSetting.replace( '[', '' ); + } + subSettingParts = subSetting.split( '[' ); + _.each( subSettingParts, function( subSettingPart, i ) { + subSettingParts[ i ] = subSettingPart.replace( ']', '' ); + } ); + + // If using a key, we need to go 1 level deeper. + if ( key ) { + subSettingParts.push( key ); + } + + // Converting to a JSON string and then parsing that to an object + // may seem a bit hacky and crude but it's efficient and works. + subSettingObj = '{"' + subSettingParts.join( '":{"' ) + '":"' + value + '"' + '}'.repeat( subSettingParts.length ); + subSettingObj = JSON.parse( subSettingObj ); + + // Recursively merge with current value. + jQuery.extend( true, currentVal, subSettingObj ); + value = currentVal; + + } else { + if ( key ) { + currentVal = ( ! _.isObject( currentVal ) ) ? {} : currentVal; + currentVal[ key ] = value; + value = currentVal; + } + } + wp.customize.control( foundNode ).setting.set( value ); + } + } +} ); +/* global ajaxurl */ +var kirki = kirki || {}; +kirki = jQuery.extend( kirki, { + /** + * A collection of utility methods. + * + * @since 3.0.17 + */ + util: { + + /** + * A collection of utility methods for webfonts. + * + * @since 3.0.17 + */ + webfonts: { + + /** + * Google-fonts related methods. + * + * @since 3.0.17 + */ + google: { + + /** + * An object containing all Google fonts. + * + * to set this call this.setFonts(); + * + * @since 3.0.17 + */ + fonts: {}, + + /** + * Init for google-fonts. + * + * @since 3.0.17 + * @returns {null} + */ + initialize: function() { + var self = this; + + self.setFonts(); + }, + + /** + * Set fonts in this.fonts + * + * @since 3.0.17 + * @returns {null} + */ + setFonts: function() { + var self = this; + + // No need to run if we already have the fonts. + if ( ! _.isEmpty( self.fonts ) ) { + return; + } + + // Make an AJAX call to set the fonts object (alpha). + jQuery.post( ajaxurl, { 'action': 'kirki_fonts_google_all_get' }, function( response ) { + + // Get fonts from the JSON array. + self.fonts = JSON.parse( response ); + } ); + }, + + /** + * Gets all properties of a font-family. + * + * @since 3.0.17 + * @param {string} family - The font-family we're interested in. + * @returns {Object} + */ + getFont: function( family ) { + var self = this, + fonts = self.getFonts(); + + if ( 'undefined' === typeof fonts[ family ] ) { + return false; + } + return fonts[ family ]; + }, + + /** + * Gets all properties of a font-family. + * + * @since 3.0.17 + * @param {string} order - How to order the fonts (alpha|popularity|trending). + * @param {int} number - How many to get. 0 for all. + * @returns {Object} + */ + getFonts: function( order, number ) { + var self = this, + ordered = {}, + partial = []; + + // Make sure order is correct. + order = order || 'alpha'; + order = ( 'alpha' !== order && 'popularity' !== order && 'trending' !== order ) ? 'alpha' : order; + + // Make sure number is correct. + number = number || 0; + number = parseInt( number, 10 ); + + if ( 'alpha' === order || 0 === number ) { + ordered = self.fonts.items; + } else { + partial = _.first( self.fonts.order[ order ], number ); + _.each( partial, function( family ) { + ordered[ family ] = self.fonts.items[ family ]; + } ); + } + + return ordered; + }, + + /** + * Gets the variants for a font-family. + * + * @since 3.0.17 + * @param {string} family - The font-family we're interested in. + * @returns {Array} + */ + getVariants: function( family ) { + var self = this, + font = self.getFont( family ); + + // Early exit if font was not found. + if ( ! font ) { + return false; + } + + // Early exit if font doesn't have variants. + if ( _.isUndefined( font.variants ) ) { + return false; + } + + // Return the variants. + return font.variants; + }, + + /** + * Get the subsets for a font-family. + * + * @since 3.0.17 + * @param {string} family - The font-family we're interested in. + * @returns {Object} + */ + getSubsets: function( family ) { + var self = this, + font = self.getFont( family ); + + // Early exit if font was not found. + if ( ! font ) { + return false; + } + + // Early exit if font doesn't have subsets. + if ( _.isUndefined( font.subsets ) ) { + return false; + } + + // Return the variants. + return font.subsets; + } + }, + + /** + * Standard fonts related methods. + * + * @since 3.0.17 + */ + standard: { + + /** + * An object containing all Standard fonts. + * + * to set this call this.setFonts(); + * + * @since 3.0.17 + */ + fonts: {}, + + /** + * Init for google-fonts. + * + * @since 3.0.17 + * @returns {null} + */ + initialize: function() { + var self = this; + + self.setFonts(); + }, + + /** + * Set fonts in this.fonts + * + * @since 3.0.17 + * @returns {null} + */ + setFonts: function() { + var self = this; + + // No need to run if we already have the fonts. + if ( ! _.isEmpty( self.fonts ) ) { + return; + } + + // Make an AJAX call to set the fonts object. + jQuery.post( ajaxurl, { 'action': 'kirki_fonts_standard_all_get' }, function( response ) { + + // Get fonts from the JSON array. + self.fonts = JSON.parse( response ); + } ); + }, + + /** + * Gets the variants for a font-family. + * + * @since 3.0.17 + * @returns {Array} + */ + getVariants: function( family ) { // jshint ignore: line + return ['regular', 'italic', '700', '700italic']; + } + }, + + /** + * Figure out what this font-family is (google/standard) + * + * @since 3.0.20 + * @param {string} family - The font-family. + * @returns {string|false} - Returns string if found (google|standard) + * and false in case the font-family is an arbitrary value + * not found anywhere in our font definitions. + */ + getFontType: function( family ) { + var self = this; + + // Check for standard fonts first. + if ( + 'undefined' !== typeof self.standard.fonts[ family ] || ( + 'undefined' !== typeof self.standard.fonts.stack && + 'undefined' !== typeof self.standard.fonts.stack[ family ] + ) + ) { + return 'standard'; + } + + // Check in googlefonts. + if ( 'undefined' !== typeof self.google.fonts.items[ family ] ) { + return 'google'; + } + return false; + } + } + } +} ); +/* global kirki */ +/** + * The majority of the code in this file + * is derived from the wp-customize-posts plugin + * and the work of @westonruter to whom I am very grateful. + * + * @see https://github.com/xwp/wp-customize-posts + */ + +( function() { + 'use strict'; + + /** + * A dynamic color-alpha control. + * + * @class + * @augments wp.customize.Control + * @augments wp.customize.Class + */ + wp.customize.kirkiDynamicControl = wp.customize.Control.extend({ + + initialize: function( id, options ) { + var control = this, + args = options || {}; + + args.params = args.params || {}; + if ( ! args.params.type ) { + args.params.type = 'kirki-generic'; + } + if ( ! args.params.content ) { + args.params.content = jQuery( '
                    • ' ); + args.params.content.attr( 'id', 'customize-control-' + id.replace( /]/g, '' ).replace( /\[/g, '-' ) ); + args.params.content.attr( 'class', 'customize-control customize-control-' + args.params.type ); + } + + control.propertyElements = []; + wp.customize.Control.prototype.initialize.call( control, id, args ); + }, + + /** + * Add bidirectional data binding links between inputs and the setting(s). + * + * This is copied from wp.customize.Control.prototype.initialize(). It + * should be changed in Core to be applied once the control is embedded. + * + * @private + * @returns {null} + */ + _setUpSettingRootLinks: function() { + var control = this, + nodes = control.container.find( '[data-customize-setting-link]' ); + + nodes.each( function() { + var node = jQuery( this ); + + wp.customize( node.data( 'customizeSettingLink' ), function( setting ) { + var element = new wp.customize.Element( node ); + control.elements.push( element ); + element.sync( setting ); + element.set( setting() ); + }); + }); + }, + + /** + * Add bidirectional data binding links between inputs and the setting properties. + * + * @private + * @returns {null} + */ + _setUpSettingPropertyLinks: function() { + var control = this, + nodes; + + if ( ! control.setting ) { + return; + } + + nodes = control.container.find( '[data-customize-setting-property-link]' ); + + nodes.each( function() { + var node = jQuery( this ), + element, + propertyName = node.data( 'customizeSettingPropertyLink' ); + + element = new wp.customize.Element( node ); + control.propertyElements.push( element ); + element.set( control.setting()[ propertyName ] ); + + element.bind( function( newPropertyValue ) { + var newSetting = control.setting(); + if ( newPropertyValue === newSetting[ propertyName ] ) { + return; + } + newSetting = _.clone( newSetting ); + newSetting[ propertyName ] = newPropertyValue; + control.setting.set( newSetting ); + } ); + control.setting.bind( function( newValue ) { + if ( newValue[ propertyName ] !== element.get() ) { + element.set( newValue[ propertyName ] ); + } + } ); + }); + }, + + /** + * @inheritdoc + */ + ready: function() { + var control = this; + + control._setUpSettingRootLinks(); + control._setUpSettingPropertyLinks(); + + wp.customize.Control.prototype.ready.call( control ); + + control.deferred.embedded.done( function() { + control.initKirkiControl( control ); + }); + }, + + /** + * Embed the control in the document. + * + * Override the embed() method to do nothing, + * so that the control isn't embedded on load, + * unless the containing section is already expanded. + * + * @returns {null} + */ + embed: function() { + var control = this, + sectionId = control.section(); + + if ( ! sectionId ) { + return; + } + + wp.customize.section( sectionId, function( section ) { + if ( 'kirki-expanded' === section.params.type || section.expanded() || wp.customize.settings.autofocus.control === control.id ) { + control.actuallyEmbed(); + } else { + section.expanded.bind( function( expanded ) { + if ( expanded ) { + control.actuallyEmbed(); + } + } ); + } + } ); + }, + + /** + * Deferred embedding of control when actually + * + * This function is called in Section.onChangeExpanded() so the control + * will only get embedded when the Section is first expanded. + * + * @returns {null} + */ + actuallyEmbed: function() { + var control = this; + if ( 'resolved' === control.deferred.embedded.state() ) { + return; + } + control.renderContent(); + control.deferred.embedded.resolve(); // This triggers control.ready(). + }, + + /** + * This is not working with autofocus. + * + * @param {object} [args] Args. + * @returns {null} + */ + focus: function( args ) { + var control = this; + control.actuallyEmbed(); + wp.customize.Control.prototype.focus.call( control, args ); + }, + + /** + * Additional actions that run on ready. + * + * @param {object} [args] Args. + * @returns {null} + */ + initKirkiControl: function( control ) { + if ( 'undefined' !== typeof kirki.control[ control.params.type ] ) { + kirki.control[ control.params.type ].init( control ); + return; + } + + // Save the value + this.container.on( 'change keyup paste click', 'input', function() { + control.setting.set( jQuery( this ).val() ); + }); + }, + + kirkiValidateCSSValue: function( value ) { + + var validUnits = ['rem', 'em', 'ex', '%', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ch', 'vh', 'vw', 'vmin', 'vmax'], + numericValue, + unit; + + // 0 is always a valid value, and we can't check calc() values effectively. + if ( '0' === value || ( 0 <= value.indexOf( 'calc(' ) && 0 <= value.indexOf( ')' ) ) ) { + return true; + } + + if ( 'auto' === value || 'inherit' === value || 'initial' === value ) { + return true; + } + + // Get the numeric value. + numericValue = parseFloat( value ); + + // Get the unit + unit = value.replace( numericValue, '' ); + + // Check the validity of the numeric value and units. + if ( isNaN( numericValue ) || -1 === jQuery.inArray( unit, validUnits ) ) { + return false; + } + return true; + } + }); +})(); + +_.each( kirki.control, function( obj, type ) { + wp.customize.controlConstructor[ type ] = wp.customize.kirkiDynamicControl.extend({}); +} ); +/* global kirkiControlLoader */ +wp.customize.controlConstructor['kirki-background'] = wp.customize.Control.extend({ + + // When we're finished loading continue processing + ready: function() { + + 'use strict'; + + var control = this; + + // Init the control. + if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) { + kirkiControlLoader( control ); + } else { + control.initKirkiControl(); + } + }, + + initKirkiControl: function() { + + var control = this, + value = control.setting._value, + picker = control.container.find( '.kirki-color-control' ); + + // Hide unnecessary controls if the value doesn't have an image. + if ( _.isUndefined( value['background-image'] ) || '' === value['background-image'] ) { + control.container.find( '.background-wrapper > .background-repeat' ).hide(); + control.container.find( '.background-wrapper > .background-position' ).hide(); + control.container.find( '.background-wrapper > .background-size' ).hide(); + control.container.find( '.background-wrapper > .background-attachment' ).hide(); + } + + // Color. + picker.wpColorPicker({ + change: function() { + setTimeout( function() { + control.saveValue( 'background-color', picker.val() ); + }, 100 ); + } + }); + + // Background-Repeat. + control.container.on( 'change', '.background-repeat select', function() { + control.saveValue( 'background-repeat', jQuery( this ).val() ); + }); + + // Background-Size. + control.container.on( 'change click', '.background-size input', function() { + control.saveValue( 'background-size', jQuery( this ).val() ); + }); + + // Background-Position. + control.container.on( 'change', '.background-position select', function() { + control.saveValue( 'background-position', jQuery( this ).val() ); + }); + + // Background-Attachment. + control.container.on( 'change click', '.background-attachment input', function() { + control.saveValue( 'background-attachment', jQuery( this ).val() ); + }); + + // Background-Image. + control.container.on( 'click', '.background-image-upload-button', function( e ) { + var image = wp.media({ multiple: false }).open().on( 'select', function() { + + // This will return the selected image from the Media Uploader, the result is an object. + var uploadedImage = image.state().get( 'selection' ).first(), + previewImage = uploadedImage.toJSON().sizes.full.url, + imageUrl, + imageID, + imageWidth, + imageHeight, + preview, + removeButton; + + if ( ! _.isUndefined( uploadedImage.toJSON().sizes.medium ) ) { + previewImage = uploadedImage.toJSON().sizes.medium.url; + } else if ( ! _.isUndefined( uploadedImage.toJSON().sizes.thumbnail ) ) { + previewImage = uploadedImage.toJSON().sizes.thumbnail.url; + } + + imageUrl = uploadedImage.toJSON().sizes.full.url; + imageID = uploadedImage.toJSON().id; + imageWidth = uploadedImage.toJSON().width; + imageHeight = uploadedImage.toJSON().height; + + // Show extra controls if the value has an image. + if ( '' !== imageUrl ) { + control.container.find( '.background-wrapper > .background-repeat, .background-wrapper > .background-position, .background-wrapper > .background-size, .background-wrapper > .background-attachment' ).show(); + } + + control.saveValue( 'background-image', imageUrl ); + preview = control.container.find( '.placeholder, .thumbnail' ); + removeButton = control.container.find( '.background-image-upload-remove-button' ); + + if ( preview.length ) { + preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); + } + if ( removeButton.length ) { + removeButton.show(); + } + }); + + e.preventDefault(); + }); + + control.container.on( 'click', '.background-image-upload-remove-button', function( e ) { + + var preview, + removeButton; + + e.preventDefault(); + + control.saveValue( 'background-image', '' ); + + preview = control.container.find( '.placeholder, .thumbnail' ); + removeButton = control.container.find( '.background-image-upload-remove-button' ); + + // Hide unnecessary controls. + control.container.find( '.background-wrapper > .background-repeat' ).hide(); + control.container.find( '.background-wrapper > .background-position' ).hide(); + control.container.find( '.background-wrapper > .background-size' ).hide(); + control.container.find( '.background-wrapper > .background-attachment' ).hide(); + + if ( preview.length ) { + preview.removeClass().addClass( 'placeholder' ).html( 'No file selected' ); + } + if ( removeButton.length ) { + removeButton.hide(); + } + }); + }, + + /** + * Saves the value. + */ + saveValue: function( property, value ) { + + var control = this, + input = jQuery( '#customize-control-' + control.id.replace( '[', '-' ).replace( ']', '' ) + ' .background-hidden-value' ), + val = control.setting._value; + + val[ property ] = value; + + jQuery( input ).attr( 'value', JSON.stringify( val ) ).trigger( 'change' ); + control.setting.set( val ); + } +}); +wp.customize.controlConstructor['kirki-code'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this; + + // Early exit if wp.customize.CodeEditorControl is not available. + if ( _.isUndefined( wp.customize.CodeEditorControl ) ) { + return; + } + + // Hide the textarea. + jQuery( control.container.find( 'textarea.kirki-codemirror-editor' ) ).hide(); + + // Add the control. + wp.customize.control.add( new wp.customize.CodeEditorControl( control.id, { + section: control.params.section, + priority: control.params.priority, + label: control.params.label, + editor_settings: { + codemirror: { + mode: control.params.choices.language + } + }, + settings: { 'default': control.id } + } ) ); + } +}); +wp.customize.controlConstructor['kirki-color-palette'] = wp.customize.kirkiDynamicControl.extend({}); +wp.customize.controlConstructor['kirki-dashicons'] = wp.customize.kirkiDynamicControl.extend({}); +wp.customize.controlConstructor['kirki-date'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this; + + // Only add in WP 4.9+. + if ( _.isUndefined( wp.customize.DateTimeControl ) ) { + return; + } + + // New method for the DateTime control. + wp.customize.control.add( new wp.customize.DateTimeControl( control.id, { + section: control.params.section, + priority: control.params.priority, + label: control.params.label, + description: control.params.description, + settings: { 'default': control.id }, + 'default': control.params['default'] + } ) ); + } +}); +/* global dimensionkirkiL10n */ +wp.customize.controlConstructor['kirki-dimension'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + value; + + // Notifications. + control.kirkiNotifications(); + + // Save the value + this.container.on( 'change keyup paste', 'input', function() { + + value = jQuery( this ).val(); + control.setting.set( value ); + }); + }, + + /** + * Handles notifications. + */ + kirkiNotifications: function() { + + var control = this; + + wp.customize( control.id, function( setting ) { + setting.bind( function( value ) { + var code = 'long_title'; + + if ( false === control.kirkiValidateCSSValue( value ) ) { + setting.notifications.add( code, new wp.customize.Notification( + code, + { + type: 'warning', + message: dimensionkirkiL10n['invalid-value'] + } + ) ); + } else { + setting.notifications.remove( code ); + } + } ); + } ); + } +}); +/* global dimensionskirkiL10n */ +wp.customize.controlConstructor['kirki-dimensions'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + subControls = control.params.choices.controls, + value = {}, + subsArray = [], + i; + + _.each( subControls, function( v, i ) { + if ( true === v ) { + subsArray.push( i ); + } + } ); + + for ( i = 0; i < subsArray.length; i++ ) { + value[ subsArray[ i ] ] = control.setting._value[ subsArray[ i ] ]; + control.updateDimensionsValue( subsArray[ i ], value ); + } + }, + + /** + * Updates the value. + */ + updateDimensionsValue: function( context, value ) { + + var control = this; + + control.container.on( 'change keyup paste', '.' + context + ' input', function() { + value[ context ] = jQuery( this ).val(); + + // Notifications. + control.kirkiNotifications(); + + // Save the value + control.saveValue( value ); + }); + }, + + /** + * Saves the value. + */ + saveValue: function( value ) { + + var control = this, + newValue = {}; + + _.each( value, function( newSubValue, i ) { + newValue[ i ] = newSubValue; + }); + + control.setting.set( newValue ); + }, + + /** + * Handles notifications. + */ + kirkiNotifications: function() { + + var control = this; + + wp.customize( control.id, function( setting ) { + setting.bind( function( value ) { + var code = 'long_title', + subs = {}, + message; + + setting.notifications.remove( code ); + + _.each( value, function( val, direction ) { + if ( false === control.kirkiValidateCSSValue( val ) ) { + subs[ direction ] = val; + } else { + delete subs[ direction ]; + } + } ); + + if ( ! _.isEmpty( subs ) ) { + message = dimensionskirkiL10n['invalid-value'] + ' (' + _.values( subs ).toString() + ') '; + setting.notifications.add( code, new wp.customize.Notification( code, { + type: 'warning', + message: message + } ) ); + return; + } + setting.notifications.remove( code ); + } ); + } ); + } +}); +/* global tinyMCE */ +wp.customize.controlConstructor['kirki-editor'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + element = control.container.find( 'textarea' ), + id = 'kirki-editor-' + control.id.replace( '[', '' ).replace( ']', '' ), + editor; + + wp.editor.initialize( id, { + tinymce: { + wpautop: true + }, + quicktags: true, + mediaButtons: true + }); + + editor = tinyMCE.get( id ); + + if ( editor ) { + editor.onChange.add( function( ed ) { + var content; + + ed.save(); + content = editor.getContent(); + element.val( content ).trigger( 'change' ); + wp.customize.instance( control.id ).set( content ); + }); + } + } +}); +/* global fontAwesomeJSON */ +wp.customize.controlConstructor['kirki-fontawesome'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + element = this.container.find( 'select' ), + icons = jQuery.parseJSON( fontAwesomeJSON ), + selectValue, + selectWooOptions = { + data: [], + escapeMarkup: function( markup ) { + return markup; + }, + templateResult: function( val ) { + return '' + ' ' + val.text; + }, + templateSelection: function( val ) { + return '' + ' ' + val.text; + } + }, + select; + + _.each( icons.icons, function( icon ) { + selectWooOptions.data.push({ + id: icon.id, + text: icon.name + }); + }); + + select = jQuery( element ).selectWoo( selectWooOptions ); + + select.on( 'change', function() { + selectValue = jQuery( this ).val(); + control.setting.set( selectValue ); + }); + select.val( control.setting._value ).trigger( 'change' ); + } +}); +/* global kirkiControlLoader */ +wp.customize.controlConstructor['kirki-image'] = wp.customize.Control.extend({ + + // When we're finished loading continue processing + ready: function() { + + 'use strict'; + + var control = this; + + // Init the control. + if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) { + kirkiControlLoader( control ); + } else { + control.initKirkiControl(); + } + }, + + initKirkiControl: function() { + + var control = this, + value = control.getValue(), + saveAs = ( ! _.isUndefined( control.params.choices ) && ! _.isUndefined( control.params.choices.save_as ) ) ? control.params.choices.save_as : 'url', + preview = control.container.find( '.placeholder, .thumbnail' ), + previewImage = ( 'array' === saveAs ) ? value.url : value, + removeButton = control.container.find( '.image-upload-remove-button' ), + defaultButton = control.container.find( '.image-default-button' ); + + control.container.find( '.kirki-controls-loading-spinner' ).hide(); + + // Tweaks for save_as = id. + if ( ( 'id' === saveAs || 'ID' === saveAs ) && '' !== value ) { + wp.media.attachment( value ).fetch().then( function() { + setTimeout( function() { + var url = wp.media.attachment( value ).get( 'url' ); + preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); + }, 700 ); + } ); + } + + // If value is not empty, hide the "default" button. + if ( ( 'url' === saveAs && '' !== value ) || ( 'array' === saveAs && ! _.isUndefined( value.url ) && '' !== value.url ) ) { + control.container.find( 'image-default-button' ).hide(); + } + + // If value is empty, hide the "remove" button. + if ( ( 'url' === saveAs && '' === value ) || ( 'array' === saveAs && ( _.isUndefined( value.url ) || '' === value.url ) ) ) { + removeButton.hide(); + } + + // If value is default, hide the default button. + if ( value === control.params['default'] ) { + control.container.find( 'image-default-button' ).hide(); + } + + if ( '' !== previewImage ) { + preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); + } + + control.container.on( 'click', '.image-upload-button', function( e ) { + var image = wp.media({ multiple: false }).open().on( 'select', function() { + + // This will return the selected image from the Media Uploader, the result is an object. + var uploadedImage = image.state().get( 'selection' ).first(), + previewImage = uploadedImage.toJSON().sizes.full.url; + + if ( ! _.isUndefined( uploadedImage.toJSON().sizes.medium ) ) { + previewImage = uploadedImage.toJSON().sizes.medium.url; + } else if ( ! _.isUndefined( uploadedImage.toJSON().sizes.thumbnail ) ) { + previewImage = uploadedImage.toJSON().sizes.thumbnail.url; + } + + if ( 'array' === saveAs ) { + control.saveValue( 'id', uploadedImage.toJSON().id ); + control.saveValue( 'url', uploadedImage.toJSON().sizes.full.url ); + control.saveValue( 'width', uploadedImage.toJSON().width ); + control.saveValue( 'height', uploadedImage.toJSON().height ); + } else if ( 'id' === saveAs ) { + control.saveValue( 'id', uploadedImage.toJSON().id ); + } else { + control.saveValue( 'url', uploadedImage.toJSON().sizes.full.url ); + } + + if ( preview.length ) { + preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); + } + if ( removeButton.length ) { + removeButton.show(); + defaultButton.hide(); + } + }); + + e.preventDefault(); + }); + + control.container.on( 'click', '.image-upload-remove-button', function( e ) { + + var preview, + removeButton, + defaultButton; + + e.preventDefault(); + + control.saveValue( 'id', '' ); + control.saveValue( 'url', '' ); + control.saveValue( 'width', '' ); + control.saveValue( 'height', '' ); + + preview = control.container.find( '.placeholder, .thumbnail' ); + removeButton = control.container.find( '.image-upload-remove-button' ); + defaultButton = control.container.find( '.image-default-button' ); + + if ( preview.length ) { + preview.removeClass().addClass( 'placeholder' ).html( 'No file selected' ); + } + if ( removeButton.length ) { + removeButton.hide(); + if ( jQuery( defaultButton ).hasClass( 'button' ) ) { + defaultButton.show(); + } + } + }); + + control.container.on( 'click', '.image-default-button', function( e ) { + + var preview, + removeButton, + defaultButton; + + e.preventDefault(); + + control.saveValue( 'url', control.params['default'] ); + + preview = control.container.find( '.placeholder, .thumbnail' ); + removeButton = control.container.find( '.image-upload-remove-button' ); + defaultButton = control.container.find( '.image-default-button' ); + + if ( preview.length ) { + preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); + } + if ( removeButton.length ) { + removeButton.show(); + defaultButton.hide(); + } + }); + }, + + /** + * Gets the value. + */ + getValue: function() { + var control = this, + value = control.setting._value, + saveAs = ( ! _.isUndefined( control.params.choices ) && ! _.isUndefined( control.params.choices.save_as ) ) ? control.params.choices.save_as : 'url'; + + if ( 'array' === saveAs && _.isString( value ) ) { + value = { + url: value + }; + } + return value; + }, + + /** + * Saves the value. + */ + saveValue: function( property, value ) { + var control = this, + valueOld = control.setting._value, + saveAs = ( ! _.isUndefined( control.params.choices ) && ! _.isUndefined( control.params.choices.save_as ) ) ? control.params.choices.save_as : 'url'; + + if ( 'array' === saveAs ) { + if ( _.isString( valueOld ) ) { + valueOld = {}; + } + valueOld[ property ] = value; + control.setting.set( valueOld ); + control.container.find( 'button' ).trigger( 'change' ); + return; + } + control.setting.set( value ); + control.container.find( 'button' ).trigger( 'change' ); + } +}); +wp.customize.controlConstructor['kirki-multicheck'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this; + + // Save the value + control.container.on( 'change', 'input', function() { + var value = [], + i = 0; + + // Build the value as an object using the sub-values from individual checkboxes. + jQuery.each( control.params.choices, function( key ) { + if ( control.container.find( 'input[value="' + key + '"]' ).is( ':checked' ) ) { + value[ i ] = key; + i++; + } + }); + + // Update the value in the customizer. + control.setting.set( value ); + }); + } +}); +/* global kirkiControlLoader */ +wp.customize.controlConstructor['kirki-multicolor'] = wp.customize.Control.extend({ + + // When we're finished loading continue processing + ready: function() { + + 'use strict'; + + var control = this; + + // Init the control. + if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) { + kirkiControlLoader( control ); + } else { + control.initKirkiControl(); + } + }, + + initKirkiControl: function() { + + 'use strict'; + + var control = this, + colors = control.params.choices, + keys = Object.keys( colors ), + value = this.params.value, + i = 0; + + // Proxy function that handles changing the individual colors + function kirkiMulticolorChangeHandler( control, value, subSetting ) { + + var picker = control.container.find( '.multicolor-index-' + subSetting ), + args = { + change: function() { + + // Color controls require a small delay. + setTimeout( function() { + + // Set the value. + control.saveValue( subSetting, picker.val() ); + + // Trigger the change. + control.container.find( '.multicolor-index-' + subSetting ).trigger( 'change' ); + }, 100 ); + } + }; + + if ( _.isObject( colors.irisArgs ) ) { + _.each( colors.irisArgs, function( irisValue, irisKey ) { + args[ irisKey ] = irisValue; + }); + } + + // Did we change the value? + picker.wpColorPicker( args ); + } + + // Colors loop + while ( i < Object.keys( colors ).length ) { + kirkiMulticolorChangeHandler( this, value, keys[ i ] ); + i++; + } + }, + + /** + * Saves the value. + */ + saveValue: function( property, value ) { + + var control = this, + input = control.container.find( '.multicolor-hidden-value' ), + val = control.setting._value; + + val[ property ] = value; + + jQuery( input ).attr( 'value', JSON.stringify( val ) ).trigger( 'change' ); + control.setting.set( val ); + } +}); +wp.customize.controlConstructor['kirki-number'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + value = control.setting._value, + html = '', + input, + up, + down; + + // Make sure we use default values if none are define for some arguments. + control.params.choices = _.defaults( control.params.choices, { + min: 0, + max: 100, + step: 1 + } ); + + // Make sure we have a valid value. + if ( isNaN( value ) || '' === value ) { + value = ( 0 > control.params.choices.min && 0 < control.params.choices.max ) ? 0 : control.params.choices.min; + } + value = parseFloat( value ); + + // If step is 'any', set to 0.001. + control.params.choices.step = ( 'any' === control.params.choices.step ) ? 0.001 : control.params.choices.step; + + // Make sure choices are properly formtted as numbers. + control.params.choices.min = parseFloat( control.params.choices.min ); + control.params.choices.max = parseFloat( control.params.choices.max ); + control.params.choices.step = parseFloat( control.params.choices.step ); + + // Build the HTML for the control. + html += ''; + + control.container.html( html ); + + input = control.container.find( 'input' ); + up = control.container.find( '.plus' ); + down = control.container.find( '.minus' ); + + up.click( function() { + var oldVal = parseFloat( input.val() ), + newVal; + + newVal = ( oldVal >= control.params.choices.max ) ? oldVal : oldVal + control.params.choices.step; + + input.val( newVal ); + input.trigger( 'change' ); + } ); + + down.click( function() { + var oldVal = parseFloat( input.val() ), + newVal; + + newVal = ( oldVal <= control.params.choices.min ) ? oldVal : oldVal - control.params.choices.step; + + input.val( newVal ); + input.trigger( 'change' ); + } ); + + this.container.on( 'change keyup paste click', 'input', function() { + control.setting.set( jQuery( this ).val() ); + }); + } +}); +wp.customize.controlConstructor['kirki-palette'] = wp.customize.kirkiDynamicControl.extend({}); +/* global kirkiSetSettingValue */ +wp.customize.controlConstructor['kirki-preset'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + selectValue; + + // Trigger a change + this.container.on( 'change', 'select', function() { + + // Get the control's value + selectValue = jQuery( this ).val(); + + // Update the value using the customizer API and trigger the "save" button + control.setting.set( selectValue ); + + // We have to get the choices of this control + // and then start parsing them to see what we have to do for each of the choices. + jQuery.each( control.params.choices, function( key, value ) { + + // If the current value of the control is the key of the choice, + // then we can continue processing, Otherwise there's no reason to do anything. + if ( selectValue === key ) { + + // Each choice has an array of settings defined in it. + // We'll have to loop through them all and apply the changes needed to them. + jQuery.each( value.settings, function( presetSetting, presetSettingValue ) { + kirkiSetSettingValue.set( presetSetting, presetSettingValue ); + }); + } + }); + wp.customize.previewer.refresh(); + }); + } +}); +wp.customize.controlConstructor['kirki-radio-buttonset'] = wp.customize.kirkiDynamicControl.extend({}); +wp.customize.controlConstructor['kirki-radio-image'] = wp.customize.kirkiDynamicControl.extend({}); +/* global kirkiControlLoader */ +var RepeaterRow = function( rowIndex, container, label, control ) { + + 'use strict'; + + var self = this; + this.rowIndex = rowIndex; + this.container = container; + this.label = label; + this.header = this.container.find( '.repeater-row-header' ), + + this.header.on( 'click', function() { + self.toggleMinimize(); + }); + + this.container.on( 'click', '.repeater-row-remove', function() { + self.remove(); + }); + + this.header.on( 'mousedown', function() { + self.container.trigger( 'row:start-dragging' ); + }); + + this.container.on( 'keyup change', 'input, select, textarea', function( e ) { + self.container.trigger( 'row:update', [ self.rowIndex, jQuery( e.target ).data( 'field' ), e.target ] ); + }); + + this.setRowIndex = function( rowIndex ) { + this.rowIndex = rowIndex; + this.container.attr( 'data-row', rowIndex ); + this.container.data( 'row', rowIndex ); + this.updateLabel(); + }; + + this.toggleMinimize = function() { + + // Store the previous state. + this.container.toggleClass( 'minimized' ); + this.header.find( '.dashicons' ).toggleClass( 'dashicons-arrow-up' ).toggleClass( 'dashicons-arrow-down' ); + }; + + this.remove = function() { + this.container.slideUp( 300, function() { + jQuery( this ).detach(); + }); + this.container.trigger( 'row:remove', [ this.rowIndex ] ); + }; + + this.updateLabel = function() { + var rowLabelField, + rowLabel, + rowLabelSelector; + + if ( 'field' === this.label.type ) { + rowLabelField = this.container.find( '.repeater-field [data-field="' + this.label.field + '"]' ); + if ( _.isFunction( rowLabelField.val ) ) { + rowLabel = rowLabelField.val(); + if ( '' !== rowLabel ) { + if ( ! _.isUndefined( control.params.fields[ this.label.field ] ) ) { + if ( ! _.isUndefined( control.params.fields[ this.label.field ].type ) ) { + if ( 'select' === control.params.fields[ this.label.field ].type ) { + if ( ! _.isUndefined( control.params.fields[ this.label.field ].choices ) && ! _.isUndefined( control.params.fields[ this.label.field ].choices[ rowLabelField.val() ] ) ) { + rowLabel = control.params.fields[ this.label.field ].choices[ rowLabelField.val() ]; + } + } else if ( 'radio' === control.params.fields[ this.label.field ].type || 'radio-image' === control.params.fields[ this.label.field ].type ) { + rowLabelSelector = control.selector + ' [data-row="' + this.rowIndex + '"] .repeater-field [data-field="' + this.label.field + '"]:checked'; + rowLabel = jQuery( rowLabelSelector ).val(); + } + } + } + this.header.find( '.repeater-row-label' ).text( rowLabel ); + return; + } + } + } + this.header.find( '.repeater-row-label' ).text( this.label.value + ' ' + ( this.rowIndex + 1 ) ); + }; + this.updateLabel(); +}; + +wp.customize.controlConstructor.repeater = wp.customize.Control.extend({ + + // When we're finished loading continue processing + ready: function() { + + 'use strict'; + + var control = this; + + // Init the control. + if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) { + kirkiControlLoader( control ); + } else { + control.initKirkiControl(); + } + }, + + initKirkiControl: function() { + + 'use strict'; + + var control = this, + limit, + theNewRow; + + // The current value set in Control Class (set in Kirki_Customize_Repeater_Control::to_json() function) + var settingValue = this.params.value; + + control.container.find( '.kirki-controls-loading-spinner' ).hide(); + + // The hidden field that keeps the data saved (though we never update it) + this.settingField = this.container.find( '[data-customize-setting-link]' ).first(); + + // Set the field value for the first time, we'll fill it up later + this.setValue( [], false ); + + // The DIV that holds all the rows + this.repeaterFieldsContainer = this.container.find( '.repeater-fields' ).first(); + + // Set number of rows to 0 + this.currentIndex = 0; + + // Save the rows objects + this.rows = []; + + // Default limit choice + limit = false; + if ( ! _.isUndefined( this.params.choices.limit ) ) { + limit = ( 0 >= this.params.choices.limit ) ? false : parseInt( this.params.choices.limit, 10 ); + } + + this.container.on( 'click', 'button.repeater-add', function( e ) { + e.preventDefault(); + if ( ! limit || control.currentIndex < limit ) { + theNewRow = control.addRow(); + theNewRow.toggleMinimize(); + control.initColorPicker(); + control.initSelect( theNewRow ); + } else { + jQuery( control.selector + ' .limit' ).addClass( 'highlight' ); + } + }); + + this.container.on( 'click', '.repeater-row-remove', function() { + control.currentIndex--; + if ( ! limit || control.currentIndex < limit ) { + jQuery( control.selector + ' .limit' ).removeClass( 'highlight' ); + } + }); + + this.container.on( 'click keypress', '.repeater-field-image .upload-button,.repeater-field-cropped_image .upload-button,.repeater-field-upload .upload-button', function( e ) { + e.preventDefault(); + control.$thisButton = jQuery( this ); + control.openFrame( e ); + }); + + this.container.on( 'click keypress', '.repeater-field-image .remove-button,.repeater-field-cropped_image .remove-button', function( e ) { + e.preventDefault(); + control.$thisButton = jQuery( this ); + control.removeImage( e ); + }); + + this.container.on( 'click keypress', '.repeater-field-upload .remove-button', function( e ) { + e.preventDefault(); + control.$thisButton = jQuery( this ); + control.removeFile( e ); + }); + + /** + * Function that loads the Mustache template + */ + this.repeaterTemplate = _.memoize( function() { + var compiled, + /* + * Underscore's default ERB-style templates are incompatible with PHP + * when asp_tags is enabled, so WordPress uses Mustache-inspired templating syntax. + * + * @see trac ticket #22344. + */ + options = { + evaluate: /<#([\s\S]+?)#>/g, + interpolate: /\{\{\{([\s\S]+?)\}\}\}/g, + escape: /\{\{([^\}]+?)\}\}(?!\})/g, + variable: 'data' + }; + + return function( data ) { + compiled = _.template( control.container.find( '.customize-control-repeater-content' ).first().html(), null, options ); + return compiled( data ); + }; + }); + + // When we load the control, the fields have not been filled up + // This is the first time that we create all the rows + if ( settingValue.length ) { + _.each( settingValue, function( subValue ) { + theNewRow = control.addRow( subValue ); + control.initColorPicker(); + control.initSelect( theNewRow, subValue ); + }); + } + + // Once we have displayed the rows, we cleanup the values + this.setValue( settingValue, true, true ); + + this.repeaterFieldsContainer.sortable({ + handle: '.repeater-row-header', + update: function() { + control.sort(); + } + }); + + }, + + /** + * Open the media modal. + */ + openFrame: function( event ) { + + 'use strict'; + + if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) { + return; + } + + if ( this.$thisButton.closest( '.repeater-field' ).hasClass( 'repeater-field-cropped_image' ) ) { + this.initCropperFrame(); + } else { + this.initFrame(); + } + + this.frame.open(); + }, + + initFrame: function() { + + 'use strict'; + + var libMediaType = this.getMimeType(); + + this.frame = wp.media({ + states: [ + new wp.media.controller.Library({ + library: wp.media.query({ type: libMediaType }), + multiple: false, + date: false + }) + ] + }); + + // When a file is selected, run a callback. + this.frame.on( 'select', this.onSelect, this ); + }, + /** + * Create a media modal select frame, and store it so the instance can be reused when needed. + * This is mostly a copy/paste of Core api.CroppedImageControl in /wp-admin/js/customize-control.js + */ + initCropperFrame: function() { + + 'use strict'; + + // We get the field id from which this was called + var currentFieldId = this.$thisButton.siblings( 'input.hidden-field' ).attr( 'data-field' ), + attrs = [ 'width', 'height', 'flex_width', 'flex_height' ], // A list of attributes to look for + libMediaType = this.getMimeType(); + + // Make sure we got it + if ( _.isString( currentFieldId ) && '' !== currentFieldId ) { + + // Make fields is defined and only do the hack for cropped_image + if ( _.isObject( this.params.fields[ currentFieldId ] ) && 'cropped_image' === this.params.fields[ currentFieldId ].type ) { + + //Iterate over the list of attributes + attrs.forEach( function( el ) { + + // If the attribute exists in the field + if ( ! _.isUndefined( this.params.fields[ currentFieldId ][ el ] ) ) { + + // Set the attribute in the main object + this.params[ el ] = this.params.fields[ currentFieldId ][ el ]; + } + }.bind( this ) ); + } + } + + this.frame = wp.media({ + button: { + text: 'Select and Crop', + close: false + }, + states: [ + new wp.media.controller.Library({ + library: wp.media.query({ type: libMediaType }), + multiple: false, + date: false, + suggestedWidth: this.params.width, + suggestedHeight: this.params.height + }), + new wp.media.controller.CustomizeImageCropper({ + imgSelectOptions: this.calculateImageSelectOptions, + control: this + }) + ] + }); + + this.frame.on( 'select', this.onSelectForCrop, this ); + this.frame.on( 'cropped', this.onCropped, this ); + this.frame.on( 'skippedcrop', this.onSkippedCrop, this ); + + }, + + onSelect: function() { + + 'use strict'; + + var attachment = this.frame.state().get( 'selection' ).first().toJSON(); + + if ( this.$thisButton.closest( '.repeater-field' ).hasClass( 'repeater-field-upload' ) ) { + this.setFileInRepeaterField( attachment ); + } else { + this.setImageInRepeaterField( attachment ); + } + }, + + /** + * After an image is selected in the media modal, switch to the cropper + * state if the image isn't the right size. + */ + + onSelectForCrop: function() { + + 'use strict'; + + var attachment = this.frame.state().get( 'selection' ).first().toJSON(); + + if ( this.params.width === attachment.width && this.params.height === attachment.height && ! this.params.flex_width && ! this.params.flex_height ) { + this.setImageInRepeaterField( attachment ); + } else { + this.frame.setState( 'cropper' ); + } + }, + + /** + * After the image has been cropped, apply the cropped image data to the setting. + * + * @param {object} croppedImage Cropped attachment data. + */ + onCropped: function( croppedImage ) { + + 'use strict'; + + this.setImageInRepeaterField( croppedImage ); + + }, + + /** + * Returns a set of options, computed from the attached image data and + * control-specific data, to be fed to the imgAreaSelect plugin in + * wp.media.view.Cropper. + * + * @param {wp.media.model.Attachment} attachment + * @param {wp.media.controller.Cropper} controller + * @returns {Object} Options + */ + calculateImageSelectOptions: function( attachment, controller ) { + + 'use strict'; + + var control = controller.get( 'control' ), + flexWidth = !! parseInt( control.params.flex_width, 10 ), + flexHeight = !! parseInt( control.params.flex_height, 10 ), + realWidth = attachment.get( 'width' ), + realHeight = attachment.get( 'height' ), + xInit = parseInt( control.params.width, 10 ), + yInit = parseInt( control.params.height, 10 ), + ratio = xInit / yInit, + xImg = realWidth, + yImg = realHeight, + x1, + y1, + imgSelectOptions; + + controller.set( 'canSkipCrop', ! control.mustBeCropped( flexWidth, flexHeight, xInit, yInit, realWidth, realHeight ) ); + + if ( xImg / yImg > ratio ) { + yInit = yImg; + xInit = yInit * ratio; + } else { + xInit = xImg; + yInit = xInit / ratio; + } + + x1 = ( xImg - xInit ) / 2; + y1 = ( yImg - yInit ) / 2; + + imgSelectOptions = { + handles: true, + keys: true, + instance: true, + persistent: true, + imageWidth: realWidth, + imageHeight: realHeight, + x1: x1, + y1: y1, + x2: xInit + x1, + y2: yInit + y1 + }; + + if ( false === flexHeight && false === flexWidth ) { + imgSelectOptions.aspectRatio = xInit + ':' + yInit; + } + if ( false === flexHeight ) { + imgSelectOptions.maxHeight = yInit; + } + if ( false === flexWidth ) { + imgSelectOptions.maxWidth = xInit; + } + + return imgSelectOptions; + }, + + /** + * Return whether the image must be cropped, based on required dimensions. + * + * @param {bool} flexW + * @param {bool} flexH + * @param {int} dstW + * @param {int} dstH + * @param {int} imgW + * @param {int} imgH + * @return {bool} + */ + mustBeCropped: function( flexW, flexH, dstW, dstH, imgW, imgH ) { + + 'use strict'; + + if ( ( true === flexW && true === flexH ) || ( true === flexW && dstH === imgH ) || ( true === flexH && dstW === imgW ) || ( dstW === imgW && dstH === imgH ) || ( imgW <= dstW ) ) { + return false; + } + + return true; + }, + + /** + * If cropping was skipped, apply the image data directly to the setting. + */ + onSkippedCrop: function() { + + 'use strict'; + + var attachment = this.frame.state().get( 'selection' ).first().toJSON(); + this.setImageInRepeaterField( attachment ); + + }, + + /** + * Updates the setting and re-renders the control UI. + * + * @param {object} attachment + */ + setImageInRepeaterField: function( attachment ) { + + 'use strict'; + + var $targetDiv = this.$thisButton.closest( '.repeater-field-image,.repeater-field-cropped_image' ); + + $targetDiv.find( '.kirki-image-attachment' ).html( '' ).hide().slideDown( 'slow' ); + + $targetDiv.find( '.hidden-field' ).val( attachment.id ); + this.$thisButton.text( this.$thisButton.data( 'alt-label' ) ); + $targetDiv.find( '.remove-button' ).show(); + + //This will activate the save button + $targetDiv.find( 'input, textarea, select' ).trigger( 'change' ); + this.frame.close(); + + }, + + /** + * Updates the setting and re-renders the control UI. + * + * @param {object} attachment + */ + setFileInRepeaterField: function( attachment ) { + + 'use strict'; + + var $targetDiv = this.$thisButton.closest( '.repeater-field-upload' ); + + $targetDiv.find( '.kirki-file-attachment' ).html( ' ' + attachment.filename + '' ).hide().slideDown( 'slow' ); + + $targetDiv.find( '.hidden-field' ).val( attachment.id ); + this.$thisButton.text( this.$thisButton.data( 'alt-label' ) ); + $targetDiv.find( '.upload-button' ).show(); + $targetDiv.find( '.remove-button' ).show(); + + //This will activate the save button + $targetDiv.find( 'input, textarea, select' ).trigger( 'change' ); + this.frame.close(); + + }, + + getMimeType: function() { + + 'use strict'; + + // We get the field id from which this was called + var currentFieldId = this.$thisButton.siblings( 'input.hidden-field' ).attr( 'data-field' ); + + // Make sure we got it + if ( _.isString( currentFieldId ) && '' !== currentFieldId ) { + + // Make fields is defined and only do the hack for cropped_image + if ( _.isObject( this.params.fields[ currentFieldId ] ) && 'upload' === this.params.fields[ currentFieldId ].type ) { + + // If the attribute exists in the field + if ( ! _.isUndefined( this.params.fields[ currentFieldId ].mime_type ) ) { + + // Set the attribute in the main object + return this.params.fields[ currentFieldId ].mime_type; + } + } + } + return 'image'; + + }, + + removeImage: function( event ) { + + 'use strict'; + + var $targetDiv, + $uploadButton; + + if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) { + return; + } + + $targetDiv = this.$thisButton.closest( '.repeater-field-image,.repeater-field-cropped_image,.repeater-field-upload' ); + $uploadButton = $targetDiv.find( '.upload-button' ); + + $targetDiv.find( '.kirki-image-attachment' ).slideUp( 'fast', function() { + jQuery( this ).show().html( jQuery( this ).data( 'placeholder' ) ); + }); + $targetDiv.find( '.hidden-field' ).val( '' ); + $uploadButton.text( $uploadButton.data( 'label' ) ); + this.$thisButton.hide(); + + $targetDiv.find( 'input, textarea, select' ).trigger( 'change' ); + + }, + + removeFile: function( event ) { + + 'use strict'; + + var $targetDiv, + $uploadButton; + + if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) { + return; + } + + $targetDiv = this.$thisButton.closest( '.repeater-field-upload' ); + $uploadButton = $targetDiv.find( '.upload-button' ); + + $targetDiv.find( '.kirki-file-attachment' ).slideUp( 'fast', function() { + jQuery( this ).show().html( jQuery( this ).data( 'placeholder' ) ); + }); + $targetDiv.find( '.hidden-field' ).val( '' ); + $uploadButton.text( $uploadButton.data( 'label' ) ); + this.$thisButton.hide(); + + $targetDiv.find( 'input, textarea, select' ).trigger( 'change' ); + + }, + + /** + * Get the current value of the setting + * + * @return Object + */ + getValue: function() { + + 'use strict'; + + // The setting is saved in JSON + return JSON.parse( decodeURI( this.setting.get() ) ); + + }, + + /** + * Set a new value for the setting + * + * @param newValue Object + * @param refresh If we want to refresh the previewer or not + */ + setValue: function( newValue, refresh, filtering ) { + + 'use strict'; + + // We need to filter the values after the first load to remove data requrired for diplay but that we don't want to save in DB + var filteredValue = newValue, + filter = []; + + if ( filtering ) { + jQuery.each( this.params.fields, function( index, value ) { + if ( 'image' === value.type || 'cropped_image' === value.type || 'upload' === value.type ) { + filter.push( index ); + } + }); + jQuery.each( newValue, function( index, value ) { + jQuery.each( filter, function( ind, field ) { + if ( ! _.isUndefined( value[ field ] ) && ! _.isUndefined( value[ field ].id ) ) { + filteredValue[index][ field ] = value[ field ].id; + } + }); + }); + } + + this.setting.set( encodeURI( JSON.stringify( filteredValue ) ) ); + + if ( refresh ) { + + // Trigger the change event on the hidden field so + // previewer refresh the website on Customizer + this.settingField.trigger( 'change' ); + } + }, + + /** + * Add a new row to repeater settings based on the structure. + * + * @param data (Optional) Object of field => value pairs (undefined if you want to get the default values) + */ + addRow: function( data ) { + + 'use strict'; + + var control = this, + template = control.repeaterTemplate(), // The template for the new row (defined on Kirki_Customize_Repeater_Control::render_content() ). + settingValue = this.getValue(), // Get the current setting value. + newRowSetting = {}, // Saves the new setting data. + templateData, // Data to pass to the template + newRow, + i; + + if ( template ) { + + // The control structure is going to define the new fields + // We need to clone control.params.fields. Assigning it + // ould result in a reference assignment. + templateData = jQuery.extend( true, {}, control.params.fields ); + + // But if we have passed data, we'll use the data values instead + if ( data ) { + for ( i in data ) { + if ( data.hasOwnProperty( i ) && templateData.hasOwnProperty( i ) ) { + templateData[ i ]['default'] = data[ i ]; + } + } + } + + templateData.index = this.currentIndex; + + // Append the template content + template = template( templateData ); + + // Create a new row object and append the element + newRow = new RepeaterRow( + control.currentIndex, + jQuery( template ).appendTo( control.repeaterFieldsContainer ), + control.params.row_label, + control + ); + + newRow.container.on( 'row:remove', function( e, rowIndex ) { + control.deleteRow( rowIndex ); + }); + + newRow.container.on( 'row:update', function( e, rowIndex, fieldName, element ) { + control.updateField.call( control, e, rowIndex, fieldName, element ); + newRow.updateLabel(); + }); + + // Add the row to rows collection + this.rows[ this.currentIndex ] = newRow; + + for ( i in templateData ) { + if ( templateData.hasOwnProperty( i ) ) { + newRowSetting[ i ] = templateData[ i ]['default']; + } + } + + settingValue[ this.currentIndex ] = newRowSetting; + this.setValue( settingValue, true ); + + this.currentIndex++; + + return newRow; + } + }, + + sort: function() { + + 'use strict'; + + var control = this, + $rows = this.repeaterFieldsContainer.find( '.repeater-row' ), + newOrder = [], + settings = control.getValue(), + newRows = [], + newSettings = []; + + $rows.each( function( i, element ) { + newOrder.push( jQuery( element ).data( 'row' ) ); + }); + + jQuery.each( newOrder, function( newPosition, oldPosition ) { + newRows[ newPosition ] = control.rows[ oldPosition ]; + newRows[ newPosition ].setRowIndex( newPosition ); + + newSettings[ newPosition ] = settings[ oldPosition ]; + }); + + control.rows = newRows; + control.setValue( newSettings ); + + }, + + /** + * Delete a row in the repeater setting + * + * @param index Position of the row in the complete Setting Array + */ + deleteRow: function( index ) { + + 'use strict'; + + var currentSettings = this.getValue(), + row, + i, + prop; + + if ( currentSettings[ index ] ) { + + // Find the row + row = this.rows[ index ]; + if ( row ) { + + // Remove the row settings + delete currentSettings[ index ]; + + // Remove the row from the rows collection + delete this.rows[ index ]; + + // Update the new setting values + this.setValue( currentSettings, true ); + + } + + } + + // Remap the row numbers + i = 1; + for ( prop in this.rows ) { + if ( this.rows.hasOwnProperty( prop ) && this.rows[ prop ] ) { + this.rows[ prop ].updateLabel(); + i++; + } + } + }, + + /** + * Update a single field inside a row. + * Triggered when a field has changed + * + * @param e Event Object + */ + updateField: function( e, rowIndex, fieldId, element ) { + + 'use strict'; + + var type, + row, + currentSettings; + + if ( ! this.rows[ rowIndex ] ) { + return; + } + + if ( ! this.params.fields[ fieldId ] ) { + return; + } + + type = this.params.fields[ fieldId].type; + row = this.rows[ rowIndex ]; + currentSettings = this.getValue(); + + element = jQuery( element ); + + if ( _.isUndefined( currentSettings[ row.rowIndex ][ fieldId ] ) ) { + return; + } + + if ( 'checkbox' === type ) { + currentSettings[ row.rowIndex ][ fieldId ] = element.is( ':checked' ); + } else { + + // Update the settings + currentSettings[ row.rowIndex ][ fieldId ] = element.val(); + } + this.setValue( currentSettings, true ); + }, + + /** + * Init the color picker on color fields + * Called after AddRow + * + */ + initColorPicker: function() { + + 'use strict'; + + var control = this, + colorPicker = control.container.find( '.color-picker-hex' ), + options = {}, + fieldId = colorPicker.data( 'field' ); + + // We check if the color palette parameter is defined. + if ( ! _.isUndefined( fieldId ) && ! _.isUndefined( control.params.fields[ fieldId ] ) && ! _.isUndefined( control.params.fields[ fieldId ].palettes ) && _.isObject( control.params.fields[ fieldId ].palettes ) ) { + options.palettes = control.params.fields[ fieldId ].palettes; + } + + // When the color picker value is changed we update the value of the field + options.change = function( event, ui ) { + + var currentPicker = jQuery( event.target ), + row = currentPicker.closest( '.repeater-row' ), + rowIndex = row.data( 'row' ), + currentSettings = control.getValue(); + + currentSettings[ rowIndex ][ currentPicker.data( 'field' ) ] = ui.color.toString(); + control.setValue( currentSettings, true ); + + }; + + // Init the color picker + if ( 0 !== colorPicker.length ) { + colorPicker.wpColorPicker( options ); + } + }, + + /** + * Init the dropdown-pages field with selectWoo + * Called after AddRow + * + * @param {object} theNewRow the row that was added to the repeater + * @param {object} data the data for the row if we're initializing a pre-existing row + * + */ + initSelect: function( theNewRow, data ) { + + 'use strict'; + + var control = this, + dropdown = theNewRow.container.find( '.repeater-field select' ), + $select, + dataField, + multiple, + selectWooOptions = {}; + + if ( 0 === dropdown.length ) { + return; + } + + dataField = dropdown.data( 'field' ); + multiple = jQuery( dropdown ).data( 'multiple' ); + if ( 'undefed' !== multiple && jQuery.isNumeric( multiple ) ) { + multiple = parseInt( multiple, 10 ); + if ( 1 < multiple ) { + selectWooOptions.maximumSelectionLength = multiple; + } + } + + data = data || {}; + data[ dataField ] = data[ dataField ] || ''; + + $select = jQuery( dropdown ).selectWoo( selectWooOptions ).val( data[ dataField ] ); + + this.container.on( 'change', '.repeater-field select', function( event ) { + + var currentDropdown = jQuery( event.target ), + row = currentDropdown.closest( '.repeater-row' ), + rowIndex = row.data( 'row' ), + currentSettings = control.getValue(); + + currentSettings[ rowIndex ][ currentDropdown.data( 'field' ) ] = jQuery( this ).val(); + control.setValue( currentSettings ); + }); + } +}); +wp.customize.controlConstructor['kirki-slider'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + var control = this, + changeAction = ( 'postMessage' === control.setting.transport ) ? 'mousemove change' : 'change', + rangeInput = control.container.find( 'input[type="range"]' ), + textInput = control.container.find( 'input[type="text"]' ), + value = control.setting._value; + + // Set the initial value in the text input. + textInput.attr( 'value', value ); + + // If the range input value changes copy the value to the text input. + rangeInput.on( 'mousemove change', function() { + textInput.attr( 'value', rangeInput.val() ); + } ); + + // Save the value when the range input value changes. + // This is separate from the above because of the postMessage differences. + // If the control refreshes the preview pane, + // we don't want a refresh for every change + // but 1 final refresh when the value is changed. + rangeInput.on( changeAction, function() { + control.setting.set( rangeInput.val() ); + } ); + + // If the text input value changes, + // copy the value to the range input + // and then save. + textInput.on( 'input paste change', function() { + rangeInput.attr( 'value', textInput.val() ); + control.setting.set( textInput.val() ); + } ); + + // If the reset button is clicked, + // set slider and text input values to default + // and hen save. + control.container.find( '.slider-reset' ).on( 'click', function() { + textInput.attr( 'value', control.params['default'] ); + rangeInput.attr( 'value', control.params['default'] ); + control.setting.set( textInput.val() ); + } ); + } +}); +/* global kirkiControlLoader */ +wp.customize.controlConstructor['kirki-sortable'] = wp.customize.Control.extend({ + + // When we're finished loading continue processing + ready: function() { + + 'use strict'; + + var control = this; + + // Init the control. + if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) { + kirkiControlLoader( control ); + } else { + control.initKirkiControl(); + } + }, + + initKirkiControl: function() { + + 'use strict'; + + var control = this; + + control.container.find( '.kirki-controls-loading-spinner' ).hide(); + + // Set the sortable container. + control.sortableContainer = control.container.find( 'ul.sortable' ).first(); + + // Init sortable. + control.sortableContainer.sortable({ + + // Update value when we stop sorting. + stop: function() { + control.updateValue(); + } + }).disableSelection().find( 'li' ).each( function() { + + // Enable/disable options when we click on the eye of Thundera. + jQuery( this ).find( 'i.visibility' ).click( function() { + jQuery( this ).toggleClass( 'dashicons-visibility-faint' ).parents( 'li:eq(0)' ).toggleClass( 'invisible' ); + }); + }).click( function() { + + // Update value on click. + control.updateValue(); + }); + }, + + /** + * Updates the sorting list + */ + updateValue: function() { + + 'use strict'; + + var control = this, + newValue = []; + + this.sortableContainer.find( 'li' ).each( function() { + if ( ! jQuery( this ).is( '.invisible' ) ) { + newValue.push( jQuery( this ).data( 'value' ) ); + } + }); + control.setting.set( newValue ); + } +}); +wp.customize.controlConstructor['kirki-switch'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + 'use strict'; + + var control = this, + checkboxValue = control.setting._value; + + // Save the value + this.container.on( 'change', 'input', function() { + checkboxValue = ( jQuery( this ).is( ':checked' ) ) ? true : false; + control.setting.set( checkboxValue ); + }); + } +}); +wp.customize.controlConstructor['kirki-toggle'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + var control = this, + checkboxValue = control.setting._value; + + // Save the value + this.container.on( 'change', 'input', function() { + checkboxValue = ( jQuery( this ).is( ':checked' ) ) ? true : false; + control.setting.set( checkboxValue ); + }); + } +}); +/* global kirkiL10n, kirki */ +wp.customize.controlConstructor['kirki-typography'] = wp.customize.kirkiDynamicControl.extend({ + + initKirkiControl: function() { + + 'use strict'; + + var control = this, + value = control.setting._value, + picker; + + control.renderFontSelector(); + control.renderBackupFontSelector(); + control.renderVariantSelector(); + control.renderSubsetSelector(); + + // Font-size. + if ( control.params['default']['font-size'] ) { + this.container.on( 'change keyup paste', '.font-size input', function() { + control.saveValue( 'font-size', jQuery( this ).val() ); + }); + } + + // Line-height. + if ( control.params['default']['line-height'] ) { + this.container.on( 'change keyup paste', '.line-height input', function() { + control.saveValue( 'line-height', jQuery( this ).val() ); + }); + } + + // Margin-top. + if ( control.params['default']['margin-top'] ) { + this.container.on( 'change keyup paste', '.margin-top input', function() { + control.saveValue( 'margin-top', jQuery( this ).val() ); + }); + } + + // Margin-bottom. + if ( control.params['default']['margin-bottom'] ) { + this.container.on( 'change keyup paste', '.margin-bottom input', function() { + control.saveValue( 'margin-bottom', jQuery( this ).val() ); + }); + } + + // Letter-spacing. + if ( control.params['default']['letter-spacing'] ) { + value['letter-spacing'] = ( jQuery.isNumeric( value['letter-spacing'] ) ) ? value['letter-spacing'] + 'px' : value['letter-spacing']; + this.container.on( 'change keyup paste', '.letter-spacing input', function() { + value['letter-spacing'] = ( jQuery.isNumeric( jQuery( this ).val() ) ) ? jQuery( this ).val() + 'px' : jQuery( this ).val(); + control.saveValue( 'letter-spacing', value['letter-spacing'] ); + }); + } + + // Word-spacing. + if ( control.params['default']['word-spacing'] ) { + this.container.on( 'change keyup paste', '.word-spacing input', function() { + control.saveValue( 'word-spacing', jQuery( this ).val() ); + }); + } + + // Text-align. + if ( control.params['default']['text-align'] ) { + this.container.on( 'change', '.text-align input', function() { + control.saveValue( 'text-align', jQuery( this ).val() ); + }); + } + + // Text-transform. + if ( control.params['default']['text-transform'] ) { + jQuery( control.selector + ' .text-transform select' ).selectWoo().on( 'change', function() { + control.saveValue( 'text-transform', jQuery( this ).val() ); + }); + } + + // Text-decoration. + if ( control.params['default']['text-decoration'] ) { + jQuery( control.selector + ' .text-decoration select' ).selectWoo().on( 'change', function() { + control.saveValue( 'text-decoration', jQuery( this ).val() ); + }); + } + + // Color. + if ( control.params['default'].color ) { + picker = this.container.find( '.kirki-color-control' ); + picker.wpColorPicker({ + change: function() { + setTimeout( function() { + control.saveValue( 'color', picker.val() ); + }, 100 ); + } + }); + } + }, + + /** + * Adds the font-families to the font-family dropdown + * and instantiates selectWoo. + */ + renderFontSelector: function() { + + var control = this, + selector = control.selector + ' .font-family select', + data = [], + standardFonts = [], + googleFonts = [], + value = control.setting._value, + fonts = control.getFonts(), + fontSelect; + + // Format standard fonts as an array. + if ( ! _.isUndefined( fonts.standard ) ) { + _.each( fonts.standard, function( font ) { + standardFonts.push({ + id: font.family.replace( /"/g, ''' ), + text: font.label + }); + }); + } + + // Format google fonts as an array. + if ( ! _.isUndefined( fonts.google ) ) { + _.each( fonts.google, function( font ) { + googleFonts.push({ + id: font.family, + text: font.family + }); + }); + } + + // Combine forces and build the final data. + data = [ + { text: kirkiL10n.standardFonts, children: standardFonts }, + { text: kirkiL10n.googleFonts, children: googleFonts } + ]; + + // Instantiate selectWoo with the data. + fontSelect = jQuery( selector ).selectWoo({ + data: data + }); + + // Set the initial value. + if ( value['font-family'] ) { + fontSelect.val( value['font-family'].replace( /'/g, '"' ) ).trigger( 'change' ); + } + + // When the value changes + fontSelect.on( 'change', function() { + + // Set the value. + control.saveValue( 'font-family', jQuery( this ).val() ); + + // Re-init the font-backup selector. + control.renderBackupFontSelector(); + + // Re-init variants selector. + control.renderVariantSelector(); + + // Re-init subsets selector. + control.renderSubsetSelector(); + }); + }, + + /** + * Adds the font-families to the font-family dropdown + * and instantiates selectWoo. + */ + renderBackupFontSelector: function() { + + var control = this, + selector = control.selector + ' .font-backup select', + standardFonts = [], + value = control.setting._value, + fontFamily = value['font-family'], + fonts = control.getFonts(), + fontSelect; + + if ( _.isUndefined( value['font-backup'] ) || null === value['font-backup'] ) { + value['font-backup'] = ''; + } + + // Hide if we're not on a google-font. + if ( 'google' !== kirki.util.webfonts.getFontType( fontFamily ) ) { + jQuery( control.selector + ' .font-backup' ).hide(); + return; + } + jQuery( control.selector + ' .font-backup' ).show(); + + // Format standard fonts as an array. + if ( ! _.isUndefined( fonts.standard ) ) { + _.each( fonts.standard, function( font ) { + standardFonts.push({ + id: font.family.replace( /"/g, ''' ), + text: font.label + }); + }); + } + + // Instantiate selectWoo with the data. + fontSelect = jQuery( selector ).selectWoo({ + data: standardFonts + }); + + // Set the initial value. + if ( 'undefined' !== typeof value['font-backup'] ) { + fontSelect.val( value['font-backup'].replace( /'/g, '"' ) ).trigger( 'change' ); + } + + // When the value changes + fontSelect.on( 'change', function() { + + // Set the value. + control.saveValue( 'font-backup', jQuery( this ).val() ); + }); + }, + + /** + * Renders the variants selector using selectWoo + * Displays font-variants for the currently selected font-family. + */ + renderVariantSelector: function() { + + var control = this, + value = control.setting._value, + fontFamily = value['font-family'], + selector = control.selector + ' .variant select', + data = [], + isValid = false, + fontType = kirki.util.webfonts.getFontType( fontFamily ), + variants = ['regular', 'italic', '700', '700italic'], + fontWeight, + variantSelector, + fontStyle; + + if ( 'google' === fontType ) { + variants = kirki.util.webfonts.google.getVariants( fontFamily ); + } + + jQuery( control.selector + ' .variant' ).show(); + _.each( variants, function( variant ) { + if ( value.variant === variant ) { + isValid = true; + } + data.push({ + id: variant, + text: variant + }); + }); + if ( ! isValid ) { + value.variant = 'regular'; + } + + if ( jQuery( selector ).hasClass( 'select2-hidden-accessible' ) ) { + jQuery( selector ).selectWoo( 'destroy' ); + jQuery( selector ).empty(); + } + + // Instantiate selectWoo with the data. + variantSelector = jQuery( selector ).selectWoo({ + data: data + }); + variantSelector.val( value.variant ).trigger( 'change' ); + variantSelector.on( 'change', function() { + control.saveValue( 'variant', jQuery( this ).val() ); + + fontWeight = ( ! _.isString( value.variant ) ) ? '400' : value.variant.match( /\d/g ); + fontWeight = ( ! _.isObject( fontWeight ) ) ? '400' : fontWeight.join( '' ); + fontStyle = ( -1 !== value.variant.indexOf( 'italic' ) ) ? 'italic' : 'normal'; + + control.saveValue( 'font-weight', fontWeight ); + control.saveValue( 'font-style', fontStyle ); + }); + }, + + /** + * Renders the subsets selector using selectWoo + * Displays font-subsets for the currently selected font-family. + */ + renderSubsetSelector: function() { + + var control = this, + value = control.setting._value, + fontFamily = value['font-family'], + subsets = kirki.util.webfonts.google.getSubsets( fontFamily ), + selector = control.selector + ' .subsets select', + data = [], + validValue = value.subsets, + subsetSelector; + + if ( false !== subsets ) { + jQuery( control.selector + ' .subsets' ).show(); + _.each( subsets, function( subset ) { + + if ( _.isObject( validValue ) ) { + if ( -1 === validValue.indexOf( subset ) ) { + validValue = _.reject( validValue, function( subValue ) { + return subValue === subset; + }); + } + } + + data.push({ + id: subset, + text: subset + }); + }); + + } else { + jQuery( control.selector + ' .subsets' ).hide(); + } + + if ( jQuery( selector ).hasClass( 'select2-hidden-accessible' ) ) { + jQuery( selector ).selectWoo( 'destroy' ); + jQuery( selector ).empty(); + } + + // Instantiate selectWoo with the data. + subsetSelector = jQuery( selector ).selectWoo({ + data: data + }); + subsetSelector.val( validValue ).trigger( 'change' ); + subsetSelector.on( 'change', function() { + control.saveValue( 'subsets', jQuery( this ).val() ); + }); + }, + + /** + * Get fonts. + */ + getFonts: function() { + var control = this, + initialGoogleFonts = kirki.util.webfonts.google.getFonts(), + googleFonts = {}, + googleFontsSort = 'alpha', + googleFontsNumber = 0, + standardFonts = {}; + + // Get google fonts. + if ( ! _.isEmpty( control.params.choices.fonts.google ) ) { + if ( 'alpha' === control.params.choices.fonts.google[0] || 'popularity' === control.params.choices.fonts.google[0] || 'trending' === control.params.choices.fonts.google[0] ) { + googleFontsSort = control.params.choices.fonts.google[0]; + if ( ! isNaN( control.params.choices.fonts.google[1] ) ) { + googleFontsNumber = parseInt( control.params.choices.fonts.google[1], 10 ); + } + googleFonts = kirki.util.webfonts.google.getFonts( googleFontsSort, googleFontsNumber ); + + } else { + _.each( control.params.choices.fonts.google, function( fontName ) { + if ( 'undefined' !== typeof initialGoogleFonts[ fontName ] && ! _.isEmpty( initialGoogleFonts[ fontName ] ) ) { + googleFonts[ fontName ] = initialGoogleFonts[ fontName ]; + } + } ); + } + } else { + googleFonts = kirki.util.webfonts.google.getFonts( googleFontsSort, googleFontsNumber ); + } + + // Get standard fonts. + if ( ! _.isEmpty( control.params.choices.fonts.standard ) ) { + _.each( control.params.choices.fonts.standard, function( fontName ) { + if ( 'undefined' !== typeof kirki.util.webfonts.standard.fonts[ fontName ] && ! _.isEmpty( kirki.util.webfonts.standard.fonts[ fontName ] ) ) { + standardFonts[ fontName ] = {}; + if ( 'undefined' !== kirki.util.webfonts.standard.fonts[ fontName ].stack && ! _.isEmpty( kirki.util.webfonts.standard.fonts[ fontName ].stack ) ) { + standardFonts[ fontName ].family = kirki.util.webfonts.standard.fonts[ fontName ].stack; + } else { + standardFonts[ fontName ].family = googleFonts[ fontName ]; + } + if ( 'undefined' !== kirki.util.webfonts.standard.fonts[ fontName ].label && ! _.isEmpty( kirki.util.webfonts.standard.fonts[ fontName ].label ) ) { + standardFonts[ fontName ].label = kirki.util.webfonts.standard.fonts[ fontName ].label; + } else if ( ! _.isEmpty( standardFonts[ fontName ] ) ) { + standardFonts[ fontName ].label = standardFonts[ fontName ]; + } + } else { + standardFonts[ fontName ] = { + family: fontName, + label: fontName + }; + } + } ); + } else { + _.each( kirki.util.webfonts.standard.fonts, function( font, id ) { + standardFonts[ id ] = { + family: font.stack, + label: font.label + }; + } ); + } + return { + google: googleFonts, + standard: standardFonts + }; + }, + + /** + * Saves the value. + */ + saveValue: function( property, value ) { + + var control = this, + input = control.container.find( '.typography-hidden-value' ), + val = control.setting._value; + + val[ property ] = value; + + jQuery( input ).attr( 'value', JSON.stringify( val ) ).trigger( 'change' ); + control.setting.set( val ); + } +}); diff --git a/functions/kirki/controls/js/dist/script.min.js b/functions/kirki/controls/js/dist/script.min.js new file mode 100644 index 0000000..bf7bd5a --- /dev/null +++ b/functions/kirki/controls/js/dist/script.min.js @@ -0,0 +1 @@ +if(_.isUndefined(window.kirkiSetSettingValue))var kirkiSetSettingValue={set:function(e,t){var i,n=this,a=wp.customize.settings.controls[e];if(_.isUndefined(a))return!0;switch(n.setValue(e,t),a.type){case"kirki-background":_.isUndefined(t["background-color"])||n.setColorPicker(n.findElement(e,".kirki-color-control"),t["background-color"]),n.findElement(e,".placeholder, .thumbnail").removeClass().addClass("placeholder").html("No file selected"),_.each(["background-repeat","background-position"],function(i){_.isUndefined(t[i])||n.setSelectWoo(n.findElement(e,"."+i+" select"),t[i])}),_.each(["background-size","background-attachment"],function(i){jQuery(n.findElement(e,"."+i+' input[value="'+t+'"]')).prop("checked",!0)}),i=JSON.stringify(t).replace(/'/g,"'"),jQuery(n.findElement(e,".background-hidden-value").attr("value",i)).trigger("change");break;case"kirki-code":jQuery(n.findElement(e,".CodeMirror"))[0].CodeMirror.setValue(t);break;case"checkbox":case"kirki-switch":case"kirki-toggle":t=1===t||"1"===t||!0===t,jQuery(n.findElement(e,"input")).prop("checked",t),wp.customize.instance(e).set(t);break;case"kirki-select":case"kirki-preset":case"kirki-fontawesome":n.setSelectWoo(n.findElement(e,"select"),t);break;case"kirki-slider":jQuery(n.findElement(e,"input")).prop("value",t),jQuery(n.findElement(e,".kirki_range_value .value")).html(t);break;case"kirki-generic":(_.isUndefined(a.choices)||_.isUndefined(a.choices.element))&&(a.choices.element="input"),jQuery(n.findElement(e,a.choices.element)).prop("value",t);break;case"kirki-color":n.setColorPicker(n.findElement(e,".kirki-color-control"),t);break;case"kirki-multicheck":n.findElement(e,"input").each(function(){jQuery(this).prop("checked",!1)}),_.each(t,function(i,a){jQuery(n.findElement(e,'input[value="'+t[a]+'"]')).prop("checked",!0)});break;case"kirki-multicolor":_.each(t,function(t,i){n.setColorPicker(n.findElement(e,".multicolor-index-"+i),t)});break;case"kirki-radio-buttonset":case"kirki-radio-image":case"kirki-radio":case"kirki-dashicons":case"kirki-color-palette":case"kirki-palette":jQuery(n.findElement(e,'input[value="'+t+'"]')).prop("checked",!0);break;case"kirki-typography":_.each(["font-family","variant","subsets"],function(i){_.isUndefined(t[i])||n.setSelectWoo(n.findElement(e,"."+i+" select"),t[i])}),_.each(["font-size","line-height","letter-spacing","word-spacing"],function(i){_.isUndefined(t[i])||jQuery(n.findElement(e,"."+i+" input")).prop("value",t[i])}),_.isUndefined(t.color)||n.setColorPicker(n.findElement(e,".kirki-color-control"),t.color),i=JSON.stringify(t).replace(/'/g,"'"),jQuery(n.findElement(e,".typography-hidden-value").attr("value",i)).trigger("change");break;case"kirki-dimensions":_.each(t,function(t,i){jQuery(n.findElement(e,"."+i+" input")).prop("value",t)});break;case"kirki-repeater":case"kirki-custom":break;default:jQuery(n.findElement(e,"input")).prop("value",t)}},setColorPicker:function(e,t){e.attr("data-default-color",t).data("default-color",t).wpColorPicker("color",t)},setSelectWoo:function(e,t){jQuery(e).selectWoo().val(t).trigger("change")},setTextarea:function(e,t){jQuery(e).prop("value",t)},findElement:function(e,t){return wp.customize.control(e).container.find(t)},setValue:function(e,t,i){i=_.isUndefined(i)?100:parseInt(i,10),wp.customize.instance(e).set({}),setTimeout(function(){wp.customize.instance(e).set(t)},i)}};(kirki={initialized:!1,initialize:function(){this.initialized||(setTimeout(function(){kirki.util.webfonts.standard.initialize(),kirki.util.webfonts.google.initialize()},150),this.initialized=!0)}}).initialize();var kirki=kirki||{};kirki=(kirki=jQuery.extend(kirki,{control:{"kirki-code":{},"kirki-radio":{init:function(e){this.template(e),kirki.input.radio.init(e)},template:function(e){var t=wp.template("kirki-input-radio");e.container.html(t({label:e.params.label,description:e.params.description,"data-id":e.id,inputAttrs:e.params.inputAttrs,default:e.params.default,value:kirki.setting.get(e.id),choices:e.params.choices}))}},"kirki-color":{init:function(e){this.template(e),kirki.input.color.init(e)},template:function(e){var t=wp.template("kirki-input-color");e.container.html(t({label:e.params.label,description:e.params.description,"data-id":e.id,mode:e.params.mode,inputAttrs:e.params.inputAttrs,"data-palette":e.params.palette,"data-default-color":e.params.default,"data-alpha":e.params.choices.alpha,value:kirki.setting.get(e.id)}))}},"kirki-generic":{init:function(e){this.template(e),_.isUndefined(e.params)||_.isUndefined(e.params.choices)||_.isUndefined(e.params.choices.element)||"textarea"!==e.params.choices.element?kirki.input.genericInput.init(e):kirki.input.textarea.init(e)},template:function(e){var t,i={label:e.params.label,description:e.params.description,"data-id":e.id,inputAttrs:e.params.inputAttrs,choices:e.params.choices,value:kirki.setting.get(e.id)};if(!_.isUndefined(e.params)&&!_.isUndefined(e.params.choices)&&!_.isUndefined(e.params.choices.element)&&"textarea"===e.params.choices.element)return t=wp.template("kirki-input-textarea"),void e.container.html(t(i));t=wp.template("kirki-input-generic"),e.container.html(t(i))}},"kirki-select":{init:function(e){this.template(e),kirki.input.select.init(e)},template:function(e){var t=wp.template("kirki-input-select");e.container.html(t({label:e.params.label,description:e.params.description,"data-id":e.id,inputAttrs:e.params.inputAttrs,choices:e.params.choices,value:kirki.setting.get(e.id),multiple:e.params.multiple||1}))}}}}))||{},kirki=(kirki=jQuery.extend(kirki,{input:{radio:{init:function(e){jQuery('input[data-id="'+e.id+'"]').on("change keyup paste click",function(){kirki.setting.set(e.id,jQuery(this).val())})}},color:{init:function(e){var t,i=jQuery('.kirki-color-control[data-id="'+e.id+'"]');e.choices=e.choices||{},_.isEmpty(e.choices)&&e.params.choices&&(e.choices=e.params.choices),_.isEmpty(e.choices)||i.wpColorPicker(e.choices),setTimeout(function(){(t=jQuery('.kirki-input-container[data-id="'+e.id+'"] .wp-picker-clear')).length&&t.click(function(){kirki.setting.set(e.id,"")})},200),i.wpColorPicker({change:function(){setTimeout(function(){kirki.setting.set(e.id,i.val())},20)}})}},genericInput:{init:function(e){jQuery('input[data-id="'+e.id+'"]').on("change keyup paste click",function(){kirki.setting.set(e.id,jQuery(this).val())})}},textarea:{init:function(e){jQuery('textarea[data-id="'+e.id+'"]').on("change keyup paste click",function(){kirki.setting.set(e.id,jQuery(this).val())})}},select:{init:function(e){var t,i=jQuery('select[data-id="'+e.id+'"]'),n=parseInt(i.data("multiple"),10),a={escapeMarkup:function(e){return e}};1",e.label&&(i+=''+e.label+""),e.description&&(i+=''+e.description+""),i+="",i+='
                      ',e.value.url||""!==t?i+='
                      ':i+='
                      '+kirkiL10n.noFileSelected+"
                      ",i+='
                      ',i+='",e.default&&""!==e.default&&(i+='",i+="
                      ",'
                      '+i+"
                      "},init:function(e){}}}}))||{},kirki=(kirki=jQuery.extend(kirki,{setting:{get:function(e){var t=e.split("["),i="",n=0,a="";return _.each(t,function(e,t){e=e.replace("]",""),0===t?i=e:i+="["+e+"]",_.isUndefined(wp.customize.instance(i))||(a=wp.customize.instance(i).get(),n=t),n"),i.params.content.attr("id","customize-control-"+e.replace(/]/g,"").replace(/\[/g,"-")),i.params.content.attr("class","customize-control customize-control-"+i.params.type)),this.propertyElements=[],wp.customize.Control.prototype.initialize.call(this,e,i)},_setUpSettingRootLinks:function(){var e=this;e.container.find("[data-customize-setting-link]").each(function(){var t=jQuery(this);wp.customize(t.data("customizeSettingLink"),function(i){var n=new wp.customize.Element(t);e.elements.push(n),n.sync(i),n.set(i())})})},_setUpSettingPropertyLinks:function(){var e=this;e.setting&&e.container.find("[data-customize-setting-property-link]").each(function(){var t,i=jQuery(this),n=i.data("customizeSettingPropertyLink");t=new wp.customize.Element(i),e.propertyElements.push(t),t.set(e.setting()[n]),t.bind(function(t){var i=e.setting();t!==i[n]&&((i=_.clone(i))[n]=t,e.setting.set(i))}),e.setting.bind(function(e){e[n]!==t.get()&&t.set(e[n])})})},ready:function(){var e=this;e._setUpSettingRootLinks(),e._setUpSettingPropertyLinks(),wp.customize.Control.prototype.ready.call(e),e.deferred.embedded.done(function(){e.initKirkiControl(e)})},embed:function(){var e=this,t=e.section();t&&wp.customize.section(t,function(t){"kirki-expanded"===t.params.type||t.expanded()||wp.customize.settings.autofocus.control===e.id?e.actuallyEmbed():t.expanded.bind(function(t){t&&e.actuallyEmbed()})})},actuallyEmbed:function(){"resolved"!==this.deferred.embedded.state()&&(this.renderContent(),this.deferred.embedded.resolve())},focus:function(e){this.actuallyEmbed(),wp.customize.Control.prototype.focus.call(this,e)},initKirkiControl:function(e){void 0===kirki.control[e.params.type]?this.container.on("change keyup paste click","input",function(){e.setting.set(jQuery(this).val())}):kirki.control[e.params.type].init(e)},kirkiValidateCSSValue:function(e){var t,i;return"0"===e||0<=e.indexOf("calc(")&&0<=e.indexOf(")")||("auto"===e||"inherit"===e||"initial"===e||(t=parseFloat(e),i=e.replace(t,""),!isNaN(t)&&-1!==jQuery.inArray(i,["rem","em","ex","%","px","cm","mm","in","pt","pc","ch","vh","vw","vmin","vmax"])))}})}(),_.each(kirki.control,function(e,t){wp.customize.controlConstructor[t]=wp.customize.kirkiDynamicControl.extend({})}),wp.customize.controlConstructor["kirki-background"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){var e=this,t=e.setting._value,i=e.container.find(".kirki-color-control");(_.isUndefined(t["background-image"])||""===t["background-image"])&&(e.container.find(".background-wrapper > .background-repeat").hide(),e.container.find(".background-wrapper > .background-position").hide(),e.container.find(".background-wrapper > .background-size").hide(),e.container.find(".background-wrapper > .background-attachment").hide()),i.wpColorPicker({change:function(){setTimeout(function(){e.saveValue("background-color",i.val())},100)}}),e.container.on("change",".background-repeat select",function(){e.saveValue("background-repeat",jQuery(this).val())}),e.container.on("change click",".background-size input",function(){e.saveValue("background-size",jQuery(this).val())}),e.container.on("change",".background-position select",function(){e.saveValue("background-position",jQuery(this).val())}),e.container.on("change click",".background-attachment input",function(){e.saveValue("background-attachment",jQuery(this).val())}),e.container.on("click",".background-image-upload-button",function(t){var i=wp.media({multiple:!1}).open().on("select",function(){var t,n,a,r=i.state().get("selection").first(),s=r.toJSON().sizes.full.url;_.isUndefined(r.toJSON().sizes.medium)?_.isUndefined(r.toJSON().sizes.thumbnail)||(s=r.toJSON().sizes.thumbnail.url):s=r.toJSON().sizes.medium.url,t=r.toJSON().sizes.full.url,r.toJSON().id,r.toJSON().width,r.toJSON().height,""!==t&&e.container.find(".background-wrapper > .background-repeat, .background-wrapper > .background-position, .background-wrapper > .background-size, .background-wrapper > .background-attachment").show(),e.saveValue("background-image",t),n=e.container.find(".placeholder, .thumbnail"),a=e.container.find(".background-image-upload-remove-button"),n.length&&n.removeClass().addClass("thumbnail thumbnail-image").html(''),a.length&&a.show()});t.preventDefault()}),e.container.on("click",".background-image-upload-remove-button",function(t){var i,n;t.preventDefault(),e.saveValue("background-image",""),i=e.container.find(".placeholder, .thumbnail"),n=e.container.find(".background-image-upload-remove-button"),e.container.find(".background-wrapper > .background-repeat").hide(),e.container.find(".background-wrapper > .background-position").hide(),e.container.find(".background-wrapper > .background-size").hide(),e.container.find(".background-wrapper > .background-attachment").hide(),i.length&&i.removeClass().addClass("placeholder").html("No file selected"),n.length&&n.hide()})},saveValue:function(e,t){var i=jQuery("#customize-control-"+this.id.replace("[","-").replace("]","")+" .background-hidden-value"),n=this.setting._value;n[e]=t,jQuery(i).attr("value",JSON.stringify(n)).trigger("change"),this.setting.set(n)}}),wp.customize.controlConstructor["kirki-code"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){_.isUndefined(wp.customize.CodeEditorControl)||(jQuery(this.container.find("textarea.kirki-codemirror-editor")).hide(),wp.customize.control.add(new wp.customize.CodeEditorControl(this.id,{section:this.params.section,priority:this.params.priority,label:this.params.label,editor_settings:{codemirror:{mode:this.params.choices.language}},settings:{default:this.id}})))}}),wp.customize.controlConstructor["kirki-color-palette"]=wp.customize.kirkiDynamicControl.extend({}),wp.customize.controlConstructor["kirki-dashicons"]=wp.customize.kirkiDynamicControl.extend({}),wp.customize.controlConstructor["kirki-date"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){_.isUndefined(wp.customize.DateTimeControl)||wp.customize.control.add(new wp.customize.DateTimeControl(this.id,{section:this.params.section,priority:this.params.priority,label:this.params.label,description:this.params.description,settings:{default:this.id},default:this.params.default}))}}),wp.customize.controlConstructor["kirki-dimension"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e,t=this;t.kirkiNotifications(),this.container.on("change keyup paste","input",function(){e=jQuery(this).val(),t.setting.set(e)})},kirkiNotifications:function(){var e=this;wp.customize(e.id,function(t){t.bind(function(i){var n="long_title";!1===e.kirkiValidateCSSValue(i)?t.notifications.add(n,new wp.customize.Notification(n,{type:"warning",message:dimensionkirkiL10n["invalid-value"]})):t.notifications.remove(n)})})}}),wp.customize.controlConstructor["kirki-dimensions"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e,t=this.params.choices.controls,i={},n=[];for(_.each(t,function(e,t){!0===e&&n.push(t)}),e=0;e
                      '+e.text},templateSelection:function(e){return' '+e.text}};_.each(a.icons,function(e){r.data.push({id:e.id,text:e.name})}),(t=jQuery(n).selectWoo(r)).on("change",function(){e=jQuery(this).val(),i.setting.set(e)}),t.val(i.setting._value).trigger("change")}}),wp.customize.controlConstructor["kirki-image"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){var e=this,t=e.getValue(),i=_.isUndefined(e.params.choices)||_.isUndefined(e.params.choices.save_as)?"url":e.params.choices.save_as,n=e.container.find(".placeholder, .thumbnail"),a="array"===i?t.url:t,r=e.container.find(".image-upload-remove-button"),s=e.container.find(".image-default-button");e.container.find(".kirki-controls-loading-spinner").hide(),"id"!==i&&"ID"!==i||""===t||wp.media.attachment(t).fetch().then(function(){setTimeout(function(){var e=wp.media.attachment(t).get("url");n.removeClass().addClass("thumbnail thumbnail-image").html('')},700)}),("url"===i&&""!==t||"array"===i&&!_.isUndefined(t.url)&&""!==t.url)&&e.container.find("image-default-button").hide(),("url"===i&&""===t||"array"===i&&(_.isUndefined(t.url)||""===t.url))&&r.hide(),t===e.params.default&&e.container.find("image-default-button").hide(),""!==a&&n.removeClass().addClass("thumbnail thumbnail-image").html(''),e.container.on("click",".image-upload-button",function(t){var a=wp.media({multiple:!1}).open().on("select",function(){var t=a.state().get("selection").first(),o=t.toJSON().sizes.full.url;_.isUndefined(t.toJSON().sizes.medium)?_.isUndefined(t.toJSON().sizes.thumbnail)||(o=t.toJSON().sizes.thumbnail.url):o=t.toJSON().sizes.medium.url,"array"===i?(e.saveValue("id",t.toJSON().id),e.saveValue("url",t.toJSON().sizes.full.url),e.saveValue("width",t.toJSON().width),e.saveValue("height",t.toJSON().height)):"id"===i?e.saveValue("id",t.toJSON().id):e.saveValue("url",t.toJSON().sizes.full.url),n.length&&n.removeClass().addClass("thumbnail thumbnail-image").html(''),r.length&&(r.show(),s.hide())});t.preventDefault()}),e.container.on("click",".image-upload-remove-button",function(t){var i,n,a;t.preventDefault(),e.saveValue("id",""),e.saveValue("url",""),e.saveValue("width",""),e.saveValue("height",""),i=e.container.find(".placeholder, .thumbnail"),n=e.container.find(".image-upload-remove-button"),a=e.container.find(".image-default-button"),i.length&&i.removeClass().addClass("placeholder").html("No file selected"),n.length&&(n.hide(),jQuery(a).hasClass("button")&&a.show())}),e.container.on("click",".image-default-button",function(t){var i,n,a;t.preventDefault(),e.saveValue("url",e.params.default),i=e.container.find(".placeholder, .thumbnail"),n=e.container.find(".image-upload-remove-button"),a=e.container.find(".image-default-button"),i.length&&i.removeClass().addClass("thumbnail thumbnail-image").html(''),n.length&&(n.show(),a.hide())})},getValue:function(){var e=this.setting._value;return"array"===(_.isUndefined(this.params.choices)||_.isUndefined(this.params.choices.save_as)?"url":this.params.choices.save_as)&&_.isString(e)&&(e={url:e}),e},saveValue:function(e,t){var i=this.setting._value;if("array"===(_.isUndefined(this.params.choices)||_.isUndefined(this.params.choices.save_as)?"url":this.params.choices.save_as))return _.isString(i)&&(i={}),i[e]=t,this.setting.set(i),void this.container.find("button").trigger("change");this.setting.set(t),this.container.find("button").trigger("change")}}),wp.customize.controlConstructor["kirki-multicheck"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e=this;e.container.on("change","input",function(){var t=[],i=0;jQuery.each(e.params.choices,function(n){e.container.find('input[value="'+n+'"]').is(":checked")&&(t[i]=n,i++)}),e.setting.set(t)})}}),wp.customize.controlConstructor["kirki-multicolor"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";function e(e,i,n){var a=e.container.find(".multicolor-index-"+n),r={change:function(){setTimeout(function(){e.saveValue(n,a.val()),e.container.find(".multicolor-index-"+n).trigger("change")},100)}};_.isObject(t.irisArgs)&&_.each(t.irisArgs,function(e,t){r[t]=e}),a.wpColorPicker(r)}for(var t=this.params.choices,i=Object.keys(t),n=(this.params.value,0);nn.params.choices.min&&0",n.params.label&&(r+=''+n.params.label+""),n.params.description&&(r+=''+n.params.description+""),r+='
                      ',r+="',r+='
                      -
                      ',r+='
                      +
                      ',r+="
                      ",r+="",n.container.html(r),e=n.container.find("input"),t=n.container.find(".plus"),i=n.container.find(".minus"),t.click(function(){var t,i=parseFloat(e.val());t=i>=n.params.choices.max?i:i+n.params.choices.step,e.val(t),e.trigger("change")}),i.click(function(){var t,i=parseFloat(e.val());t=i<=n.params.choices.min?i:i-n.params.choices.step,e.val(t),e.trigger("change")}),this.container.on("change keyup paste click","input",function(){n.setting.set(jQuery(this).val())})}}),wp.customize.controlConstructor["kirki-palette"]=wp.customize.kirkiDynamicControl.extend({}),wp.customize.controlConstructor["kirki-preset"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e,t=this;this.container.on("change","select",function(){e=jQuery(this).val(),t.setting.set(e),jQuery.each(t.params.choices,function(t,i){e===t&&jQuery.each(i.settings,function(e,t){kirkiSetSettingValue.set(e,t)})}),wp.customize.previewer.refresh()})}}),wp.customize.controlConstructor["kirki-radio-buttonset"]=wp.customize.kirkiDynamicControl.extend({}),wp.customize.controlConstructor["kirki-radio-image"]=wp.customize.kirkiDynamicControl.extend({});var RepeaterRow=function(e,t,i,n){"use strict";var a=this;this.rowIndex=e,this.container=t,this.label=i,this.header=this.container.find(".repeater-row-header"),this.header.on("click",function(){a.toggleMinimize()}),this.container.on("click",".repeater-row-remove",function(){a.remove()}),this.header.on("mousedown",function(){a.container.trigger("row:start-dragging")}),this.container.on("keyup change","input, select, textarea",function(e){a.container.trigger("row:update",[a.rowIndex,jQuery(e.target).data("field"),e.target])}),this.setRowIndex=function(e){this.rowIndex=e,this.container.attr("data-row",e),this.container.data("row",e),this.updateLabel()},this.toggleMinimize=function(){this.container.toggleClass("minimized"),this.header.find(".dashicons").toggleClass("dashicons-arrow-up").toggleClass("dashicons-arrow-down")},this.remove=function(){this.container.slideUp(300,function(){jQuery(this).detach()}),this.container.trigger("row:remove",[this.rowIndex])},this.updateLabel=function(){var e,t,i;if("field"===this.label.type&&(e=this.container.find('.repeater-field [data-field="'+this.label.field+'"]'),_.isFunction(e.val)&&""!==(t=e.val())))return _.isUndefined(n.params.fields[this.label.field])||_.isUndefined(n.params.fields[this.label.field].type)||("select"===n.params.fields[this.label.field].type?_.isUndefined(n.params.fields[this.label.field].choices)||_.isUndefined(n.params.fields[this.label.field].choices[e.val()])||(t=n.params.fields[this.label.field].choices[e.val()]):"radio"!==n.params.fields[this.label.field].type&&"radio-image"!==n.params.fields[this.label.field].type||(i=n.selector+' [data-row="'+this.rowIndex+'"] .repeater-field [data-field="'+this.label.field+'"]:checked',t=jQuery(i).val())),void this.header.find(".repeater-row-label").text(t);this.header.find(".repeater-row-label").text(this.label.value+" "+(this.rowIndex+1))},this.updateLabel()};wp.customize.controlConstructor.repeater=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";var e,t,i=this,n=this.params.value;i.container.find(".kirki-controls-loading-spinner").hide(),this.settingField=this.container.find("[data-customize-setting-link]").first(),this.setValue([],!1),this.repeaterFieldsContainer=this.container.find(".repeater-fields").first(),this.currentIndex=0,this.rows=[],e=!1,_.isUndefined(this.params.choices.limit)||(e=!(0>=this.params.choices.limit)&&parseInt(this.params.choices.limit,10)),this.container.on("click","button.repeater-add",function(n){n.preventDefault(),!e||i.currentIndex/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(t){return _.template(i.container.find(".customize-control-repeater-content").first().html(),null,e)(t)}}),n.length&&_.each(n,function(e){t=i.addRow(e),i.initColorPicker(),i.initSelect(t,e)}),this.setValue(n,!0,!0),this.repeaterFieldsContainer.sortable({handle:".repeater-row-header",update:function(){i.sort()}})},openFrame:function(e){"use strict";wp.customize.utils.isKeydownButNotEnterEvent(e)||(this.$thisButton.closest(".repeater-field").hasClass("repeater-field-cropped_image")?this.initCropperFrame():this.initFrame(),this.frame.open())},initFrame:function(){"use strict";var e=this.getMimeType();this.frame=wp.media({states:[new wp.media.controller.Library({library:wp.media.query({type:e}),multiple:!1,date:!1})]}),this.frame.on("select",this.onSelect,this)},initCropperFrame:function(){"use strict";var e=this.$thisButton.siblings("input.hidden-field").attr("data-field"),t=this.getMimeType();_.isString(e)&&""!==e&&_.isObject(this.params.fields[e])&&"cropped_image"===this.params.fields[e].type&&["width","height","flex_width","flex_height"].forEach(function(t){_.isUndefined(this.params.fields[e][t])||(this.params[t]=this.params.fields[e][t])}.bind(this)),this.frame=wp.media({button:{text:"Select and Crop",close:!1},states:[new wp.media.controller.Library({library:wp.media.query({type:t}),multiple:!1,date:!1,suggestedWidth:this.params.width,suggestedHeight:this.params.height}),new wp.media.controller.CustomizeImageCropper({imgSelectOptions:this.calculateImageSelectOptions,control:this})]}),this.frame.on("select",this.onSelectForCrop,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this)},onSelect:function(){"use strict";var e=this.frame.state().get("selection").first().toJSON();this.$thisButton.closest(".repeater-field").hasClass("repeater-field-upload")?this.setFileInRepeaterField(e):this.setImageInRepeaterField(e)},onSelectForCrop:function(){"use strict";var e=this.frame.state().get("selection").first().toJSON();this.params.width!==e.width||this.params.height!==e.height||this.params.flex_width||this.params.flex_height?this.frame.setState("cropper"):this.setImageInRepeaterField(e)},onCropped:function(e){"use strict";this.setImageInRepeaterField(e)},calculateImageSelectOptions:function(e,t){"use strict";var i,n,a,r=t.get("control"),s=!!parseInt(r.params.flex_width,10),o=!!parseInt(r.params.flex_height,10),c=e.get("width"),l=e.get("height"),u=parseInt(r.params.width,10),d=parseInt(r.params.height,10),p=u/d,h=c,f=l;return t.set("canSkipCrop",!r.mustBeCropped(s,o,u,d,c,l)),h/f>p?u=(d=f)*p:d=(u=h)/p,i=(h-u)/2,n=(f-d)/2,a={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:c,imageHeight:l,x1:i,y1:n,x2:u+i,y2:d+n},!1===o&&!1===s&&(a.aspectRatio=u+":"+d),!1===o&&(a.maxHeight=d),!1===s&&(a.maxWidth=u),a},mustBeCropped:function(e,t,i,n,a,r){"use strict";return!(!0===e&&!0===t||!0===e&&n===r||!0===t&&i===a||i===a&&n===r||a<=i)},onSkippedCrop:function(){"use strict";var e=this.frame.state().get("selection").first().toJSON();this.setImageInRepeaterField(e)},setImageInRepeaterField:function(e){"use strict";var t=this.$thisButton.closest(".repeater-field-image,.repeater-field-cropped_image");t.find(".kirki-image-attachment").html('').hide().slideDown("slow"),t.find(".hidden-field").val(e.id),this.$thisButton.text(this.$thisButton.data("alt-label")),t.find(".remove-button").show(),t.find("input, textarea, select").trigger("change"),this.frame.close()},setFileInRepeaterField:function(e){"use strict";var t=this.$thisButton.closest(".repeater-field-upload");t.find(".kirki-file-attachment").html(' '+e.filename+"").hide().slideDown("slow"),t.find(".hidden-field").val(e.id),this.$thisButton.text(this.$thisButton.data("alt-label")),t.find(".upload-button").show(),t.find(".remove-button").show(),t.find("input, textarea, select").trigger("change"),this.frame.close()},getMimeType:function(){"use strict";var e=this.$thisButton.siblings("input.hidden-field").attr("data-field");return _.isString(e)&&""!==e&&_.isObject(this.params.fields[e])&&"upload"===this.params.fields[e].type&&!_.isUndefined(this.params.fields[e].mime_type)?this.params.fields[e].mime_type:"image"},removeImage:function(e){"use strict";var t,i;wp.customize.utils.isKeydownButNotEnterEvent(e)||(i=(t=this.$thisButton.closest(".repeater-field-image,.repeater-field-cropped_image,.repeater-field-upload")).find(".upload-button"),t.find(".kirki-image-attachment").slideUp("fast",function(){jQuery(this).show().html(jQuery(this).data("placeholder"))}),t.find(".hidden-field").val(""),i.text(i.data("label")),this.$thisButton.hide(),t.find("input, textarea, select").trigger("change"))},removeFile:function(e){"use strict";var t,i;wp.customize.utils.isKeydownButNotEnterEvent(e)||(i=(t=this.$thisButton.closest(".repeater-field-upload")).find(".upload-button"),t.find(".kirki-file-attachment").slideUp("fast",function(){jQuery(this).show().html(jQuery(this).data("placeholder"))}),t.find(".hidden-field").val(""),i.text(i.data("label")),this.$thisButton.hide(),t.find("input, textarea, select").trigger("change"))},getValue:function(){"use strict";return JSON.parse(decodeURI(this.setting.get()))},setValue:function(e,t,i){"use strict";var n=e,a=[];i&&(jQuery.each(this.params.fields,function(e,t){"image"!==t.type&&"cropped_image"!==t.type&&"upload"!==t.type||a.push(e)}),jQuery.each(e,function(e,t){jQuery.each(a,function(i,a){_.isUndefined(t[a])||_.isUndefined(t[a].id)||(n[e][a]=t[a].id)})})),this.setting.set(encodeURI(JSON.stringify(n))),t&&this.settingField.trigger("change")},addRow:function(e){"use strict";var t,i,n,a=this,r=a.repeaterTemplate(),s=this.getValue(),o={};if(r){if(t=jQuery.extend(!0,{},a.params.fields),e)for(n in e)e.hasOwnProperty(n)&&t.hasOwnProperty(n)&&(t[n].default=e[n]);t.index=this.currentIndex,r=r(t),(i=new RepeaterRow(a.currentIndex,jQuery(r).appendTo(a.repeaterFieldsContainer),a.params.row_label,a)).container.on("row:remove",function(e,t){a.deleteRow(t)}),i.container.on("row:update",function(e,t,n,r){a.updateField.call(a,e,t,n,r),i.updateLabel()}),this.rows[this.currentIndex]=i;for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n].default);return s[this.currentIndex]=o,this.setValue(s,!0),this.currentIndex++,i}},sort:function(){"use strict";var e=this,t=this.repeaterFieldsContainer.find(".repeater-row"),i=[],n=e.getValue(),a=[],r=[];t.each(function(e,t){i.push(jQuery(t).data("row"))}),jQuery.each(i,function(t,i){a[t]=e.rows[i],a[t].setRowIndex(t),r[t]=n[i]}),e.rows=a,e.setValue(r)},deleteRow:function(e){"use strict";var t,i=this.getValue();i[e]&&this.rows[e]&&(delete i[e],delete this.rows[e],this.setValue(i,!0));for(t in this.rows)this.rows.hasOwnProperty(t)&&this.rows[t]&&(this.rows[t].updateLabel(),0)},updateField:function(e,t,i,n){"use strict";var a,r,s;this.rows[t]&&this.params.fields[i]&&(a=this.params.fields[i].type,r=this.rows[t],s=this.getValue(),n=jQuery(n),_.isUndefined(s[r.rowIndex][i])||(s[r.rowIndex][i]="checkbox"===a?n.is(":checked"):n.val(),this.setValue(s,!0)))},initColorPicker:function(){"use strict";var e=this,t=e.container.find(".color-picker-hex"),i={},n=t.data("field");_.isUndefined(n)||_.isUndefined(e.params.fields[n])||_.isUndefined(e.params.fields[n].palettes)||!_.isObject(e.params.fields[n].palettes)||(i.palettes=e.params.fields[n].palettes),i.change=function(t,i){var n=jQuery(t.target),a=n.closest(".repeater-row").data("row"),r=e.getValue();r[a][n.data("field")]=i.color.toString(),e.setValue(r,!0)},0!==t.length&&t.wpColorPicker(i)},initSelect:function(e,t){"use strict";var i,n,a=this,r=e.container.find(".repeater-field select"),s={};0!==r.length&&(i=r.data("field"),"undefed"!==(n=jQuery(r).data("multiple"))&&jQuery.isNumeric(n)&&1<(n=parseInt(n,10))&&(s.maximumSelectionLength=n),(t=t||{})[i]=t[i]||"",jQuery(r).selectWoo(s).val(t[i]),this.container.on("change",".repeater-field select",function(e){var t=jQuery(e.target),i=t.closest(".repeater-row").data("row"),n=a.getValue();n[i][t.data("field")]=jQuery(this).val(),a.setValue(n)}))}}),wp.customize.controlConstructor["kirki-slider"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e=this,t="postMessage"===e.setting.transport?"mousemove change":"change",i=e.container.find('input[type="range"]'),n=e.container.find('input[type="text"]'),a=e.setting._value;n.attr("value",a),i.on("mousemove change",function(){n.attr("value",i.val())}),i.on(t,function(){e.setting.set(i.val())}),n.on("input paste change",function(){i.attr("value",n.val()),e.setting.set(n.val())}),e.container.find(".slider-reset").on("click",function(){n.attr("value",e.params.default),i.attr("value",e.params.default),e.setting.set(n.val())})}}),wp.customize.controlConstructor["kirki-sortable"]=wp.customize.Control.extend({ready:function(){"use strict";!_.isUndefined(window.kirkiControlLoader)&&_.isFunction(kirkiControlLoader)?kirkiControlLoader(this):this.initKirkiControl()},initKirkiControl:function(){"use strict";var e=this;e.container.find(".kirki-controls-loading-spinner").hide(),e.sortableContainer=e.container.find("ul.sortable").first(),e.sortableContainer.sortable({stop:function(){e.updateValue()}}).disableSelection().find("li").each(function(){jQuery(this).find("i.visibility").click(function(){jQuery(this).toggleClass("dashicons-visibility-faint").parents("li:eq(0)").toggleClass("invisible")})}).click(function(){e.updateValue()})},updateValue:function(){"use strict";var e=[];this.sortableContainer.find("li").each(function(){jQuery(this).is(".invisible")||e.push(jQuery(this).data("value"))}),this.setting.set(e)}}),wp.customize.controlConstructor["kirki-switch"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){"use strict";var e=this,t=e.setting._value;this.container.on("change","input",function(){t=!!jQuery(this).is(":checked"),e.setting.set(t)})}}),wp.customize.controlConstructor["kirki-toggle"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){var e=this,t=e.setting._value;this.container.on("change","input",function(){t=!!jQuery(this).is(":checked"),e.setting.set(t)})}}),wp.customize.controlConstructor["kirki-typography"]=wp.customize.kirkiDynamicControl.extend({initKirkiControl:function(){"use strict";var e,t=this,i=t.setting._value;t.renderFontSelector(),t.renderBackupFontSelector(),t.renderVariantSelector(),t.renderSubsetSelector(),t.params.default["font-size"]&&this.container.on("change keyup paste",".font-size input",function(){t.saveValue("font-size",jQuery(this).val())}),t.params.default["line-height"]&&this.container.on("change keyup paste",".line-height input",function(){t.saveValue("line-height",jQuery(this).val())}),t.params.default["margin-top"]&&this.container.on("change keyup paste",".margin-top input",function(){t.saveValue("margin-top",jQuery(this).val())}),t.params.default["margin-bottom"]&&this.container.on("change keyup paste",".margin-bottom input",function(){t.saveValue("margin-bottom",jQuery(this).val())}),t.params.default["letter-spacing"]&&(i["letter-spacing"]=jQuery.isNumeric(i["letter-spacing"])?i["letter-spacing"]+"px":i["letter-spacing"],this.container.on("change keyup paste",".letter-spacing input",function(){i["letter-spacing"]=jQuery.isNumeric(jQuery(this).val())?jQuery(this).val()+"px":jQuery(this).val(),t.saveValue("letter-spacing",i["letter-spacing"])})),t.params.default["word-spacing"]&&this.container.on("change keyup paste",".word-spacing input",function(){t.saveValue("word-spacing",jQuery(this).val())}),t.params.default["text-align"]&&this.container.on("change",".text-align input",function(){t.saveValue("text-align",jQuery(this).val())}),t.params.default["text-transform"]&&jQuery(t.selector+" .text-transform select").selectWoo().on("change",function(){t.saveValue("text-transform",jQuery(this).val())}),t.params.default["text-decoration"]&&jQuery(t.selector+" .text-decoration select").selectWoo().on("change",function(){t.saveValue("text-decoration",jQuery(this).val())}),t.params.default.color&&(e=this.container.find(".kirki-color-control")).wpColorPicker({change:function(){setTimeout(function(){t.saveValue("color",e.val())},100)}})},renderFontSelector:function(){var e,t=this,i=t.selector+" .font-family select",n=[],a=[],r=[],s=t.setting._value,o=t.getFonts();_.isUndefined(o.standard)||_.each(o.standard,function(e){a.push({id:e.family.replace(/"/g,"'"),text:e.label})}),_.isUndefined(o.google)||_.each(o.google,function(e){r.push({id:e.family,text:e.family})}),n=[{text:kirkiL10n.standardFonts,children:a},{text:kirkiL10n.googleFonts,children:r}],e=jQuery(i).selectWoo({data:n}),s["font-family"]&&e.val(s["font-family"].replace(/'/g,'"')).trigger("change"),e.on("change",function(){t.saveValue("font-family",jQuery(this).val()),t.renderBackupFontSelector(),t.renderVariantSelector(),t.renderSubsetSelector()})},renderBackupFontSelector:function(){var e,t=this,i=t.selector+" .font-backup select",n=[],a=t.setting._value,r=a["font-family"],s=t.getFonts();(_.isUndefined(a["font-backup"])||null===a["font-backup"])&&(a["font-backup"]=""),"google"===kirki.util.webfonts.getFontType(r)?(jQuery(t.selector+" .font-backup").show(),_.isUndefined(s.standard)||_.each(s.standard,function(e){n.push({id:e.family.replace(/"/g,"'"),text:e.label})}),e=jQuery(i).selectWoo({data:n}),void 0!==a["font-backup"]&&e.val(a["font-backup"].replace(/'/g,'"')).trigger("change"),e.on("change",function(){t.saveValue("font-backup",jQuery(this).val())})):jQuery(t.selector+" .font-backup").hide()},renderVariantSelector:function(){var e,t,i,n=this,a=n.setting._value,r=a["font-family"],s=n.selector+" .variant select",o=[],c=!1,l=["regular","italic","700","700italic"];"google"===kirki.util.webfonts.getFontType(r)&&(l=kirki.util.webfonts.google.getVariants(r)),jQuery(n.selector+" .variant").show(),_.each(l,function(e){a.variant===e&&(c=!0),o.push({id:e,text:e})}),c||(a.variant="regular"),jQuery(s).hasClass("select2-hidden-accessible")&&(jQuery(s).selectWoo("destroy"),jQuery(s).empty()),(t=jQuery(s).selectWoo({data:o})).val(a.variant).trigger("change"),t.on("change",function(){n.saveValue("variant",jQuery(this).val()),e=_.isString(a.variant)?a.variant.match(/\d/g):"400",e=_.isObject(e)?e.join(""):"400",i=-1!==a.variant.indexOf("italic")?"italic":"normal",n.saveValue("font-weight",e),n.saveValue("font-style",i)})},renderSubsetSelector:function(){var e,t=this,i=t.setting._value,n=i["font-family"],a=kirki.util.webfonts.google.getSubsets(n),r=t.selector+" .subsets select",s=[],o=i.subsets;!1!==a?(jQuery(t.selector+" .subsets").show(),_.each(a,function(e){_.isObject(o)&&-1===o.indexOf(e)&&(o=_.reject(o,function(t){return t===e})),s.push({id:e,text:e})})):jQuery(t.selector+" .subsets").hide(),jQuery(r).hasClass("select2-hidden-accessible")&&(jQuery(r).selectWoo("destroy"),jQuery(r).empty()),(e=jQuery(r).selectWoo({data:s})).val(o).trigger("change"),e.on("change",function(){t.saveValue("subsets",jQuery(this).val())})},getFonts:function(){var e=kirki.util.webfonts.google.getFonts(),t={},i="alpha",n=0,a={};return _.isEmpty(this.params.choices.fonts.google)?t=kirki.util.webfonts.google.getFonts(i,n):"alpha"===this.params.choices.fonts.google[0]||"popularity"===this.params.choices.fonts.google[0]||"trending"===this.params.choices.fonts.google[0]?(i=this.params.choices.fonts.google[0],isNaN(this.params.choices.fonts.google[1])||(n=parseInt(this.params.choices.fonts.google[1],10)),t=kirki.util.webfonts.google.getFonts(i,n)):_.each(this.params.choices.fonts.google,function(i){void 0===e[i]||_.isEmpty(e[i])||(t[i]=e[i])}),_.isEmpty(this.params.choices.fonts.standard)?_.each(kirki.util.webfonts.standard.fonts,function(e,t){a[t]={family:e.stack,label:e.label}}):_.each(this.params.choices.fonts.standard,function(e){void 0===kirki.util.webfonts.standard.fonts[e]||_.isEmpty(kirki.util.webfonts.standard.fonts[e])?a[e]={family:e,label:e}:(a[e]={},"undefined"===kirki.util.webfonts.standard.fonts[e].stack||_.isEmpty(kirki.util.webfonts.standard.fonts[e].stack)?a[e].family=t[e]:a[e].family=kirki.util.webfonts.standard.fonts[e].stack,"undefined"===kirki.util.webfonts.standard.fonts[e].label||_.isEmpty(kirki.util.webfonts.standard.fonts[e].label)?_.isEmpty(a[e])||(a[e].label=a[e]):a[e].label=kirki.util.webfonts.standard.fonts[e].label)}),{google:t,standard:a}},saveValue:function(e,t){var i=this.container.find(".typography-hidden-value"),n=this.setting._value;n[e]=t,jQuery(i).attr("value",JSON.stringify(n)).trigger("change"),this.setting.set(n)}}); \ No newline at end of file diff --git a/functions/kirki/controls/php/class-kirki-control-background.php b/functions/kirki/controls/php/class-kirki-control-background.php new file mode 100644 index 0000000..d3d0e1e --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-control-background.php @@ -0,0 +1,131 @@ + + +
                      + + +
                      +

                      + +
                      + + +
                      +

                      +
                      + <# if ( data.value['background-image'] ) { #> +
                      + <# } else { #> +
                      + <# } #> +
                      + + +
                      +
                      +
                      + + +
                      +

                      + +
                      + + +
                      +

                      + +
                      + + +
                      +

                      +
                      + checked="checked" <# } #>> + + + checked="checked" <# } #>> + + + checked="checked" <# } #>> + + +
                      +
                      + + +
                      +

                      +
                      + checked="checked" <# } #>> + + + checked="checked" <# } #>> + + +
                      +
                      + = 4.9 ) : ?> + + + <# valueJSON = JSON.stringify( data.value ).replace( /'/g, ''' ); #> + + + = 4.9 ) ? '' : '-legacy'; + $suffix .= ( ! defined( 'SCRIPT_DEBUG' ) || true !== SCRIPT_DEBUG ) ? '.min' : ''; + + // The Kirki plugin URL. + $kirki_url = trailingslashit( Kirki::$url ); + + // Enqueue ColorPicker. + wp_enqueue_script( 'wp-color-picker-alpha', trailingslashit( Kirki::$url ) . 'assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js', array( 'wp-color-picker' ), KIRKI_VERSION, true ); + wp_enqueue_style( 'wp-color-picker' ); + + // Enqueue selectWoo. + wp_enqueue_script( 'selectWoo', trailingslashit( Kirki::$url ) . 'assets/vendor/selectWoo/js/selectWoo.full.js', array( 'jquery' ), '1.0.1', true ); + wp_enqueue_style( 'selectWoo', trailingslashit( Kirki::$url ) . 'assets/vendor/selectWoo/css/selectWoo.css', array(), '1.0.1' ); + wp_enqueue_style( 'kirki-selectWoo', trailingslashit( Kirki::$url ) . 'assets/vendor/selectWoo/kirki.css', null ); + + // Enqueue the script. + wp_enqueue_script( + 'kirki-script', + "{$kirki_url}controls/js/dist/script{$suffix}.js", + array( + 'jquery', + 'customize-base', + 'wp-color-picker-alpha', + 'selectWoo', + 'jquery-ui-button', + ), + KIRKI_VERSION + ); + + wp_localize_script( + 'kirki-script', + 'kirkiL10n', + array( + 'noFileSelected' => esc_attr__( 'No File Selected', 'blogrow' ), + 'remove' => esc_attr__( 'Remove', 'blogrow' ), + 'default' => esc_attr__( 'Default', 'blogrow' ), + 'selectFile' => esc_attr__( 'Select File', 'blogrow' ), + 'standardFonts' => esc_attr__( 'Standard Fonts', 'blogrow' ), + 'googleFonts' => esc_attr__( 'Google Fonts', 'blogrow' ), + ) + ); + + $suffix = str_replace( '.min', '', $suffix ); + // Enqueue the style. + wp_enqueue_style( + 'kirki-styles', + "{$kirki_url}controls/css/styles{$suffix}.css", + array(), + KIRKI_VERSION + ); + } + + /** + * Refresh the parameters passed to the JavaScript via JSON. + * + * @see WP_Customize_Control::to_json() + */ + public function to_json() { + // Get the basics from the parent class. + parent::to_json(); + // Default. + $this->json['default'] = $this->setting->default; + if ( isset( $this->default ) ) { + $this->json['default'] = $this->default; + } + // Required. + $this->json['required'] = $this->required; + // Output. + $this->json['output'] = $this->output; + // Value. + $this->json['value'] = $this->value(); + // Choices. + $this->json['choices'] = $this->choices; + // The link. + $this->json['link'] = $this->get_link(); + // The ID. + $this->json['id'] = $this->id; + // Translation strings. + $this->json['l10n'] = $this->l10n(); + // The ajaxurl in case we need it. + $this->json['ajaxurl'] = admin_url( 'admin-ajax.php' ); + // Input attributes. + $this->json['inputAttrs'] = ''; + foreach ( $this->input_attrs as $attr => $value ) { + $this->json['inputAttrs'] .= $attr . '="' . esc_attr( $value ) . '" '; + } + } + + /** + * Render the control's content. + * + * Allows the content to be overridden without having to rewrite the wrapper in `$this::render()`. + * + * Supports basic input types `text`, `checkbox`, `textarea`, `radio`, `select` and `dropdown-pages`. + * Additional input types such as `email`, `url`, `number`, `hidden` and `date` are supported implicitly. + * + * Control content can alternately be rendered in JS. See WP_Customize_Control::print_template(). + * + * @since 3.4.0 + */ + protected function render_content() {} + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() {} + + /** + * Returns an array of translation strings. + * + * @access protected + * @since 3.0.0 + * @return array + */ + protected function l10n() { + return array(); + } +} diff --git a/functions/kirki/controls/php/class-kirki-control-code.php b/functions/kirki/controls/php/class-kirki-control-code.php new file mode 100644 index 0000000..87e29ff --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-control-code.php @@ -0,0 +1,62 @@ += 0 ) { + return; + } + ?> + + json['choices']['colors'] ) || empty( $this->json['choices']['colors'] ) ) { + $this->json['choices']['colors'] = Kirki_Helper::get_material_design_colors( 'primary' ); + } + if ( ! isset( $this->json['choices']['size'] ) || empty( $this->json['choices']['size'] ) ) { + $this->json['choices']['size'] = 20; + } + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + <# if ( ! data.choices ) { return; } #> + + {{ data.label }} + + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> +
                      + <# for ( key in data.choices['colors'] ) { #> + checked<# } #>> + + + <# } #> +
                      + json['palette'] = $this->palette; + $this->json['choices']['alpha'] = ( isset( $this->choices['alpha'] ) && $this->choices['alpha'] ) ? 'true' : 'false'; + $this->json['mode'] = $this->mode; + } +} diff --git a/functions/kirki/controls/php/class-kirki-control-custom.php b/functions/kirki/controls/php/class-kirki-control-custom.php new file mode 100644 index 0000000..a618ee6 --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-control-custom.php @@ -0,0 +1,62 @@ + + + json['icons'] = Kirki_Helper::get_dashicons(); + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + <# if ( data.label ) { #>{{ data.label }}<# } #> + <# if ( data.description ) { #>{{{ data.description }}}<# } #> +
                      + <# if ( ! _.isUndefined( data.choices ) && 1 < _.size( data.choices ) ) { #> + <# for ( key in data.choices ) { #> + checked="checked"<# } #>> + + + <# } #> + <# } else { #> +

                      Admin Menu

                      + <# for ( key in data.icons['admin-menu'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Welcome Screen

                      + <# for ( key in data.icons['welcome-screen'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Post Formats

                      + <# for ( key in data.icons['post-formats'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Media

                      + <# for ( key in data.icons['media'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Image Editing

                      + <# for ( key in data.icons['image-editing'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      TinyMCE

                      + <# for ( key in data.icons['tinymce'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Posts

                      + <# for ( key in data.icons['posts'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Sorting

                      + <# for ( key in data.icons['sorting'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Social

                      + <# for ( key in data.icons['social'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      WordPress

                      + <# for ( key in data.icons['wordpress_org'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Products

                      + <# for ( key in data.icons['products'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Taxonomies

                      + <# for ( key in data.icons['taxonomies'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Widgets

                      + <# for ( key in data.icons['widgets'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Notifications

                      + <# for ( key in data.icons['notifications'] ) { #> + checked="checked"<# } #>> + + + <# } #> +

                      Misc

                      + <# for ( key in data.icons['misc'] ) { #> + checked="checked"<# } #>> + + + <# } #> + <# } #> +
                      + = 0 ) { + return; + } + ?> + + esc_attr__( 'Invalid Value', 'blogrow' ), + ) ); + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + + choices ) ) { + foreach ( $this->choices as $choice => $value ) { + if ( 'labels' !== $choice && true === $value ) { + $this->json['choices'][ $choice ] = true; + } + } + } + if ( is_array( $this->json['default'] ) ) { + foreach ( $this->json['default'] as $key => $value ) { + if ( isset( $this->json['choices'][ $key ] ) && ! isset( $this->json['value'][ $key ] ) ) { + $this->json['value'][ $key ] = $value; + } + } + } + } + + /** + * Enqueue control related scripts/styles. + * + * @access public + */ + public function enqueue() { + + wp_enqueue_style( 'kirki-styles', trailingslashit( Kirki::$url ) . 'controls/css/styles.css', array(), KIRKI_VERSION ); + wp_localize_script( 'kirki-script', 'dimensionskirkiL10n', $this->l10n() ); + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + + esc_attr__( 'Left Top', 'blogrow' ), + 'left-center' => esc_attr__( 'Left Center', 'blogrow' ), + 'left-bottom' => esc_attr__( 'Left Bottom', 'blogrow' ), + 'right-top' => esc_attr__( 'Right Top', 'blogrow' ), + 'right-center' => esc_attr__( 'Right Center', 'blogrow' ), + 'right-bottom' => esc_attr__( 'Right Bottom', 'blogrow' ), + 'center-top' => esc_attr__( 'Center Top', 'blogrow' ), + 'center-center' => esc_attr__( 'Center Center', 'blogrow' ), + 'center-bottom' => esc_attr__( 'Center Bottom', 'blogrow' ), + 'font-size' => esc_attr__( 'Font Size', 'blogrow' ), + 'font-weight' => esc_attr__( 'Font Weight', 'blogrow' ), + 'line-height' => esc_attr__( 'Line Height', 'blogrow' ), + 'font-style' => esc_attr__( 'Font Style', 'blogrow' ), + 'letter-spacing' => esc_attr__( 'Letter Spacing', 'blogrow' ), + 'word-spacing' => esc_attr__( 'Word Spacing', 'blogrow' ), + 'top' => esc_attr__( 'Top', 'blogrow' ), + 'bottom' => esc_attr__( 'Bottom', 'blogrow' ), + 'left' => esc_attr__( 'Left', 'blogrow' ), + 'right' => esc_attr__( 'Right', 'blogrow' ), + 'center' => esc_attr__( 'Center', 'blogrow' ), + 'size' => esc_attr__( 'Size', 'blogrow' ), + 'height' => esc_attr__( 'Height', 'blogrow' ), + 'spacing' => esc_attr__( 'Spacing', 'blogrow' ), + 'width' => esc_attr__( 'Width', 'blogrow' ), + 'height' => esc_attr__( 'Height', 'blogrow' ), + 'invalid-value' => esc_attr__( 'Invalid Value', 'blogrow' ), + ); + } +} diff --git a/functions/kirki/controls/php/class-kirki-control-editor.php b/functions/kirki/controls/php/class-kirki-control-editor.php new file mode 100644 index 0000000..0ba0163 --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-control-editor.php @@ -0,0 +1,55 @@ + + + + + + + <# + var saveAs = 'url'; + if ( ! _.isUndefined( data.choices ) && ! _.isUndefined( data.choices.save_as ) ) { + saveAs = data.choices.save_as; + } + url = data.value; + if ( _.isObject( data.value ) && ! _.isUndefined( data.value.url ) ) { + url = data.value.url; + } + #> + +
                      + <# if ( data.value['url'] || '' !== url ) { #> +
                      + +
                      + <# } else { #> +
                      + +
                      + <# } #> +
                      + + <# if ( data.default && '' !== data.default ) { #> + + <# } #> + +
                      +
                      + + <# if ( ! data.choices ) { return; } #> + + <# if ( data.label ) { #>{{ data.label }}<# } #> + <# if ( data.description ) { #>{{{ data.description }}}<# } #> + +
                        + <# for ( key in data.choices ) { #> +
                      • + <# } #> +
                      + json['alpha'] = (bool) $this->alpha; + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + = 4.9 ) : ?> + + {{{ data.label }}} + + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> +
                      + <# for ( key in data.choices ) { #> + <# if ( 'irisArgs' !== key ) { #> +
                      + +
                      + <# } #> + <# } #> +
                      + = 4.9 ) : ?> + + + + + + + + + {{{ data.label }}} + + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> +
                      + <# for ( key in data.choices ) { #> + <# if ( 'irisArgs' !== key ) { #> +
                      + <# if ( data.choices[ key ] ) { #> + + <# } #> + +
                      + <# } #> + <# } #> +
                      +
                      + + + <# if ( ! data.choices ) { return; } #> + + {{ data.label }} + + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> +
                      + <# for ( key in data.choices ) { #> + checked<# } #>> + + + <# } #> +
                      + + <# if ( ! data.choices ) return; #> + + + <# if ( data.label ) { #>{{{ data.label }}}<# } #> + <# if ( data.description ) { #>{{{ data.description }}}<# } #> +
                      + <# for ( key in data.choices ) { #> + checked="checked" <# } #>> + + + <# } #> +
                      + input_attrs as $attr => $value ) { + if ( 'style' !== $attr ) { + $this->json['inputAttrs'] .= $attr . '="' . esc_attr( $value ) . '" '; + continue; + } + $this->json['labelStyle'] = 'style="' . esc_attr( $value ) . '" '; + } + + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + +
                      + <# for ( key in data.choices ) { #> + <# dataAlt = ( _.isObject( data.choices[ key ] ) && ! _.isUndefined( data.choices[ key ].alt ) ) ? data.choices[ key ].alt : '' #> + checked="checked"<# } #> data-alt="{{ dataAlt }}"> + + + <# } #> +
                      + row_label = array( + 'type' => 'text', + 'value' => esc_attr__( 'row', 'blogrow' ), + 'field' => false, + ); + + // Validate row-labels. + $this->row_label( $args ); + + if ( empty( $this->button_label ) ) { + /* translators: %s represents the label of the row. */ + $this->button_label = sprintf( esc_attr__( 'Add new %s', 'blogrow' ), $this->row_label['value'] ); + } + + if ( empty( $args['fields'] ) || ! is_array( $args['fields'] ) ) { + $args['fields'] = array(); + } + + // An array to store keys of fields that need to be filtered. + $media_fields_to_filter = array(); + + foreach ( $args['fields'] as $key => $value ) { + if ( ! isset( $value['default'] ) ) { + $args['fields'][ $key ]['default'] = ''; + } + if ( ! isset( $value['label'] ) ) { + $args['fields'][ $key ]['label'] = ''; + } + $args['fields'][ $key ]['id'] = $key; + + // We check if the filed is an uploaded media ( image , file, video, etc.. ). + if ( isset( $value['type'] ) ) { + switch ( $value['type'] ) { + case 'image': + case 'cropped_image': + case 'upload': + // We add it to the list of fields that need some extra filtering/processing. + $media_fields_to_filter[ $key ] = true; + break; + + case 'dropdown-pages': + // If the field is a dropdown-pages field then add it to args. + $dropdown = wp_dropdown_pages( + array( + 'name' => '', + 'echo' => 0, + 'show_option_none' => esc_attr__( 'Select a Page', 'blogrow' ), + 'option_none_value' => '0', + 'selected' => '', + ) + ); + // Hackily add in the data link parameter. + $dropdown = str_replace( 'get_link(), $dropdown ); + $args['fields'][ $key ]['dropdown'] = $dropdown; + break; + } + } + } // End foreach(). + + $this->fields = $args['fields']; + + // Now we are going to filter the fields. + // First we create a copy of the value that would be used otherwise. + $this->filtered_value = $this->value(); + + if ( is_array( $this->filtered_value ) && ! empty( $this->filtered_value ) ) { + + // We iterate over the list of fields. + foreach ( $this->filtered_value as &$filtered_value_field ) { + + if ( is_array( $filtered_value_field ) && ! empty( $filtered_value_field ) ) { + + // We iterate over the list of properties for this field. + foreach ( $filtered_value_field as $key => &$value ) { + + // We check if this field was marked as requiring extra filtering (in this case image, cropped_images, upload). + if ( array_key_exists( $key, $media_fields_to_filter ) ) { + + // What follows was made this way to preserve backward compatibility. + // The repeater control use to store the URL for images instead of the attachment ID. + // We check if the value look like an ID (otherwise it's probably a URL so don't filter it). + if ( is_numeric( $value ) ) { + + // "sanitize" the value. + $attachment_id = (int) $value; + + // Try to get the attachment_url. + $url = wp_get_attachment_url( $attachment_id ); + + $filename = basename( get_attached_file( $attachment_id ) ); + + // If we got a URL. + if ( $url ) { + + // 'id' is needed for form hidden value, URL is needed to display the image. + $value = array( + 'id' => $attachment_id, + 'url' => $url, + 'filename' => $filename, + ); + } + } + } + } + } + } // End foreach(). + } // End if(). + } + + /** + * Refresh the parameters passed to the JavaScript via JSON. + * + * @access public + */ + public function to_json() { + parent::to_json(); + + $fields = $this->fields; + + $this->json['fields'] = $fields; + $this->json['row_label'] = $this->row_label; + + // If filtered_value has been set and is not empty we use it instead of the actual value. + if ( is_array( $this->filtered_value ) && ! empty( $this->filtered_value ) ) { + $this->json['value'] = $this->filtered_value; + } + $this->json['value'] = apply_filters( "kirki/controls/repeater/value/{$this->id}", $this->json['value'] ); + } + + /** + * Render the control's content. + * Allows the content to be overriden without having to rewrite the wrapper in $this->render(). + * + * @access protected + */ + protected function render_content() { + ?> + + +
                        + + choices['limit'] ) ) : ?> + + +

                        choices['limit'] ) ); ?>

                        + + + + repeater_js_template(); + + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * Class variables for this control class are available in the `data` JS object. + * + * @access public + */ + public function repeater_js_template() { + ?> + + row_label['type'] = $args['row_label']['type']; + } + + // Validating row label type. + if ( isset( $args['row_label']['value'] ) && ! empty( $args['row_label']['value'] ) ) { + $this->row_label['value'] = esc_attr( $args['row_label']['value'] ); + } + + // Validating row label field. + if ( isset( $args['row_label']['field'] ) && ! empty( $args['row_label']['field'] ) && isset( $args['fields'][ esc_attr( $args['row_label']['field'] ) ] ) ) { + $this->row_label['field'] = esc_attr( $args['row_label']['field'] ); + } else { + // If from field is not set correctly, making sure standard is set as the type. + $this->row_label['type'] = 'text'; + } + } + } +} diff --git a/functions/kirki/controls/php/class-kirki-control-select.php b/functions/kirki/controls/php/class-kirki-control-select.php new file mode 100644 index 0000000..8eb28ba --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-control-select.php @@ -0,0 +1,49 @@ +json['multiple'] = $this->multiple; + } +} diff --git a/functions/kirki/controls/php/class-kirki-control-slider.php b/functions/kirki/controls/php/class-kirki-control-slider.php new file mode 100644 index 0000000..9fe4184 --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-control-slider.php @@ -0,0 +1,74 @@ +json['choices'] = wp_parse_args( $this->json['choices'], array( + 'min' => '0', + 'max' => '100', + 'step' => '1', + 'suffix' => '', + ) ); + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + + + + + +
                        + + {{{ data.label }}} + + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> + checked<# } #> /> + +
                        + + + = 4.9 ) { + return; + } + $custom_fonts_array = ( isset( $this->choices['fonts'] ) && ( isset( $this->choices['fonts']['google'] ) || isset( $this->choices['fonts']['standard'] ) ) && ( ! empty( $this->choices['fonts']['google'] ) || ! empty( $this->choices['fonts']['standard'] ) ) ); + $localize_script_var = ( $custom_fonts_array ) ? 'kirkiFonts' . $this->id : 'kirkiAllFonts'; + wp_localize_script( + 'kirki-script', $localize_script_var, array( + 'standard' => $this->get_standard_fonts(), + 'google' => $this->get_google_fonts(), + ) + ); + } + + /** + * Refresh the parameters passed to the JavaScript via JSON. + * + * @see WP_Customize_Control::to_json() + */ + public function to_json() { + parent::to_json(); + + if ( is_array( $this->json['value'] ) ) { + foreach ( array_keys( $this->json['value'] ) as $key ) { + if ( ! in_array( $key, array( 'variant', 'font-weight', 'font-style' ), true ) && ! isset( $this->json['default'][ $key ] ) ) { + unset( $this->json['value'][ $key ] ); + } + // Fix for https://wordpress.org/support/topic/white-font-after-updateing-to-3-0-16. + if ( ! isset( $this->json['default'][ $key ] ) ) { + unset( $this->json['value'][ $key ] ); + } + // Fix for https://github.com/aristath/kirki/issues/1405. + if ( isset( $this->json['default'][ $key ] ) && false === $this->json['default'][ $key ] ) { + unset( $this->json['value'][ $key ] ); + } + } + } + + $this->json['show_variants'] = ( true === Kirki_Fonts_Google::$force_load_all_variants ) ? false : true; + $this->json['show_subsets'] = ( true === Kirki_Fonts_Google::$force_load_all_subsets ) ? false : true; + $this->json['languages'] = Kirki_Fonts::get_google_font_subsets(); + } + + /** + * An Underscore (JS) template for this control's content (but not its container). + * + * Class variables for this control class are available in the `data` JS object; + * export custom variables by overriding {@see WP_Customize_Control::to_json()}. + * + * @see WP_Customize_Control::print_template() + * + * @access protected + */ + protected function content_template() { + ?> + + +
                        + + <# if ( data.default['font-family'] ) { #> + <# data.value['font-family'] = data.value['font-family'] || data['default']['font-family']; #> + <# if ( data.choices['fonts'] ) { data.fonts = data.choices['fonts']; } #> +
                        +
                        + +
                        + <# if ( ! _.isUndefined( data.choices['font-backup'] ) && true === data.choices['font-backup'] ) { #> +
                        +
                        + +
                        + <# } #> + <# if ( true === data.show_variants || false !== data.default.variant ) { #> +
                        +
                        + +
                        + <# } #> + <# if ( true === data.show_subsets ) { #> +
                        +
                        + +
                        + <# } #> + <# } #> + + <# if ( data.default['font-size'] ) { #> + <# data.value['font-size'] = data.value['font-size'] || data['default']['font-size']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['line-height'] ) { #> + <# data.value['line-height'] = data.value['line-height'] || data['default']['line-height']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['letter-spacing'] ) { #> + <# data.value['letter-spacing'] = data.value['letter-spacing'] || data['default']['letter-spacing']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['word-spacing'] ) { #> + <# data.value['word-spacing'] = data.value['word-spacing'] || data['default']['word-spacing']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['text-align'] ) { #> + <# data.value['text-align'] = data.value['text-align'] || data['default']['text-align']; #> +
                        +
                        +
                        + checked="checked"<# } #>> + + + checked="checked"<# } #>> + + + checked="checked"<# } #>> + + + checked="checked"<# } #>> + + + checked="checked"<# } #>> + + +
                        +
                        + <# } #> + + <# if ( data.default['text-transform'] ) { #> + <# data.value['text-transform'] = data.value['text-transform'] || data['default']['text-transform']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['text-decoration'] ) { #> + <# data.value['text-decoration'] = data.value['text-decoration'] || data['default']['text-decoration']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['margin-top'] ) { #> + <# data.value['margin-top'] = data.value['margin-top'] || data['default']['margin-top']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( data.default['margin-bottom'] ) { #> + <# data.value['margin-bottom'] = data.value['margin-bottom'] || data['default']['margin-bottom']; #> +
                        +
                        + +
                        + <# } #> + + <# if ( false !== data.default['color'] && data.default['color'] ) { #> + <# data.value['color'] = data.value['color'] || data['default']['color']; #> +
                        +
                        + +
                        + <# } #> + +
                        + = 4.9 ) : ?> + + + + <# + if ( ! _.isUndefined( data.value['font-family'] ) ) { + data.value['font-family'] = data.value['font-family'].replace( /"/g, ''' ); + } + valueJSON = JSON.stringify( data.value ).replace( /'/g, ''' ); + #> + + $variant, + 'label' => isset( $all_variants[ $variant ] ) ? $all_variants[ $variant ] : $variant, + ); + } elseif ( is_array( $variant ) && isset( $variant['id'] ) && isset( $variant['label'] ) ) { + $final_variants[] = $variant; + } + } + return $final_variants; + } + + /** + * Gets standard fonts properly formatted for our control. + * + * @access protected + * @since 3.0.0 + * @return array + */ + protected function get_standard_fonts() { + // Add fonts to our JS objects. + $standard_fonts = Kirki_Fonts::get_standard_fonts(); + + $std_user_keys = array(); + if ( isset( $this->choices['fonts'] ) && isset( $this->choices['fonts']['standard'] ) ) { + $std_user_keys = $this->choices['fonts']['standard']; + } + + $standard_fonts_final = array(); + $default_variants = $this->format_variants_array( + array( + 'regular', + 'italic', + '700', + '700italic', + ) + ); + foreach ( $standard_fonts as $key => $font ) { + if ( ( ! empty( $std_user_keys ) && ! in_array( $key, $std_user_keys, true ) ) || ! isset( $font['stack'] ) || ! isset( $font['label'] ) ) { + continue; + } + $standard_fonts_final[] = array( + 'family' => $font['stack'], + 'label' => $font['label'], + 'subsets' => array(), + 'is_standard' => true, + 'variants' => ( isset( $font['variants'] ) ) ? $this->format_variants_array( $font['variants'] ) : $default_variants, + ); + } + return $standard_fonts_final; + } + + /** + * Gets google fonts properly formatted for our control. + * + * @access protected + * @since 3.0.0 + * @return array + */ + protected function get_google_fonts() { + // Add fonts to our JS objects. + $google_fonts = Kirki_Fonts::get_google_fonts(); + $all_variants = Kirki_Fonts::get_all_variants(); + $all_subsets = Kirki_Fonts::get_google_font_subsets(); + + $gf_user_keys = array(); + if ( isset( $this->choices['fonts'] ) && isset( $this->choices['fonts']['google'] ) ) { + $gf_user_keys = $this->choices['fonts']['google']; + } + + $google_fonts_final = array(); + foreach ( $google_fonts as $family => $args ) { + if ( ! empty( $gf_user_keys ) && ! in_array( $family, $gf_user_keys, true ) ) { + continue; + } + + $label = ( isset( $args['label'] ) ) ? $args['label'] : $family; + $variants = ( isset( $args['variants'] ) ) ? $args['variants'] : array( 'regular', '700' ); + $subsets = ( isset( $args['subsets'] ) ) ? $args['subsets'] : array(); + + $available_variants = array(); + if ( is_array( $variants ) ) { + foreach ( $variants as $variant ) { + if ( array_key_exists( $variant, $all_variants ) ) { + $available_variants[] = array( + 'id' => $variant, + 'label' => $all_variants[ $variant ], + ); + } + } + } + + $available_subsets = array(); + if ( is_array( $subsets ) ) { + foreach ( $subsets as $subset ) { + if ( array_key_exists( $subset, $all_subsets ) ) { + $available_subsets[] = array( + 'id' => $subset, + 'label' => $all_subsets[ $subset ], + ); + } + } + } + + $google_fonts_final[] = array( + 'family' => $family, + 'label' => $label, + 'variants' => $available_variants, + 'subsets' => $available_subsets, + ); + } // End foreach(). + return $google_fonts_final; + } +} diff --git a/functions/kirki/controls/php/class-kirki-settings-repeater-setting.php b/functions/kirki/controls/php/class-kirki-settings-repeater-setting.php new file mode 100644 index 0000000..0c04de6 --- /dev/null +++ b/functions/kirki/controls/php/class-kirki-settings-repeater-setting.php @@ -0,0 +1,84 @@ +id}", array( $this, 'sanitize_repeater_setting' ), 10, 1 ); + } + + /** + * Fetch the value of the setting. + * + * @access public + * @return mixed The value. + */ + public function value() { + $value = parent::value(); + if ( ! is_array( $value ) ) { + $value = array(); + } + + return $value; + } + + /** + * Convert the JSON encoded setting coming from Customizer to an Array. + * + * @access public + * @param string $value URL Encoded JSON Value. + * @return array + */ + public function sanitize_repeater_setting( $value ) { + + if ( ! is_array( $value ) ) { + $value = json_decode( urldecode( $value ) ); + } + $sanitized = ( empty( $value ) || ! is_array( $value ) ) ? array() : $value; + + // Make sure that every row is an array, not an object. + foreach ( $sanitized as $key => $_value ) { + $sanitized[ $key ] = (array) $_value; + if ( empty( $_value ) ) { + unset( $sanitized[ $key ] ); + } + } + + // Reindex array. + if ( is_array( $sanitized ) ) { + $sanitized = array_values( $sanitized ); + } + + return $sanitized; + + } +} diff --git a/functions/kirki/controls/views/code.php b/functions/kirki/controls/views/code.php new file mode 100644 index 0000000..13e0b54 --- /dev/null +++ b/functions/kirki/controls/views/code.php @@ -0,0 +1,24 @@ +<# +data = _.defaults( data, { + id: '', + label: '', + description: '', + input_attrs: {} +}); +<# var elementIdPrefix = 'el' + String( Math.random() ); #> +
                        + <# if ( data.label ) { #> + + <# } #> + <# if ( data.description ) { #> + {{{ data.description }}} + <# } #> +
                        + +
                        diff --git a/functions/kirki/controls/views/color.php b/functions/kirki/controls/views/color.php new file mode 100644 index 0000000..c78b426 --- /dev/null +++ b/functions/kirki/controls/views/color.php @@ -0,0 +1,35 @@ +<# +data = _.defaults( data, { + label: '', + description: '', + mode: 'full', + inputAttrs: '', + 'data-palette': data['data-palette'] ? data['data-palette'] : true, + 'data-default-color': data['data-default-color'] ? data['data-default-color'] : '', + 'data-alpha': data['data-alpha'] ? data['data-alpha'] : false, + value: '', + 'data-id': '' +} ); +#> + +
                        + + +
                        diff --git a/functions/kirki/controls/views/generic.php b/functions/kirki/controls/views/generic.php new file mode 100644 index 0000000..d799ca9 --- /dev/null +++ b/functions/kirki/controls/views/generic.php @@ -0,0 +1,31 @@ +<# +element = ( data.choices.element ) ? data.choices.element : 'input'; +data = _.defaults( data, { + label: '', + description: '', + inputAttrs: '', + value: '', + 'data-id': '', + choices: {} +} ); +#> +
                        + +
                        diff --git a/functions/kirki/controls/views/radio.php b/functions/kirki/controls/views/radio.php new file mode 100644 index 0000000..320d26d --- /dev/null +++ b/functions/kirki/controls/views/radio.php @@ -0,0 +1,36 @@ +<# data = _.defaults( data, { + choices: {}, + label: '', + description: '', + inputAttrs: '', + value: '', + 'data-id': '', + 'default': '' +} ); +#> + +
                        + <# if ( data.label ) { #> + {{ data.label }} + <# } #> + <# if ( data.description ) { #> + {{ data.description }} + <# } #> + <# _.each( data.choices, function( val, key ) { #> + + <# } ); #> +
                        diff --git a/functions/kirki/controls/views/select.php b/functions/kirki/controls/views/select.php new file mode 100644 index 0000000..ef03ec2 --- /dev/null +++ b/functions/kirki/controls/views/select.php @@ -0,0 +1,56 @@ +<# +data = _.defaults( data, { + label: '', + description: '', + inputAttrs: '', + 'data-id': '', + choices: {}, + multiple: 1, + value: ( 1 < data.multiple ) ? [] : '' +} ); + +if ( 1 < data.multiple && data.value && _.isString( data.value ) ) { + data.value = [ data.value ]; +} +#> +
                        + +
                        diff --git a/functions/kirki/controls/views/textarea.php b/functions/kirki/controls/views/textarea.php new file mode 100644 index 0000000..d6b0a0e --- /dev/null +++ b/functions/kirki/controls/views/textarea.php @@ -0,0 +1,29 @@ +<# +data = _.defaults( data, { + label: '', + description: '', + inputAttrs: '', + value: '', + 'data-id': '', + choices: {} +} ); +#> +
                        + +
                        diff --git a/functions/kirki/core/class-kirki-config.php b/functions/kirki/core/class-kirki-config.php new file mode 100644 index 0000000..c4a9f80 --- /dev/null +++ b/functions/kirki/core/class-kirki-config.php @@ -0,0 +1,163 @@ + $value ) { + // Is this property whitelisted? + if ( property_exists( $this, $key ) ) { + $args[ $key ] = $value; + } + } + + $this->config_final = wp_parse_args( + array( + 'id' => $config_id, + ), + $args + ); + } + + /** + * Use this method to get an instance of your config. + * Each config has its own instance of this object. + * + * @static + * @access public + * @param string $id Config ID. + * @param array $args { + * Optional. Arguments to override config defaults. + * + * @type string $capability @see https://codex.wordpress.org/Roles_and_Capabilities + * @type string $option_type theme_mod or option. + * @type string $option_name If we want to used serialized options, + * this is where we'll be adding the option name. + * All fields using this config will be items in that array. + * @type array $compiler Not yet fully implemented + * @type bool $disable_output If set to true, no CSS will be generated + * from fields using this configuration. + * } + * + * @return Kirki_Config + */ + public static function get_instance( $id = 'global', $args = array() ) { + + $id = trim( esc_attr( $id ) ); + $id = ( '' === $id ) ? 'global' : $id; + + $id_md5 = md5( $id ); + if ( ! isset( self::$instances[ $id_md5 ] ) ) { + self::$instances[ $id_md5 ] = new self( $id, $args ); + } + return self::$instances[ $id_md5 ]; + + } + + /** + * Returns the $config_final property + * + * @access public + * @return array + */ + public function get_config() { + + return $this->config_final; + } +} diff --git a/functions/kirki/core/class-kirki-control.php b/functions/kirki/core/class-kirki-control.php new file mode 100644 index 0000000..b563a7e --- /dev/null +++ b/functions/kirki/core/class-kirki-control.php @@ -0,0 +1,137 @@ +wp_customize = $wp_customize; + + // Set the control types. + $this->set_control_types(); + // Add the control. + $this->add_control( $args ); + + } + + /** + * Get the class name of the class needed to create tis control. + * + * @access private + * @param array $args The field definition as sanitized in Kirki_Field. + * + * @return string the name of the class that will be used to create this control. + */ + final private function get_control_class_name( $args ) { + + // Set a default class name. + $class_name = 'WP_Customize_Control'; + // Get the classname from the array of control classnames. + if ( array_key_exists( $args['type'], self::$control_types ) ) { + $class_name = self::$control_types[ $args['type'] ]; + } + return $class_name; + + } + + /** + * Adds the control. + * + * @access protected + * @param array $args The field definition as sanitized in Kirki_Field. + */ + final protected function add_control( $args ) { + + // Get the name of the class we're going to use. + $class_name = $this->get_control_class_name( $args ); + // Fixes https://github.com/aristath/kirki/issues/1622. + if ( 'kirki-code' === $args['type'] && class_exists( 'WP_Customize_Code_Editor_Control' ) ) { + $this->wp_customize->add_control( + new WP_Customize_Code_Editor_Control( + $this->wp_customize, + $args['settings'], + array( + 'label' => isset( $args['label'] ) ? $args['label'] : '', + 'section' => $args['section'], + 'settings' => $args['settings'], + 'code_type' => isset( $args['choices'] ) ? $args['choices']['language'] : 'text/css', + 'priority' => isset( $args['priority'] ) ? $args['priority'] : 10, + 'input_attrs' => array( + 'aria-describedby' => 'editor-keyboard-trap-help-1 editor-keyboard-trap-help-2 editor-keyboard-trap-help-3 editor-keyboard-trap-help-4', + ), + ) + ) + ); + return; + } + + // Add the control. + $this->wp_customize->add_control( new $class_name( $this->wp_customize, $args['settings'], $args ) ); + + } + + /** + * Sets the $control_types property. + * Makes sure the kirki/control_types filter is applied + * and that the defined classes actually exist. + * If a defined class does not exist, it is removed. + * + * @access private + */ + final private function set_control_types() { + + // Early exit if this has already run. + if ( ! empty( self::$control_types ) ) { + return; + } + + self::$control_types = apply_filters( 'kirki/control_types', array() ); + + // Make sure the defined classes actually exist. + foreach ( self::$control_types as $key => $classname ) { + + if ( ! class_exists( $classname ) ) { + unset( self::$control_types[ $key ] ); + } + } + } +} diff --git a/functions/kirki/core/class-kirki-field.php b/functions/kirki/core/class-kirki-field.php new file mode 100644 index 0000000..18d20db --- /dev/null +++ b/functions/kirki/core/class-kirki-field.php @@ -0,0 +1,685 @@ + 'auto' + * and have already set an array for the 'output' argument. + * + * @see https://kirki.org/docs/arguments/js_vars + * @access protected + * @var array + */ + protected $js_vars = array(); + + /** + * If you want to use a CSS compiler, then use this to set the variable names. + * + * @see https://kirki.org/docs/arguments/variables + * @access protected + * @var array + */ + protected $variables = array(); + + /** + * Text that will be used in a tooltip to provide extra info for this field. + * + * @access protected + * @var string + */ + protected $tooltip = ''; + + /** + * A custom callback to determine if the field should be visible or not. + * + * @access protected + * @var string|array + */ + protected $active_callback = '__return_true'; + + /** + * A custom sanitize callback that will be used to properly save the values. + * + * @access protected + * @var string|array + */ + protected $sanitize_callback = ''; + + /** + * Use 'refresh', 'postMessage' or 'auto'. + * 'auto' will automatically geberate any 'js_vars' from the 'output' argument. + * + * @access protected + * @var string + */ + protected $transport = 'refresh'; + + /** + * Define dependencies to show/hide this field based on the values of other fields. + * + * @access protected + * @var array + */ + protected $required = array(); + + /** + * Partial Refreshes array. + * + * @access protected + * @var array + */ + protected $partial_refresh = array(); + + /** + * The class constructor. + * Parses and sanitizes all field arguments. + * Then it adds the field to Kirki::$fields. + * + * @access public + * @param string $config_id The ID of the config we want to use. + * Defaults to "global". + * Configs are handled by the Kirki_Config class. + * @param array $args The arguments of the field. + */ + public function __construct( $config_id = 'global', $args = array() ) { + + if ( isset( $args['setting'] ) && ! empty( $args['setting'] ) && ( ! isset( $args['settings'] ) || empty( $args['settings'] ) ) ) { + /* translators: %s represents the field ID where the error occurs. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( 'Typo found in field %s - setting instead of settings.', 'blogrow' ), esc_attr( $args['settings'] ) ), '3.0.10' ); + $args['settings'] = $args['setting']; + unset( $args['setting'] ); + } + + // In case the user only provides 1 argument, + // assume that the provided argument is $args and set $config_id = 'global'. + if ( is_array( $config_id ) && empty( $args ) ) { + /* translators: %1$s represents the field ID where the error occurs. %2$s is the URL in the documentation site. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( 'Config not defined for field %1$s - See %2$s for details on how to properly add fields.', 'blogrow' ), esc_attr( $args['settings'] ), 'https://aristath.github.io/kirki/docs/getting-started/fields.html' ), '3.0.10' ); + $args = $config_id; + $config_id = 'global'; + } + + $args['kirki_config'] = $config_id; + + $this->kirki_config = trim( esc_attr( $config_id ) ); + if ( '' === $config_id ) { + /* translators: %1$s represents the field ID where the error occurs. %2$s is the URL in the documentation site. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( 'Config not defined for field %1$s - See %2$s for details on how to properly add fields.', 'blogrow' ), esc_attr( $args['settings'] ), 'https://aristath.github.io/kirki/docs/getting-started/fields.html' ), '3.0.10' ); + $this->kirki_config = 'global'; + } + + // Get defaults from the class. + $defaults = get_class_vars( __CLASS__ ); + + // Get the config arguments, and merge them with the defaults. + $config_defaults = ( isset( Kirki::$config['global'] ) ) ? Kirki::$config['global'] : array(); + if ( 'global' !== $this->kirki_config && isset( Kirki::$config[ $this->kirki_config ] ) ) { + $config_defaults = Kirki::$config[ $this->kirki_config ]; + } + $config_defaults = ( is_array( $config_defaults ) ) ? $config_defaults : array(); + foreach ( $config_defaults as $key => $value ) { + if ( isset( $defaults[ $key ] ) && ! empty( $value ) && $value !== $defaults[ $key ] ) { + $defaults[ $key ] = $value; + } + } + + // Merge our args with the defaults. + $args = wp_parse_args( $args, $defaults ); + + // Set the class properties using the parsed args. + foreach ( $args as $key => $value ) { + $this->$key = $value; + } + + $this->args = $args; + + $this->set_field(); + } + + /** + * Processes the field arguments + * + * @access protected + */ + protected function set_field() { + + $properties = get_class_vars( __CLASS__ ); + + // Some things must run before the others. + $this->set_option_name(); + $this->set_option_type(); + $this->set_settings(); + + // Sanitize the properties, skipping the ones that have already run above. + foreach ( $properties as $property => $value ) { + if ( in_array( $property, array( 'option_name', 'option_type', 'settings' ), true ) ) { + continue; + } + if ( method_exists( $this, 'set_' . $property ) ) { + $method_name = 'set_' . $property; + $this->$method_name(); + } + } + + // Get all arguments with their values. + $args = get_object_vars( $this ); + foreach ( array_keys( $args ) as $key ) { + $args[ $key ] = $this->$key; + } + + // Add the field to the static $fields variable properly indexed. + Kirki::$fields[ $this->settings ] = $args; + + } + + /** + * Escape $kirki_config. + * + * @access protected + */ + protected function set_kirki_config() { + + $this->kirki_config = esc_attr( $this->kirki_config ); + } + + /** + * Escape $option_name. + * + * @access protected + */ + protected function set_option_name() { + + $this->option_name = esc_attr( $this->option_name ); + } + + /** + * Escape the $section. + * + * @access protected + */ + protected function set_section() { + + $this->section = sanitize_key( $this->section ); + } + + /** + * Escape the $section. + * + * @access protected + */ + protected function set_input_attrs() { + + if ( ! is_array( $this->input_attrs ) ) { + $this->input_attrs = array(); + } + } + + /** + * Checks the capability chosen is valid. + * If not, then falls back to 'edit_theme_options' + * + * @access protected + */ + protected function set_capability() { + + // Early exit if we're using 'edit_theme_options'. + if ( 'edit_theme_options' === $this->capability ) { + return; + } + // Escape & trim the capability. + $this->capability = trim( esc_attr( $this->capability ) ); + } + + /** + * Make sure we're using the correct option_type + * + * @access protected + */ + protected function set_option_type() { + + // Take care of common typos. + if ( 'options' === $this->option_type ) { + $this->option_type = 'option'; + } + // Take care of common typos. + if ( 'theme_mods' === $this->option_type ) { + /* translators: %1$s represents the field ID where the error occurs. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( 'Typo found in field %s - "theme_mods" vs "theme_mod"', 'blogrow' ), esc_attr( $this->settings ) ), '3.0.10' ); + $this->option_type = 'theme_mod'; + } + } + + /** + * Modifications for partial refreshes. + * + * @access protected + */ + protected function set_partial_refresh() { + + if ( ! is_array( $this->partial_refresh ) ) { + $this->partial_refresh = array(); + } + foreach ( $this->partial_refresh as $id => $args ) { + if ( ! is_array( $args ) || ! isset( $args['selector'] ) || ! isset( $args['render_callback'] ) || ! is_callable( $args['render_callback'] ) ) { + /* translators: %1$s represents the field ID where the error occurs. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( '"partial_refresh" invalid entry in field %s', 'blogrow' ), esc_attr( $this->settings ) ), '3.0.10' ); + unset( $this->partial_refresh[ $id ] ); + continue; + } + } + if ( ! empty( $this->partial_refresh ) ) { + $this->transport = 'postMessage'; + } + } + + /** + * Sets the settings. + * If we're using serialized options it makes sure that settings are properly formatted. + * We'll also be escaping all setting names here for consistency. + * + * @access protected + */ + protected function set_settings() { + + // If settings is not an array, temporarily convert it to an array. + // This is just to allow us to process everything the same way and avoid code duplication. + // if settings is not an array then it will not be set as an array in the end. + if ( ! is_array( $this->settings ) ) { + $this->settings = array( + 'kirki_placeholder_setting' => $this->settings, + ); + } + $settings = array(); + foreach ( $this->settings as $setting_key => $setting_value ) { + $settings[ $setting_key ] = $setting_value; + // If we're using serialized options then we need to spice this up. + if ( 'option' === $this->option_type && '' !== $this->option_name && ( false === strpos( $setting_key, '[' ) ) ) { + $settings[ $setting_key ] = "{$this->option_name}[{$setting_value}]"; + } + } + $this->settings = $settings; + if ( isset( $this->settings['kirki_placeholder_setting'] ) ) { + $this->settings = $this->settings['kirki_placeholder_setting']; + } + } + + /** + * Sets the active_callback + * If we're using the $required argument, + * Then this is where the switch is made to our evaluation method. + * + * @access protected + */ + protected function set_active_callback() { + + if ( is_array( $this->active_callback ) && ! is_callable( $this->active_callback ) ) { + if ( isset( $this->active_callback[0] ) ) { + $this->required = $this->active_callback; + } + } + + if ( ! empty( $this->required ) ) { + $this->active_callback = '__return_true'; + return; + } + // No need to proceed any further if we're using the default value. + if ( '__return_true' === $this->active_callback ) { + return; + } + // Make sure the function is callable, otherwise fallback to __return_true. + if ( ! is_callable( $this->active_callback ) ) { + $this->active_callback = '__return_true'; + } + } + + /** + * Sets the control type. + * + * @access protected + */ + protected function set_type() { + + // Escape the control type (it doesn't hurt to be sure). + $this->type = esc_attr( $this->type ); + } + + /** + * Sets the $id. + * Setting the ID should happen after the 'settings' sanitization. + * This way we can also properly handle cases where the option_type is set to 'option' + * and we're using an array instead of individual options. + * + * @access protected + */ + protected function set_id() { + + $this->id = sanitize_key( str_replace( '[', '-', str_replace( ']', '', $this->settings ) ) ); + } + + /** + * Sets the $choices. + * + * @access protected + */ + protected function set_choices() { + + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + } + + /** + * Escapes the $disable_output. + * + * @access protected + */ + protected function set_disable_output() { + + $this->disable_output = (bool) $this->disable_output; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_output() { + + if ( empty( $this->output ) ) { + return; + } + if ( ! is_array( $this->output ) ) { + /* translators: The field ID where the error occurs. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( '"output" invalid format in field %s. The "output" argument should be defined as an array of arrays.', 'blogrow' ), esc_attr( $this->settings ) ), '3.0.10' ); + $this->output = array( + array( + 'element' => $this->output, + ), + ); + } + // Convert to array of arrays if needed. + if ( isset( $this->output['element'] ) ) { + /* translators: The field ID where the error occurs. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( '"output" invalid format in field %s. The "output" argument should be defined as an array of arrays.', 'blogrow' ), esc_attr( $this->settings ) ), '3.0.10' ); + $this->output = array( $this->output ); + } + foreach ( $this->output as $key => $output ) { + if ( empty( $output ) || ! isset( $output['element'] ) ) { + unset( $this->output[ $key ] ); + continue; + } + if ( ! isset( $output['sanitize_callback'] ) && isset( $output['callback'] ) ) { + $this->output[ $key ]['sanitize_callback'] = $output['callback']; + } + // Convert element arrays to strings. + if ( isset( $output['element'] ) && is_array( $output['element'] ) ) { + $this->output[ $key ]['element'] = array_unique( $this->output[ $key ]['element'] ); + sort( $this->output[ $key ]['element'] ); + + // Trim each element in the array. + foreach ( $this->output[ $key ]['element'] as $index => $element ) { + $this->output[ $key ]['element'][ $index ] = trim( $element ); + } + $this->output[ $key ]['element'] = implode( ',', $this->output[ $key ]['element'] ); + } + + // Fix for https://github.com/aristath/kirki/issues/1659#issuecomment-346229751. + $this->output[ $key ]['element'] = str_replace( array( "\t", "\n", "\r", "\0", "\x0B" ), ' ', $this->output[ $key ]['element'] ); + $this->output[ $key ]['element'] = trim( preg_replace( '/\s+/', ' ', $this->output[ $key ]['element'] ) ); + } + } + + /** + * Sets the $js_vars + * + * @access protected + */ + protected function set_js_vars() { + + if ( ! is_array( $this->js_vars ) ) { + $this->js_vars = array(); + } + + // Check if transport is set to auto. + // If not, then skip the auto-calculations and exit early. + if ( 'auto' !== $this->transport ) { + return; + } + + // Set transport to refresh initially. + // Serves as a fallback in case we failt to auto-calculate js_vars. + $this->transport = 'refresh'; + + $js_vars = array(); + + // Try to auto-generate js_vars. + // First we need to check if js_vars are empty, and that output is not empty. + if ( empty( $this->js_vars ) && ! empty( $this->output ) ) { + + // Start going through each item in the $output array. + foreach ( $this->output as $output ) { + $output['function'] = ( isset( $output['function'] ) ) ? $output['function'] : 'style'; + + // If 'element' or 'property' are not defined, skip this. + if ( ! isset( $output['element'] ) || ! isset( $output['property'] ) ) { + continue; + } + if ( is_array( $output['element'] ) ) { + $output['element'] = implode( ',', $output['element'] ); + } + + // If there's a sanitize_callback defined skip this, unless we also have a js_callback defined. + if ( isset( $output['sanitize_callback'] ) && ! empty( $output['sanitize_callback'] ) && ! isset( $output['js_callback'] ) ) { + continue; + } + + // If we got this far, it's safe to add this. + $js_vars[] = $output; + } + + // Did we manage to get all the items from 'output'? + // If not, then we're missing something so don't add this. + if ( count( $js_vars ) !== count( $this->output ) ) { + return; + } + $this->js_vars = $js_vars; + $this->transport = 'postMessage'; + + } + } + + /** + * Sets the $variables + * + * @access protected + */ + protected function set_variables() { + + if ( ! is_array( $this->variables ) ) { + $variable = ( is_string( $this->variables ) && ! empty( $this->variables ) ) ? $this->variables : false; + $this->variables = array(); + if ( $variable && empty( $this->variables ) ) { + $this->variables[0]['name'] = $variable; + } + } + } + + /** + * Sets the $transport + * + * @access protected + */ + protected function set_transport() { + + if ( 'postmessage' === trim( strtolower( $this->transport ) ) ) { + $this->transport = 'postMessage'; + } + } + + /** + * Sets the $required + * + * @access protected + */ + protected function set_required() { + + if ( ! is_array( $this->required ) ) { + $this->required = array(); + } + } + + /** + * Sets the $priority + * + * @access protected + */ + protected function set_priority() { + + $this->priority = absint( $this->priority ); + } +} diff --git a/functions/kirki/core/class-kirki-helper.php b/functions/kirki/core/class-kirki-helper.php new file mode 100644 index 0000000..c3e8e40 --- /dev/null +++ b/functions/kirki/core/class-kirki-helper.php @@ -0,0 +1,412 @@ + $value ) { + // Create new key in $array, if it is empty or not an array. + if ( ! isset( $array[ $key ] ) || ( isset( $array[ $key ] ) && ! is_array( $array[ $key ] ) ) ) { + $array[ $key ] = array(); + } + + // Overwrite the value in the base array. + if ( is_array( $value ) ) { + $value = self::recurse( $array[ $key ], $value ); + } + $array[ $key ] = $value; + } + return $array; + } + + /** + * Initialize the WP_Filesystem + * + * @static + * @access public + * @return object WP_Filesystem + */ + public static function init_filesystem() { + global $wp_filesystem; + if ( empty( $wp_filesystem ) ) { + require_once( ABSPATH . '/wp-admin/includes/file.php' ); + WP_Filesystem(); + } + return $wp_filesystem; + } + + /** + * Returns the attachment object + * + * @static + * @access public + * @see https://pippinsplugins.com/retrieve-attachment-id-from-image-url/ + * @param string $url URL to the image. + * @return int|string Numeric ID of the attachement. + */ + public static function get_image_id( $url ) { + global $wpdb; + if ( empty( $url ) ) { + return 0; + } + + $attachment = wp_cache_get( 'kirki_image_id_' . md5( $url ), null ); + if ( false === $attachment ) { + $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid = %s;", $url ) ); + wp_cache_add( 'kirki_image_id_' . md5( $url ), $attachment, null ); + } + + if ( ! empty( $attachment ) ) { + return $attachment[0]; + } + return 0; + } + + /** + * Returns an array of the attachment's properties. + * + * @param string $url URL to the image. + * @return array + */ + public static function get_image_from_url( $url ) { + + $image_id = self::get_image_id( $url ); + $image = wp_get_attachment_image_src( $image_id, 'full' ); + + return array( + 'url' => $image[0], + 'width' => $image[1], + 'height' => $image[2], + 'thumbnail' => $image[3], + ); + + } + + /** + * Get an array of posts. + * + * @static + * @access public + * @param array $args Define arguments for the get_posts function. + * @return array + */ + public static function get_posts( $args ) { + + if ( is_string( $args ) ) { + $args = add_query_arg( + array( + 'suppress_filters' => false, + ) + ); + } elseif ( is_array( $args ) && ! isset( $args['suppress_filters'] ) ) { + $args['suppress_filters'] = false; + } + + // Get the posts. + $posts = get_posts( $args ); + + // Properly format the array. + $items = array(); + foreach ( $posts as $post ) { + $items[ $post->ID ] = $post->post_title; + } + wp_reset_postdata(); + + return $items; + + } + + /** + * Get an array of publicly-querable taxonomies. + * + * @static + * @access public + * @return array + */ + public static function get_taxonomies() { + + $items = array(); + + // Get the taxonomies. + $taxonomies = get_taxonomies( + array( + 'public' => true, + ) + ); + + // Build the array. + foreach ( $taxonomies as $taxonomy ) { + $id = $taxonomy; + $taxonomy = get_taxonomy( $taxonomy ); + $items[ $id ] = $taxonomy->labels->name; + } + + return $items; + + } + + /** + * Get an array of publicly-querable post-types. + * + * @static + * @access public + * @return array + */ + public static function get_post_types() { + + $items = array(); + + // Get the post types. + $post_types = get_post_types( + array( + 'public' => true, + ), 'objects' + ); + + // Build the array. + foreach ( $post_types as $post_type ) { + $items[ $post_type->name ] = $post_type->labels->name; + } + + return $items; + + } + + /** + * Get an array of terms from a taxonomy + * + * @static + * @access public + * @param string|array $taxonomies See https://developer.wordpress.org/reference/functions/get_terms/ for details. + * @return array + */ + public static function get_terms( $taxonomies ) { + + $items = array(); + + // Get the post types. + $terms = get_terms( $taxonomies ); + + // Build the array. + foreach ( $terms as $term ) { + $items[ $term->term_id ] = $term->name; + } + + return $items; + + } + + /** + * Gets an array of material-design colors. + * + * @static + * @access public + * @param string $context Allows us to get subsets of the palette. + * @return array + */ + public static function get_material_design_colors( $context = 'primary' ) { + + $colors = array( + 'primary' => array( '#FFFFFF', '#000000', '#F44336', '#E91E63', '#9C27B0', '#673AB7', '#3F51B5', '#2196F3', '#03A9F4', '#00BCD4', '#009688', '#4CAF50', '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800', '#FF5722', '#795548', '#9E9E9E', '#607D8B' ), + 'red' => array( '#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C', '#FF8A80', '#FF5252', '#FF1744', '#D50000' ), + 'pink' => array( '#FCE4EC', '#F8BBD0', '#F48FB1', '#F06292', '#EC407A', '#E91E63', '#D81B60', '#C2185B', '#AD1457', '#880E4F', '#FF80AB', '#FF4081', '#F50057', '#C51162' ), + 'purple' => array( '#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C', '#EA80FC', '#E040FB', '#D500F9', '#AA00FF' ), + 'deep-purple' => array( '#EDE7F6', '#D1C4E9', '#B39DDB', '#9575CD', '#7E57C2', '#673AB7', '#5E35B1', '#512DA8', '#4527A0', '#311B92', '#B388FF', '#7C4DFF', '#651FFF', '#6200EA' ), + 'indigo' => array( '#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E', '#8C9EFF', '#536DFE', '#3D5AFE', '#304FFE' ), + 'blue' => array( '#E3F2FD', '#BBDEFB', '#90CAF9', '#64B5F6', '#42A5F5', '#2196F3', '#1E88E5', '#1976D2', '#1565C0', '#0D47A1', '#82B1FF', '#448AFF', '#2979FF', '#2962FF' ), + 'light_blue' => array( '#E1F5FE', '#B3E5FC', '#81D4fA', '#4fC3F7', '#29B6FC', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B', '#80D8FF', '#40C4FF', '#00B0FF', '#0091EA' ), + 'cyan' => array( '#E0F7FA', '#B2EBF2', '#80DEEA', '#4DD0E1', '#26C6DA', '#00BCD4', '#00ACC1', '#0097A7', '#00838F', '#006064', '#84FFFF', '#18FFFF', '#00E5FF', '#00B8D4' ), + 'teal' => array( '#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40', '#A7FFEB', '#64FFDA', '#1DE9B6', '#00BFA5' ), + 'green' => array( '#E8F5E9', '#C8E6C9', '#A5D6A7', '#81C784', '#66BB6A', '#4CAF50', '#43A047', '#388E3C', '#2E7D32', '#1B5E20', '#B9F6CA', '#69F0AE', '#00E676', '#00C853' ), + 'light-green' => array( '#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E', '#CCFF90', '#B2FF59', '#76FF03', '#64DD17' ), + 'lime' => array( '#F9FBE7', '#F0F4C3', '#E6EE9C', '#DCE775', '#D4E157', '#CDDC39', '#C0CA33', '#A4B42B', '#9E9D24', '#827717', '#F4FF81', '#EEFF41', '#C6FF00', '#AEEA00' ), + 'yellow' => array( '#FFFDE7', '#FFF9C4', '#FFF590', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17', '#FFFF82', '#FFFF00', '#FFEA00', '#FFD600' ), + 'amber' => array( '#FFF8E1', '#FFECB3', '#FFE082', '#FFD54F', '#FFCA28', '#FFC107', '#FFB300', '#FFA000', '#FF8F00', '#FF6F00', '#FFE57F', '#FFD740', '#FFC400', '#FFAB00' ), + 'orange' => array( '#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100', '#FFD180', '#FFAB40', '#FF9100', '#FF6D00' ), + 'deep-orange' => array( '#FBE9A7', '#FFCCBC', '#FFAB91', '#FF8A65', '#FF7043', '#FF5722', '#F4511E', '#E64A19', '#D84315', '#BF360C', '#FF9E80', '#FF6E40', '#FF3D00', '#DD2600' ), + 'brown' => array( '#EFEBE9', '#D7CCC8', '#BCAAA4', '#A1887F', '#8D6E63', '#795548', '#6D4C41', '#5D4037', '#4E342E', '#3E2723' ), + 'grey' => array( '#FAFAFA', '#F5F5F5', '#EEEEEE', '#E0E0E0', '#BDBDBD', '#9E9E9E', '#757575', '#616161', '#424242', '#212121', '#000000', '#ffffff' ), + 'blue-grey' => array( '#ECEFF1', '#CFD8DC', '#B0BBC5', '#90A4AE', '#78909C', '#607D8B', '#546E7A', '#455A64', '#37474F', '#263238' ), + ); + + switch ( $context ) { + + case '50': + case '100': + case '200': + case '300': + case '400': + case '500': + case '600': + case '700': + case '800': + case '900': + case 'A100': + case 'A200': + case 'A400': + case 'A700': + $key = absint( $context ) / 100; + if ( 'A100' === $context ) { + $key = 10; + unset( $colors['grey'] ); + } elseif ( 'A200' === $context ) { + $key = 11; + unset( $colors['grey'] ); + } elseif ( 'A400' === $context ) { + $key = 12; + unset( $colors['grey'] ); + } elseif ( 'A700' === $context ) { + $key = 13; + unset( $colors['grey'] ); + } + unset( $colors['primary'] ); + $position_colors = array(); + foreach ( $colors as $color_family ) { + if ( isset( $color_family[ $key ] ) ) { + $position_colors[] = $color_family[ $key ]; + } + } + return $position_colors; + case 'all': + unset( $colors['primary'] ); + $all_colors = array(); + foreach ( $colors as $color_family ) { + foreach ( $color_family as $color ) { + $all_colors[] = $color; + } + } + return $all_colors; + case 'primary': + return $colors['primary']; + default: + if ( isset( $colors[ $context ] ) ) { + return $colors[ $context ]; + } + return $colors['primary']; + } // End switch(). + } + + /** + * Get an array of all available dashicons. + * + * @static + * @access public + * @return array + */ + public static function get_dashicons() { + + return array( + 'admin-menu' => array( 'menu', 'admin-site', 'dashboard', 'admin-post', 'admin-media', 'admin-links', 'admin-page', 'admin-comments', 'admin-appearance', 'admin-plugins', 'admin-users', 'admin-tools', 'admin-settings', 'admin-network', 'admin-home', 'admin-generic', 'admin-collapse', 'filter', 'admin-customizer', 'admin-multisite' ), + 'welcome-screen' => array( 'welcome-write-blog', 'welcome-add-page', 'welcome-view-site', 'welcome-widgets-menus', 'welcome-comments', 'welcome-learn-more' ), + 'post-formats' => array( 'format-aside', 'format-image', 'format-gallery', 'format-video', 'format-status', 'format-quote', 'format-chat', 'format-audio', 'camera', 'images-alt', 'images-alt2', 'video-alt', 'video-alt2', 'video-alt3' ), + 'media' => array( 'media-archive', 'media-audio', 'media-code', 'media-default', 'media-document', 'media-interactive', 'media-spreadsheet', 'media-text', 'media-video', 'playlist-audio', 'playlist-video', 'controls-play', 'controls-pause', 'controls-forward', 'controls-skipforward', 'controls-back', 'controls-skipback', 'controls-repeat', 'controls-volumeon', 'controls-volumeoff' ), + 'image-editing' => array( 'image-crop', 'image-rotate', 'image-rotate-left', 'image-rotate-right', 'image-flip-vertical', 'image-flip-horizontal', 'image-filter', 'undo', 'redo' ), + 'tinymce' => array( 'editor-bold', 'editor-italic', 'editor-ul', 'editor-ol', 'editor-quote', 'editor-alignleft', 'editor-aligncenter', 'editor-alignright', 'editor-insertmore', 'editor-spellcheck', 'editor-expand', 'editor-contract', 'editor-kitchensink', 'editor-underline', 'editor-justify', 'editor-textcolor', 'editor-paste-word', 'editor-paste-text', 'editor-removeformatting', 'editor-video', 'editor-customchar', 'editor-outdent', 'editor-indent', 'editor-help', 'editor-strikethrough', 'editor-unlink', 'editor-rtl', 'editor-break', 'editor-code', 'editor-paragraph', 'editor-table' ), + 'posts' => array( 'align-left', 'align-right', 'align-center', 'align-none', 'lock', 'unlock', 'calendar', 'calendar-alt', 'visibility', 'hidden', 'post-status', 'edit', 'trash', 'sticky' ), + 'sorting' => array( 'external', 'arrow-up', 'arrow-down', 'arrow-right', 'arrow-left', 'arrow-up-alt', 'arrow-down-alt', 'arrow-right-alt', 'arrow-left-alt', 'arrow-up-alt2', 'arrow-down-alt2', 'arrow-right-alt2', 'arrow-left-alt2', 'sort', 'leftright', 'randomize', 'list-view', 'exerpt-view', 'grid-view' ), + 'social' => array( 'share', 'share-alt', 'share-alt2', 'twitter', 'rss', 'email', 'email-alt', 'facebook', 'facebook-alt', 'googleplus', 'networking' ), + 'wordpress_org' => array( 'hammer', 'art', 'migrate', 'performance', 'universal-access', 'universal-access-alt', 'tickets', 'nametag', 'clipboard', 'heart', 'megaphone', 'schedule' ), + 'products' => array( 'wordpress', 'wordpress-alt', 'pressthis', 'update', 'screenoptions', 'info', 'cart', 'feedback', 'cloud', 'translation' ), + 'taxonomies' => array( 'tag', 'category' ), + 'widgets' => array( 'archive', 'tagcloud', 'text' ), + 'notifications' => array( 'yes', 'no', 'no-alt', 'plus', 'plus-alt', 'minus', 'dismiss', 'marker', 'star-filled', 'star-half', 'star-empty', 'flag', 'warning' ), + 'misc' => array( 'location', 'location-alt', 'vault', 'shield', 'shield-alt', 'sos', 'search', 'slides', 'analytics', 'chart-pie', 'chart-bar', 'chart-line', 'chart-area', 'groups', 'businessman', 'id', 'id-alt', 'products', 'awards', 'forms', 'testimonial', 'portfolio', 'book', 'book-alt', 'download', 'upload', 'backup', 'clock', 'lightbulb', 'microphone', 'desktop', 'tablet', 'smartphone', 'phone', 'index-card', 'carrot', 'building', 'store', 'album', 'palmtree', 'tickets-alt', 'money', 'smiley', 'thumbs-up', 'thumbs-down', 'layout' ), + ); + + } + + /** + * Compares the 2 values given the condition + * + * @param mixed $value1 The 1st value in the comparison. + * @param mixed $value2 The 2nd value in the comparison. + * @param string $operator The operator we'll use for the comparison. + * @return boolean whether The comparison has succeded (true) or failed (false). + */ + public static function compare_values( $value1, $value2, $operator ) { + $return = false; + if ( '===' === $operator && $value1 === $value2 ) { + $return = true; + } elseif ( '!==' === $operator && $value1 !== $value2 ) { + $return = true; + } elseif ( ( '!=' === $operator || 'not equal' === $operator ) && $value1 != $value2 ) { + $return = true; + } elseif ( ( '>=' === $operator || 'greater or equal' === $operator || 'equal or greater' === $operator ) && $value2 >= $value1 ) { + $return = true; + } elseif ( ( '<=' === $operator || 'smaller or equal' === $operator || 'equal or smaller' === $operator ) && $value2 <= $value1 ) { + $return = true; + } elseif ( ( '>' === $operator || 'greater' === $operator ) && $value2 > $value1 ) { + $return = true; + } elseif ( ( '<' === $operator || 'smaller' === $operator ) && $value2 < $value1 ) { + $return = true; + } elseif ( 'contains' === $operator || 'in' === $operator ) { + if ( is_array( $value1 ) && ! is_array( $value2 ) ) { + // @codingStandardsIgnoreLine + $return = ( in_array( $value2, $value1 ) ); + } elseif ( is_array( $value2 ) && ! is_array( $value1 ) ) { + // @codingStandardsIgnoreLine + $return = ( in_array( $value1, $value2 ) ); + } elseif ( false === strrpos( $value1, $value2 ) && false === strpos( $value2, $value1 ) ) { + $return = false; + } + } else { + $return = ( $value1 == $value2 ) ? true : false; + } + return (bool) $return; + } +} diff --git a/functions/kirki/core/class-kirki-init.php b/functions/kirki/core/class-kirki-init.php new file mode 100644 index 0000000..e47ebca --- /dev/null +++ b/functions/kirki/core/class-kirki-init.php @@ -0,0 +1,323 @@ +control_types = array( + 'checkbox' => 'WP_Customize_Control', + 'kirki-background' => 'Kirki_Control_Background', + 'kirki-code' => 'Kirki_Control_Code', + 'kirki-color' => 'Kirki_Control_Color', + 'kirki-color-palette' => 'Kirki_Control_Color_Palette', + 'kirki-custom' => 'Kirki_Control_Custom', + 'kirki-date' => 'Kirki_Control_Date', + 'kirki-dashicons' => 'Kirki_Control_Dashicons', + 'kirki-dimension' => 'Kirki_Control_Dimension', + 'kirki-dimensions' => 'Kirki_Control_Dimensions', + 'kirki-editor' => 'Kirki_Control_Editor', + 'kirki-fontawesome' => 'Kirki_Control_FontAwesome', + 'kirki-image' => 'Kirki_Control_Image', + 'kirki-multicolor' => 'Kirki_Control_Multicolor', + 'kirki-multicheck' => 'Kirki_Control_MultiCheck', + 'kirki-number' => 'Kirki_Control_Number', + 'kirki-palette' => 'Kirki_Control_Palette', + 'kirki-preset' => 'Kirki_Control_Preset', + 'kirki-radio' => 'Kirki_Control_Radio', + 'kirki-radio-buttonset' => 'Kirki_Control_Radio_ButtonSet', + 'kirki-radio-image' => 'Kirki_Control_Radio_Image', + 'repeater' => 'Kirki_Control_Repeater', + 'kirki-select' => 'Kirki_Control_Select', + 'kirki-slider' => 'Kirki_Control_Slider', + 'kirki-sortable' => 'Kirki_Control_Sortable', + 'kirki-spacing' => 'Kirki_Control_Dimensions', + 'kirki-switch' => 'Kirki_Control_Switch', + 'kirki-generic' => 'Kirki_Control_Generic', + 'kirki-toggle' => 'Kirki_Control_Toggle', + 'kirki-typography' => 'Kirki_Control_Typography', + 'image' => 'Kirki_Control_Image', + 'cropped_image' => 'WP_Customize_Cropped_Image_Control', + 'upload' => 'WP_Customize_Upload_Control', + ); + return array_merge( $this->control_types, $control_types ); + + } + + /** + * Helper function that adds the fields, sections and panels to the customizer. + */ + public function add_to_customizer() { + $this->fields_from_filters(); + add_action( 'customize_register', array( $this, 'register_control_types' ) ); + add_action( 'customize_register', array( $this, 'add_panels' ), 97 ); + add_action( 'customize_register', array( $this, 'add_sections' ), 98 ); + add_action( 'customize_register', array( $this, 'add_fields' ), 99 ); + } + + /** + * Register control types + */ + public function register_control_types() { + global $wp_customize; + + $section_types = apply_filters( 'kirki/section_types', array() ); + foreach ( $section_types as $section_type ) { + $wp_customize->register_section_type( $section_type ); + } + + $this->control_types = $this->default_control_types(); + foreach ( $this->control_types as $key => $classname ) { + if ( ! class_exists( $classname ) ) { + unset( $this->control_types[ $key ] ); + } + } + + $skip_control_types = apply_filters( + 'kirki/control_types/exclude', array( + 'Kirki_Control_Repeater', + 'WP_Customize_Control', + ) + ); + + foreach ( $this->control_types as $control_type ) { + if ( ! in_array( $control_type, $skip_control_types, true ) && class_exists( $control_type ) ) { + $wp_customize->register_control_type( $control_type ); + } + } + } + + /** + * Register our panels to the WordPress Customizer. + * + * @access public + */ + public function add_panels() { + if ( ! empty( Kirki::$panels ) ) { + foreach ( Kirki::$panels as $panel_args ) { + // Extra checks for nested panels. + if ( isset( $panel_args['panel'] ) ) { + if ( isset( Kirki::$panels[ $panel_args['panel'] ] ) ) { + // Set the type to nested. + $panel_args['type'] = 'kirki-nested'; + } + } + + new Kirki_Panel( $panel_args ); + } + } + } + + /** + * Register our sections to the WordPress Customizer. + * + * @var object The WordPress Customizer object + */ + public function add_sections() { + if ( ! empty( Kirki::$sections ) ) { + foreach ( Kirki::$sections as $section_args ) { + // Extra checks for nested sections. + if ( isset( $section_args['section'] ) ) { + if ( isset( Kirki::$sections[ $section_args['section'] ] ) ) { + // Set the type to nested. + $section_args['type'] = 'kirki-nested'; + // We need to check if the parent section is nested inside a panel. + $parent_section = Kirki::$sections[ $section_args['section'] ]; + if ( isset( $parent_section['panel'] ) ) { + $section_args['panel'] = $parent_section['panel']; + } + } + } + new Kirki_Section( $section_args ); + } + } + } + + /** + * Create the settings and controls from the $fields array and register them. + * + * @var object The WordPress Customizer object. + */ + public function add_fields() { + + global $wp_customize; + foreach ( Kirki::$fields as $args ) { + + // Create the settings. + new Kirki_Settings( $args ); + + // Check if we're on the customizer. + // If we are, then we will create the controls, add the scripts needed for the customizer + // and any other tweaks that this field may require. + if ( $wp_customize ) { + + // Create the control. + new Kirki_Control( $args ); + + } + } + } + + /** + * Process fields added using the 'kirki/fields' and 'kirki/controls' filter. + * These filters are no longer used, this is simply for backwards-compatibility. + * + * @access private + * @since 2.0.0 + */ + private function fields_from_filters() { + + $fields = apply_filters( 'kirki/controls', array() ); + $fields = apply_filters( 'kirki/fields', $fields ); + + if ( ! empty( $fields ) ) { + foreach ( $fields as $field ) { + Kirki::add_field( 'global', $field ); + } + } + } + + /** + * Alias for the is_plugin static method in the Kirki_Util class. + * This is here for backwards-compatibility purposes. + * + * @static + * @access public + * @since 3.0.0 + * @return bool + */ + public static function is_plugin() { + // Return result using the Kirki_Util class. + return Kirki_Util::is_plugin(); + } + + /** + * Alias for the get_variables static method in the Kirki_Util class. + * This is here for backwards-compatibility purposes. + * + * @static + * @access public + * @since 2.0.0 + * @return array Formatted as array( 'variable-name' => value ). + */ + public static function get_variables() { + // Log error for developers. + _doing_it_wrong( __METHOD__, esc_attr__( 'We detected you\'re using Kirki_Init::get_variables(). Please use Kirki_Util::get_variables() instead.', 'blogrow' ), '3.0.10' ); + // Return result using the Kirki_Util class. + return Kirki_Util::get_variables(); + } + + /** + * Remove panels. + * + * @since 3.0.17 + * @param object $wp_customize The customizer object. + * @return void + */ + public function remove_panels( $wp_customize ) { + foreach ( Kirki::$panels_to_remove as $panel ) { + $wp_customize->remove_panel( $panel ); + } + } + + /** + * Remove sections. + * + * @since 3.0.17 + * @param object $wp_customize The customizer object. + * @return void + */ + public function remove_sections( $wp_customize ) { + foreach ( Kirki::$sections_to_remove as $section ) { + $wp_customize->remove_section( $section ); + } + } + + /** + * Remove controls. + * + * @since 3.0.17 + * @param object $wp_customize The customizer object. + * @return void + */ + public function remove_controls( $wp_customize ) { + foreach ( Kirki::$controls_to_remove as $control ) { + $wp_customize->remove_control( $control ); + } + } +} diff --git a/functions/kirki/core/class-kirki-l10n.php b/functions/kirki/core/class-kirki-l10n.php new file mode 100644 index 0000000..5c9c2ad --- /dev/null +++ b/functions/kirki/core/class-kirki-l10n.php @@ -0,0 +1,156 @@ +get_path() ) { + load_textdomain( $this->textdomain, $this->get_path() ); + } + load_plugin_textdomain( $this->textdomain, false, Kirki::$path . '/languages' ); + + } + + /** + * Gets the path to a translation file. + * + * @access protected + * @return string Absolute path to the translation file. + */ + protected function get_path() { + $path_found = false; + $found_path = null; + foreach ( $this->get_paths() as $path ) { + if ( $path_found ) { + continue; + } + $path = wp_normalize_path( $path ); + if ( file_exists( $path ) ) { + $path_found = true; + $found_path = $path; + } + } + + return $found_path; + + } + + /** + * Returns an array of paths where translation files may be located. + * + * @access protected + * @return array + */ + protected function get_paths() { + + return array( + WP_LANG_DIR . '/' . $this->textdomain . '-' . get_locale() . '.mo', + Kirki::$path . '/languages/' . $this->textdomain . '-' . get_locale() . '.mo', + ); + + } + + /** + * Allows overriding the "kirki" textdomain from a theme. + * + * @since 3.0.12 + * @access public + * @param bool $override Whether to override the .mo file loading. Default false. + * @param string $domain Text domain. Unique identifier for retrieving translated strings. + * @param string $mofile Path to the MO file. + * @return bool + */ + public function override_load_textdomain( $override, $domain, $mofile ) { + + global $l10n; + if ( isset( $l10n[ $this->get_theme_textdomain() ] ) ) { + // @codingStandardsIgnoreLine WordPress.Variables.GlobalVariables.OverrideProhibited + $l10n['blogrow'] = $l10n[ $this->get_theme_textdomain() ]; + } + + // Check if the domain is "kirki". + if ( 'blogrow' === $domain ) { + return true; + } + return $override; + + } + + /** + * Get the theme's textdomain. + * + * @since 3.0.12 + * @access private + * @return string + */ + private function get_theme_textdomain() { + + if ( '' === $this->theme_textdomain ) { + + // Get the textdomain. + $theme = wp_get_theme(); + $this->theme_textdomain = $theme->get( 'TextDomain' ); + + // If no texdomain was found, use the template folder name. + if ( ! $this->theme_textdomain ) { + $this->theme_textdomain = get_template(); + } + } + return $this->theme_textdomain; + + } +} diff --git a/functions/kirki/core/class-kirki-modules.php b/functions/kirki/core/class-kirki-modules.php new file mode 100644 index 0000000..784c11c --- /dev/null +++ b/functions/kirki/core/class-kirki-modules.php @@ -0,0 +1,155 @@ +default_modules(); + $this->init(); + + } + + /** + * Set the default modules and apply the 'kirki/modules' filter. + * + * @access private + * @since 3.0.0 + */ + private function default_modules() { + + self::$modules = apply_filters( + 'kirki/modules', array( + 'css' => 'Kirki_Modules_CSS', + 'customizer-styling' => 'Kirki_Modules_Customizer_Styling', + 'icons' => 'Kirki_Modules_Icons', + 'loading' => 'Kirki_Modules_Loading', + 'tooltips' => 'Kirki_Modules_Tooltips', + 'branding' => 'Kirki_Modules_Customizer_Branding', + 'postMessage' => 'Kirki_Modules_PostMessage', + // 'post_meta' => 'Kirki_Modules_Post_Meta', + 'selective-refresh' => 'Kirki_Modules_Selective_Refresh', + 'field-dependencies' => 'Kirki_Modules_Field_Dependencies', + 'custom-sections' => 'Kirki_Modules_Custom_Sections', + // 'collapsible' => 'Kirki_Modules_Collapsible', + 'webfonts' => 'Kirki_Modules_Webfonts', + ) + ); + + } + + /** + * Instantiates the modules. + * + * @access private + * @since 3.0.0 + */ + private function init() { + + foreach ( self::$modules as $key => $module_class ) { + if ( class_exists( $module_class ) ) { + // Use this syntax instead of $module_class::get_instance() + // for PHP 5.2 compatibility. + self::$active_modules[ $key ] = call_user_func( array( $module_class, 'get_instance' ) ); + } + } + } + + /** + * Add a module. + * + * @static + * @access public + * @param string $module The classname of the module to add. + * @since 3.0.0 + */ + public static function add_module( $module ) { + + if ( ! in_array( $module, self::$modules, true ) ) { + self::$modules[] = $module; + } + + } + + /** + * Remove a module. + * + * @static + * @access public + * @param string $module The classname of the module to add. + * @since 3.0.0 + */ + public static function remove_module( $module ) { + + $key = array_search( $module, self::$modules, true ); + if ( false !== $key ) { + unset( self::$modules[ $key ] ); + } + } + + /** + * Get the modules array. + * + * @static + * @access public + * @since 3.0.0 + * @return array + */ + public static function get_modules() { + + return self::$modules; + + } + + /** + * Get the array of active modules (objects). + * + * @static + * @access public + * @since 3.0.0 + * @return array + */ + public static function get_active_modules() { + + return self::$active_modules; + + } +} diff --git a/functions/kirki/core/class-kirki-panel.php b/functions/kirki/core/class-kirki-panel.php new file mode 100644 index 0000000..f14d1d3 --- /dev/null +++ b/functions/kirki/core/class-kirki-panel.php @@ -0,0 +1,57 @@ + 'WP_Customize_Panel', + ); + + /** + * The class constructor. + * + * @access public + * @param array $args The panel arguments. + */ + public function __construct( $args ) { + + $this->panel_types = apply_filters( 'kirki/panel_types', $this->panel_types ); + $this->add_panel( $args ); + + } + + /** + * Add the panel using the Customizer API. + * + * @param array $args The panel arguments. + */ + public function add_panel( $args ) { + global $wp_customize; + + if ( ! isset( $args['type'] ) || ! array_key_exists( $args['type'], $this->panel_types ) ) { + $args['type'] = 'default'; + } + $panel_classname = $this->panel_types[ $args['type'] ]; + + $wp_customize->add_panel( new $panel_classname( $wp_customize, sanitize_key( $args['id'] ), $args ) ); + + } +} diff --git a/functions/kirki/core/class-kirki-sanitize-values.php b/functions/kirki/core/class-kirki-sanitize-values.php new file mode 100644 index 0000000..d00e044 --- /dev/null +++ b/functions/kirki/core/class-kirki-sanitize-values.php @@ -0,0 +1,213 @@ +sanitize( $value ); + } + + /** + * Sanitize number options. + * + * @static + * @access public + * @since 0.5 + * @param int|float|double|string $value The value to be sanitized. + * @return integer|double|string + */ + public static function number( $value ) { + return ( is_numeric( $value ) ) ? $value : intval( $value ); + } + + /** + * Drop-down Pages sanitization callback. + * + * - Sanitization: dropdown-pages + * - Control: dropdown-pages + * + * Sanitization callback for 'dropdown-pages' type controls. This callback sanitizes `$page_id` + * as an absolute integer, and then validates that $input is the ID of a published page. + * + * @see absint() https://developer.wordpress.org/reference/functions/absint/ + * @see get_post_status() https://developer.wordpress.org/reference/functions/get_post_status/ + * + * @param int $page_id Page ID. + * @param WP_Customize_Setting $setting Setting instance. + * @return int|string Page ID if the page is published; otherwise, the setting default. + */ + public static function dropdown_pages( $page_id, $setting ) { + // Ensure $input is an absolute integer. + $page_id = absint( $page_id ); + + // If $page_id is an ID of a published page, return it; otherwise, return the default. + return ( 'publish' === get_post_status( $page_id ) ? $page_id : $setting->default ); + } + + /** + * Sanitizes css dimensions. + * + * @static + * @access public + * @since 2.2.0 + * @param string $value The value to be sanitized. + * @return string + */ + public static function css_dimension( $value ) { + + // Trim it. + $value = trim( $value ); + + // If the value is round, then return 50%. + if ( 'round' === $value ) { + $value = '50%'; + } + + // If the value is empty, return empty. + if ( '' === $value ) { + return ''; + } + + // If auto, inherit or initial, return the value. + if ( 'auto' === $value || 'initial' === $value || 'inherit' === $value ) { + return $value; + } + + // Return empty if there are no numbers in the value. + if ( ! preg_match( '#[0-9]#', $value ) ) { + return ''; + } + + // If we're using calc() then return the value. + if ( false !== strpos( $value, 'calc(' ) ) { + return $value; + } + + // The raw value without the units. + $raw_value = self::filter_number( $value ); + $unit_used = ''; + + // An array of all valid CSS units. Their order was carefully chosen for this evaluation, don't mix it up!!! + $units = array( 'rem', 'em', 'ex', '%', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ch', 'vh', 'vw', 'vmin', 'vmax' ); + foreach ( $units as $unit ) { + if ( false !== strpos( $value, $unit ) ) { + $unit_used = $unit; + } + } + + // Hack for rem values. + if ( 'em' === $unit_used && false !== strpos( $value, 'rem' ) ) { + $unit_used = 'rem'; + } + + return $raw_value . $unit_used; + } + + /** + * Filters numeric values. + * + * @static + * @access public + * @param string $value The value to be sanitized. + * @return int|float + */ + public static function filter_number( $value ) { + return filter_var( $value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + } + + /** + * Sanitize RGBA colors + * + * @static + * @since 0.8.5 + * @param string $value The value to be sanitized. + * @return string + */ + public static function rgba( $value ) { + $color = ariColor::newColor( $value ); + return $color->toCSS( 'rgba' ); + } + + /** + * Sanitize colors. + * + * @static + * @since 0.8.5 + * @param string $value The value to be sanitized. + * @return string + */ + public static function color( $value ) { + // If the value is empty, then return empty. + if ( '' === $value ) { + return ''; + } + // If transparent, then return 'transparent'. + if ( is_string( $value ) && 'transparent' === trim( $value ) ) { + return 'transparent'; + } + // Instantiate the object. + $color = ariColor::newColor( $value ); + // Return a CSS value, using the auto-detected mode. + return $color->toCSS( $color->mode ); + } + + /** + * DOES NOT SANITIZE ANYTHING. + * + * @static + * @since 0.5 + * @param int|string|array $value The value to be sanitized. + * @return int|string|array + */ + public static function unfiltered( $value ) { + return $value; + } +} diff --git a/functions/kirki/core/class-kirki-section.php b/functions/kirki/core/class-kirki-section.php new file mode 100644 index 0000000..7ba04f4 --- /dev/null +++ b/functions/kirki/core/class-kirki-section.php @@ -0,0 +1,64 @@ +section_types = apply_filters( 'kirki/section_types', $this->section_types ); + $this->add_section( $args ); + + } + + /** + * Adds the section using the WordPress Customizer API. + * + * @access public + * @param array $args The section parameters. + */ + public function add_section( $args ) { + + global $wp_customize; + + // The default class to be used when creating a section. + $section_classname = 'WP_Customize_Section'; + + if ( isset( $args['type'] ) && array_key_exists( $args['type'], $this->section_types ) ) { + $section_classname = $this->section_types[ $args['type'] ]; + } + if ( isset( $args['type'] ) && 'kirki-outer' === $args['type'] ) { + $args['type'] = 'outer'; + $section_classname = 'WP_Customize_Section'; + } + + // Add the section. + $wp_customize->add_section( new $section_classname( $wp_customize, sanitize_key( $args['id'] ), $args ) ); + + } +} diff --git a/functions/kirki/core/class-kirki-sections.php b/functions/kirki/core/class-kirki-sections.php new file mode 100644 index 0000000..d57c828 --- /dev/null +++ b/functions/kirki/core/class-kirki-sections.php @@ -0,0 +1,48 @@ +' . esc_attr( $css ) . ''; + } + } +} diff --git a/functions/kirki/core/class-kirki-setting-site-option.php b/functions/kirki/core/class-kirki-setting-site-option.php new file mode 100644 index 0000000..343a3a7 --- /dev/null +++ b/functions/kirki/core/class-kirki-setting-site-option.php @@ -0,0 +1,73 @@ +id_data['base'], $default ); + } + + /** + * Set the root value for a setting, especially for multidimensional ones. + * + * @access protected + * @since 3.0.0 + * @param mixed $value Value to set as root of multidimensional setting. + * @return bool Whether the multidimensional root was updated successfully. + */ + protected function set_root_value( $value ) { + return update_site_option( $this->id_data['base'], $value ); + } + + /** + * Save the value of the setting, using the related API. + * + * @access protected + * @since 3.0.0 + * @param mixed $value The value to update. + * @return bool The result of saving the value. + */ + protected function update( $value ) { + return $this->set_root_value( $value ); + } + + /** + * Fetch the value of the setting. + * + * @access protected + * @since 3.0.0 + * @return mixed The value. + */ + public function value() { + return $this->get_root_value( $this->default ); + } +} diff --git a/functions/kirki/core/class-kirki-setting-user-meta.php b/functions/kirki/core/class-kirki-setting-user-meta.php new file mode 100644 index 0000000..1618b91 --- /dev/null +++ b/functions/kirki/core/class-kirki-setting-user-meta.php @@ -0,0 +1,97 @@ +id_data['base']; + + // Get all user-meta. + // We'll use this to check if the value is set or not, + // in order to figure out if we need to return the default value. + // @codingStandardsIgnoreLine + $user_meta = get_user_meta( get_current_user_id() ); + + // Get the single meta. + // @codingStandardsIgnoreLine + $single_meta = get_user_meta( get_current_user_id(), $id_base, true ); + + if ( isset( $user_meta[ $id_base ] ) ) { + return $single_meta; + } + return $default; + } + + /** + * Set the root value for a setting, especially for multidimensional ones. + * + * @access protected + * @since 3.0.0 + * @param mixed $value Value to set as root of multidimensional setting. + * @return bool Whether the multidimensional root was updated successfully. + */ + protected function set_root_value( $value ) { + $id_base = $this->id_data['base']; + + // First delete the current user-meta. + // We're doing this to avoid duplicate entries. + // @codingStandardsIgnoreLine + delete_user_meta( get_current_user_id(), $id_base ); + + // Update the user-meta. + // @codingStandardsIgnoreLine + return update_user_meta( get_current_user_id(), $id_base, $value ); + } + + /** + * Save the value of the setting, using the related API. + * + * @access protected + * @since 3.0.0 + * @param mixed $value The value to update. + * @return bool The result of saving the value. + */ + protected function update( $value ) { + return $this->set_root_value( $value ); + } + + /** + * Fetch the value of the setting. + * + * @access protected + * @since 3.0.0 + * @return mixed The value. + */ + public function value() { + return $this->get_root_value( $this->default ); + } +} diff --git a/functions/kirki/core/class-kirki-settings.php b/functions/kirki/core/class-kirki-settings.php new file mode 100644 index 0000000..3278384 --- /dev/null +++ b/functions/kirki/core/class-kirki-settings.php @@ -0,0 +1,148 @@ +wp_customize = $wp_customize; + + // Set the setting_types. + $this->set_setting_types(); + // Add the settings. + $this->add_settings( $args ); + + } + + /** + * Adds the settings for this field. + * If settings are defined as an array, then it goes through them + * and calls the add_setting method. + * If not an array, then it just calls add_setting + * + * @access private + * @param array $args The field definition as sanitized in Kirki_Field. + */ + final private function add_settings( $args = array() ) { + + // Get the classname we'll be using to create our setting(s). + $classname = false; + if ( isset( $args['option_type'] ) && array_key_exists( $args['option_type'], $this->setting_types ) ) { + $classname = $this->setting_types[ $args['option_type'] ]; + } + if ( ! isset( $args['type'] ) || ! array_key_exists( $args['type'], $this->setting_types ) ) { + $args['type'] = 'default'; + } + $classname = ! $classname ? $this->setting_types[ $args['type'] ] : $classname; + + // If settings are defined as an array, then we need to go through them + // and call add_setting for each one of them separately. + if ( isset( $args['settings'] ) && is_array( $args['settings'] ) ) { + + // Make sure defaults have been defined. + if ( ! isset( $args['default'] ) || ! is_array( $args['default'] ) ) { + $args['default'] = array(); + } + foreach ( $args['settings'] as $key => $value ) { + $default = ( isset( $defaults[ $key ] ) ) ? $defaults[ $key ] : ''; + $this->add_setting( $classname, $value, $default, $args['option_type'], $args['capability'], $args['transport'], $args['sanitize_callback'] ); + } + } + $this->add_setting( $classname, $args['settings'], $args['default'], $args['option_type'], $args['capability'], $args['transport'], $args['sanitize_callback'] ); + } + + /** + * This is where we're finally adding the setting to the Customizer. + * + * @access private + * @param string $classname The name of the class that will be used to create this setting. + * We're getting this from $this->setting_types. + * @param string $setting The setting-name. + * If settings is an array, then this method is called per-setting. + * @param string|array $default Default value for this setting. + * @param string $type The data type we're using. Valid options: theme_mod|option. + * @param string $capability @see https://codex.wordpress.org/Roles_and_Capabilities. + * @param string $transport Use refresh|postMessage. + * @param string|array $sanitize_callback A callable sanitization function or method. + */ + final private function add_setting( $classname, $setting, $default, $type, $capability, $transport, $sanitize_callback ) { + + $this->wp_customize->add_setting( + new $classname( $this->wp_customize, $setting, array( + 'default' => $default, + 'type' => $type, + 'capability' => $capability, + 'transport' => $transport, + 'sanitize_callback' => $sanitize_callback, + ) ) + ); + + } + + /** + * Sets the $this->setting_types property. + * Makes sure the kirki/setting_types filter is applied + * and that the defined classes actually exist. + * If a defined class does not exist, it is removed. + */ + final private function set_setting_types() { + + // Apply the kirki/setting_types filter. + $this->setting_types = apply_filters( + 'kirki/setting_types', array( + 'default' => 'WP_Customize_Setting', + 'repeater' => 'Kirki_Settings_Repeater_Setting', + 'user_meta' => 'Kirki_Setting_User_Meta', + 'site_option' => 'Kirki_Setting_Site_Option', + ) + ); + + // Make sure the defined classes actually exist. + foreach ( $this->setting_types as $key => $classname ) { + + if ( ! class_exists( $classname ) ) { + unset( $this->setting_types[ $key ] ); + } + } + } +} diff --git a/functions/kirki/core/class-kirki-toolkit.php b/functions/kirki/core/class-kirki-toolkit.php new file mode 100644 index 0000000..fc89156 --- /dev/null +++ b/functions/kirki/core/class-kirki-toolkit.php @@ -0,0 +1,45 @@ + $args ) { + if ( ! $is_plugin && isset( $args['Name'] ) && ( 'Kirki' === $args['Name'] || 'Kirki Toolkit' === $args['Name'] ) ) { + $is_plugin = true; + $_plugin = $plugin; + } + } + + // No need to proceed any further if Kirki wasn't found in the list of plugins. + if ( ! $is_plugin ) { + return false; + } + + // Make sure the is_plugins_loaded function is loaded. + include_once ABSPATH . 'wp-admin/includes/plugin.php'; + + // Extra logic in case the plugin is installed but not activated. + if ( $_plugin && ! is_plugin_active( $_plugin ) ) { + return false; + } + return $is_plugin; + } + + /** + * Build the variables. + * + * @static + * @access public + * @since 3.0.9 + * @return array Formatted as array( 'variable-name' => value ). + */ + public static function get_variables() { + + $variables = array(); + + // Loop through all fields. + foreach ( Kirki::$fields as $field ) { + + // Check if we have variables for this field. + if ( isset( $field['variables'] ) && $field['variables'] && ! empty( $field['variables'] ) ) { + + // Loop through the array of variables. + foreach ( $field['variables'] as $field_variable ) { + + // Is the variable ['name'] defined? If yes, then we can proceed. + if ( isset( $field_variable['name'] ) ) { + + // Sanitize the variable name. + $variable_name = esc_attr( $field_variable['name'] ); + + // Do we have a callback function defined? If not then set $variable_callback to false. + $variable_callback = ( isset( $field_variable['callback'] ) && is_callable( $field_variable['callback'] ) ) ? $field_variable['callback'] : false; + + // If we have a variable_callback defined then get the value of the option + // and run it through the callback function. + // If no callback is defined (false) then just get the value. + $variables[ $variable_name ] = Kirki_Values::get_value( $field['settings'] ); + if ( $variable_callback ) { + $variables[ $variable_name ] = call_user_func( $field_variable['callback'], Kirki_Values::get_value( $field['settings'] ) ); + } + } + } + } + } + + // Pass the variables through a filter ('kirki/variable') and return the array of variables. + return apply_filters( 'kirki/variable', $variables ); + + } + + /** + * HTTP Request injection. + * + * @access public + * @since 3.0.0 + * @param array $request The request params. + * @param string $url The request URL. + * @return array + */ + public function http_request( $request = array(), $url = '' ) { + // Early exit if installed as a plugin or not a request to wordpress.org, + // or finally if we don't have everything we need. + if ( + self::is_plugin() || + false === strpos( $url, 'wordpress.org' ) || ( + ! isset( $request['body'] ) || + ! isset( $request['body']['plugins'] ) || + ! isset( $request['body']['translations'] ) || + ! isset( $request['body']['locale'] ) || + ! isset( $request['body']['all'] ) + ) + ) { + return $request; + } + + $plugins = json_decode( $request['body']['plugins'], true ); + if ( ! isset( $plugins['plugins'] ) ) { + return $request; + } + $exists = false; + foreach ( $plugins['plugins'] as $plugin ) { + if ( isset( $plugin['Name'] ) && 'Kirki Toolkit' === $plugin['Name'] ) { + $exists = true; + } + } + // Inject data. + if ( ! $exists && defined( 'KIRKI_PLUGIN_FILE' ) ) { + $plugins['plugins']['kirki/kirki.php'] = get_plugin_data( KIRKI_PLUGIN_FILE ); + } + $request['body']['plugins'] = wp_json_encode( $plugins ); + return $request; + } + + /** + * Returns the $wp_version. + * + * @static + * @access public + * @since 3.0.12 + * @param string $context Use 'minor' or 'major'. + * @param boolean $only_numeric Set to true if you want to skip the alpha/beta etc parts. + * @return int|float|string Returns integer when getting the 'major' version. + * Returns float when getting the 'minor' version with $only_numeric set to true. + * Returns string when getting the 'minor' version with $only_numeric set to false. + */ + public static function get_wp_version( $context = 'minor', $only_numeric = true ) { + global $wp_version; + + // We only need the major version. + if ( 'major' === $context ) { + $version_parts = explode( '.', $wp_version ); + return ( $only_numeric ) ? absint( $version_parts[0] ) : $version_parts[0]; + } + + // If we got this far, we want the full monty. + if ( $only_numeric ) { + // Get the numeric part of the version without any beta, alpha etc parts. + if ( false !== strpos( $wp_version, '-' ) ) { + // We're on a dev version. + $version_parts = explode( '-', $wp_version ); + return floatval( $version_parts[0] ); + } + return floatval( $wp_version ); + } + return $wp_version; + } +} diff --git a/functions/kirki/core/class-kirki-values.php b/functions/kirki/core/class-kirki-values.php new file mode 100644 index 0000000..6f9d169 --- /dev/null +++ b/functions/kirki/core/class-kirki-values.php @@ -0,0 +1,158 @@ +get_config(); + self::$config[ $config_args['id'] ] = $config_args; + } + + /** + * Create a new panel. + * + * @static + * @access public + * @param string $id The ID for this panel. + * @param array $args The panel arguments. + */ + public static function add_panel( $id = '', $args = array() ) { + + $args['id'] = esc_attr( $id ); + $args['description'] = ( isset( $args['description'] ) ) ? esc_textarea( $args['description'] ) : ''; + $args['priority'] = ( isset( $args['priority'] ) ) ? esc_attr( $args['priority'] ) : 10; + $args['type'] = ( isset( $args['type'] ) ) ? $args['type'] : 'default'; + $args['type'] = 'kirki-' . $args['type']; + + self::$panels[ $args['id'] ] = $args; + } + + /** + * Remove a panel. + * + * @static + * @access public + * @since 3.0.17 + * @param string $id The ID for this panel. + */ + public static function remove_panel( $id = '' ) { + if ( ! in_array( $id, self::$panels_to_remove, true ) ) { + self::$panels_to_remove[] = $id; + } + } + + /** + * Create a new section. + * + * @static + * @access public + * @param string $id The ID for this section. + * @param array $args The section arguments. + */ + public static function add_section( $id, $args ) { + + $args['id'] = esc_attr( $id ); + $args['panel'] = ( isset( $args['panel'] ) ) ? esc_attr( $args['panel'] ) : ''; + $args['description'] = ( isset( $args['description'] ) ) ? esc_textarea( $args['description'] ) : ''; + $args['priority'] = ( isset( $args['priority'] ) ) ? esc_attr( $args['priority'] ) : 10; + $args['type'] = ( isset( $args['type'] ) ) ? $args['type'] : 'default'; + $args['type'] = 'kirki-' . $args['type']; + + self::$sections[ $args['id'] ] = $args; + } + + /** + * Remove a section. + * + * @static + * @access public + * @since 3.0.17 + * @param string $id The ID for this panel. + */ + public static function remove_section( $id = '' ) { + if ( ! in_array( $id, self::$sections_to_remove, true ) ) { + self::$sections_to_remove[] = $id; + } + } + + /** + * Create a new field. + * + * @static + * @access public + * @param string $config_id The configuration ID for this field. + * @param array $args The field arguments. + */ + public static function add_field( $config_id, $args ) { + + if ( doing_action( 'customize_register' ) ) { + _doing_it_wrong( __METHOD__, esc_attr__( 'Kirki fields should not be added on customize_register. Please add them directly, or on init.', 'blogrow' ), '3.0.10' ); + } + + // Early exit if 'type' is not defined. + if ( ! isset( $args['type'] ) ) { + return; + } + + $str = str_replace( array( '-', '_' ), ' ', $args['type'] ); + $classname = 'Kirki_Field_' . str_replace( ' ', '_', ucwords( $str ) ); + if ( class_exists( $classname ) ) { + new $classname( $config_id, $args ); + return; + } + if ( false !== strpos( $classname, 'Kirki_Field_Kirki_' ) ) { + $classname = str_replace( 'Kirki_Field_Kirki_', 'Kirki_Field_', $classname ); + if ( class_exists( $classname ) ) { + new $classname( $config_id, $args ); + return; + } + } + + new Kirki_Field( $config_id, $args ); + + } + + /** + * Remove a control. + * + * @static + * @access public + * @since 3.0.17 + * @param string $id The field ID. + */ + public static function remove_control( $id ) { + if ( ! in_array( $id, self::$controls_to_remove, true ) ) { + self::$controls_to_remove[] = $id; + } + } + + /** + * Gets a parameter for a config-id. + * + * @static + * @access public + * @since 3.0.10 + * @param string $id The config-ID. + * @param string $param The parameter we want. + * @return string + */ + public static function get_config_param( $id, $param ) { + + if ( ! isset( self::$config[ $id ] ) || ! isset( self::$config[ $id ][ $param ] ) ) { + return ''; + } + return self::$config[ $id ][ $param ]; + } +} diff --git a/functions/kirki/core/deprecated.php b/functions/kirki/core/deprecated.php new file mode 100644 index 0000000..6514049 --- /dev/null +++ b/functions/kirki/core/deprecated.php @@ -0,0 +1,86 @@ +toCSS( \'hex\' )' ); + return Kirki_Color::sanitize_hex( $color ); + } +} + +if ( ! function_exists( 'kirki_get_rgb' ) ) { + function kirki_get_rgb( $hex, $implode = false ) { + _deprecated_function( __FUNCTION__, '1.0.0', 'ariColor::newColor( $color )->toCSS( \'rgb\' )' ); + return Kirki_Color::get_rgb( $hex, $implode ); + } +} + +if ( ! function_exists( 'kirki_get_rgba' ) ) { + function kirki_get_rgba( $hex = '#fff', $opacity = 100 ) { + _deprecated_function( __FUNCTION__, '1.0.0', 'ariColor::newColor( $color )->toCSS( \'rgba\' )' ); + return Kirki_Color::get_rgba( $hex, $opacity ); + } +} + +if ( ! function_exists( 'kirki_get_brightness' ) ) { + function kirki_get_brightness( $hex ) { + _deprecated_function( __FUNCTION__, '1.0.0', 'ariColor::newColor( $color )->lightness' ); + return Kirki_Color::get_brightness( $hex ); + } +} + +if ( ! function_exists( 'Kirki' ) ) { + function Kirki() { + return kirki(); + } +} + +if ( ! class_exists( 'Kirki_Active_Callback' ) ) { + // Removed in https://github.com/aristath/kirki/pull/1682/files + class Kirki_Active_Callback { + public static function evaluate() { + _deprecated_function( __METHOD__, '3.0.17', null ); + return true; + } + private static function evaluate_requirement() { + _deprecated_function( __METHOD__, '3.0.17', null ); + return true; + } + public static function compare( $value1, $value2, $operator ) { + _deprecated_function( __METHOD__, '3.0.17', 'Kirki_Helper::compare_values' ); + return Kirki_Helper::compare_values( $value1, $value2, $operator ); + } + } +} diff --git a/functions/kirki/core/dynamic-css.php b/functions/kirki/core/dynamic-css.php new file mode 100644 index 0000000..fc277b8 --- /dev/null +++ b/functions/kirki/core/dynamic-css.php @@ -0,0 +1,41 @@ + $args ) { + if ( true === $args['disable_output'] ) { + continue; + } + + $styles = Kirki_Modules_CSS::loop_controls( $config_id ); + $styles = apply_filters( "kirki/{$config_id}/dynamic_css", $styles ); + + // Some people put weird stuff in their CSS, KSES tends to be greedy. + $styles = str_replace( '<=', '<=', $styles ); + + $styles = wp_kses_post( $styles ); + + // @codingStandardsIgnoreStart + + // Why both KSES and strip_tags? Because we just added some '>'. + // kses replaces lone '>' with >. + echo strip_tags( str_replace( '>', '>', $styles ) ); + // @codingStandardsIgnoreStop +} diff --git a/functions/kirki/field/class-kirki-field-background.php b/functions/kirki/field/class-kirki-field-background.php new file mode 100644 index 0000000..dc09742 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-background.php @@ -0,0 +1,122 @@ +type = 'kirki-background'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * Sanitizes typography controls + * + * @since 2.2.0 + * @param array $value The value. + * @return array + */ + public function sanitize( $value ) { + + if ( ! is_array( $value ) ) { + return array(); + } + return array( + 'background-color' => ( isset( $value['background-color'] ) ) ? esc_attr( $value['background-color'] ) : '', + 'background-image' => ( isset( $value['background-image'] ) ) ? esc_url_raw( $value['background-image'] ) : '', + 'background-repeat' => ( isset( $value['background-repeat'] ) ) ? esc_attr( $value['background-repeat'] ) : '', + 'background-position' => ( isset( $value['background-position'] ) ) ? esc_attr( $value['background-position'] ) : '', + 'background-size' => ( isset( $value['background-size'] ) ) ? esc_attr( $value['background-size'] ) : '', + 'background-attachment' => ( isset( $value['background-attachment'] ) ) ? esc_attr( $value['background-attachment'] ) : '', + ); + } + + /** + * Sets the $js_vars + * + * @access protected + */ + protected function set_js_vars() { + + // Typecast to array. + $this->js_vars = (array) $this->js_vars; + + // Check if transport is set to auto. + // If not, then skip the auto-calculations and exit early. + if ( 'auto' !== $this->transport ) { + return; + } + + // Set transport to refresh initially. + // Serves as a fallback in case we failt to auto-calculate js_vars. + $this->transport = 'refresh'; + + $js_vars = array(); + + // Try to auto-generate js_vars. + // First we need to check if js_vars are empty, and that output is not empty. + if ( empty( $this->js_vars ) && ! empty( $this->output ) ) { + + // Start going through each item in the $output array. + foreach ( $this->output as $output ) { + + // If 'element' is not defined, skip this. + if ( ! isset( $output['element'] ) ) { + continue; + } + if ( is_array( $output['element'] ) ) { + $output['element'] = implode( ',', $output['element'] ); + } + + // If there's a sanitize_callback defined, skip this. + if ( isset( $output['sanitize_callback'] ) && ! empty( $output['sanitize_callback'] ) ) { + continue; + } + + // If we got this far, it's safe to add this. + $js_vars[] = $output; + } + + // Did we manage to get all the items from 'output'? + // If not, then we're missing something so don't add this. + if ( count( $js_vars ) !== count( $this->output ) ) { + return; + } + $this->js_vars = $js_vars; + $this->transport = 'postMessage'; + + } + } +} diff --git a/functions/kirki/field/class-kirki-field-checkbox.php b/functions/kirki/field/class-kirki-field-checkbox.php new file mode 100644 index 0000000..3ed90a0 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-checkbox.php @@ -0,0 +1,68 @@ +type = 'checkbox'; + + } + + /** + * Sets the $sanitize_callback. + * + * @access protected + */ + protected function set_sanitize_callback() { + + if ( ! $this->sanitize_callback ) { + $this->sanitize_callback = array( $this, 'sanitize' ); + } + + } + + /** + * Sanitizes checkbox values. + * + * @access public + * @param boolean|integer|string|null $value The checkbox value. + * @return bool + */ + public function sanitize( $value = null ) { + + if ( '0' === $value || 'false' === $value ) { + return false; + } + + return (bool) $value; + + } + + /** + * Sets the default value. + * + * @access protected + */ + protected function set_default() { + + $this->default = (bool) ( 1 === $this->default || '1' === $this->default || true === $this->default || 'true' === $this->default || 'on' === $this->default ); + + } +} diff --git a/functions/kirki/field/class-kirki-field-code.php b/functions/kirki/field/class-kirki-field-code.php new file mode 100644 index 0000000..76bc3da --- /dev/null +++ b/functions/kirki/field/class-kirki-field-code.php @@ -0,0 +1,111 @@ +type = 'kirki-code'; + + } + + /** + * Sets the $choices + * + * @access protected + */ + protected function set_choices() { + + // Make sure we have some defaults in case none are defined. + $defaults = array( + 'language' => 'css', + 'theme' => 'elegant', + ); + $this->choices = wp_parse_args( $this->choices, $defaults ); + + // Make sure the choices are defined and set as an array. + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + + // An array of valid languages. + $valid_languages = array( + 'coffescript', + 'css', + 'haml', + 'htmlembedded', + 'htmlmixed', + 'javascript', + 'markdown', + 'php', + 'sass', + 'smarty', + 'sql', + 'stylus', + 'textile', + 'twig', + 'xml', + 'yaml', + ); + // Make sure the defined language exists. + // If not, fallback to CSS. + if ( ! in_array( $this->choices['language'], $valid_languages, true ) ) { + $this->choices['language'] = 'css'; + } + // Hack for 'html' mode. + if ( 'html' === $this->choices['language'] ) { + $this->choices['language'] = 'htmlmixed'; + } + + // Set the theme. + $valid_themes = array( + 'kirki-light' => 'elegant', + 'light' => 'elegant', + 'elegant' => 'elegant', + 'kirki-dark' => 'monokai', + 'dark' => 'monokai', + 'monokai' => 'monokai', + 'material' => 'material', + ); + if ( isset( $valid_themes[ $this->choices['theme'] ] ) ) { + $this->choices['theme'] = $valid_themes[ $this->choices['theme'] ]; + } else { + $this->choices['theme'] = 'elegant'; + } + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + // Code fields must NOT be filtered. Their values usually contain CSS/JS. + // It is the responsibility of the theme/plugin that registers this field + // to properly apply any necessary filtering. + $this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'unfiltered' ); + + } +} diff --git a/functions/kirki/field/class-kirki-field-color-alpha.php b/functions/kirki/field/class-kirki-field-color-alpha.php new file mode 100644 index 0000000..48c4492 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-color-alpha.php @@ -0,0 +1,30 @@ +choices ) ) { + $this->choices = array(); + } + $this->choices['alpha'] = true; + + } +} diff --git a/functions/kirki/field/class-kirki-field-color-palette.php b/functions/kirki/field/class-kirki-field-color-palette.php new file mode 100644 index 0000000..dc8c6d2 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-color-palette.php @@ -0,0 +1,27 @@ +type = 'kirki-color-palette'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-color.php b/functions/kirki/field/class-kirki-field-color.php new file mode 100644 index 0000000..ae7ed65 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-color.php @@ -0,0 +1,89 @@ +type = 'kirki-color'; + + } + + /** + * Sets the $choices + * + * @access protected + */ + protected function set_choices() { + + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + if ( true === $this->alpha ) { + _doing_it_wrong( 'Kirki::add_field', esc_attr__( 'Do not use "alpha" as an argument in color controls. Use "choices[alpha]" instead.', 'blogrow' ), '3.0.10' ); + $this->choices['alpha'] = true; + } + if ( ! isset( $this->choices['alpha'] ) || true !== $this->choices['alpha'] ) { + $this->choices['alpha'] = true; + if ( property_exists( $this, 'default' ) && ! empty( $this->default ) && false === strpos( 'rgba', $this->default ) ) { + $this->choices['alpha'] = false; + } + } + + if ( ( ! isset( $this->choices['mode'] ) ) || ( 'hex' !== $this->choices['mode'] || 'hue' !== $this->choices['mode'] ) ) { + $this->choices['mode'] = 'hex'; + } + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + if ( 'hue' === $this->mode ) { + $this->sanitize_callback = 'absint'; + return; + } + $this->sanitize_callback = array( 'Kirki_Sanitize_Values', 'color' ); + + } +} diff --git a/functions/kirki/field/class-kirki-field-custom.php b/functions/kirki/field/class-kirki-field-custom.php new file mode 100644 index 0000000..40b7c0c --- /dev/null +++ b/functions/kirki/field/class-kirki-field-custom.php @@ -0,0 +1,45 @@ +type = 'kirki-custom'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + // Custom fields don't actually save any value. + // just use __return_true. + $this->sanitize_callback = '__return_true'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-dashicons.php b/functions/kirki/field/class-kirki-field-dashicons.php new file mode 100644 index 0000000..829d966 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-dashicons.php @@ -0,0 +1,42 @@ +type = 'kirki-dashicons'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_attr'; + } +} diff --git a/functions/kirki/field/class-kirki-field-date.php b/functions/kirki/field/class-kirki-field-date.php new file mode 100644 index 0000000..33cf01a --- /dev/null +++ b/functions/kirki/field/class-kirki-field-date.php @@ -0,0 +1,43 @@ +type = 'kirki-date'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_textarea'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-dimension.php b/functions/kirki/field/class-kirki-field-dimension.php new file mode 100644 index 0000000..eea45e2 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-dimension.php @@ -0,0 +1,38 @@ +type = 'kirki-dimension'; + + } + + /** + * Sanitizes the value. + * + * @access public + * @param string $value The value. + * @return string + */ + public function sanitize( $value ) { + return Kirki_Sanitize_Values::css_dimension( $value ); + } +} diff --git a/functions/kirki/field/class-kirki-field-dimensions.php b/functions/kirki/field/class-kirki-field-dimensions.php new file mode 100644 index 0000000..28fadaf --- /dev/null +++ b/functions/kirki/field/class-kirki-field-dimensions.php @@ -0,0 +1,76 @@ +type = 'kirki-dimensions'; + + } + + /** + * Sets the $sanitize_callback. + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * Sanitizes the value. + * + * @access public + * @param array $value The value. + * @return array + */ + public function sanitize( $value ) { + + // Sanitize each sub-value separately. + foreach ( $value as $key => $sub_value ) { + $value[ $key ] = Kirki_Sanitize_Values::css_dimension( $sub_value ); + } + return $value; + + } + + /** + * Set the choices. + * Adds a pseudo-element "controls" that helps with the JS API. + * + * @access protected + */ + protected function set_choices() { + + $this->choices['controls'] = array(); + if ( is_array( $this->default ) ) { + foreach ( $this->default as $key => $value ) { + $this->choices['controls'][ $key ] = true; + } + } + } +} diff --git a/functions/kirki/field/class-kirki-field-editor.php b/functions/kirki/field/class-kirki-field-editor.php new file mode 100644 index 0000000..b62185f --- /dev/null +++ b/functions/kirki/field/class-kirki-field-editor.php @@ -0,0 +1,54 @@ += 0 ) { + $this->type = 'kirki-editor'; + return; + } + // Fallback for older WordPress versions. + $this->type = 'kirki-generic'; + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + $this->choices['element'] = 'textarea'; + $this->choices['rows'] = '5'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'wp_kses_post'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-fontawesome.php b/functions/kirki/field/class-kirki-field-fontawesome.php new file mode 100644 index 0000000..06b0e75 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-fontawesome.php @@ -0,0 +1,43 @@ +type = 'kirki-fontawesome'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_attr'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-generic.php b/functions/kirki/field/class-kirki-field-generic.php new file mode 100644 index 0000000..9a18a24 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-generic.php @@ -0,0 +1,15 @@ +type = 'kirki-image'; + + } + + /** + * Set the choices. + * Adds a pseudo-element "controls" that helps with the JS API. + * + * @access protected + */ + protected function set_choices() { + + if ( ! is_array( $this->choices ) ) { + $this->choices = (array) $this->choices; + } + if ( ! isset( $this->choices['save_as'] ) ) { + $this->choices['save_as'] = 'url'; + } + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * The sanitize method that will be used as a falback + * + * @param string|array $value The control's value. + */ + public function sanitize( $value ) { + + if ( isset( $this->choices['save_as'] ) && 'array' === $this->choices['save_as'] ) { + return array( + 'id' => ( isset( $value['id'] ) && '' !== $value['id'] ) ? (int) $value['id'] : '', + 'url' => ( isset( $value['url'] ) && '' !== $value['url'] ) ? esc_url_raw( $value['url'] ) : '', + 'width' => ( isset( $value['width'] ) && '' !== $value['width'] ) ? (int) $value['width'] : '', + 'height' => ( isset( $value['height'] ) && '' !== $value['height'] ) ? (int) $value['height'] : '', + ); + } + if ( isset( $this->choices['save_as'] ) && 'id' === $this->choices['save_as'] ) { + return absint( $value ); + } + if ( is_string( $value ) ) { + return esc_url_raw( $value ); + } + return $value; + } +} diff --git a/functions/kirki/field/class-kirki-field-kirki-generic.php b/functions/kirki/field/class-kirki-field-kirki-generic.php new file mode 100644 index 0000000..f897832 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-kirki-generic.php @@ -0,0 +1,60 @@ +type = 'kirki-generic'; + + } + + + /** + * Sets the $choices + * + * @access protected + */ + protected function set_choices() { + + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + if ( ! isset( $this->choices['element'] ) ) { + $this->choices['element'] = 'input'; + } + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'wp_kses_post'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-link.php b/functions/kirki/field/class-kirki-field-link.php new file mode 100644 index 0000000..6b860a4 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-link.php @@ -0,0 +1,15 @@ +type = 'kirki-multicheck'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * The sanitize method that will be used as a falback + * + * @param string|array $value The control's value. + */ + public function sanitize( $value ) { + + $value = ( ! is_array( $value ) ) ? explode( ',', $value ) : $value; + return ( ! empty( $value ) ) ? array_map( 'sanitize_text_field', $value ) : array(); + + } +} diff --git a/functions/kirki/field/class-kirki-field-multicolor.php b/functions/kirki/field/class-kirki-field-multicolor.php new file mode 100644 index 0000000..fc16eba --- /dev/null +++ b/functions/kirki/field/class-kirki-field-multicolor.php @@ -0,0 +1,69 @@ +type = 'kirki-multicolor'; + + } + + /** + * Sets the $choices + * + * @access protected + */ + protected function set_choices() { + + // Make sure choices are defined as an array. + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * The method that will be used as a `sanitize_callback`. + * + * @param array $value The value to be sanitized. + * @return array The value. + */ + public function sanitize( $value ) { + + return $value; + + } +} diff --git a/functions/kirki/field/class-kirki-field-number.php b/functions/kirki/field/class-kirki-field-number.php new file mode 100644 index 0000000..126886d --- /dev/null +++ b/functions/kirki/field/class-kirki-field-number.php @@ -0,0 +1,85 @@ +type = 'kirki-number'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * Sets the $choices + * + * @access protected + */ + protected function set_choices() { + + $this->choices = wp_parse_args( + $this->choices, + array( + 'min' => -999999999, + 'max' => 999999999, + 'step' => 1, + ) + ); + // Make sure min, max & step are all numeric. + $this->choices['min'] = filter_var( $this->choices['min'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + $this->choices['max'] = filter_var( $this->choices['max'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + $this->choices['step'] = filter_var( $this->choices['step'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + } + + /** + * Sanitizes numeric values. + * + * @access public + * @param integer|string $value The checkbox value. + * @return bool + */ + public function sanitize( $value = 0 ) { + + $this->set_choices(); + + $value = filter_var( $value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + + // Minimum & maximum value limits. + if ( $value < $this->choices['min'] || $value > $this->choices['max'] ) { + return max( min( $value, $this->choices['max'] ), $this->choices['min'] ); + } + + // Only multiple of steps. + $steps = ( $value - $this->choices['min'] ) / $this->choices['step']; + if ( ! is_int( $steps ) ) { + $value = $this->choices['min'] + ( round( $steps ) * $this->choices['step'] ); + } + return $value; + } +} diff --git a/functions/kirki/field/class-kirki-field-palette.php b/functions/kirki/field/class-kirki-field-palette.php new file mode 100644 index 0000000..6874335 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-palette.php @@ -0,0 +1,27 @@ +type = 'kirki-palette'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-preset.php b/functions/kirki/field/class-kirki-field-preset.php new file mode 100644 index 0000000..723279d --- /dev/null +++ b/functions/kirki/field/class-kirki-field-preset.php @@ -0,0 +1,38 @@ +type = 'kirki-preset'; + + } + + /** + * Sets the $multiple + * + * @access protected + */ + protected function set_multiple() { + + $this->multiple = 1; + + } +} diff --git a/functions/kirki/field/class-kirki-field-radio-buttonset.php b/functions/kirki/field/class-kirki-field-radio-buttonset.php new file mode 100644 index 0000000..926b013 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-radio-buttonset.php @@ -0,0 +1,27 @@ +type = 'kirki-radio-buttonset'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-radio-image.php b/functions/kirki/field/class-kirki-field-radio-image.php new file mode 100644 index 0000000..6339426 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-radio-image.php @@ -0,0 +1,27 @@ +type = 'kirki-radio-image'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-radio.php b/functions/kirki/field/class-kirki-field-radio.php new file mode 100644 index 0000000..b69b82c --- /dev/null +++ b/functions/kirki/field/class-kirki-field-radio.php @@ -0,0 +1,58 @@ +type = 'kirki-radio'; + // Tweaks for backwards-compatibility: + // Prior to version 0.8 radio-buttonset & radio-image were part of the radio control. + if ( in_array( $this->mode, array( 'buttonset', 'image' ), true ) ) { + /* translators: %1$s represents the field ID where the error occurs. %2%s is buttonset/image. */ + _doing_it_wrong( __METHOD__, sprintf( esc_attr__( 'Error in field %1$s. The "mode" argument has been deprecated since Kirki v0.8. Use the "radio-%2$s" type instead.', 'blogrow' ), esc_attr( $this->settings ), esc_attr( $this->mode ) ), '3.0.10' ); + $this->type = 'radio-' . $this->mode; + } + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_attr'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-repeater.php b/functions/kirki/field/class-kirki-field-repeater.php new file mode 100644 index 0000000..2a40be1 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-repeater.php @@ -0,0 +1,175 @@ +type = 'repeater'; + + } + + /** + * Sets the $transport + * + * @access protected + */ + protected function set_transport() { + + // Force using refresh mode. + // Currently the repeater control does not support postMessage. + $this->transport = 'refresh'; + + } + + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * The sanitize method that will be used as a falback + * + * @param string|array $value The control's value. + */ + public function sanitize( $value ) { + + // is the value formatted as a string? + if ( is_string( $value ) ) { + $value = rawurldecode( $value ); + $value = json_decode( $value, true ); + } + + // Nothing to sanitize if we don't have fields. + if ( empty( $this->fields ) ) { + return $value; + } + + foreach ( $value as $row_id => $row_value ) { + + // Make sure the row is formatted as an array. + if ( ! is_array( $row_value ) ) { + $value[ $row_id ] = array(); + continue; + } + // Start parsing sub-fields in rows. + foreach ( $row_value as $subfield_id => $subfield_value ) { + // Make sure this is a valid subfield. + // If it's not, then unset it. + if ( ! isset( $this->fields[ $subfield_id ] ) ) { + unset( $value[ $row_id ][ $subfield_id ] ); + } + // Get the subfield-type. + if ( ! isset( $this->fields[ $subfield_id ]['type'] ) ) { + continue; + } + $subfield_type = $this->fields[ $subfield_id ]['type']; + + // Allow using a sanitize-callback on a per-field basis. + if ( isset( $this->fields[ $subfield_id ]['sanitize_callback'] ) ) { + + $subfield_value = call_user_func( $this->fields[ $subfield_id ]['sanitize_callback'], $subfield_value ); + + } else { + + switch ( $subfield_type ) { + case 'image': + case 'cropped_image': + case 'upload': + if ( ! is_numeric( $subfield_value ) && is_string( $subfield_value ) ) { + $subfield_value = esc_url_raw( $subfield_value ); + } + break; + case 'dropdown-pages': + $subfield_value = (int) $subfield_value; + break; + case 'color': + // Instantiate the object. + $color_obj = ariColor::newColor( $subfield_value ); + $$subfield_value = $color_obj->toCSS( $color_obj->mode ); + break; + case 'text': + $subfield_value = sanitize_text_field( $subfield_value ); + break; + case 'url': + case 'link': + $subfield_value = esc_url_raw( $subfield_value ); + break; + case 'email': + $subfield_value = filter_var( $subfield_value, FILTER_SANITIZE_EMAIL ); + break; + case 'tel': + $subfield_value = esc_attr( $subfield_value ); + break; + case 'checkbox': + $subfield_value = (string) intval( $subfield_value ); + break; + case 'select': + if ( isset( $this->fields[ $subfield_id ]['multiple'] ) ) { + if ( true === $this->fields[ $subfield_id ]['multiple'] ) { + $multiple = 2; + } + $multiple = (int) $this->fields[ $subfield_id ]['multiple']; + if ( 1 < $multiple ) { + $subfield_value = (array) $subfield_value; + foreach ( $subfield_value as $sub_subfield_key => $sub_subfield_value ) { + $subfield_value[ $sub_subfield_key ] = esc_attr( $sub_subfield_value ); + } + } else { + $subfield_value = esc_attr( $subfield_value ); + } + } + break; + case 'radio': + case 'radio-image': + $subfield_value = esc_attr( $subfield_value ); + break; + case 'textarea': + $subfield_value = html_entity_decode( wp_kses_post( $subfield_value ) ); + + } // End switch(). + } // End if(). + $value[ $row_id ][ $subfield_id ] = $subfield_value; + } // End foreach(). + } // End foreach(). + + return $value; + } +} diff --git a/functions/kirki/field/class-kirki-field-select.php b/functions/kirki/field/class-kirki-field-select.php new file mode 100644 index 0000000..785f208 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-select.php @@ -0,0 +1,101 @@ + 1, then the maximum number of selectable options + * is the number defined here. + * + * @access protected + * @var integer + */ + protected $multiple = 1; + + /** + * Sets the control type. + * + * @access protected + */ + protected function set_type() { + + $this->type = 'kirki-select'; + + } + + /** + * Sets the $multiple + * + * @access protected + */ + protected function set_multiple() { + + $this->multiple = absint( $this->multiple ); + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * Sanitizes select control values. + * + * @since 2.2.8 + * @access public + * @param array $value The value. + * @return string|array + */ + public function sanitize( $value ) { + + if ( is_array( $value ) ) { + foreach ( $value as $key => $subvalue ) { + if ( '' !== $subvalue || isset( $this->choices[''] ) ) { + $key = sanitize_key( $key ); + $value[ $key ] = esc_attr( $subvalue ); + } + } + return $value; + } + return esc_attr( $value ); + + } + + /** + * Sets the default value. + * + * @access protected + * @since 3.0.0 + */ + protected function set_default() { + + if ( 1 < $this->multiple && ! is_array( $this->default ) ) { + $this->default = array( $this->default ); + } + } +} diff --git a/functions/kirki/field/class-kirki-field-select2-multiple.php b/functions/kirki/field/class-kirki-field-select2-multiple.php new file mode 100644 index 0000000..861820c --- /dev/null +++ b/functions/kirki/field/class-kirki-field-select2-multiple.php @@ -0,0 +1,29 @@ +multiple = 999; + + } +} diff --git a/functions/kirki/field/class-kirki-field-select2.php b/functions/kirki/field/class-kirki-field-select2.php new file mode 100644 index 0000000..e3a44e4 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-select2.php @@ -0,0 +1,17 @@ +type = 'kirki-slider'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-sortable.php b/functions/kirki/field/class-kirki-field-sortable.php new file mode 100644 index 0000000..38ff84e --- /dev/null +++ b/functions/kirki/field/class-kirki-field-sortable.php @@ -0,0 +1,62 @@ +type = 'kirki-sortable'; + + } + + /** + * Sets the $sanitize_callback. + * + * @access protected + */ + protected function set_sanitize_callback() { + + $this->sanitize_callback = array( $this, 'sanitize' ); + + } + + /** + * Sanitizes sortable values. + * + * @access public + * @param array $value The checkbox value. + * @return array + */ + public function sanitize( $value = array() ) { + + if ( is_string( $value ) || is_numeric( $value ) ) { + return array( + esc_attr( $value ), + ); + } + $sanitized_value = array(); + foreach ( $value as $sub_value ) { + if ( isset( $this->choices[ $sub_value ] ) ) { + $sanitized_value[] = esc_attr( $sub_value ); + } + } + return $sanitized_value; + + } +} diff --git a/functions/kirki/field/class-kirki-field-spacing.php b/functions/kirki/field/class-kirki-field-spacing.php new file mode 100644 index 0000000..086d0f2 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-spacing.php @@ -0,0 +1,87 @@ +type = 'kirki-dimensions'; + + } + + /** + * Sets the $sanitize_callback. + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( $this, 'sanitize_value' ); + + } + + /** + * Sanitizes the value. + * + * @access public + * @param array $value The value. + * @return array + */ + public function sanitize_value( $value ) { + + // Sanitize each sub-value separately. + foreach ( $value as $key => $sub_value ) { + $value[ $key ] = Kirki_Sanitize_Values::css_dimension( $sub_value ); + } + return $value; + + } + + /** + * Set the choices. + * Adds a pseudo-element "controls" that helps with the JS API. + * + * @access protected + */ + protected function set_choices() { + + $default_args = array( + 'controls' => array( + 'top' => ( isset( $this->default['top'] ) ), + 'bottom' => ( isset( $this->default['top'] ) ), + 'left' => ( isset( $this->default['top'] ) ), + 'right' => ( isset( $this->default['top'] ) ), + ), + 'labels' => array( + 'top' => esc_attr__( 'Top', 'blogrow' ), + 'bottom' => esc_attr__( 'Bottom', 'blogrow' ), + 'left' => esc_attr__( 'Left', 'blogrow' ), + 'right' => esc_attr__( 'Right', 'blogrow' ), + ), + ); + + $this->choices = wp_parse_args( $this->choices, $default_args ); + + } +} diff --git a/functions/kirki/field/class-kirki-field-switch.php b/functions/kirki/field/class-kirki-field-switch.php new file mode 100644 index 0000000..6cda10f --- /dev/null +++ b/functions/kirki/field/class-kirki-field-switch.php @@ -0,0 +1,48 @@ +type = 'kirki-switch'; + + } + + /** + * Sets the control choices. + * + * @access protected + */ + protected function set_choices() { + + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + + $this->choices = wp_parse_args( + $this->choices, + array( + 'on' => esc_attr__( 'On', 'blogrow' ), + 'off' => esc_attr__( 'Off', 'blogrow' ), + 'round' => false, + ) + ); + } +} diff --git a/functions/kirki/field/class-kirki-field-text.php b/functions/kirki/field/class-kirki-field-text.php new file mode 100644 index 0000000..6f030a2 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-text.php @@ -0,0 +1,47 @@ +choices ) ) { + $this->choices = array(); + } + $this->choices['element'] = 'input'; + $this->choices['type'] = 'text'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_textarea'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-textarea.php b/functions/kirki/field/class-kirki-field-textarea.php new file mode 100644 index 0000000..398d75a --- /dev/null +++ b/functions/kirki/field/class-kirki-field-textarea.php @@ -0,0 +1,29 @@ +choices = array( + 'element' => 'textarea', + 'rows' => 5, + ); + } +} diff --git a/functions/kirki/field/class-kirki-field-toggle.php b/functions/kirki/field/class-kirki-field-toggle.php new file mode 100644 index 0000000..545ec3f --- /dev/null +++ b/functions/kirki/field/class-kirki-field-toggle.php @@ -0,0 +1,27 @@ +type = 'kirki-toggle'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-typography.php b/functions/kirki/field/class-kirki-field-typography.php new file mode 100644 index 0000000..991c7a2 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-typography.php @@ -0,0 +1,245 @@ +type = 'kirki-typography'; + + } + + /** + * The class constructor. + * Parses and sanitizes all field arguments. + * Then it adds the field to Kirki::$fields. + * + * @access public + * @param string $config_id The ID of the config we want to use. + * Defaults to "global". + * Configs are handled by the Kirki_Config class. + * @param array $args The arguments of the field. + */ + public function __construct( $config_id = 'global', $args = array() ) { + parent::__construct( $config_id, $args ); + $this->set_default(); + } + + /** + * Sets the default value. + * + * @access protected + */ + protected function set_default() { + + // Accomodate the use of font-weight and convert to variant. + if ( isset( $this->default['font-weight'] ) ) { + $this->default['variant'] = ( 'regular' === $this->default['font-weight'] ) ? 400 : (string) intval( $this->default['font-weight'] ); + } + + // Make sure letter-spacing has units. + if ( isset( $this->default['letter-spacing'] ) && is_numeric( $this->default['letter-spacing'] ) && $this->default['letter-spacing'] ) { + $this->default['letter-spacing'] .= 'px'; + } + + // Make sure we use "subsets" instead of "subset". + if ( isset( $this->default['subset'] ) && ! empty( $this->default['subset'] ) && ( ! isset( $this->default['subsets'] ) || empty( $this->default['subsets'] ) ) ) { + $this->default['subsets'] = $this->default['subset']; + } + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = array( __CLASS__, 'sanitize' ); + + } + + /** + * Sets the $js_vars + * + * @access protected + */ + protected function set_js_vars() { + + if ( ! is_array( $this->js_vars ) ) { + $this->js_vars = array(); + } + + // Check if transport is set to auto. + // If not, then skip the auto-calculations and exit early. + if ( 'auto' !== $this->transport ) { + return; + } + + // Set transport to refresh initially. + // Serves as a fallback in case we failt to auto-calculate js_vars. + $this->transport = 'refresh'; + + $js_vars = array(); + + // Try to auto-generate js_vars. + // First we need to check if js_vars are empty, and that output is not empty. + if ( ! empty( $this->output ) ) { + + // Start going through each item in the $output array. + foreach ( $this->output as $output ) { + + // If 'element' or 'property' are not defined, skip this. + if ( ! isset( $output['element'] ) ) { + continue; + } + if ( is_array( $output['element'] ) ) { + $output['element'] = implode( ',', $output['element'] ); + } + + // If we got this far, it's safe to add this. + $js_vars[] = $output; + } + + // Did we manage to get all the items from 'output'? + // If not, then we're missing something so don't add this. + if ( count( $js_vars ) !== count( $this->output ) ) { + return; + } + $this->js_vars = $js_vars; + $this->transport = 'postMessage'; + + } + + } + + /** + * Sanitizes typography controls + * + * @static + * @since 2.2.0 + * @param array $value The value. + * @return array + */ + public static function sanitize( $value ) { + + if ( ! is_array( $value ) ) { + return array(); + } + + foreach ( $value as $key => $val ) { + switch ( $key ) { + case 'font-family': + $value['font-family'] = esc_attr( $val ); + break; + case 'font-weight': + if ( isset( $value['variant'] ) ) { + break; + } + $value['variant'] = $val; + if ( isset( $value['font-style'] ) && 'italic' === $value['font-style'] ) { + $value['variant'] = ( '400' !== $val || 400 !== $val ) ? $value['variant'] . 'italic' : 'italic'; + } + break; + case 'variant': + // Use 'regular' instead of 400 for font-variant. + $value['variant'] = ( 400 === $val || '400' === $val ) ? 'regular' : $val; + // Get font-weight from variant. + $value['font-weight'] = filter_var( $value['variant'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); + $value['font-weight'] = ( 'regular' === $value['variant'] || 'italic' === $value['variant'] ) ? 400 : absint( $value['font-weight'] ); + // Get font-style from variant. + if ( ! isset( $value['font-style'] ) ) { + $value['font-style'] = ( false === strpos( $value['variant'], 'italic' ) ) ? 'normal' : 'italic'; + } + break; + case 'subset': + // Make sure the saved value is "subsets" (plural) and not "subset". + // This is for compatibility with older versions. + if ( ! empty( $value['subset'] ) && ! isset( $value['subsets'] ) || empty( $value['subset'] ) ) { + $value['subsets'] = $value['subset']; + } + unset( $value['subset'] ); + // Make sure we're using a valid subset. + $valid_subsets = Kirki_Fonts::get_google_font_subsets(); + $subsets_ok = array(); + $value['subsets'] = (array) $value['subsets']; + foreach ( $value['subsets'] as $subset ) { + if ( array_key_exists( $subset, $valid_subsets ) ) { + $subsets_ok[] = $subset; + } + } + $value['subsets'] = $subsets_ok; + break; + case 'font-size': + case 'letter-spacing': + case 'word-spacing': + case 'line-height': + $value[ $key ] = Kirki_Sanitize_Values::css_dimension( $val ); + break; + case 'text-align': + if ( ! in_array( $val, array( 'inherit', 'left', 'center', 'right', 'justify' ), true ) ) { + $value['text-align'] = 'inherit'; + } + break; + case 'text-transform': + if ( ! in_array( $val, array( 'none', 'capitalize', 'uppercase', 'lowercase', 'initial', 'inherit' ), true ) ) { + $value['text-transform'] = 'none'; + } + break; + case 'text-decoration': + if ( ! in_array( $val, array( 'none', 'underline', 'overline', 'line-through', 'initial', 'inherit' ), true ) ) { + $value['text-transform'] = 'none'; + } + break; + case 'color': + $value['color'] = ariColor::newColor( $val )->toCSS( 'hex' ); + break; + } // End switch(). + } // End foreach(). + + return $value; + } + + /** + * Sets the $choices + * + * @access protected + * @since 3.0.0 + */ + protected function set_choices() { + + if ( ! is_array( $this->choices ) ) { + $this->choices = array(); + } + $this->choices = wp_parse_args( + $this->choices, array( + 'variant' => array(), + 'fonts' => array( + 'standard' => array(), + 'google' => array(), + ), + ) + ); + } +} diff --git a/functions/kirki/field/class-kirki-field-upload.php b/functions/kirki/field/class-kirki-field-upload.php new file mode 100644 index 0000000..ef7a590 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-upload.php @@ -0,0 +1,43 @@ +type = 'upload'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_url_raw'; + + } +} diff --git a/functions/kirki/field/class-kirki-field-url.php b/functions/kirki/field/class-kirki-field-url.php new file mode 100644 index 0000000..a6dcd76 --- /dev/null +++ b/functions/kirki/field/class-kirki-field-url.php @@ -0,0 +1,47 @@ +choices ) ) { + $this->choices = array(); + } + $this->choices['element'] = 'input'; + $this->choices['type'] = 'text'; + + } + + /** + * Sets the $sanitize_callback + * + * @access protected + */ + protected function set_sanitize_callback() { + + // If a custom sanitize_callback has been defined, + // then we don't need to proceed any further. + if ( ! empty( $this->sanitize_callback ) ) { + return; + } + $this->sanitize_callback = 'esc_url_raw'; + + } +} diff --git a/functions/kirki/kirki.php b/functions/kirki/kirki.php new file mode 100644 index 0000000..72a3ef1 --- /dev/null +++ b/functions/kirki/kirki.php @@ -0,0 +1,106 @@ +modules = new Kirki_Modules(); + +Kirki::$url = plugins_url( '', __FILE__ ); + +// Instantiate classes. +new Kirki(); +new Kirki_L10n(); + +// Include deprecated functions & methods. +include_once wp_normalize_path( dirname( __FILE__ ) . '/core/deprecated.php' ); + +// Include the ariColor library. +include_once wp_normalize_path( dirname( __FILE__ ) . '/lib/class-aricolor.php' ); + +// Add an empty config for global fields. +Kirki::add_config( '' ); + +$custom_config_path = dirname( __FILE__ ) . '/custom-config.php'; +$custom_config_path = wp_normalize_path( $custom_config_path ); +if ( file_exists( $custom_config_path ) ) { + include_once $custom_config_path; +} + +// Add upgrade notifications. +include_once wp_normalize_path( dirname( __FILE__ ) . '/upgrade-notifications.php' ); + +/** + * To enable tests, add this line to your wp-config.php file (or anywhere alse): + * define( 'KIRKI_TEST', true ); + * + * Please note that the example.php file is not included in the wordpress.org distribution + * and will only be included in dev versions of the plugin in the github repository. + */ +if ( defined( 'KIRKI_TEST' ) && true === KIRKI_TEST && file_exists( dirname( __FILE__ ) . '/example.php' ) ) { + include_once dirname( __FILE__ ) . '/example.php'; +} diff --git a/functions/kirki/lib/class-aricolor.php b/functions/kirki/lib/class-aricolor.php new file mode 100644 index 0000000..714fa57 --- /dev/null +++ b/functions/kirki/lib/class-aricolor.php @@ -0,0 +1,982 @@ +color = $color; + + if ( is_array( $color ) && isset( $color['fallback'] ) ) { + $this->fallback = $color['fallback']; + $this->fallback_obj = self::newColor( $this->fallback ); + } + + if ( ! method_exists( $this, 'from_' . $mode ) ) { + $mode = $this->get_mode( $color ); + } + + $this->mode = $mode; + + if ( ! $mode ) { + return; + } + + $this->mode = $mode; + $method = 'from_' . $mode; + // Call the from_{$color_mode} method. + $this->$method(); + } + + /** + * Gets an instance for this color. + * We use a separate instance per color + * because there's no need to create a completely new instance each time we call this class. + * Instead using instances helps us improve performance & footprint. + * + * @static + * @access public + * @since 1.0.0 + * @param string|array $color The color. + * @param string $mode Mode to be used. + * @return ariColor (object) + */ + public static function newColor( $color, $mode = 'auto' ) { + + // Get an md5 for this color. + $color_md5 = ( is_array( $color ) ) ? md5( wp_json_encode( $color ) . $mode ) : md5( $color . $mode ); + // Set the instance if it does not already exist. + if ( ! isset( self::$instances[ $color_md5 ] ) ) { + self::$instances[ $color_md5 ] = new self( $color, $mode ); + } + return self::$instances[ $color_md5 ]; + } + + /** + * Alias of the newColor method. + * + * @static + * @access public + * @since 1.1 + * @param string|array $color The color. + * @param string $mode Mode to be used. + * @return ariColor (object) + */ + public static function new_color( $color, $mode = 'auto' ) { + return self::newColor( $color, $mode ); + } + + /** + * Allows us to get a new instance by modifying a property of the existing one. + * + * @access public + * @since 1.0.0 + * @param string $property Can be one of the following: + * red, + * green, + * blue, + * alpha, + * hue, + * saturation, + * lightness, + * brightness. + * @param int|float|string $value The new value. + * @return ariColor|null + */ + public function getNew( $property = '', $value = '' ) { + + if ( in_array( $property, array( 'red', 'green', 'blue', 'alpha' ), true ) ) { + // Check if we're changing any of the rgba values. + $value = max( 0, min( 255, $value ) ); + if ( 'red' === $property ) { + return self::new_color( 'rgba(' . $value . ',' . $this->green . ',' . $this->blue . ',' . $this->alpha . ')', 'rgba' ); + } elseif ( 'green' === $property ) { + return self::new_color( 'rgba(' . $this->red . ',' . $value . ',' . $this->blue . ',' . $this->alpha . ')', 'rgba' ); + } elseif ( 'blue' === $property ) { + return self::new_color( 'rgba(' . $this->red . ',' . $this->green . ',' . $value . ',' . $this->alpha . ')', 'rgba' ); + } elseif ( 'alpha' === $property ) { + return self::new_color( 'rgba(' . $this->red . ',' . $this->green . ',' . $this->blue . ',' . $value . ')', 'rgba' ); + } + } elseif ( in_array( $property, array( 'hue', 'saturation', 'lightness' ), true ) ) { + // Check if we're changing any of the hsl values. + $value = ( 'hue' === $property ) ? max( 0, min( 360, $value ) ) : max( 0, min( 100, $value ) ); + + if ( 'hue' === $property ) { + return self::new_color( 'hsla(' . $value . ',' . $this->saturation . '%,' . $this->lightness . '%,' . $this->alpha . ')', 'hsla' ); + } elseif ( 'saturation' === $property ) { + return self::new_color( 'hsla(' . $this->hue . ',' . $value . '%,' . $this->lightness . '%,' . $this->alpha . ')', 'hsla' ); + } elseif ( 'lightness' === $property ) { + return self::new_color( 'hsla(' . $this->hue . ',' . $this->saturation . '%,' . $value . '%,' . $this->alpha . ')', 'hsla' ); + } + } elseif ( 'brightness' === $property ) { + // Check if we're changing the brightness. + if ( $value < $this->brightness['total'] ) { + $red = max( 0, min( 255, $this->red - ( $this->brightness['total'] - $value ) ) ); + $green = max( 0, min( 255, $this->green - ( $this->brightness['total'] - $value ) ) ); + $blue = max( 0, min( 255, $this->blue - ( $this->brightness['total'] - $value ) ) ); + } elseif ( $value > $this->brightness['total'] ) { + $red = max( 0, min( 255, $this->red + ( $value - $this->brightness['total'] ) ) ); + $green = max( 0, min( 255, $this->green + ( $value - $this->brightness['total'] ) ) ); + $blue = max( 0, min( 255, $this->blue + ( $value - $this->brightness['total'] ) ) ); + } else { + // If it's not smaller and it's not greater, then it's equal. + return $this; + } + return self::new_color( 'rgba(' . $red . ',' . $green . ',' . $blue . ',' . $this->alpha . ')', 'rgba' ); + } + return null; + } + + /** + * Allias for the getNew method. + * + * @access public + * @since 1.1.0 + * @param string $property Can be one of the following: + * red, + * green, + * blue, + * alpha, + * hue, + * saturation, + * lightness, + * brightness. + * @param int|float|string $value The new value. + * @return ariColor|null + */ + public function get_new( $property = '', $value = '' ) { + return $this->getNew( $property, $value ); + } + + /** + * Figure out what mode we're using. + * + * @access public + * @since 1.0.0 + * @param string|array $color The color we're querying. + * @return string + */ + public function get_mode( $color ) { + + // Check if value is an array. + if ( is_array( $color ) ) { + // Does the array have an 'rgba' key? + if ( isset( $color['rgba'] ) ) { + $this->color = $color['rgba']; + return 'rgba'; + } elseif ( isset( $color['color'] ) ) { + // Does the array have a 'color' key? + $this->color = $color['color']; + if ( is_string( $color['color'] ) && false !== strpos( $color['color'], 'rgba' ) ) { + return 'rgba'; + } + return 'hex'; + } + // Is this a simple array with 4 items? + if ( 4 === count( $color ) && isset( $color[0] ) && isset( $color[1] ) && isset( $color[2] ) && isset( $color[3] ) ) { + $this->color = 'rgba(' . intval( $color[0] ) . ',' . intval( $color[1] ) . ',' . intval( $color[2] ) . ',' . intval( $color[3] ) . ')'; + return 'rgba'; + } elseif ( 3 === count( $color ) && isset( $color[0] ) && isset( $color[1] ) && isset( $color[2] ) ) { + // Is this a simple array with 3 items? + $this->color = 'rgba(' . intval( $color[0] ) . ',' . intval( $color[1] ) . ',' . intval( $color[2] ) . ',1)'; + return 'rgba'; + } + + // Check for other keys in the array and get values from there. + $finders_keepers = array( + 'r' => 'red', + 'g' => 'green', + 'b' => 'blue', + 'a' => 'alpha', + 'red' => 'red', + 'green' => 'green', + 'blue' => 'blue', + 'alpha' => 'alpha', + 'opacity' => 'alpha', + ); + $found = false; + foreach ( $finders_keepers as $finder => $keeper ) { + if ( isset( $color[ $finder ] ) ) { + $found = true; + $this->$keeper = $color[ $finder ]; + } + } + + // We failed, use fallback. + if ( ! $found ) { + $this->from_fallback(); + return $this->mode; + } + + // We did not fail, so use rgba values recovered above. + $this->color = 'rgba(' . $this->red . ',' . $this->green . ',' . $this->blue . ',' . $this->alpha . ')'; + return 'rgba'; + } + + // If a string and 3 or 6 characters long, add # since it's a hex. + if ( 3 === strlen( $this->color ) || 6 === strlen( $this->color ) && false === strpos( $this->color, '#' ) ) { + $this->color = '#' . $this->color; + $color = $this->color; + } + + // If we got this far, it's not an array. + // Check for key identifiers in the value. + $finders_keepers = array( + '#' => 'hex', + 'rgba' => 'rgba', + 'rgb' => 'rgb', + 'hsla' => 'hsla', + 'hsl' => 'hsl', + ); + foreach ( $finders_keepers as $finder => $keeper ) { + if ( false !== strrpos( $color, $finder ) ) { + + // Make sure hex colors have 6 digits and not more. + if ( '#' === $finder && 7 < strlen( $color ) ) { + $this->color = substr( $color, 0, 7 ); + } + + return $keeper; + } + } + // Perhaps we're using a word like "orange"? + $wordcolors = $this->get_word_colors(); + if ( is_string( $color ) && array_key_exists( $color, $wordcolors ) ) { + $this->color = '#' . $wordcolors[ $color ]; + return 'hex'; + } + // Fallback to hex. + + $this->color = $this->fallback; + return 'hex'; + } + + /** + * Starts with a HEX color and calculates all other properties. + * + * @access protected + * @since 1.0.0 + * @return null + */ + protected function from_hex() { + + if ( ! function_exists( 'sanitize_hex_color' ) ) { + require_once wp_normalize_path( ABSPATH . WPINC . '/class-wp-customize-manager.php' ); + } + // Is this perhaps a word-color? + $word_colors = $this->get_word_colors(); + if ( array_key_exists( $this->color, $word_colors ) ) { + $this->color = '#' . $word_colors[ $this->color ]; + } + // Sanitize color. + $this->hex = sanitize_hex_color( maybe_hash_hex_color( $this->color ) ); + $hex = ltrim( $this->hex, '#' ); + + // Fallback if needed. + if ( ! $hex || 3 > strlen( $hex ) ) { + $this->from_fallback(); + return; + } + // Make sure we have 6 digits for the below calculations. + if ( 3 === strlen( $hex ) ) { + $hex = ltrim( $this->hex, '#' ); + $hex = substr( $hex, 0, 1 ) . substr( $hex, 0, 1 ) . substr( $hex, 1, 1 ) . substr( $hex, 1, 1 ) . substr( $hex, 2, 1 ) . substr( $hex, 2, 1 ); + } + + // Set red, green, blue. + $this->red = hexdec( substr( $hex, 0, 2 ) ); + $this->green = hexdec( substr( $hex, 2, 2 ) ); + $this->blue = hexdec( substr( $hex, 4, 2 ) ); + $this->alpha = 1; + // Set other color properties. + $this->set_brightness(); + $this->set_hsl(); + $this->set_luminance(); + + } + + /** + * Starts with an RGB color and calculates all other properties. + * + * @access protected + * @since 1.0.0 + * @return null + */ + protected function from_rgb() { + $value = explode( ',', str_replace( array( ' ', 'rgb', '(', ')' ), '', $this->color ) ); + // Set red, green, blue. + $this->red = ( isset( $value[0] ) ) ? intval( $value[0] ) : 255; + $this->green = ( isset( $value[1] ) ) ? intval( $value[1] ) : 255; + $this->blue = ( isset( $value[2] ) ) ? intval( $value[2] ) : 255; + $this->alpha = 1; + // Set the hex. + $this->hex = $this->rgb_to_hex( $this->red, $this->green, $this->blue ); + // Set other color properties. + $this->set_brightness(); + $this->set_hsl(); + $this->set_luminance(); + } + + /** + * Starts with an RGBA color and calculates all other properties. + * + * @access protected + * @since 1.0.0 + * @return null + */ + protected function from_rgba() { + // Set r, g, b, a properties. + $value = explode( ',', str_replace( array( ' ', 'rgba', '(', ')' ), '', $this->color ) ); + $this->red = ( isset( $value[0] ) ) ? intval( $value[0] ) : 255; + $this->green = ( isset( $value[1] ) ) ? intval( $value[1] ) : 255; + $this->blue = ( isset( $value[2] ) ) ? intval( $value[2] ) : 255; + $this->alpha = ( isset( $value[3] ) ) ? filter_var( $value[3], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : 1; + // Limit values in the range of 0 - 255. + $this->red = max( 0, min( 255, $this->red ) ); + $this->green = max( 0, min( 255, $this->green ) ); + $this->blue = max( 0, min( 255, $this->blue ) ); + // Limit values 0 - 1. + $this->alpha = max( 0, min( 1, $this->alpha ) ); + // Set hex. + $this->hex = $this->rgb_to_hex( $this->red, $this->green, $this->blue ); + // Set other color properties. + $this->set_brightness(); + $this->set_hsl(); + $this->set_luminance(); + } + + /** + * Starts with an HSL color and calculates all other properties. + * + * @access protected + * @since 1.0.0 + * @return null + */ + protected function from_hsl() { + $value = explode( ',', str_replace( array( ' ', 'hsl', '(', ')', '%' ), '', $this->color ) ); + $this->hue = $value[0]; + $this->saturation = $value[1]; + $this->lightness = $value[2]; + $this->from_hsl_array(); + } + + /** + * Starts with an HSLA color and calculates all other properties. + * + * @access protected + * @since 1.0.0 + * @return null + */ + protected function from_hsla() { + $value = explode( ',', str_replace( array( ' ', 'hsla', '(', ')', '%' ), '', $this->color ) ); + $this->hue = $value[0]; + $this->saturation = $value[1]; + $this->lightness = $value[2]; + $this->alpha = $value[3]; + $this->from_hsl_array(); + } + + /** + * Generates the HEX value of a color given values for $red, $green, $blue. + * + * @access protected + * @since 1.0.0 + * @param int|string $red The red value of this color. + * @param int|string $green The green value of this color. + * @param int|string $blue The blue value of this color. + * @return string + */ + protected function rgb_to_hex( $red, $green, $blue ) { + // Get hex values properly formatted. + $hex_red = $this->dexhex_double_digit( $red ); + $hex_green = $this->dexhex_double_digit( $green ); + $hex_blue = $this->dexhex_double_digit( $blue ); + return '#' . $hex_red . $hex_green . $hex_blue; + } + + /** + * Convert a decimal value to hex and make sure it's 2 characters. + * + * @access protected + * @since 1.0.0 + * @param int|string $value The value to convert. + * @return string + */ + protected function dexhex_double_digit( $value ) { + $value = dechex( $value ); + if ( 1 === strlen( $value ) ) { + $value = '0' . $value; + } + return $value; + } + + /** + * Calculates the red, green, blue values of an HSL color. + * + * @access protected + * @since 1.0.0 + * @see https://gist.github.com/brandonheyer/5254516 + */ + protected function from_hsl_array() { + $h = $this->hue / 360; + $s = $this->saturation / 100; + $l = $this->lightness / 100; + + $r = $l; + $g = $l; + $b = $l; + $v = ( $l <= 0.5 ) ? ( $l * ( 1.0 + $s ) ) : ( $l + $s - $l * $s ); + if ( $v > 0 ) { + $m = $l + $l - $v; + $sv = ( $v - $m ) / $v; + $h *= 6.0; + $sextant = floor( $h ); + $fract = $h - $sextant; + $vsf = $v * $sv * $fract; + $mid1 = $m + $vsf; + $mid2 = $v - $vsf; + switch ( $sextant ) { + case 0: + $r = $v; + $g = $mid1; + $b = $m; + break; + case 1: + $r = $mid2; + $g = $v; + $b = $m; + break; + case 2: + $r = $m; + $g = $v; + $b = $mid1; + break; + case 3: + $r = $m; + $g = $mid2; + $b = $v; + break; + case 4: + $r = $mid1; + $g = $m; + $b = $v; + break; + case 5: + $r = $v; + $g = $m; + $b = $mid2; + break; + } + } + $this->red = round( $r * 255, 0 ); + $this->green = round( $g * 255, 0 ); + $this->blue = round( $b * 255, 0 ); + + $this->hex = $this->rgb_to_hex( $this->red, $this->green, $this->blue ); + $this->set_luminance(); + } + + /** + * Returns a CSS-formatted value for colors. + * + * @access public + * @since 1.0.0 + * @param string $mode The mode we're using. + * @return string + */ + public function toCSS( $mode = 'hex' ) { + + $value = ''; + + switch ( $mode ) { + case 'hex': + $value = strtolower( $this->hex ); + break; + case 'rgba': + $value = 'rgba(' . $this->red . ',' . $this->green . ',' . $this->blue . ',' . $this->alpha . ')'; + break; + case 'rgb': + $value = 'rgb(' . $this->red . ',' . $this->green . ',' . $this->blue . ')'; + break; + case 'hsl': + $value = 'hsl(' . $this->hue . ',' . round( $this->saturation ) . '%,' . round( $this->lightness ) . '%)'; + break; + case 'hsla': + $value = 'hsla(' . $this->hue . ',' . round( $this->saturation ) . '%,' . round( $this->lightness ) . '%,' . $this->alpha . ')'; + break; + } + return $value; + } + + /** + * Alias for the toCSS method. + * + * @access public + * @since 1.1 + * @param string $mode The mode we're using. + * @return string + */ + public function to_css( $mode = 'hex' ) { + return $this->toCSS( $mode ); + } + + /** + * Sets the HSL values of a color based on the values of red, green, blue. + * + * @access public + * @since 1.0.0 + */ + protected function set_hsl() { + $red = $this->red / 255; + $green = $this->green / 255; + $blue = $this->blue / 255; + + $max = max( $red, $green, $blue ); + $min = min( $red, $green, $blue ); + + $lightness = ( $max + $min ) / 2; + $difference = $max - $min; + + if ( ! $difference ) { + $hue = $saturation = 0; // Achromatic. + } else { + $saturation = $difference / ( 1 - abs( 2 * $lightness - 1 ) ); + switch ( $max ) { + case $red: + $hue = 60 * fmod( ( ( $green - $blue ) / $difference ), 6 ); + if ( $blue > $green ) { + $hue += 360; + } + break; + case $green: + $hue = 60 * ( ( $blue - $red ) / $difference + 2 ); + break; + case $blue: + $hue = 60 * ( ( $red - $green ) / $difference + 4 ); + break; + } + } + + $this->hue = round( $hue ); + $this->saturation = round( $saturation * 100 ); + $this->lightness = round( $lightness * 100 ); + } + + /** + * Sets the brightness of a color based on the values of red, green, blue. + * + * @access protected + * @since 1.0.0 + */ + protected function set_brightness() { + $this->brightness = array( + 'red' => round( $this->red * .299 ), + 'green' => round( $this->green * .587 ), + 'blue' => round( $this->blue * .114 ), + 'total' => intval( ( $this->red * .299 ) + ( $this->green * .587 ) + ( $this->blue * .114 ) ), + ); + } + + /** + * Sets the luminance of a color (range:0-255) based on the values of red, green, blue. + * + * @access protected + * @since 1.0.0 + */ + protected function set_luminance() { + $lum = ( 0.2126 * $this->red ) + ( 0.7152 * $this->green ) + ( 0.0722 * $this->blue ); + $this->luminance = round( $lum ); + } + + /** + * Gets an array of all the wordcolors. + * + * @access protected + * @since 1.0.0 + * @return array + */ + protected function get_word_colors() { + return array( + 'aliceblue' => 'F0F8FF', + 'antiquewhite' => 'FAEBD7', + 'aqua' => '00FFFF', + 'aquamarine' => '7FFFD4', + 'azure' => 'F0FFFF', + 'beige' => 'F5F5DC', + 'bisque' => 'FFE4C4', + 'black' => '000000', + 'blanchedalmond' => 'FFEBCD', + 'blue' => '0000FF', + 'blueviolet' => '8A2BE2', + 'brown' => 'A52A2A', + 'burlywood' => 'DEB887', + 'cadetblue' => '5F9EA0', + 'chartreuse' => '7FFF00', + 'chocolate' => 'D2691E', + 'coral' => 'FF7F50', + 'cornflowerblue' => '6495ED', + 'cornsilk' => 'FFF8DC', + 'crimson' => 'DC143C', + 'cyan' => '00FFFF', + 'darkblue' => '00008B', + 'darkcyan' => '008B8B', + 'darkgoldenrod' => 'B8860B', + 'darkgray' => 'A9A9A9', + 'darkgreen' => '006400', + 'darkgrey' => 'A9A9A9', + 'darkkhaki' => 'BDB76B', + 'darkmagenta' => '8B008B', + 'darkolivegreen' => '556B2F', + 'darkorange' => 'FF8C00', + 'darkorchid' => '9932CC', + 'darkred' => '8B0000', + 'darksalmon' => 'E9967A', + 'darkseagreen' => '8FBC8F', + 'darkslateblue' => '483D8B', + 'darkslategray' => '2F4F4F', + 'darkslategrey' => '2F4F4F', + 'darkturquoise' => '00CED1', + 'darkviolet' => '9400D3', + 'deeppink' => 'FF1493', + 'deepskyblue' => '00BFFF', + 'dimgray' => '696969', + 'dimgrey' => '696969', + 'dodgerblue' => '1E90FF', + 'firebrick' => 'B22222', + 'floralwhite' => 'FFFAF0', + 'forestgreen' => '228B22', + 'fuchsia' => 'FF00FF', + 'gainsboro' => 'DCDCDC', + 'ghostwhite' => 'F8F8FF', + 'gold' => 'FFD700', + 'goldenrod' => 'DAA520', + 'gray' => '808080', + 'green' => '008000', + 'greenyellow' => 'ADFF2F', + 'grey' => '808080', + 'honeydew' => 'F0FFF0', + 'hotpink' => 'FF69B4', + 'indianred' => 'CD5C5C', + 'indigo' => '4B0082', + 'ivory' => 'FFFFF0', + 'khaki' => 'F0E68C', + 'lavender' => 'E6E6FA', + 'lavenderblush' => 'FFF0F5', + 'lawngreen' => '7CFC00', + 'lemonchiffon' => 'FFFACD', + 'lightblue' => 'ADD8E6', + 'lightcoral' => 'F08080', + 'lightcyan' => 'E0FFFF', + 'lightgoldenrodyellow' => 'FAFAD2', + 'lightgray' => 'D3D3D3', + 'lightgreen' => '90EE90', + 'lightgrey' => 'D3D3D3', + 'lightpink' => 'FFB6C1', + 'lightsalmon' => 'FFA07A', + 'lightseagreen' => '20B2AA', + 'lightskyblue' => '87CEFA', + 'lightslategray' => '778899', + 'lightslategrey' => '778899', + 'lightsteelblue' => 'B0C4DE', + 'lightyellow' => 'FFFFE0', + 'lime' => '00FF00', + 'limegreen' => '32CD32', + 'linen' => 'FAF0E6', + 'magenta' => 'FF00FF', + 'maroon' => '800000', + 'mediumaquamarine' => '66CDAA', + 'mediumblue' => '0000CD', + 'mediumorchid' => 'BA55D3', + 'mediumpurple' => '9370D0', + 'mediumseagreen' => '3CB371', + 'mediumslateblue' => '7B68EE', + 'mediumspringgreen' => '00FA9A', + 'mediumturquoise' => '48D1CC', + 'mediumvioletred' => 'C71585', + 'midnightblue' => '191970', + 'mintcream' => 'F5FFFA', + 'mistyrose' => 'FFE4E1', + 'moccasin' => 'FFE4B5', + 'navajowhite' => 'FFDEAD', + 'navy' => '000080', + 'oldlace' => 'FDF5E6', + 'olive' => '808000', + 'olivedrab' => '6B8E23', + 'orange' => 'FFA500', + 'orangered' => 'FF4500', + 'orchid' => 'DA70D6', + 'palegoldenrod' => 'EEE8AA', + 'palegreen' => '98FB98', + 'paleturquoise' => 'AFEEEE', + 'palevioletred' => 'DB7093', + 'papayawhip' => 'FFEFD5', + 'peachpuff' => 'FFDAB9', + 'peru' => 'CD853F', + 'pink' => 'FFC0CB', + 'plum' => 'DDA0DD', + 'powderblue' => 'B0E0E6', + 'purple' => '800080', + 'red' => 'FF0000', + 'rosybrown' => 'BC8F8F', + 'royalblue' => '4169E1', + 'saddlebrown' => '8B4513', + 'salmon' => 'FA8072', + 'sandybrown' => 'F4A460', + 'seagreen' => '2E8B57', + 'seashell' => 'FFF5EE', + 'sienna' => 'A0522D', + 'silver' => 'C0C0C0', + 'skyblue' => '87CEEB', + 'slateblue' => '6A5ACD', + 'slategray' => '708090', + 'slategrey' => '708090', + 'snow' => 'FFFAFA', + 'springgreen' => '00FF7F', + 'steelblue' => '4682B4', + 'tan' => 'D2B48C', + 'teal' => '008080', + 'thistle' => 'D8BFD8', + 'tomato' => 'FF6347', + 'turquoise' => '40E0D0', + 'violet' => 'EE82EE', + 'wheat' => 'F5DEB3', + 'white' => 'FFFFFF', + 'whitesmoke' => 'F5F5F5', + 'yellow' => 'FFFF00', + 'yellowgreen' => '9ACD32', + ); + + } + + /** + * Use fallback object. + * + * @access protected + * @since 1.2.0 + */ + protected function from_fallback() { + $this->color = $this->fallback; + + if ( ! $this->fallback_obj ) { + $this->fallback_obj = self::newColor( $this->fallback ); + } + $this->color = $this->fallback_obj->color; + $this->mode = $this->fallback_obj->mode; + $this->red = $this->fallback_obj->red; + $this->green = $this->fallback_obj->green; + $this->blue = $this->fallback_obj->blue; + $this->alpha = $this->fallback_obj->alpha; + $this->hue = $this->fallback_obj->hue; + $this->saturation = $this->fallback_obj->saturation; + $this->lightness = $this->fallback_obj->lightness; + $this->luminance = $this->fallback_obj->luminance; + $this->hex = $this->fallback_obj->hex; + } + + /** + * Handle non-existing public methods. + * + * @access public + * @since 1.1.0 + * @param string $name The method name. + * @param mixed $arguments The method arguments. + * @return mixed + */ + public function __call( $name, $arguments ) { + if ( method_exists( $this, $name ) ) { + call_user_func( array( $this, $name ), $arguments ); + } else { + return $arguments; + } + } + + /** + * Handle non-existing public static methods. + * + * @static + * @access public + * @since 1.1.0 + * @param string $name The method name. + * @param mixed $arguments The method arguments. + * @return mixed + */ + public static function __callStatic( $name, $arguments ) { + if ( method_exists( __CLASS__, $name ) ) { + call_user_func( array( __CLASS__, $name ), $arguments ); + } else { + return $arguments; + } + } + } +} diff --git a/functions/kirki/lib/class-kirki-color.php b/functions/kirki/lib/class-kirki-color.php new file mode 100644 index 0000000..625da71 --- /dev/null +++ b/functions/kirki/lib/class-kirki-color.php @@ -0,0 +1,342 @@ +mode; + } + return $obj->toCSS( $mode ); + } + + /** + * Gets the rgb value of a color. + * + * @static + * @access public + * @param string $color The color. + * @param boolean $implode Whether we want to implode the values or not. + * @return array|string + */ + public static function get_rgb( $color, $implode = false ) { + $obj = ariColor::newColor( $color ); + if ( $implode ) { + return $obj->toCSS( 'rgb' ); + } + return array( $obj->red, $obj->green, $obj->blue ); + } + + /** + * A proxy for the sanitize_color method. + * + * @static + * @access public + * @param string|array $color The color to convert. + * @return string The hex value of the color. + */ + public static function rgba2hex( $color ) { + return self::sanitize_color( $color, 'hex' ); + } + + /** + * Get the alpha channel from an rgba color. + * + * @static + * @access public + * @param string $color The rgba color formatted like rgba(r,g,b,a). + * @return int|float The alpha value of the color. + */ + public static function get_alpha_from_rgba( $color ) { + $obj = ariColor::newColor( $color ); + return $obj->alpha; + } + + /** + * Gets the rgba value of the $color. + * + * @static + * @access public + * @param string $color The hex value of a color. + * @param int|float $alpha Opacity level (0-1). + * @return string + */ + public static function get_rgba( $color = '#fff', $alpha = 1 ) { + $obj = ariColor::newColor( $color ); + if ( 1 == $alpha ) { + return $obj->toCSS( 'rgba' ); + } + // Make sure that opacity is properly formatted. + // Converts 1-100 values to 0-1. + if ( $alpha > 1 || $alpha < -1 ) { + // Divide by 100. + $alpha /= 100; + } + // Get absolute value. + $alpha = abs( $alpha ); + // Max 1. + if ( 1 < $alpha ) { + $alpha = 1; + } + $new_obj = $obj->getNew( 'alpha', $alpha ); + return $new_obj->toCSS( 'rgba' ); + } + + /** + * Strips the alpha value from an RGBA color string. + * + * @static + * @access public + * @param string $color The RGBA color string. + * @return string The corresponding RGB string. + */ + public static function rgba_to_rgb( $color ) { + $obj = ariColor::newColor( $color ); + return $obj->toCSS( 'rgb' ); + } + + /** + * Gets the brightness of the $hex color. + * + * @static + * @access public + * @param string $hex The hex value of a color. + * @return int Value between 0 and 255. + */ + public static function get_brightness( $hex ) { + $hex = self::sanitize_hex( $hex, false ); + + // Returns brightness value from 0 to 255. + return intval( ( ( hexdec( substr( $hex, 0, 2 ) ) * 299 ) + ( hexdec( substr( $hex, 2, 2 ) ) * 587 ) + ( hexdec( substr( $hex, 4, 2 ) ) * 114 ) ) / 1000 ); + } + + /** + * Adjusts brightness of the $hex color. + * + * @static + * @access public + * @param string $hex The hex value of a color. + * @param integer $steps Should be between -255 and 255. Negative = darker, positive = lighter. + * @return string Returns hex color. + */ + public static function adjust_brightness( $hex, $steps ) { + $hex = self::sanitize_hex( $hex, false ); + $steps = max( -255, min( 255, $steps ) ); + + // Adjust number of steps and keep it inside 0 to 255. + $red = max( 0, min( 255, hexdec( substr( $hex, 0, 2 ) ) + $steps ) ); + $green = max( 0, min( 255, hexdec( substr( $hex, 2, 2 ) ) + $steps ) ); + $blue = max( 0, min( 255, hexdec( substr( $hex, 4, 2 ) ) + $steps ) ); + + $red_hex = str_pad( dechex( $red ), 2, '0', STR_PAD_LEFT ); + $green_hex = str_pad( dechex( $green ), 2, '0', STR_PAD_LEFT ); + $blue_hex = str_pad( dechex( $blue ), 2, '0', STR_PAD_LEFT ); + return self::sanitize_hex( $red_hex . $green_hex . $blue_hex ); + } + + /** + * Mixes 2 hex colors. + * The "percentage" variable is the percent of the first color. + * to be used it the mix. default is 50 (equal mix). + * + * @static + * @access public + * @param string|false $hex1 Color. + * @param string|false $hex2 Color. + * @param int $percentage A value between 0 and 100. + * @return string Returns hex color. + */ + public static function mix_colors( $hex1, $hex2, $percentage ) { + $hex1 = self::sanitize_hex( $hex1, false ); + $hex2 = self::sanitize_hex( $hex2, false ); + $red = ( $percentage * hexdec( substr( $hex1, 0, 2 ) ) + ( 100 - $percentage ) * hexdec( substr( $hex2, 0, 2 ) ) ) / 100; + $green = ( $percentage * hexdec( substr( $hex1, 2, 2 ) ) + ( 100 - $percentage ) * hexdec( substr( $hex2, 2, 2 ) ) ) / 100; + $blue = ( $percentage * hexdec( substr( $hex1, 4, 2 ) ) + ( 100 - $percentage ) * hexdec( substr( $hex2, 4, 2 ) ) ) / 100; + $red_hex = str_pad( dechex( $red ), 2, '0', STR_PAD_LEFT ); + $green_hex = str_pad( dechex( $green ), 2, '0', STR_PAD_LEFT ); + $blue_hex = str_pad( dechex( $blue ), 2, '0', STR_PAD_LEFT ); + return self::sanitize_hex( $red_hex . $green_hex . $blue_hex ); + } + + /** + * Convert hex color to hsv. + * + * @static + * @access public + * @param string $hex The hex value of color 1. + * @return array Returns array( 'h', 's', 'v' ). + */ + public static function hex_to_hsv( $hex ) { + $rgb = (array) (array) self::get_rgb( self::sanitize_hex( $hex, false ) ); + return self::rgb_to_hsv( $rgb ); + } + + /** + * Convert hex color to hsv. + * + * @static + * @access public + * @param string $color The rgb color to convert array( 'r', 'g', 'b' ). + * @return array Returns array( 'h', 's', 'v' ). + */ + public static function rgb_to_hsv( $color = array() ) { + $var_r = ( $color[0] / 255 ); + $var_g = ( $color[1] / 255 ); + $var_b = ( $color[2] / 255 ); + $var_min = min( $var_r, $var_g, $var_b ); + $var_max = max( $var_r, $var_g, $var_b ); + $del_max = $var_max - $var_min; + $h = 0; + $s = 0; + $v = $var_max; + if ( 0 != $del_max ) { + $s = $del_max / $var_max; + $del_r = ( ( ( $var_max - $var_r ) / 6 ) + ( $del_max / 2 ) ) / $del_max; + $del_g = ( ( ( $var_max - $var_g ) / 6 ) + ( $del_max / 2 ) ) / $del_max; + $del_b = ( ( ( $var_max - $var_b ) / 6 ) + ( $del_max / 2 ) ) / $del_max; + if ( $var_r == $var_max ) { + $h = $del_b - $del_g; + } elseif ( $var_g == $var_max ) { + $h = ( 1 / 3 ) + $del_r - $del_b; + } elseif ( $var_b == $var_max ) { + $h = ( 2 / 3 ) + $del_g - $del_r; + } + if ( $h < 0 ) { + $h++; + } + if ( $h > 1 ) { + $h--; + } + } + return array( + 'h' => round( $h, 2 ), + 's' => round( $s, 2 ), + 'v' => round( $v, 2 ), + ); + } + + /** + * This is a very simple algorithm that works by summing up the differences between the three color components red, green and blue. + * A value higher than 500 is recommended for good readability. + * + * @static + * @access public + * @param string $color_1 The 1st color. + * @param string $color_2 The 2nd color. + * @return string + */ + public static function color_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) { + $color_1 = self::sanitize_hex( $color_1, false ); + $color_2 = self::sanitize_hex( $color_2, false ); + $color_1_rgb = self::get_rgb( $color_1 ); + $color_2_rgb = self::get_rgb( $color_2 ); + $r_diff = max( $color_1_rgb[0], $color_2_rgb[0] ) - min( $color_1_rgb[0], $color_2_rgb[0] ); + $g_diff = max( $color_1_rgb[1], $color_2_rgb[1] ) - min( $color_1_rgb[1], $color_2_rgb[1] ); + $b_diff = max( $color_1_rgb[2], $color_2_rgb[2] ) - min( $color_1_rgb[2], $color_2_rgb[2] ); + $color_diff = $r_diff + $g_diff + $b_diff; + return $color_diff; + } + + /** + * This function tries to compare the brightness of the colors. + * A return value of more than 125 is recommended. + * Combining it with the color_difference function above might make sense. + * + * @static + * @access public + * @param string $color_1 The 1st color. + * @param string $color_2 The 2nd color. + * @return string + */ + public static function brightness_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) { + $color_1 = self::sanitize_hex( $color_1, false ); + $color_2 = self::sanitize_hex( $color_2, false ); + $color_1_rgb = self::get_rgb( $color_1 ); + $color_2_rgb = self::get_rgb( $color_2 ); + $br_1 = ( 299 * $color_1_rgb[0] + 587 * $color_1_rgb[1] + 114 * $color_1_rgb[2] ) / 1000; + $br_2 = ( 299 * $color_2_rgb[0] + 587 * $color_2_rgb[1] + 114 * $color_2_rgb[2] ) / 1000; + return intval( abs( $br_1 - $br_2 ) ); + } + + /** + * Uses the luminosity to calculate the difference between the given colors. + * The returned value should be bigger than 5 for best readability. + * + * @static + * @access public + * @param string $color_1 The 1st color. + * @param string $color_2 The 2nd color. + * @return string + */ + public static function lumosity_difference( $color_1 = '#ffffff', $color_2 = '#000000' ) { + $color_1 = self::sanitize_hex( $color_1, false ); + $color_2 = self::sanitize_hex( $color_2, false ); + $color_1_rgb = self::get_rgb( $color_1 ); + $color_2_rgb = self::get_rgb( $color_2 ); + $l1 = 0.2126 * pow( $color_1_rgb[0] / 255, 2.2 ) + 0.7152 * pow( $color_1_rgb[1] / 255, 2.2 ) + 0.0722 * pow( $color_1_rgb[2] / 255, 2.2 ); + $l2 = 0.2126 * pow( $color_2_rgb[0] / 255, 2.2 ) + 0.7152 * pow( $color_2_rgb[1] / 255, 2.2 ) + 0.0722 * pow( $color_2_rgb[2] / 255, 2.2 ); + $lum_diff = ( $l1 > $l2 ) ? ( $l1 + 0.05 ) / ( $l2 + 0.05 ) : ( $l2 + 0.05 ) / ( $l1 + 0.05 ); + return round( $lum_diff, 2 ); + } +} diff --git a/functions/kirki/modules/collapsible/class-kirki-modules-collapsible.php b/functions/kirki/modules/collapsible/class-kirki-modules-collapsible.php new file mode 100644 index 0000000..4526cdd --- /dev/null +++ b/functions/kirki/modules/collapsible/class-kirki-modules-collapsible.php @@ -0,0 +1,83 @@ + ' + label + '
                        ' ); + + // Add an (x) before the field title. + controlTitleElement = control.find( '.customize-control-title' ); + controlTitleElement.prepend( '' ); + + // Show/hide the field when the header is clicked. + jQuery( '.kirki-collapsible-header-' + setting ).click( function() { + if ( control.hasClass( 'kirki-collapsed-control' ) ) { + control.removeClass( 'kirki-collapsed-control' ); + control.addClass( 'kirki-expanded-control' ); + control.show(); + jQuery( '.kirki-collapsible-header-' + setting ).hide(); + } else { + control.addClass( 'kirki-collapsed-control' ); + control.removeClass( 'kirki-expanded-control' ); + control.hide(); + jQuery( '.kirki-collapsible-header-' + setting ).show(); + } + }); + + controlTitleElement.click( function() { + if ( control.hasClass( 'kirki-collapsed-control' ) ) { + control.removeClass( 'kirki-collapsed-control' ); + control.addClass( 'kirki-expanded-control' ); + control.show(); + jQuery( '.kirki-collapsible-header-' + setting ).hide(); + } else { + control.addClass( 'kirki-collapsed-control' ); + control.removeClass( 'kirki-expanded-control' ); + control.hide(); + jQuery( '.kirki-collapsible-header-' + setting ).show(); + } + }); + + }, 300 ); + + }); + +})( jQuery ); diff --git a/functions/kirki/modules/css/class-kirki-css-to-file.php b/functions/kirki/modules/css/class-kirki-css-to-file.php new file mode 100644 index 0000000..7bcd1fb --- /dev/null +++ b/functions/kirki/modules/css/class-kirki-css-to-file.php @@ -0,0 +1,160 @@ +get_path( 'file' ) ) ) { + // If the file-write fails, fallback to inline + // and cache the failure so we don't try again immediately. + $this->write_file(); + } + add_action( 'customize_save_after', array( $this, 'write_file' ) ); + } + + /** + * Gets the path of the CSS file and folder in the filesystem. + * + * @access protected + * @since 3.0.0 + * @param string $context Can be "file" or "folder". If empty, returns both as array. + * @return string|array + */ + protected function get_path( $context = '' ) { + + $upload_dir = wp_upload_dir(); + + $paths = array( + 'file' => wp_normalize_path( $upload_dir['basedir'] . '/kirki-css/styles.css' ), + 'folder' => wp_normalize_path( $upload_dir['basedir'] . '/kirki-css' ), + ); + + if ( 'file' === $context ) { + return $paths['file']; + } + if ( 'folder' === $context ) { + return $paths['folder']; + } + return $paths; + + } + + /** + * Gets the URL of the CSS file in the filesystem. + * + * @access public + * @since 3.0.0 + * @return string + */ + public function get_url() { + + $upload_dir = wp_upload_dir(); + return esc_url_raw( $upload_dir['baseurl'] . '/kirki-css/styles.css' ); + + } + + /** + * Gets the timestamp of the file. + * This will be used as "version" for cache-busting purposes. + * + * @access public + * @since 3.0.0 + * @return integer|false + */ + public function get_timestamp() { + + if ( file_exists( $this->get_path( 'file' ) ) ) { + return filemtime( $this->get_path( 'file' ) ); + } + return false; + } + + /** + * Writes the file to disk. + * + * @access public + * @since 3.0.0 + * @return bool + */ + public function write_file() { + + $css = array(); + $configs = Kirki::$config; + foreach ( $configs as $config_id => $args ) { + // Get the CSS we want to write. + $css[ $config_id ] = apply_filters( "kirki/{$config_id}/dynamic_css", Kirki_Modules_CSS::loop_controls( $config_id ) ); + } + $css = implode( $css, '' ); + + // Minimize the CSS a bit. + $css = str_replace( array( "\n", "\t", "\r\n" ), '', $css ); + $css = str_replace( array( '{ ', '{ ', '{ ' ), '{', $css ); + $css = str_replace( ': ', ':', $css ); + $css = str_replace( array( '; ', '; ', '; ' ), ';', $css ); + $css = explode( '}', $css ); + $css = array_unique( $css ); + $css = implode( $css, '}' ); + + // If the folder doesn't exist, create it. + if ( ! file_exists( $this->get_path( 'folder' ) ) ) { + wp_mkdir_p( $this->get_path( 'folder' ) ); + } + + $filesystem = $this->get_filesystem(); + $write_file = (bool) $filesystem->put_contents( $this->get_path( 'file' ), $css ); + if ( ! $write_file ) { + $this->fallback = true; + set_transient( 'kirki_css_write_to_file_failed', true, HOUR_IN_SECONDS ); + } + return $write_file; + + } + + /** + * Gets the WP_Filesystem object. + * + * @access protected + * @since 3.0.0 + * @return object + */ + protected function get_filesystem() { + + // The WordPress filesystem. + global $wp_filesystem; + + if ( empty( $wp_filesystem ) ) { + require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/file.php' ); + WP_Filesystem(); + } + + return $wp_filesystem; + } +} diff --git a/functions/kirki/modules/css/class-kirki-modules-css-generator.php b/functions/kirki/modules/css/class-kirki-modules-css-generator.php new file mode 100644 index 0000000..7c81187 --- /dev/null +++ b/functions/kirki/modules/css/class-kirki-modules-css-generator.php @@ -0,0 +1,276 @@ + self::$output, + 'sanitize_callback' => null, + ), + ); + } + + // Get the value of this field. + self::$value = Kirki_Values::get_sanitized_field_value( $field ); + + // Find the class that will handle the outpout for this field. + $classname = 'Kirki_Output'; + $field_output_classes = apply_filters( "kirki/{$field['kirki_config']}/output/control-classnames", array( + 'kirki-background' => 'Kirki_Output_Field_Background', + 'kirki-dimensions' => 'Kirki_Output_Field_Dimensions', + 'kirki-image' => 'Kirki_Output_Field_Image', + 'kirki-typography' => 'Kirki_Output_Field_Typography', + 'kirki-multicolor' => 'Kirki_Output_Field_Multicolor', + ) ); + if ( array_key_exists( self::$field_type, $field_output_classes ) ) { + $classname = $field_output_classes[ self::$field_type ]; + } + $obj = new $classname( $field['kirki_config'], self::$output, self::$value, $field ); + return $obj->get_styles(); + + } + + /** + * Gets the array of generated styles and creates the minimized, inline CSS. + * + * @static + * @access public + * @param array $css The CSS definitions array. + * @return string The generated CSS. + */ + public static function styles_parse( $css = array() ) { + + // Pass our styles from the kirki/styles_array filter. + $css = apply_filters( 'kirki/styles_array', $css ); + + // Process the array of CSS properties and produce the final CSS. + $final_css = ''; + if ( ! is_array( $css ) || empty( $css ) ) { + return ''; + } + foreach ( $css as $media_query => $styles ) { + $final_css .= ( 'global' !== $media_query ) ? $media_query . '{' : ''; + foreach ( $styles as $style => $style_array ) { + $css_for_style = ''; + + foreach ( $style_array as $property => $value ) { + if ( is_string( $value ) && '' !== $value ) { + $css_for_style .= $property . ':' . $value . ';'; + } elseif ( is_array( $value ) ) { + foreach ( $value as $subvalue ) { + if ( is_string( $subvalue ) && '' !== $subvalue ) { + $css_for_style .= $property . ':' . $subvalue . ';'; + } + } + } + $value = ( is_string( $value ) ) ? $value : ''; + } + if ( '' !== $css_for_style ) { + $final_css .= $style . '{' . $css_for_style . '}'; + } + } + $final_css .= ( 'global' !== $media_query ) ? '}' : ''; + } + return $final_css; + } + + /** + * Add prefixes if necessary. + * + * @param array $css The CSS definitions array. + * @return array + */ + public static function add_prefixes( $css ) { + + if ( is_array( $css ) ) { + foreach ( $css as $media_query => $elements ) { + foreach ( $elements as $element => $style_array ) { + foreach ( $style_array as $property => $value ) { + + // Add -webkit-* and -moz-*. + if ( is_string( $property ) && in_array( $property, array( + 'border-radius', + 'box-shadow', + 'box-sizing', + 'text-shadow', + 'transform', + 'background-size', + 'transition', + 'transition-property', + ), true ) ) { + unset( $css[ $media_query ][ $element ][ $property ] ); + $css[ $media_query ][ $element ][ '-webkit-' . $property ] = $value; + $css[ $media_query ][ $element ][ '-moz-' . $property ] = $value; + $css[ $media_query ][ $element ][ $property ] = $value; + } + + // Add -ms-* and -o-*. + if ( is_string( $property ) && in_array( $property, array( + 'transform', + 'background-size', + 'transition', + 'transition-property', + ), true ) ) { + unset( $css[ $media_query ][ $element ][ $property ] ); + $css[ $media_query ][ $element ][ '-ms-' . $property ] = $value; + $css[ $media_query ][ $element ][ '-o-' . $property ] = $value; + $css[ $media_query ][ $element ][ $property ] = $value; + } + } + } + } // End foreach(). + } // End if(). + + return $css; + + } +} diff --git a/functions/kirki/modules/css/class-kirki-modules-css.php b/functions/kirki/modules/css/class-kirki-modules-css.php new file mode 100644 index 0000000..06d23a1 --- /dev/null +++ b/functions/kirki/modules/css/class-kirki-modules-css.php @@ -0,0 +1,287 @@ + '/class-kirki-css-to-file.php', + 'Kirki_Modules_CSS_Generator' => '/class-kirki-modules-css-generator.php', + 'Kirki_Output' => '/class-kirki-output.php', + 'Kirki_Output_Field_Background' => '/field/class-kirki-output-field-background.php', + 'Kirki_Output_Field_Image' => '/field/class-kirki-output-field-image.php', + 'Kirki_Output_Field_Multicolor' => '/field/class-kirki-output-field-multicolor.php', + 'Kirki_Output_Field_Dimensions' => '/field/class-kirki-output-field-dimensions.php', + 'Kirki_Output_Field_Typography' => '/field/class-kirki-output-field-typography.php', + 'Kirki_Output_Property' => '/property/class-kirki-output-property.php', + 'Kirki_Output_Property_Background_Image' => '/property/class-kirki-output-property-background-image.php', + 'Kirki_Output_Property_Background_Position' => '/property/class-kirki-output-property-background-position.php', + 'Kirki_Output_Property_Font_Family' => '/property/class-kirki-output-property-font-family.php', + ); + + foreach ( $class_files as $class_name => $file ) { + if ( ! class_exists( $class_name ) ) { + include_once wp_normalize_path( dirname( __FILE__ ) . $file ); + } + } + + add_action( 'init', array( $this, 'init' ) ); + + } + + /** + * Gets an instance of this object. + * Prevents duplicate instances which avoid artefacts and improves performance. + * + * @static + * @access public + * @since 3.0.0 + * @return object + */ + public static function get_instance() { + if ( ! self::$instance ) { + self::$instance = new self(); + } + return self::$instance; + } + + /** + * Init. + * + * @access public + */ + public function init() { + + Kirki_Modules_Webfonts::get_instance(); + + global $wp_customize; + + $config = apply_filters( 'kirki/config', array() ); + $priority = 999; + if ( isset( $config['styles_priority'] ) ) { + $priority = absint( $config['styles_priority'] ); + } + + // Allow completely disabling Kirki CSS output. + if ( ( defined( 'KIRKI_NO_OUTPUT' ) && true === KIRKI_NO_OUTPUT ) || ( isset( $config['disable_output'] ) && true === $config['disable_output'] ) ) { + return; + } + + $method = apply_filters( 'kirki/dynamic_css/method', 'inline' ); + if ( $wp_customize ) { + // If we're in the customizer, load inline no matter what. + add_action( 'wp_enqueue_scripts', array( $this, 'inline_dynamic_css' ), $priority ); + + // If we're using file method, on save write the new styles. + if ( 'file' === $method ) { + $this->css_to_file = new Kirki_CSS_To_File(); + add_action( 'customize_save_after', array( $this->css_to_file, 'write_file' ) ); + } + return; + } + + if ( 'file' === $method ) { + // Attempt to write the CSS to file. + $this->css_to_file = new Kirki_CSS_To_File(); + // If we succesd, load this file. + $failed = get_transient( 'kirki_css_write_to_file_failed' ); + // If writing CSS to file hasn't failed, just enqueue this file. + if ( ! $failed ) { + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_compiled_file' ), $priority ); + return; + } + } + + // If we are in the customizer, load CSS using inline-styles. + // If we are in the frontend AND self::$ajax is true, then load dynamic CSS using AJAX. + if ( ( true === self::$ajax ) || ( isset( $config['inline_css'] ) && false === $config['inline_css'] ) ) { + add_action( 'wp_enqueue_scripts', array( $this, 'frontend_styles' ), $priority ); + add_action( 'wp_ajax_kirki_dynamic_css', array( $this, 'ajax_dynamic_css' ) ); + add_action( 'wp_ajax_nopriv_kirki_dynamic_css', array( $this, 'ajax_dynamic_css' ) ); + return; + } + + // If we got this far then add styles inline. + add_action( 'wp_enqueue_scripts', array( $this, 'inline_dynamic_css' ), $priority ); + } + + /** + * Enqueues compiled CSS file. + * + * @access public + * @since 3.0.0 + */ + public function enqueue_compiled_file() { + + wp_enqueue_style( 'kirki-styles', $this->css_to_file->get_url(), array(), $this->css_to_file->get_timestamp() ); + + } + /** + * Adds inline styles. + * + * @access public + */ + public function inline_dynamic_css() { + $configs = Kirki::$config; + if ( ! $this->processed ) { + foreach ( $configs as $config_id => $args ) { + if ( isset( $args['disable_output'] ) && true === $args['disable_output'] ) { + continue; + } + $styles = self::loop_controls( $config_id ); + $styles = apply_filters( "kirki/{$config_id}/dynamic_css", $styles ); + if ( ! empty( $styles ) ) { + wp_enqueue_style( 'kirki-styles-' . $config_id, trailingslashit( Kirki::$url ) . 'assets/css/kirki-styles.css', array(), KIRKI_VERSION ); + wp_add_inline_style( 'kirki-styles-' . $config_id, $styles ); + } + } + $this->processed = true; + } + } + + /** + * Get the dynamic-css.php file + * + * @access public + */ + public function ajax_dynamic_css() { + require wp_normalize_path( Kirki::$path . '/modules/css/dynamic-css.php' ); + exit; + } + + /** + * Enqueues the ajax stylesheet. + * + * @access public + */ + public function frontend_styles() { + wp_enqueue_style( 'kirki-styles-php', admin_url( 'admin-ajax.php' ) . '?action=kirki_dynamic_css', array(), KIRKI_VERSION ); + } + + /** + * Loop through all fields and create an array of style definitions. + * + * @static + * @access public + * @param string $config_id The configuration ID. + */ + public static function loop_controls( $config_id ) { + + // Get an instance of the Kirki_Modules_CSS_Generator class. + // This will make sure google fonts and backup fonts are loaded. + Kirki_Modules_CSS_Generator::get_instance(); + + $fields = Kirki::$fields; + $css = array(); + + // Early exit if no fields are found. + if ( empty( $fields ) ) { + return; + } + + foreach ( $fields as $field ) { + + // Only process fields that belong to $config_id. + if ( $config_id !== $field['kirki_config'] ) { + continue; + } + + if ( true === apply_filters( "kirki/{$config_id}/css/skip_hidden", true ) ) { + // Only continue if field dependencies are met. + if ( ! empty( $field['required'] ) ) { + $valid = true; + + foreach ( $field['required'] as $requirement ) { + if ( isset( $requirement['setting'] ) && isset( $requirement['value'] ) && isset( $requirement['operator'] ) ) { + $controller_value = Kirki_Values::get_value( $config_id, $requirement['setting'] ); + if ( ! Kirki_Helper::compare_values( $controller_value, $requirement['value'], $requirement['operator'] ) ) { + $valid = false; + } + } + } + + if ( ! $valid ) { + continue; + } + } + } + + // Only continue if $field['output'] is set. + if ( isset( $field['output'] ) && ! empty( $field['output'] ) ) { + $css = Kirki_Helper::array_replace_recursive( $css, Kirki_Modules_CSS_Generator::css( $field ) ); + + // Add the globals. + if ( isset( self::$css_array[ $config_id ] ) && ! empty( self::$css_array[ $config_id ] ) ) { + Kirki_Helper::array_replace_recursive( $css, self::$css_array[ $config_id ] ); + } + } + } + + $css = apply_filters( "kirki/{$config_id}/styles", $css ); + + if ( is_array( $css ) ) { + return Kirki_Modules_CSS_Generator::styles_parse( Kirki_Modules_CSS_Generator::add_prefixes( $css ) ); + } + } +} diff --git a/functions/kirki/modules/css/class-kirki-output.php b/functions/kirki/modules/css/class-kirki-output.php new file mode 100644 index 0000000..798554c --- /dev/null +++ b/functions/kirki/modules/css/class-kirki-output.php @@ -0,0 +1,337 @@ +config_id = $config_id; + $this->value = $value; + $this->output = $output; + $this->field = $field; + + $this->parse_output(); + } + + /** + * If we have a sanitize_callback defined, apply it to the value. + * + * @param array $output The output args. + * @param string|array $value The value. + * + * @return string|array + */ + protected function apply_sanitize_callback( $output, $value ) { + + if ( isset( $output['sanitize_callback'] ) && null !== $output['sanitize_callback'] ) { + + // If the sanitize_callback is invalid, return the value. + if ( ! is_callable( $output['sanitize_callback'] ) ) { + return $value; + } + return call_user_func( $output['sanitize_callback'], $this->value ); + } + + return $value; + + } + + /** + * If we have a value_pattern defined, apply it to the value. + * + * @param array $output The output args. + * @param string|array $value The value. + * @return string|array + */ + protected function apply_value_pattern( $output, $value ) { + + if ( isset( $output['value_pattern'] ) && ! empty( $output['value_pattern'] ) && is_string( $output['value_pattern'] ) ) { + if ( ! is_array( $value ) ) { + $value = str_replace( '$', $value, $output['value_pattern'] ); + } + if ( is_array( $value ) ) { + foreach ( array_keys( $value ) as $value_k ) { + if ( ! is_string( $value[ $value_k ] ) ) { + continue; + } + if ( isset( $output['choice'] ) ) { + if ( $output['choice'] === $value_k ) { + $value[ $output['choice'] ] = str_replace( '$', $value[ $output['choice'] ], $output['value_pattern'] ); + } + continue; + } + $value[ $value_k ] = str_replace( '$', $value[ $value_k ], $output['value_pattern'] ); + } + } + $value = $this->apply_pattern_replace( $output, $value ); + } // End if(). + return $value; + } + + /** + * If we have a value_pattern defined, apply it to the value. + * + * @param array $output The output args. + * @param string|array $value The value. + * @return string|array + */ + protected function apply_pattern_replace( $output, $value ) { + if ( isset( $output['pattern_replace'] ) && is_array( $output['pattern_replace'] ) ) { + $option_type = ( '' !== Kirki::get_config_param( $this->config_id, 'option_type' ) ) ? Kirki::get_config_param( $this->config_id, 'option_type' ) : 'theme_mod'; + $option_name = Kirki::get_config_param( $this->config_id, 'option_name' ); + $options = array(); + if ( $option_name ) { + $options = ( 'site_option' === $option_type ) ? get_site_option( $option_name ) : get_option( $option_name ); + } + foreach ( $output['pattern_replace'] as $search => $replace ) { + $replacement = ''; + switch ( $option_type ) { + case 'option': + if ( is_array( $options ) ) { + if ( $option_name ) { + $subkey = str_replace( array( $option_name, '[', ']' ), '', $replace ); + $replacement = ( isset( $options[ $subkey ] ) ) ? $options[ $subkey ] : ''; + break; + } + $replacement = ( isset( $options[ $replace ] ) ) ? $options[ $replace ] : ''; + break; + } + $replacement = get_option( $replace ); + break; + case 'site_option': + $replacement = ( is_array( $options ) && isset( $options[ $replace ] ) ) ? $options[ $replace ] : get_site_option( $replace ); + break; + case 'user_meta': + $user_id = get_current_user_id(); + if ( $user_id ) { + // @codingStandardsIgnoreLine + $replacement = get_user_meta( $user_id, $replace, true ); + } + break; + default: + $replacement = get_theme_mod( $replace ); + } + $replacement = ( false === $replacement ) ? '' : $replacement; + if ( is_array( $value ) ) { + foreach ( $value as $k => $v ) { + $_val = ( isset( $value[ $v ] ) ) ? $value[ $v ] : $v; + $value[ $k ] = str_replace( $search, $replacement, $_val ); + } + return $value; + } + $value = str_replace( $search, $replacement, $value ); + } // End foreach(). + } // End if(). + return $value; + } + + /** + * Parses the output arguments. + * Calls the process_output method for each of them. + * + * @access protected + */ + protected function parse_output() { + foreach ( $this->output as $output ) { + $skip = false; + + // Apply any sanitization callbacks defined. + $value = $this->apply_sanitize_callback( $output, $this->value ); + + // Skip if value is empty. + if ( '' === $this->value ) { + $skip = true; + } + + // No need to proceed this if the current value is the same as in the "exclude" value. + if ( isset( $output['exclude'] ) && is_array( $output['exclude'] ) ) { + foreach ( $output['exclude'] as $exclude ) { + if ( is_array( $value ) ) { + if ( is_array( $exclude ) ) { + $diff1 = array_diff( $value, $exclude ); + $diff2 = array_diff( $exclude, $value ); + + if ( empty( $diff1 ) && empty( $diff2 ) ) { + $skip = true; + } + } + // If 'choice' is defined check for sub-values too. + // Fixes https://github.com/aristath/kirki/issues/1416. + if ( isset( $output['choice'] ) && isset( $value[ $output['choice'] ] ) && $exclude == $value[ $output['choice'] ] ) { + $skip = true; + } + } + if ( $skip ) { + continue; + } + + // Skip if value is defined as excluded. + if ( $exclude === $value || ( '' === $exclude && empty( $value ) ) ) { + $skip = true; + } + } + } + if ( $skip ) { + continue; + } + + // Apply any value patterns defined. + $value = $this->apply_value_pattern( $output, $value ); + + if ( isset( $output['element'] ) && is_array( $output['element'] ) ) { + $output['element'] = array_unique( $output['element'] ); + sort( $output['element'] ); + $output['element'] = implode( ',', $output['element'] ); + } + + $value = $this->process_value( $value, $output ); + $this->process_output( $output, $value ); + } // End foreach(). + } + + /** + * Parses an output and creates the styles array for it. + * + * @access protected + * @param array $output The field output. + * @param string|array $value The value. + * + * @return null + */ + protected function process_output( $output, $value ) { + if ( ! isset( $output['element'] ) || ! isset( $output['property'] ) ) { + return; + } + $output['media_query'] = ( isset( $output['media_query'] ) ) ? $output['media_query'] : 'global'; + $output['prefix'] = ( isset( $output['prefix'] ) ) ? $output['prefix'] : ''; + $output['units'] = ( isset( $output['units'] ) ) ? $output['units'] : ''; + $output['suffix'] = ( isset( $output['suffix'] ) ) ? $output['suffix'] : ''; + + // Properties that can accept multiple values. + // Useful for example for gradients where all browsers use the "background-image" property + // and the browser prefixes go in the value_pattern arg. + $accepts_multiple = array( + 'background-image', + 'background', + ); + if ( in_array( $output['property'], $accepts_multiple, true ) ) { + if ( isset( $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] ) && ! is_array( $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] ) ) { + $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = (array) $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ]; + } + $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ][] = $output['prefix'] . $value . $output['units'] . $output['suffix']; + return; + } + $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $output['prefix'] . $this->process_property_value( $output['property'], $value ) . $output['units'] . $output['suffix']; + } + + /** + * Some CSS properties are unique. + * We need to tweak the value to make everything works as expected. + * + * @access protected + * @param string $property The CSS property. + * @param string|array $value The value. + * + * @return array + */ + protected function process_property_value( $property, $value ) { + $properties = apply_filters( + "kirki/{$this->config_id}/output/property-classnames", array( + 'font-family' => 'Kirki_Output_Property_Font_Family', + 'background-image' => 'Kirki_Output_Property_Background_Image', + 'background-position' => 'Kirki_Output_Property_Background_Position', + ) + ); + if ( array_key_exists( $property, $properties ) ) { + $classname = $properties[ $property ]; + $obj = new $classname( $property, $value ); + return $obj->get_value(); + } + return $value; + } + + /** + * Returns the value. + * + * @access protected + * @param string|array $value The value. + * @param array $output The field "output". + * @return string|array + */ + protected function process_value( $value, $output ) { + if ( isset( $output['property'] ) ) { + return $this->process_property_value( $output['property'], $value ); + } + return $value; + } + + /** + * Exploses the private $styles property to the world + * + * @access protected + * @return array + */ + public function get_styles() { + return $this->styles; + } +} diff --git a/functions/kirki/modules/css/field/class-kirki-output-field-background.php b/functions/kirki/modules/css/field/class-kirki-output-field-background.php new file mode 100644 index 0000000..4d6d72b --- /dev/null +++ b/functions/kirki/modules/css/field/class-kirki-output-field-background.php @@ -0,0 +1,42 @@ + 'global', + 'element' => 'body', + 'prefix' => '', + 'suffix' => '', + ) + ); + + foreach ( array( 'background-image', 'background-color', 'background-repeat', 'background-position', 'background-size', 'background-attachment' ) as $property ) { + if ( isset( $value[ $property ] ) && ! empty( $value[ $property ] ) ) { + $this->styles[ $output['media_query'] ][ $output['element'] ][ $property ] = $output['prefix'] . $this->process_property_value( $property, $value[ $property ] ) . $output['suffix']; + } + } + } +} diff --git a/functions/kirki/modules/css/field/class-kirki-output-field-dimensions.php b/functions/kirki/modules/css/field/class-kirki-output-field-dimensions.php new file mode 100644 index 0000000..6ff8e86 --- /dev/null +++ b/functions/kirki/modules/css/field/class-kirki-output-field-dimensions.php @@ -0,0 +1,56 @@ + '', + 'property' => '', + 'media_query' => 'global', + 'prefix' => '', + 'suffix' => '', + ) + ); + + if ( ! is_array( $value ) ) { + return; + } + + foreach ( $value as $key => $sub_value ) { + + $property = ( empty( $output['property'] ) ) ? $key : $output['property'] . '-' . $key; + if ( isset( $output['choice'] ) && $output['property'] ) { + if ( $key === $output['choice'] ) { + $property = $output['property']; + } else { + continue; + } + } + if ( false !== strpos( $output['property'], '%%' ) ) { + $property = str_replace( '%%', $key, $output['property'] ); + } + $this->styles[ $output['media_query'] ][ $output['element'] ][ $property ] = $output['prefix'] . $this->process_property_value( $property, $value[ $key ] ) . $output['suffix']; + } + } +} diff --git a/functions/kirki/modules/css/field/class-kirki-output-field-image.php b/functions/kirki/modules/css/field/class-kirki-output-field-image.php new file mode 100644 index 0000000..7cd822b --- /dev/null +++ b/functions/kirki/modules/css/field/class-kirki-output-field-image.php @@ -0,0 +1,48 @@ + 'global', + 'prefix' => '', + 'units' => '', + 'suffix' => '', + ) ); + if ( is_array( $value ) ) { + if ( isset( $output['choice'] ) && $output['choice'] ) { + $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $output['prefix'] . $this->process_property_value( $output['property'], $value[ $output['choice'] ] ) . $output['units'] . $output['suffix']; + return; + } + if ( isset( $value['url'] ) ) { + $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $output['prefix'] . $this->process_property_value( $output['property'], $value['url'] ) . $output['units'] . $output['suffix']; + return; + } + return; + } + $this->styles[ $output['media_query'] ][ $output['element'] ][ $output['property'] ] = $output['prefix'] . $this->process_property_value( $output['property'], $value ) . $output['units'] . $output['suffix']; + } +} diff --git a/functions/kirki/modules/css/field/class-kirki-output-field-multicolor.php b/functions/kirki/modules/css/field/class-kirki-output-field-multicolor.php new file mode 100644 index 0000000..814409f --- /dev/null +++ b/functions/kirki/modules/css/field/class-kirki-output-field-multicolor.php @@ -0,0 +1,54 @@ + $sub_value ) { + + // If "element" is not defined, there's no reason to continue. + if ( ! isset( $output['element'] ) ) { + continue; + } + + // If the "choice" is not the same as the $key in our loop, there's no reason to proceed. + if ( isset( $output['choice'] ) && $key !== $output['choice'] ) { + continue; + } + + // If "property" is not defined, fallback to the $key. + $property = ( ! isset( $output['property'] ) || empty( $output['property'] ) ) ? $key : $output['property']; + + // If "media_query" is not defined, use "global". + if ( ! isset( $output['media_query'] ) || empty( $output['media_query'] ) ) { + $output['media_query'] = 'global'; + } + + // If "suffix" is defined, add it to the value. + $output['suffix'] = ( isset( $output['suffix'] ) ) ? $output['suffix'] : ''; + + // Create the styles. + $this->styles[ $output['media_query'] ][ $output['element'] ][ $property ] = $sub_value . $output['suffix']; + + } + } +} diff --git a/functions/kirki/modules/css/field/class-kirki-output-field-typography.php b/functions/kirki/modules/css/field/class-kirki-output-field-typography.php new file mode 100644 index 0000000..ca69df6 --- /dev/null +++ b/functions/kirki/modules/css/field/class-kirki-output-field-typography.php @@ -0,0 +1,94 @@ +field['default'][ $property ] ) ) { + continue; + } + + // Early exit if the value is not saved in the values. + if ( ! isset( $value[ $property ] ) || ! $value[ $property ] ) { + continue; + } + + // Early exit if we use "choice" but not for this property. + if ( isset( $output['choice'] ) && $output['choice'] !== $property ) { + continue; + } + + // Take care of variants. + if ( 'variant' == $property && isset( $value['variant'] ) && ! empty( $value['variant'] ) ) { + + // Get the font_weight. + $font_weight = str_replace( 'italic', '', $value['variant'] ); + $font_weight = ( in_array( $font_weight, array( '', 'regular' ) ) ) ? '400' : $font_weight; + + // Is this italic? + $is_italic = ( false !== strpos( $value['variant'], 'italic' ) ); + $this->styles[ $output['media_query'] ][ $output['element'] ]['font-weight'] = $font_weight; + if ( $is_italic ) { + $this->styles[ $output['media_query'] ][ $output['element'] ]['font-style'] = 'italic'; + } + continue; + } + + $property_value = $this->process_property_value( $property, $value[ $property ] ); + if ( 'font-family' === $property ) { + $value['font-backup'] = ( isset( $value['font-backup'] ) ) ? $value['font-backup'] : ''; + $property_value = $this->process_property_value( $property, array( + $value['font-family'], + $value['font-backup'], + ) ); + } + $property = ( isset( $output['choice'] ) && isset( $output['property'] ) ) ? $output['property'] : $property; + $property_value = ( is_array( $property_value ) && isset( $property_value[0] ) ) ? $property_value[0] : $property_value; + $this->styles[ $output['media_query'] ][ $output['element'] ][ $property ] = $output['prefix'] . $property_value . $output['suffix']; + } + } +} diff --git a/functions/kirki/modules/css/property/class-kirki-output-property-background-image.php b/functions/kirki/modules/css/property/class-kirki-output-property-background-image.php new file mode 100644 index 0000000..9904df1 --- /dev/null +++ b/functions/kirki/modules/css/property/class-kirki-output-property-background-image.php @@ -0,0 +1,40 @@ +value ) && isset( $this->value['url'] ) ) { + $this->value = $this->value['url']; + } + + if ( false === strpos( $this->value, 'gradient' ) && false === strpos( $this->value, 'url(' ) ) { + if ( empty( $this->value ) ) { + return; + } + + if ( preg_match( '/^\d+$/', $this->value ) ) { + $this->value = 'url("' . set_url_scheme( wp_get_attachment_url( $this->value ) ) . '")'; + } else { + $this->value = 'url("' . set_url_scheme( $this->value ) . '")'; + } + } + } +} diff --git a/functions/kirki/modules/css/property/class-kirki-output-property-background-position.php b/functions/kirki/modules/css/property/class-kirki-output-property-background-position.php new file mode 100644 index 0000000..6520723 --- /dev/null +++ b/functions/kirki/modules/css/property/class-kirki-output-property-background-position.php @@ -0,0 +1,72 @@ +value = trim( $this->value ); + + // If you use calc() there, I suppose you know what you're doing. + // No need to process this any further, just exit. + if ( false !== strpos( $this->value, 'calc' ) ) { + return; + } + + // If the value is initial or inherit, we don't need to do anything. + // Just exit. + if ( 'initial' === $this->value || 'inherit' === $this->value ) { + return; + } + + $x_dimensions = array( 'left', 'center', 'right' ); + $y_dimensions = array( 'top', 'center', 'bottom' ); + + // If there's a space, we have an X and a Y value. + if ( false !== strpos( $this->value, ' ' ) ) { + $xy = explode( ' ', $this->value ); + + $x = trim( $xy[0] ); + $y = trim( $xy[1] ); + + // If x is not left/center/right, we need to sanitize it. + if ( ! in_array( $x, $x_dimensions, true ) ) { + $x = Kirki_Sanitize_Values::css_dimension( $x ); + } + if ( ! in_array( $y, $y_dimensions, true ) ) { + $y = Kirki_Sanitize_Values::css_dimension( $y ); + } + $this->value = $x . ' ' . $y; + return; + } + $x = 'center'; + foreach ( $x_dimensions as $x_dimension ) { + if ( false !== strpos( $this->value, $x_dimension ) ) { + $x = $x_dimension; + } + } + $y = 'center'; + foreach ( $y_dimensions as $y_dimension ) { + if ( false !== strpos( $this->value, $y_dimension ) ) { + $y = $y_dimension; + } + } + $this->value = $x . ' ' . $y; + } +} diff --git a/functions/kirki/modules/css/property/class-kirki-output-property-font-family.php b/functions/kirki/modules/css/property/class-kirki-output-property-font-family.php new file mode 100644 index 0000000..17e097e --- /dev/null +++ b/functions/kirki/modules/css/property/class-kirki-output-property-font-family.php @@ -0,0 +1,65 @@ +value; + $backup = ''; + if ( is_array( $this->value ) && isset( $this->value[0] ) && isset( $this->value[1] ) ) { + $family = $this->value[0]; + $backup = $this->value[1]; + } + + // Make sure the value is a string. + // If not, then early exit. + if ( ! is_string( $family ) ) { + return; + } + + // Hack for standard fonts. + $family = str_replace( '"', '"', $family ); + + // Add backup font. + if ( Kirki_Fonts::is_google_font( $family ) ) { + + if ( '' === $backup && isset( $google_fonts_array[ $family ] ) && isset( $backup_fonts[ $google_fonts_array[ $family ]['category'] ] ) ) { + $backup = $backup_fonts[ $google_fonts_array[ $family ]['category'] ]; + } + + // Add double quotes if needed. + if ( false !== strpos( $family, ' ' ) && false === strpos( $family, '"' ) ) { + $this->value = '"' . $family . '", ' . $backup; + return; + } + $this->value = $family . ', ' . $backup; + return; + } + + // Add double quotes if needed. + if ( false !== strpos( $family, ' ' ) && false === strpos( $family, '"' ) ) { + $this->value = '"' . $family . '"'; + } + $this->value = html_entity_decode( $family, ENT_QUOTES ); + } +} diff --git a/functions/kirki/modules/css/property/class-kirki-output-property.php b/functions/kirki/modules/css/property/class-kirki-output-property.php new file mode 100644 index 0000000..5da565f --- /dev/null +++ b/functions/kirki/modules/css/property/class-kirki-output-property.php @@ -0,0 +1,64 @@ +property = $property; + $this->value = $value; + $this->process_value(); + } + + /** + * Modifies the value. + * + * @access protected + */ + protected function process_value() { + + } + + /** + * Gets the value. + * + * @access protected + */ + public function get_value() { + return $this->value; + } +} diff --git a/functions/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php b/functions/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php new file mode 100644 index 0000000..caae260 --- /dev/null +++ b/functions/kirki/modules/custom-sections/class-kirki-modules-custom-sections.php @@ -0,0 +1,162 @@ + 'Kirki_Sections_Default_Section', + 'kirki-expanded' => 'Kirki_Sections_Expanded_Section', + 'kirki-nested' => 'Kirki_Sections_Nested_Section', + ); + return array_merge( $section_types, $new_types ); + + } + + /** + * Add the custom panel types. + * + * @access public + * @since 3.0.0 + * @param array $panel_types The registered section-types. + * @return array + */ + public function set_panel_types( $panel_types ) { + + $new_types = array( + 'kirki-nested' => 'Kirki_Panels_Nested_Panel', + ); + return array_merge( $panel_types, $new_types ); + + } + + /** + * Include the custom-section classes. + * + * @access public + * @since 3.0.0 + */ + public function include_sections_and_panels() { + + // Sections. + $folder_path = dirname( __FILE__ ) . '/sections/'; + $section_types = apply_filters( 'kirki/section_types', array() ); + + foreach ( $section_types as $id => $class ) { + if ( ! class_exists( $class ) ) { + $path = wp_normalize_path( $folder_path . 'class-kirki-sections-' . $id . '-section.php' ); + if ( file_exists( $path ) ) { + include_once $path; + continue; + } + $path = str_replace( 'class-kirki-sections-kirki-', 'class-kirki-sections-', $path ); + if ( file_exists( $path ) ) { + include_once $path; + } + } + } + + // Panels. + $folder_path = dirname( __FILE__ ) . '/panels/'; + $panel_types = apply_filters( 'kirki/panel_types', array() ); + + foreach ( $panel_types as $id => $class ) { + if ( ! class_exists( $class ) ) { + $path = wp_normalize_path( $folder_path . 'class-kirki-panels-' . $id . '-panel.php' ); + if ( file_exists( $path ) ) { + include_once $path; + continue; + } + $path = str_replace( 'class-kirki-panels-kirki-', 'class-kirki-panels-', $path ); + if ( file_exists( $path ) ) { + include_once $path; + } + } + } + + } + + /** + * Enqueues any necessary scripts and styles. + * + * @access public + * @since 3.0.0 + */ + public function enqueue_scrips() { + + wp_enqueue_style( 'kirki-custom-sections', trailingslashit( Kirki::$url ) . 'modules/custom-sections/sections.css', array(), KIRKI_VERSION ); + wp_enqueue_script( 'kirki-custom-sections', trailingslashit( Kirki::$url ) . 'modules/custom-sections/sections.js', array( 'jquery', 'customize-base', 'customize-controls' ), KIRKI_VERSION ); + + } + +} diff --git a/functions/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php b/functions/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php new file mode 100644 index 0000000..980778c --- /dev/null +++ b/functions/kirki/modules/custom-sections/panels/class-kirki-panels-nested-panel.php @@ -0,0 +1,59 @@ +title, ENT_QUOTES, get_bloginfo( 'charset' ) ); + $array['content'] = $this->get_content(); + $array['active'] = $this->active(); + $array['instanceNumber'] = $this->instance_number; + + return $array; + } +} diff --git a/functions/kirki/modules/custom-sections/sections.css b/functions/kirki/modules/custom-sections/sections.css new file mode 100644 index 0000000..21490dc --- /dev/null +++ b/functions/kirki/modules/custom-sections/sections.css @@ -0,0 +1,20 @@ +#customize-theme-controls .control-section-kirki-expanded .accordion-section-title { + display: none; } +#customize-theme-controls .control-section-kirki-expanded .customize-section-back { + display: none; } +#customize-theme-controls .customize-pane-child.control-section-kirki-expanded { + position: relative; + visibility: visible; + height: auto; + margin-left: -100%; } + #customize-theme-controls .customize-pane-child.control-section-kirki-expanded h3 .customize-action { + display: none; } + +#customize-theme-controls .customize-pane-child.current-section-parent, +.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel-parent { + transform: translateX(-100%); } + +.control-section-kirki-nested { + margin: 0 -12px; } + +/*# sourceMappingURL=sections.css.map */ diff --git a/functions/kirki/modules/custom-sections/sections.js b/functions/kirki/modules/custom-sections/sections.js new file mode 100644 index 0000000..f7609ab --- /dev/null +++ b/functions/kirki/modules/custom-sections/sections.js @@ -0,0 +1,256 @@ +jQuery( document ).ready( function() { + + wp.customize.section.each( function( section ) { + + // Get the pane element. + var pane = jQuery( '#sub-accordion-section-' + section.id ), + sectionLi = jQuery( '#accordion-section-' + section.id ); + + // Check if the section is expanded. + if ( sectionLi.hasClass( 'control-section-kirki-expanded' ) ) { + + // Move element. + pane.appendTo( sectionLi ); + + } + + } ); + +} ); + +/** + * @see https://wordpress.stackexchange.com/a/256103/17078 + */ +( function() { + + var _panelEmbed, + _panelIsContextuallyActive, + _panelAttachEvents, + _sectionEmbed, + _sectionIsContextuallyActive, + _sectionAttachEvents; + + wp.customize.bind( 'pane-contents-reflowed', function() { + + var panels = [], + sections = []; + + // Reflow Sections. + wp.customize.section.each( function( section ) { + + if ( 'kirki-nested' !== section.params.type || _.isUndefined( section.params.section ) ) { + return; + } + sections.push( section ); + }); + + sections.sort( wp.customize.utils.prioritySort ).reverse(); + + jQuery.each( sections, function( i, section ) { + var parentContainer = jQuery( '#sub-accordion-section-' + section.params.section ); + + parentContainer.children( '.section-meta' ).after( section.headContainer ); + }); + + // Reflow Panels. + wp.customize.panel.each( function( panel ) { + if ( 'kirki-nested' !== panel.params.type || _.isUndefined( panel.params.panel ) ) { + return; + } + panels.push( panel ); + }); + + panels.sort( wp.customize.utils.prioritySort ).reverse(); + + jQuery.each( panels, function( i, panel ) { + var parentContainer = jQuery( '#sub-accordion-panel-' + panel.params.panel ); + + parentContainer.children( '.panel-meta' ).after( panel.headContainer ); + }); + }); + + // Extend Panel. + _panelEmbed = wp.customize.Panel.prototype.embed; + _panelIsContextuallyActive = wp.customize.Panel.prototype.isContextuallyActive; + _panelAttachEvents = wp.customize.Panel.prototype.attachEvents; + + wp.customize.Panel = wp.customize.Panel.extend({ + attachEvents: function() { + var panel; + + if ( 'kirki-nested' !== this.params.type || _.isUndefined( this.params.panel ) ) { + _panelAttachEvents.call( this ); + return; + } + + _panelAttachEvents.call( this ); + + panel = this; + + panel.expanded.bind( function( expanded ) { + var parent = wp.customize.panel( panel.params.panel ); + + if ( expanded ) { + parent.contentContainer.addClass( 'current-panel-parent' ); + } else { + parent.contentContainer.removeClass( 'current-panel-parent' ); + } + }); + + panel.container.find( '.customize-panel-back' ).off( 'click keydown' ).on( 'click keydown', function( event ) { + if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) { + return; + } + event.preventDefault(); // Keep this AFTER the key filter above + + if ( panel.expanded() ) { + wp.customize.panel( panel.params.panel ).expand(); + } + }); + }, + + embed: function() { + + var panel = this, + parentContainer; + if ( 'kirki-nested' !== this.params.type || _.isUndefined( this.params.panel ) ) { + _panelEmbed.call( this ); + return; + } + + _panelEmbed.call( this ); + + parentContainer = jQuery( '#sub-accordion-panel-' + this.params.panel ); + + parentContainer.append( panel.headContainer ); + }, + + isContextuallyActive: function() { + + var panel = this, + children, + activeCount = 0; + + if ( 'kirki-nested' !== this.params.type ) { + return _panelIsContextuallyActive.call( this ); + } + + children = this._children( 'panel', 'section' ); + + wp.customize.panel.each( function( child ) { + if ( ! child.params.panel ) { + return; + } + + if ( child.params.panel !== panel.id ) { + return; + } + + children.push( child ); + }); + + children.sort( wp.customize.utils.prioritySort ); + + _( children ).each( function( child ) { + if ( child.active() && child.isContextuallyActive() ) { + activeCount += 1; + } + }); + return ( 0 !== activeCount ); + } + }); + + // Extend Section. + _sectionEmbed = wp.customize.Section.prototype.embed; + _sectionIsContextuallyActive = wp.customize.Section.prototype.isContextuallyActive; + _sectionAttachEvents = wp.customize.Section.prototype.attachEvents; + + wp.customize.Section = wp.customize.Section.extend({ + attachEvents: function() { + + var section = this; + + if ( 'kirki-nested' !== this.params.type || _.isUndefined( this.params.section ) ) { + _sectionAttachEvents.call( section ); + return; + } + + _sectionAttachEvents.call( section ); + + section.expanded.bind( function( expanded ) { + var parent = wp.customize.section( section.params.section ); + + if ( expanded ) { + parent.contentContainer.addClass( 'current-section-parent' ); + } else { + parent.contentContainer.removeClass( 'current-section-parent' ); + } + }); + + section.container.find( '.customize-section-back' ).off( 'click keydown' ).on( 'click keydown', function( event ) { + if ( wp.customize.utils.isKeydownButNotEnterEvent( event ) ) { + return; + } + event.preventDefault(); // Keep this AFTER the key filter above + if ( section.expanded() ) { + wp.customize.section( section.params.section ).expand(); + } + }); + }, + + embed: function() { + + var section = this, + parentContainer; + + if ( 'kirki-nested' !== this.params.type || _.isUndefined( this.params.section ) ) { + _sectionEmbed.call( section ); + return; + } + + _sectionEmbed.call( section ); + + parentContainer = jQuery( '#sub-accordion-section-' + this.params.section ); + + parentContainer.append( section.headContainer ); + }, + + isContextuallyActive: function() { + var section = this, + children, + activeCount = 0; + if ( 'kirki-nested' !== this.params.type ) { + return _sectionIsContextuallyActive.call( this ); + } + + children = this._children( 'section', 'control' ); + + wp.customize.section.each( function( child ) { + if ( ! child.params.section ) { + return; + } + + if ( child.params.section !== section.id ) { + return; + } + children.push( child ); + }); + + children.sort( wp.customize.utils.prioritySort ); + + _( children ).each( function( child ) { + if ( 'undefined' !== typeof child.isContextuallyActive ) { + if ( child.active() && child.isContextuallyActive() ) { + activeCount += 1; + } + } else { + if ( child.active() ) { + activeCount += 1; + } + } + }); + + return ( 0 !== activeCount ); + } + }); +})( jQuery ); diff --git a/functions/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php b/functions/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php new file mode 100644 index 0000000..3bad63f --- /dev/null +++ b/functions/kirki/modules/custom-sections/sections/class-kirki-sections-default-section.php @@ -0,0 +1,25 @@ +title, ENT_QUOTES, get_bloginfo( 'charset' ) ); + $array['content'] = $this->get_content(); + $array['active'] = $this->active(); + $array['instanceNumber'] = $this->instance_number; + + $array['customizeAction'] = esc_attr__( 'Customizing', 'blogrow' ); + if ( $this->panel ) { + /* translators: The title. */ + $array['customizeAction'] = sprintf( esc_attr__( 'Customizing ▸ %s', 'blogrow' ), esc_html( $this->manager->get_panel( $this->panel )->title ) ); + } + return $array; + } +} diff --git a/functions/kirki/modules/customizer-branding/branding.js b/functions/kirki/modules/customizer-branding/branding.js new file mode 100644 index 0000000..70254fe --- /dev/null +++ b/functions/kirki/modules/customizer-branding/branding.js @@ -0,0 +1,14 @@ +/* global kirkiBranding */ +jQuery( document ).ready( function() { + + 'use strict'; + + if ( '' !== kirkiBranding.logoImage ) { + jQuery( 'div#customize-info .preview-notice' ).replaceWith( '' ); + } + + if ( '' !== kirkiBranding.description ) { + jQuery( 'div#customize-info > .customize-panel-description' ).replaceWith( '
                        ' + kirkiBranding.description + '
                        ' ); + } + +}); diff --git a/functions/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php b/functions/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php new file mode 100644 index 0000000..6919dda --- /dev/null +++ b/functions/kirki/modules/customizer-branding/class-kirki-modules-customizer-branding.php @@ -0,0 +1,89 @@ + '', + 'description' => '', + ); + if ( isset( $config['logo_image'] ) && '' !== $config['logo_image'] ) { + $vars['logoImage'] = esc_url_raw( $config['logo_image'] ); + } + if ( isset( $config['description'] ) && '' !== $config['description'] ) { + $vars['description'] = esc_textarea( $config['description'] ); + } + + if ( ! empty( $vars['logoImage'] ) || ! empty( $vars['description'] ) ) { + wp_register_script( 'kirki-branding', Kirki::$url . '/modules/customizer-branding/branding.js', array(), KIRKI_VERSION ); + wp_localize_script( 'kirki-branding', 'kirkiBranding', $vars ); + wp_enqueue_script( 'kirki-branding' ); + } + } +} diff --git a/functions/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php b/functions/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php new file mode 100644 index 0000000..491ca6b --- /dev/null +++ b/functions/kirki/modules/customizer-styling/class-kirki-modules-customizer-styling.php @@ -0,0 +1,425 @@ + $back_obj->lightness ) ? $back_obj->getNew( 'lightness', $back_obj->lightness + 60 )->toCSS( $back_obj->mode ) : $back_obj->getNew( 'lightness', $back_obj->lightness - 60 )->toCSS( $back_obj->mode ); + $border_on_back = ( 80 < $back_obj->lightness ) ? $back_obj->getNew( 'lightness', $back_obj->lightness - 13 )->toCSS( $back_obj->mode ) : $back_obj->getNew( 'lightness', $back_obj->lightness + 13 )->toCSS( $back_obj->mode ); + $back_on_back = ( 90 < $back_obj->lightness ) ? $back_obj->getNew( 'lightness', $back_obj->lightness - 6 )->toCSS( $back_obj->mode ) : $back_obj->getNew( 'lightness', $back_obj->lightness + 11 )->toCSS( $back_obj->mode ); + $hover_on_back = ( 90 < $back_obj->lightness ) ? $back_obj->getNew( 'lightness', $back_obj->lightness - 3 )->toCSS( $back_obj->mode ) : $back_obj->getNew( 'lightness', $back_obj->lightness + 3 )->toCSS( $back_obj->mode ); + $arrows_on_back = ( 50 > $back_obj->lightness ) ? $back_obj->getNew( 'lightness', $back_obj->lightness + 30 )->toCSS( $back_obj->mode ) : $back_obj->getNew( 'lightness', $back_obj->lightness - 30 )->toCSS( $back_obj->mode ); + } + $accent = ( isset( $config['color_accent'] ) ) ? $config['color_accent'] : false; + if ( $accent ) { + $accent_obj = ariColor::newColor( $accent ); + $text_on_accent = ( 60 > $accent_obj->lightness ) ? $accent_obj->getNew( 'lightness', $accent_obj->lightness + 60 )->toCSS( $accent_obj->mode ) : $accent_obj->getNew( 'lightness', $accent_obj->lightness - 60 )->toCSS( $accent_obj->mode ); + $border_on_accent = ( 50 < $accent_obj->lightness ) ? $accent_obj->getNew( 'lightness', $accent_obj->lightness - 4 )->toCSS( $accent_obj->mode ) : $accent_obj->getNew( 'lightness', $accent_obj->lightness + 4 )->toCSS( $accent_obj->mode ); + $accent_disabled_obj = ( 35 < $accent_obj->lightness ) ? $accent_obj->getNew( 'lightness', $accent_obj->lightness - 30 ) : $accent_obj->getNew( 'lightness', $accent_obj->lightness + 30 ); + $accent_disabled = $accent_disabled_obj->toCSS( $accent_disabled_obj->mode ); + $text_on_accent_disabled = ( 60 > $accent_disabled_obj->lightness ) ? $accent_disabled_obj->getNew( 'lightness', $accent_disabled_obj->lightness + 60 )->toCSS( $accent_disabled_obj->mode ) : $accent_disabled_obj->getNew( 'lightness', $accent_disabled_obj->lightness - 60 )->toCSS( $accent_disabled_obj->mode ); + $border_on_accent_disabled = ( 50 < $accent_disabled_obj->lightness ) ? $accent_disabled_obj->getNew( 'lightness', $accent_disabled_obj->lightness - 4 )->toCSS( $accent_disabled_obj->mode ) : $accent_disabled_obj->getNew( 'lightness', $accent_disabled_obj->lightness + 4 )->toCSS( $accent_disabled_obj->mode ); + } + ?> + + =' === operator || 'greater or equal' === operator || 'equal or greater' === operator ) { + result = value2 >= value1; + } else if ( '<=' === operator || 'smaller or equal' === operator || 'equal or smaller' === operator ) { + result = value2 <= value1; + } else if ( '>' === operator || 'greater' === operator ) { + result = value2 > value1; + } else if ( '<' === operator || 'smaller' === operator ) { + result = value2 < value1; + } else if ( 'contains' === operator || 'in' === operator ) { + if ( _.isArray( value2 ) ) { + found = false; + _.each( value2, function( value ) { + if ( value == value1 ) { // jshint ignore:line + found = true; + } + } ); + return found; + } else if ( _.isObject( value2 ) ) { + found = false; + if ( ! _.isUndefined( value2[ value1 ] ) ) { + found = true; + } + + _.each( value2, function( subValue ) { + if ( value1 === subValue ) { + found = true; + } + } ); + return found; + } else if ( _.isString( value2 ) ) { + return value1.indexOf( value2 ) > -1; + } + } + if ( null === result ) { + return true; + } + return result; + } +}; + +jQuery( document ).ready( function() { + kirkiDependencies.init(); +} ); diff --git a/functions/kirki/modules/icons/class-kirki-modules-icons.php b/functions/kirki/modules/icons/class-kirki-modules-icons.php new file mode 100644 index 0000000..79de392 --- /dev/null +++ b/functions/kirki/modules/icons/class-kirki-modules-icons.php @@ -0,0 +1,108 @@ +add_icon( $section['id'], $section['icon'], 'section' ); + } + } + + // Parse panels and find ones with icons. + foreach ( $panels as $panel ) { + if ( isset( $panel['icon'] ) ) { + $this->add_icon( $panel['id'], $panel['icon'], 'panel' ); + } + } + + wp_enqueue_script( 'kirki_panel_and_section_icons', trailingslashit( Kirki::$url ) . 'modules/icons/icons.js', array( 'jquery', 'customize-base', 'customize-controls' ), KIRKI_VERSION, true ); + wp_localize_script( 'kirki_panel_and_section_icons', 'kirkiIcons', self::$icons ); + + } +} diff --git a/functions/kirki/modules/icons/icons.js b/functions/kirki/modules/icons/icons.js new file mode 100644 index 0000000..b19a2cc --- /dev/null +++ b/functions/kirki/modules/icons/icons.js @@ -0,0 +1,30 @@ +/* global kirkiIcons */ +jQuery( document ).ready( function() { + + 'use strict'; + + if ( ! _.isUndefined( kirkiIcons.section ) ) { + + // Parse sections and add icons. + _.each( kirkiIcons.section, function( icon, sectionID ) { + + // Add icons in list. + jQuery( '#accordion-section-' + sectionID + ' > h3' ).addClass( 'dashicons-before ' + icon ); + + // Add icons on titles when a section is open. + jQuery( '#sub-accordion-section-' + sectionID + ' .customize-section-title > h3' ).append( '' ); + } ); + + } + + if ( ! _.isUndefined( kirkiIcons.panel ) ) { + + _.each( kirkiIcons.panel, function( icon, panelID ) { + + // Add icons in lists & headers. + jQuery( '#accordion-panel-' + panelID + ' > h3, #sub-accordion-panel-' + panelID + ' .panel-title' ).addClass( 'dashicons-before ' + icon ); + } ); + + } + +}); diff --git a/functions/kirki/modules/loading/class-kirki-modules-loading.php b/functions/kirki/modules/loading/class-kirki-modules-loading.php new file mode 100644 index 0000000..8f6d6e8 --- /dev/null +++ b/functions/kirki/modules/loading/class-kirki-modules-loading.php @@ -0,0 +1,169 @@ +remove_default_loading_styles(); + + } + + /** + * Adds a custom "loading" div $ its styles when changes are made to the customizer. + * + * @access public + */ + public function add_loader_to_footer() { + ?> +
                        + +
                        + `. + * + * @access public + */ + public function add_loader_styles_to_header() { + ?> + + meta = get_post_custom( $queried_post->id ); + } + $wp_scripts->add_data( 'kirki_post_meta_previewed_preview', 'data', sprintf( 'var _customizePostPreviewedQueriedObject = %s;', wp_json_encode( $queried_post ) ) ); + } +} diff --git a/functions/kirki/modules/post-meta/customize-controls.js b/functions/kirki/modules/post-meta/customize-controls.js new file mode 100644 index 0000000..09d8797 --- /dev/null +++ b/functions/kirki/modules/post-meta/customize-controls.js @@ -0,0 +1,23 @@ +jQuery( document ).ready( function() { + + var self; + + self = { + queriedPost: new wp.customize.Value() + }; + + // Listen for queried-post messages from the preview. + wp.customize.bind( 'ready', function() { + wp.customize.previewer.bind( 'queried-post', function( queriedPost ) { + self.queriedPost.set( queriedPost || false ); + } ); + } ); + + // Listen for post + self.queriedPost.bind( function( newPost, oldPost ) { + window.kirkiPost = false; + if ( newPost || oldPost ) { + window.kirkiPost = ( newPost ) ? newPost : oldPost; + } + } ); +} ); diff --git a/functions/kirki/modules/post-meta/customize-preview.js b/functions/kirki/modules/post-meta/customize-preview.js new file mode 100644 index 0000000..80a6bfb --- /dev/null +++ b/functions/kirki/modules/post-meta/customize-preview.js @@ -0,0 +1,19 @@ +/* global wp, _customizePostPreviewedQueriedObject */ +jQuery( document ).ready( function() { + + var self; + + self = { + queriedPost: null + }; + if ( ! _.isUndefined( _customizePostPreviewedQueriedObject ) ) { + self.queriedPost = _customizePostPreviewedQueriedObject; + } + + // Send the queried post object to the Customizer pane when ready. + wp.customize.bind( 'preview-ready', function() { + wp.customize.preview.bind( 'active', function() { + wp.customize.preview.send( 'queried-post', self.queriedPost ); + } ); + } ); +} ); diff --git a/functions/kirki/modules/postmessage/class-kirki-modules-postmessage.php b/functions/kirki/modules/postmessage/class-kirki-modules-postmessage.php new file mode 100644 index 0000000..ce1210c --- /dev/null +++ b/functions/kirki/modules/postmessage/class-kirki-modules-postmessage.php @@ -0,0 +1,518 @@ +script .= $this->script( $field ); + } + } + $this->script = apply_filters( 'kirki/postmessage/script', $this->script ); + wp_add_inline_script( 'kirki_auto_postmessage', $this->script, 'after' ); + + } + + /** + * Generates script for a single field. + * + * @access protected + * @since 3.0.0 + * @param array $args The arguments. + */ + protected function script( $args ) { + + $script = 'wp.customize(\'' . $args['settings'] . '\',function(value){value.bind(function(newval){'; + + $add_css = false; + foreach ( $args['js_vars'] as $js_var ) { + if ( ! isset( $js_var['function'] ) || 'html' !== $js_var['function'] ) { + $add_css = true; + } + } + + if ( $add_css ) { + + // append unique style tag if not exist + // The style ID. + $style_id = 'kirki-postmessage-' . str_replace( array( '[', ']' ), '', $args['settings'] ); + $script .= 'if(null===document.getElementById(\'' . $style_id . '\')||\'undefined\'===typeof document.getElementById(\'' . $style_id . '\')){jQuery(\'head\').append(\'\');}'; + } + + // Add anything we need before the main script. + $script .= $this->before_script( $args ); + + $field = array( + 'scripts' => array(), + ); + // Loop through the js_vars and generate the script. + foreach ( $args['js_vars'] as $key => $js_var ) { + + // Skip styles if "exclude" is defined and value is excluded. + if ( isset( $js_var['exclude'] ) ) { + $js_var['exclude'] = (array) $js_var['exclude']; + $script .= 'exclude=false;'; + foreach ( $js_var['exclude'] as $exclussion ) { + $script .= "if(newval=='{$exclussion}'||(''==='{$exclussion}'&&_.isObject(newval)&&_.isEmpty(newval))){exclude=true;}"; + } + } + if ( isset( $js_var['element'] ) ) { + // Array to string. + if ( is_array( $js_var['element'] ) ) { + $js_var['element'] = implode( ',', $js_var['element'] ); + } + // Replace single quotes with double quotes to avoid issues with the compiled JS. + $js_var['element'] = str_replace( '\'', '"', $js_var['element'] ); + } + if ( isset( $js_var['function'] ) && 'html' === $js_var['function'] ) { + $script .= $this->script_html_var( $js_var ); + continue; + } + $js_var['index_key'] = $key; + $callback = $this->get_callback( $args ); + if ( is_callable( $callback ) ) { + $field['scripts'][ $key ] = call_user_func_array( $callback, array( $js_var, $args ) ); + continue; + } + $field['scripts'][ $key ] = $this->script_var( $js_var ); + } + $combo_extra_script = ''; + $combo_css_script = ''; + foreach ( $field['scripts'] as $script_array ) { + $combo_extra_script .= $script_array['script']; + $combo_css_script .= ( 'css' !== $combo_css_script ) ? $script_array['css'] : ''; + } + $text = ( 'css' === $combo_css_script ) ? 'css' : '\'' . $combo_css_script . '\''; + + $script .= $combo_extra_script . "var cssContent={$text};"; + if ( isset( $js_var['exclude'] ) ) { + $script .= 'if(true===exclude){cssContent="";}'; + } + if ( $add_css ) { + $script .= "jQuery('#{$style_id}').text(cssContent);jQuery('#{$style_id}').appendTo('head');"; + } + $script .= '});});'; + return $script; + } + + /** + * Generates script for a single js_var when using "html" as function. + * + * @access protected + * @since 3.0.0 + * @param array $args The arguments for this js_var. + */ + protected function script_html_var( $args ) { + + $script = ( isset( $args['choice'] ) ) ? "newval=newval['{$args['choice']}'];" : ''; + + // Apply the value_pattern. + if ( isset( $args['value_pattern'] ) && '' !== $args['value_pattern'] ) { + $script .= $this->value_pattern_replacements( 'newval', $args ); + } + + if ( isset( $args['attr'] ) ) { + $script .= "jQuery('{$args['element']}').attr('{$args['attr']}',newval);"; + return $script; + } + $script .= "jQuery('{$args['element']}').html(newval);"; + return $script; + } + + /** + * Generates script for a single js_var. + * + * @access protected + * @since 3.0.0 + * @param array $args The arguments for this js_var. + */ + protected function script_var( $args ) { + $script = ''; + $property_script = ''; + + $value_key = 'newval' . $args['index_key']; + $property_script .= $value_key . '=newval;'; + + $args = $this->get_args( $args ); + + // Apply callback to the value if a callback is defined. + if ( ! empty( $args['js_callback'] ) && is_array( $args['js_callback'] ) && isset( $args['js_callback'][0] ) && ! empty( $args['js_callback'][0] ) ) { + $script .= $value_key . '=' . $args['js_callback'][0] . '(' . $value_key . ',' . $args['js_callback'][1] . ');'; + } + + // Apply the value_pattern. + if ( '' !== $args['value_pattern'] ) { + $script .= $this->value_pattern_replacements( $value_key, $args ); + } + + // Tweak to add url() for background-images. + if ( 'background-image' === $args['property'] && ( ! isset( $args['value_pattern'] ) || false === strpos( $args['value_pattern'], 'gradient' ) ) ) { + $script .= 'if(-1===' . $value_key . '.indexOf(\'url(\')){' . $value_key . '=\'url("\'+' . $value_key . '+\'")\';}'; + } + + // Apply prefix. + $value = $value_key; + if ( '' !== $args['prefix'] ) { + $value = "'" . $args['prefix'] . "'+" . $value_key; + } + $css = $args['element'] . '{' . $args['property'] . ':\'+' . $value . '+\'' . $args['units'] . $args['suffix'] . ';}'; + if ( isset( $args['media_query'] ) ) { + $css = $args['media_query'] . '{' . $css . '}'; + } + return array( + 'script' => $property_script . $script, + 'css' => $css, + ); + } + + /** + * Processes script generation for fields that save an array. + * + * @access protected + * @since 3.0.0 + * @param array $args The arguments for this js_var. + */ + protected function script_var_array( $args ) { + + $script = ( 0 === $args['index_key'] ) ? 'css=\'\';' : ''; + $property_script = ''; + + // Define choice. + $choice = ( isset( $args['choice'] ) && '' !== $args['choice'] ) ? $args['choice'] : ''; + + $value_key = 'newval' . $args['index_key']; + $property_script .= $value_key . '=newval;'; + + $args = $this->get_args( $args ); + + // Apply callback to the value if a callback is defined. + if ( ! empty( $args['js_callback'] ) && is_array( $args['js_callback'] ) && isset( $args['js_callback'][0] ) && ! empty( $args['js_callback'][0] ) ) { + $script .= $value_key . '=' . $args['js_callback'][0] . '(' . $value_key . ',' . $args['js_callback'][1] . ');'; + } + $script .= '_.each(' . $value_key . ', function(subValue,subKey){'; + + // Apply the value_pattern. + if ( '' !== $args['value_pattern'] ) { + $script .= $this->value_pattern_replacements( 'subValue', $args ); + } + + // Tweak to add url() for background-images. + if ( '' === $choice || 'background-image' === $choice ) { + $script .= 'if(\'background-image\'===\'' . $args['property'] . '\'||\'background-image\'===subKey){if(-1===subValue.indexOf(\'url(\')){subValue=\'url("\'+subValue+\'")\';}}'; + } + + // Apply prefix. + $value = $value_key; + if ( '' !== $args['prefix'] ) { + $value = '\'' . $args['prefix'] . '\'+subValue'; + } + + // Mostly used for padding, margin & position properties. + $direction_script = 'if(_.contains([\'top\',\'bottom\',\'left\',\'right\'],subKey)){'; + $direction_script .= 'css+=\'' . $args['element'] . '{' . $args['property'] . '-\'+subKey+\':\'+subValue+\'' . $args['units'] . $args['suffix'] . ';}\';}'; + // Allows us to apply this just for a specific choice in the array of the values. + if ( '' !== $choice ) { + $choice_is_direction = ( false !== strpos( $choice, 'top' ) || false !== strpos( $choice, 'bottom' ) || false !== strpos( $choice, 'left' ) || false !== strpos( $choice, 'right' ) ); + $script .= 'if(\'' . $choice . '\'===subKey){'; + $script .= ( $choice_is_direction ) ? $direction_script . 'else{' : ''; + $script .= 'css+=\'' . $args['element'] . '{' . $args['property'] . ':\'+subValue+\';}\';'; + $script .= ( $choice_is_direction ) ? '}' : ''; + $script .= '}'; + } else { + + // This is where most object-based fields will go. + $script .= $direction_script . 'else{css+=\'' . $args['element'] . '{\'+subKey+\':\'+subValue+\'' . $args['units'] . $args['suffix'] . ';}\';}'; + } + $script .= '});'; + + if ( isset( $args['media_query'] ) ) { + $script .= 'css=\'' . $args['media_query'] . '{\'+css+\'}\';'; + } + + return array( + 'script' => $property_script . $script, + 'css' => 'css', + ); + } + + /** + * Processes script generation for typography fields. + * + * @access protected + * @since 3.0.0 + * @param array $args The arguments for this js_var. + * @param array $field The field arguments. + */ + protected function script_var_typography( $args, $field ) { + + $args = $this->get_args( $args ); + + $script = ''; + $css = ''; + + // Load the font using WenFontloader. + // This is a bit ugly because wp_add_inline_script doesn't allow adding \ No newline at end of file diff --git a/index.php b/index.php index 571ce80..c9008e9 100644 --- a/index.php +++ b/index.php @@ -7,7 +7,7 @@ - +
                          @@ -15,7 +15,7 @@
                        - +
                        diff --git a/js/sharrre.php b/js/sharrre.php deleted file mode 100644 index 08a915b..0000000 --- a/js/sharrre.php +++ /dev/null @@ -1,69 +0,0 @@ - '', 'count' => 0); -$json['url'] = $_GET['url']; -$url = urlencode($_GET['url']); -$type = urlencode($_GET['type']); -$proxy = null; -$proxyAuth = array(); -if (filter_var($_GET['url'], FILTER_VALIDATE_URL)) { - if ($type == 'googlePlus') { //source http://www.helmutgranda.com/2011/11/01/get-a-url-google-count-via-php/ - $contents = parse('https://plusone.google.com/u/0/_/+1/fastbutton?url=' . $url . '&count=true'); - - preg_match('/window\.__SSR = {c: ([\d]+)/', $contents, $matches); - - if (isset($matches[0])) { - $json['count'] = (int)str_replace('window.__SSR = {c: ', '', $matches[0]); - } - } else if ($type == 'stumbleupon') { - $content = parse("http://www.stumbleupon.com/services/1.01/badge.getinfo?url=$url"); - - $result = json_decode($content); - if (isset($result->result->views)) { - $json['count'] = $result->result->views; - } - - } -} -echo str_replace('\\/', '/', json_encode($json)); - -function parse($encUrl) -{ - global $proxy; - global $proxyAuth; - $options = array( - CURLOPT_RETURNTRANSFER => true, // return web page - CURLOPT_HEADER => false, // don't return headers - CURLOPT_FOLLOWLOCATION => true, // follow redirects - CURLOPT_ENCODING => "", // handle all encodings - CURLOPT_USERAGENT => 'sharrre', // who am i - CURLOPT_AUTOREFERER => true, // set referer on redirect - CURLOPT_CONNECTTIMEOUT => 5, // timeout on connect - CURLOPT_TIMEOUT => 10, // timeout on response - CURLOPT_MAXREDIRS => 3, // stop after 10 redirects - CURLOPT_SSL_VERIFYHOST => 0, - CURLOPT_SSL_VERIFYPEER => false, - ); - $ch = curl_init(); - if ($proxy != null) { - $options[CURLOPT_PROXY] = $proxy; - if (isset($proxyAuth['user']) && isset($proxyAuth['pwd'])) { - $options[CURLOPT_PROXYUSERPWD] = $proxyAuth['user'] . ':' . $proxyAuth['pwd']; - } - } - $options[CURLOPT_URL] = $encUrl; - curl_setopt_array($ch, $options); - - $content = curl_exec($ch); - $err = curl_errno($ch); - $errmsg = curl_error($ch); - - curl_close($ch); - - if ($errmsg != '' || $err != '') { - /*print_r($errmsg); - print_r($errmsg);*/ - } - return $content; -} diff --git a/option-tree/assets/css/ot-admin-rtl.css b/option-tree/assets/css/ot-admin-rtl.css deleted file mode 100644 index 82f021d..0000000 --- a/option-tree/assets/css/ot-admin-rtl.css +++ /dev/null @@ -1,635 +0,0 @@ -/* -------------------------------------------------- - :: OptionTree Font - ---------------------------------------------------*/ -.ui-tabs li > a [class^="ot-icon-"], -.ui-tabs li > a [class*=" ot-icon-"] { - display: block; - height: 14px; - float: right; - padding: 2px 0px 0 9px; -} - -/* -------------------------------------------------- - :: Messages - ---------------------------------------------------*/ -.wrap.settings-wrap div.error, -.wrap.settings-wrap div.updated { - margin: 9px 2px 0px 5px !important; -} - -/* -------------------------------------------------- - :: OptionTree Wrappers - ---------------------------------------------------*/ -#option-tree-settings-api > .ui-tabs { - margin: 0px 2px 0 5px; - -webkit-box-shadow: inset -146px 0 0 #f1f1f1, inset -147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05); - -moz-box-shadow: inset -146px 0 0 #f1f1f1, inset -147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05); - box-shadow: inset -146px 0 0 #f1f1f1, inset -147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05); -} - -/* -------------------------------------------------- - :: Header - ---------------------------------------------------*/ -#option-tree-header { - margin: 11px 2px 0 5px; -} -#option-tree-header li { - float: right; -} -#option-tree-header #option-tree-logo a { - border-right: 0; - border-left: 1px solid #333; - float: right; - padding: 3px 13px 3px 12px; -} -#option-tree-header li#option-tree-logo:hover { - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topright: 2px; - border-top-right-radius: 2px; -} -#option-tree-header #option-tree-version span, -#option-tree-header #theme-version span { - border-left: 0; - border-right: 1px solid #555; - float: left; -} -#option-tree-header #theme-version:before { - border-right: 0; - border-left: 1px solid #333; - float: right; -} -/* light */ -.admin-color-light #option-tree-header #option-tree-logo a, -.admin-color-light #option-tree-header #theme-version:before { - border-left-color: #3c3c3c; -} -.admin-color-light #option-tree-header li#option-tree-logo:hover a { - border-left-color: #3c3c3c; -} -.admin-color-light #option-tree-header #option-tree-version span, -.admin-color-light #option-tree-header #theme-version span { - border-right-color: #999; -} -/* blue */ -.admin-color-blue #option-tree-header #option-tree-logo a, -.admin-color-blue #option-tree-header #theme-version:before { - border-left-color: #002b39; -} -.admin-color-blue #option-tree-header li#option-tree-logo:hover a { - border-left-color: #002b39; -} -.admin-color-blue #option-tree-header #option-tree-version span, -.admin-color-blue #option-tree-header #theme-version span { - border-right-color: #5dc2e6; -} -/* coffee */ -.admin-color-coffee #option-tree-header #option-tree-logo a, -.admin-color-coffee #option-tree-header #theme-version:before { - border-left-color: #0f0e0d; -} -.admin-color-coffee #option-tree-header li#option-tree-logo:hover a { - border-left-color: #0f0e0d; -} -.admin-color-coffee #option-tree-header #option-tree-version span, -.admin-color-coffee #option-tree-header #theme-version span { - border-right-color: #675f58; -} -/* ectoplasm */ -.admin-color-ectoplasm #option-tree-header #option-tree-logo a, -.admin-color-ectoplasm #option-tree-header #theme-version:before { - border-left-color: #181220; -} -.admin-color-ectoplasm #option-tree-header li#option-tree-logo:hover a { - border-left-color: #181220; -} -.admin-color-ectoplasm #option-tree-header #option-tree-version span, -.admin-color-ectoplasm #option-tree-header #theme-version span { - border-right-color: #644d85; -} -/* midnight */ -.admin-color-midnight #option-tree-header #option-tree-logo a, -.admin-color-midnight #option-tree-header #theme-version:before { - border-left-color: #090a0b; -} -.admin-color-midnight #option-tree-header li#option-tree-logo:hover a { - border-left-color: #090a0b; -} -.admin-color-midnight #option-tree-header #option-tree-version span, -.admin-color-midnight #option-tree-header #theme-version span { - border-right-color: #4c5359; -} -/* ocean */ -.admin-color-ocean #option-tree-header #option-tree-logo a, -.admin-color-ocean #option-tree-header #theme-version:before { - border-left-color: #39464a; -} -.admin-color-ocean #option-tree-header li#option-tree-logo:hover a { - border-left-color: #39464a; -} -.admin-color-ocean #option-tree-header #option-tree-version span, -.admin-color-ocean #option-tree-header #theme-version span { - border-right-color: #87a6af; -} -/* sunrise */ -.admin-color-sunrise #option-tree-header #option-tree-logo a, -.admin-color-sunrise #option-tree-header #theme-version:before { - border-left-color: #8a322a; -} -.admin-color-sunrise #option-tree-header li#option-tree-logo:hover a { - border-left-color: #8a322a; -} -.admin-color-sunrise #option-tree-header #option-tree-version span, -.admin-color-sunrise #option-tree-header #theme-version span { - border-right-color: #e75546; -} - -/* -------------------------------------------------- - :: Sub Header - ---------------------------------------------------*/ -#option-tree-sub-header { - margin: 0 2px 0 5px; -} - -/* -------------------------------------------------- - :: Tabs - ---------------------------------------------------*/ -.wrap.settings-wrap .ui-tabs-nav { - float: right; - margin: 0 -4px 0 0; -} -.wrap.settings-wrap .ui-tabs-nav li { - border-left-width: 0; - border-right-width: 1px; - -webkit-border-radius: 0 2px 2px 0; - -moz-border-radius: 0 2px 2px 0; - border-radius: 0 2px 2px 0; -} -.wrap.settings-wrap .ui-tabs-nav li a { - padding: 5px 12px 5px 5px; -} - -/* -------------------------------------------------- - :: Format Setting - ---------------------------------------------------*/ -.format-setting .format-setting-inner { - float: right; -} -.format-setting .description { - float: left; -} -#post .format-setting-inner p { - float: right; -} -.docs-ul li { - margin-left: 0; - margin-right: 20px; -} -#contextual-help-setting { - float: right; -} -#contextual-help-label { - float: right; -} -#option_tree_settings_help { - float: right; -} -#option-tree-settings-api blockquote { - padding-left: 0; - padding-right: 15px; -} -#option-tree-settings-api blockquote:before { - left: auto; - right: -10px; - top: 10px; -} - -/* -------------------------------------------------- - :: Input & Upload - ---------------------------------------------------*/ -input.option-tree-ui-upload-input, -input.option-tree-ui-input { - -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); -} -.option-tree-sortable input.option-tree-ui-upload-input, -.option-tree-sortable input.option-tree-ui-input { - width: 99.9%; /* fixes a strange bug with input with */ -} - -/* -------------------------------------------------- - :: Upload - ---------------------------------------------------*/ -div.option-tree-ui-media-wrap { - margin: 5px 0 0 55px; -} -.option-tree-ui-media-wrap img { - float: right; -} -.option-tree-ui-upload-parent { - margin-right: 0; - margin-left: 45px; -} -.format-setting .ot_upload_media { - right: auto; - left: -45px; -} -.option-tree-ui-media-wrap a.option-tree-ui-remove-media { - right: auto; - left: -55px; -} - -/* -------------------------------------------------- - :: Setting Item with Drag & Drop - ---------------------------------------------------*/ -.option-tree-setting .open { - padding: 10px 10px 10px 100px; -} -.option-tree-setting .open:hover:before { - left: auto; - right: 4px; -} -.button-section { - right: auto; - left: 0px; -} - -/* -------------------------------------------------- - :: Layouts - ---------------------------------------------------*/ -#option-tree-options-layouts-form { - left: auto; - right: 13px; -} -.option-tree-save-layout { - float: right; -} -.option-tree-save-layout.active-layout { - border-left: 0; - border-right: 1px solid #fff; - padding-left: 0; - padding-right: 9px; -} -.option-tree-save-layout .widefat { - float: right; -} -.option-tree-save-layout button.blue { - margin: 0 10px 0 0; -} -.option-tree-active-layout { - border-right: 0; - border-left: 1px solid #ccc; - float: right; - padding: 10px 0 10px 10px; -} -.button.save-layout { - margin: 0 10px 0 0 !important; -} - -/* -------------------------------------------------- - :: Option Group - ---------------------------------------------------*/ -.ot-option-group { - float: right; - padding-right: 0px; - padding-left: 5px; -} -.ot-option-group--is-last { - padding-left: 0; -} -.ot-option-group--icon { - border-left: 1px solid #ccc; - border-right: 0px; - left: auto; - right: 1px; -} -.ot-option-group--icon + input.option-tree-ui-input { - padding-left: 5px !important; - padding-right: 34px !important; - margin-left: 5px; - margin-right: 0px; -} -.ot-option-group--checkbox { - float: right; - padding-right: 0px; - padding-left: 10px; -} -#post-body .ot-option-group--checkbox p { - float: right; -} - -/* -------------------------------------------------- - :: Select - ---------------------------------------------------*/ -.select-wrapper { - background: #fff url(../images/ot-select-rtl.png) no-repeat left center; - float: right; - margin: 0 0 5px 5px; - -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); -} -.select-wrapper:hover { - background-image: url(../images/ot-select-hover-rtl.png); -} -.select-wrapper span { - padding-left: 27px; - padding-right: 7px; -} -.type-measurement .select-wrapper { - margin-left: 0; - right: auto; - left: 0px; -} -/* FireFox */ -@-moz-document url-prefix() { - #option-tree-options-layouts-form .select-wrapper { - left: auto; - right: 250px; - }; -} - -/* -------------------------------------------------- - :: Measurement - ---------------------------------------------------*/ -.option-tree-ui-measurement-input-wrap { - margin-right: 0; - margin-left: 80px; -} - -/* -------------------------------------------------- - :: Checkbox & Radio - ---------------------------------------------------*/ -.format-setting.type-checkbox input, -.format-setting.type-radio input { - float: right; - margin: 2px 1px 0 5px; -} -.format-setting.type-checkbox label, -.format-setting.type-radio label { - float: right; -} -#option-tree-settings-api .format-setting.type-checkbox p, -#option-tree-settings-api .format-setting.type-radio p { - float: right; -} - -/* -------------------------------------------------- - :: Radio Images - ---------------------------------------------------*/ -.type-radio-image .option-tree-ui-radio-images { - float: right; - margin: 0 0px 10px 10px; -} - -/* -------------------------------------------------- - :: Numeric Slider - ---------------------------------------------------*/ -.ot-numeric-slider-wrap { - margin: 0 0 0 96px; -} -.ot-numeric-slider-wrap .ot-numeric-slider-helper-input { - right: auto; - left: 5px; -} -.ot-numeric-slider.ui-slider { - -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); -} - -/* -------------------------------------------------- - :: Colorpicker - ---------------------------------------------------*/ -.option-tree-ui-colorpicker-input-wrap { - float: right; -} -.option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label { - margin-left: 10px; - margin-right: 0px; -} -.type-link-color .option-tree-ui-colorpicker-input-wrap { - margin-left: 20px; - margin-right: 0px; -} -.option-tree-ui-colorpicker-input-wrap .wp-color-result { - margin: 0px 0px 5px 5px; -} -.option-tree-ui-colorpicker-input-wrap .wp-picker-container .iris-picker { - margin: 0px 0px 5px 5px; -} - -/* -------------------------------------------------- - :: Google Font - ---------------------------------------------------*/ -.js-remove-google-font.option-tree-ui-button.button { - margin-left: 5px; - margin-right: 0; - margin-top: 0; -} - -/* -------------------------------------------------- - :: OptionTree UI Buttons - ---------------------------------------------------*/ -.option-tree-ui-button { - float: right !important; -} -.option-tree-ui-button.right { - float: left !important; -} -.option-tree-ui-button.hug-left { - margin-right: 0px; -} -.option-tree-ui-button.hug-right { - margin-left: 0px; -} -.option-tree-ui-button.left-item { - float: right !important; - margin: 5px 5px 5px 0; - -webkit-border-radius: 0px 2px 2px 0px; - -moz-border-radius: 0px 2px 2px 0px; - border-radius: 0px 2px 2px 0px; -} -.option-tree-ui-button.center-item { - margin: 5px -1px 5px 0; -} -.option-tree-ui-button.right-item { - float: left !important; - margin: 5px -1px 5px 5px; - -webkit-border-radius: 2px 0px 0px 2px; - -moz-border-radius: 2px 0px 0px 2px; - border-radius: 2px 0px 0px 2px; -} -.option-tree-ui-buttons { - margin: 11px 2px 0 5px; -} -button.reset-settings { - left: auto; - right: 8px; -} - -/* -------------------------------------------------- - :: OptionTree UI Button Icons - ---------------------------------------------------*/ -.option-tree-ui-button .icon { - float: right; - text-indent: 0; -} -.option-tree-ui-button .icon.left-label { - margin-left: 10px; - float: left; -} - -/* -------------------------------------------------- - :: Gallery - ---------------------------------------------------*/ -ul.ot-gallery-list { - float: right; -} -ul.ot-gallery-list li { - float: right; - margin: 0px 0 10px 10px; -} -.ot-gallery-buttons { - float: right; -} - -/* -------------------------------------------------- - :: Google Fonts - ---------------------------------------------------*/ -.option-tree-google-font-family, -.option-tree-google-font-variants, -.option-tree-google-font-subsets, -#option-tree-settings-api p.checkbox-wrap, -#post-body .ot-metabox-panels p.checkbox-wrap { - float: right; -} - -/* -------------------------------------------------- - :: On/Off Switch - ---------------------------------------------------*/ -@media only screen { - .on-off-switch { - -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05); - } - .on-off-switch label { - float: right; - } - .on-off-switch .slide-button { - left: auto; - right: -1px; - } - .on-off-switch input:last-of-type:checked ~ .slide-button { - left: auto; - right: 50%; - } -} - -/* -------------------------------------------------- - :: Date Picker - ---------------------------------------------------*/ -.ui-datepicker { - direction: rtl; -} -.ui-datepicker .ui-widget-header { - left: auto; - right: -1px; -} -.ui-datepicker-prev:before { - border-right: 0px; - border-left: 1px solid #555; - content: "\f105"; - float: left; - width: 31px; - height: 30px; -} -.ui-datepicker-prev { - border-right: 0px; - border-left: 1px solid #333; - float: right; - width: 31px; -} -.ui-datepicker-next:before { - border-left: 0px; - border-right: 1px solid #333; - content: "\f104"; - float: right; - width: 30px; - height: 30px; -} -.ui-datepicker-next { - border-left: 0px; - border-right: 1px solid #555; - float: left; - width: 30px; -} -.ui-datepicker thead th:last-child { - border-left: 1px solid #ccc; -} -.ui-datepicker tbody td { - border-left: 1px solid #ccc; -} -.ui-datepicker tbody td:first-child { - border-left: 0px; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: right; -} -@-moz-document url-prefix() { - .ui-datepicker-calendar { - position: relative; - right: -1px; - } - .ui-datepicker-calendar thead { - border-right: 1px solid #ccc; - } -} - -/* -------------------------------------------------- - :: Time Picker - ---------------------------------------------------*/ -.ui-timepicker-div { - direction: rtl; -} -.ui-timepicker-div dl { - text-align: right; - padding: 0 5px 0 0; -} -.ui-timepicker-div dl dt { - float: right; - clear: right; -} -.ui-timepicker-div dl dd { - margin: 0 45% 10px 10px; -} - -/* -------------------------------------------------- - :: Meta Box Tabs - ---------------------------------------------------*/ -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav { - float: right; - margin: 0 0 0 -1px; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li { - border-width: 1px 1px 1px 0px; - -webkit-border-radius: 0 0 2px 2px; - -moz-border-radius: 0 0 2px 2px; - border-radius: 0 0 2px 2px; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a { - padding: 5px 12px 5px 5px; -} - -/* -------------------------------------------------- - :: Theme Option & Side Metabox Tabs - ---------------------------------------------------*/ -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-default, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-default { - float: right; - margin: 0 3px 0 0 !important; -} \ No newline at end of file diff --git a/option-tree/assets/css/ot-admin.css b/option-tree/assets/css/ot-admin.css deleted file mode 100644 index 591b136..0000000 --- a/option-tree/assets/css/ot-admin.css +++ /dev/null @@ -1,3973 +0,0 @@ -/* -------------------------------------------------- - :: OptionTree Font - ---------------------------------------------------*/ -@font-face { - font-family: "option-tree-font"; - src:url("../fonts/option-tree-font.eot"); - src:url("../fonts/option-tree-font.eot?#iefix") format("embedded-opentype"), - url("../fonts/option-tree-font.woff") format("woff"), - url("../fonts/option-tree-font.ttf") format("truetype"), - url("../fonts/option-tree-font.svg#option-tree-font") format("svg"); - font-weight: normal; - font-style: normal; -} - -[class^="ot-icon-"], -[class*=" ot-icon-"] { - font-family: "option-tree-font"; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.ui-tabs li > a [class^="ot-icon-"], -.ui-tabs li > a [class*=" ot-icon-"] { - padding-right: 5px; - line-height: 18px; - vertical-align: middle; -} - -.ot-icon-option-tree:before { - content: "\e785"; -} -.ot-icon-glass:before { - content: "\f000"; -} -.ot-icon-music:before { - content: "\f001"; -} -.ot-icon-search:before { - content: "\f002"; -} -.ot-icon-envelope-o:before { - content: "\f003"; -} -.ot-icon-heart:before { - content: "\f004"; -} -.ot-icon-star:before { - content: "\f005"; -} -.ot-icon-star-o:before { - content: "\f006"; -} -.ot-icon-user:before { - content: "\f007"; -} -.ot-icon-film:before { - content: "\f008"; -} -.ot-icon-th-large:before { - content: "\f009"; -} -.ot-icon-th:before { - content: "\f00a"; -} -.ot-icon-th-list:before { - content: "\f00b"; -} -.ot-icon-check:before { - content: "\f00c"; -} -.ot-icon-times:before { - content: "\f00d"; -} -.ot-icon-search-plus:before { - content: "\f00e"; -} -.ot-icon-search-minus:before { - content: "\f010"; -} -.ot-icon-power-off:before { - content: "\f011"; -} -.ot-icon-signal:before { - content: "\f012"; -} -.ot-icon-gear:before { - content: "\f013"; -} -.ot-icon-trash-o:before { - content: "\f014"; -} -.ot-icon-home:before { - content: "\f015"; -} -.ot-icon-file-o:before { - content: "\f016"; -} -.ot-icon-clock-o:before { - content: "\f017"; -} -.ot-icon-road:before { - content: "\f018"; -} -.ot-icon-download:before { - content: "\f019"; -} -.ot-icon-arrow-circle-o-down:before { - content: "\f01a"; -} -.ot-icon-arrow-circle-o-up:before { - content: "\f01b"; -} -.ot-icon-inbox:before { - content: "\f01c"; -} -.ot-icon-play-circle-o:before { - content: "\f01d"; -} -.ot-icon-rotate-right:before { - content: "\f01e"; -} -.ot-icon-refresh:before { - content: "\f021"; -} -.ot-icon-list-alt:before { - content: "\f022"; -} -.ot-icon-lock:before { - content: "\f023"; -} -.ot-icon-flag:before { - content: "\f024"; -} -.ot-icon-headphones:before { - content: "\f025"; -} -.ot-icon-volume-off:before { - content: "\f026"; -} -.ot-icon-volume-down:before { - content: "\f027"; -} -.ot-icon-volume-up:before { - content: "\f028"; -} -.ot-icon-qrcode:before { - content: "\f029"; -} -.ot-icon-barcode:before { - content: "\f02a"; -} -.ot-icon-tag:before { - content: "\f02b"; -} -.ot-icon-tags:before { - content: "\f02c"; -} -.ot-icon-book:before { - content: "\f02d"; -} -.ot-icon-bookmark:before { - content: "\f02e"; -} -.ot-icon-print:before { - content: "\f02f"; -} -.ot-icon-camera:before { - content: "\f030"; -} -.ot-icon-font:before { - content: "\f031"; -} -.ot-icon-bold:before { - content: "\f032"; -} -.ot-icon-italic:before { - content: "\f033"; -} -.ot-icon-text-height:before { - content: "\f034"; -} -.ot-icon-text-width:before { - content: "\f035"; -} -.ot-icon-align-left:before { - content: "\f036"; -} -.ot-icon-align-center:before { - content: "\f037"; -} -.ot-icon-align-right:before { - content: "\f038"; -} -.ot-icon-align-justify:before { - content: "\f039"; -} -.ot-icon-list:before { - content: "\f03a"; -} -.ot-icon-dedent:before { - content: "\f03b"; -} -.ot-icon-indent:before { - content: "\f03c"; -} -.ot-icon-video-camera:before { - content: "\f03d"; -} -.ot-icon-picture-o:before { - content: "\f03e"; -} -.ot-icon-pencil:before { - content: "\f040"; -} -.ot-icon-map-marker:before { - content: "\f041"; -} -.ot-icon-adjust:before { - content: "\f042"; -} -.ot-icon-tint:before { - content: "\f043"; -} -.ot-icon-edit:before { - content: "\f044"; -} -.ot-icon-share-square-o:before { - content: "\f045"; -} -.ot-icon-check-square-o:before { - content: "\f046"; -} -.ot-icon-arrows:before { - content: "\f047"; -} -.ot-icon-step-backward:before { - content: "\f048"; -} -.ot-icon-fast-backward:before { - content: "\f049"; -} -.ot-icon-backward:before { - content: "\f04a"; -} -.ot-icon-play:before { - content: "\f04b"; -} -.ot-icon-pause:before { - content: "\f04c"; -} -.ot-icon-stop:before { - content: "\f04d"; -} -.ot-icon-forward:before { - content: "\f04e"; -} -.ot-icon-fast-forward:before { - content: "\f050"; -} -.ot-icon-step-forward:before { - content: "\f051"; -} -.ot-icon-eject:before { - content: "\f052"; -} -.ot-icon-chevron-left:before { - content: "\f053"; -} -.ot-icon-chevron-right:before { - content: "\f054"; -} -.ot-icon-plus-circle:before { - content: "\f055"; -} -.ot-icon-minus-circle:before { - content: "\f056"; -} -.ot-icon-times-circle:before { - content: "\f057"; -} -.ot-icon-check-circle:before { - content: "\f058"; -} -.ot-icon-question-circle:before { - content: "\f059"; -} -.ot-icon-info-circle:before { - content: "\f05a"; -} -.ot-icon-crosshairs:before { - content: "\f05b"; -} -.ot-icon-times-circle-o:before { - content: "\f05c"; -} -.ot-icon-check-circle-o:before { - content: "\f05d"; -} -.ot-icon-ban:before { - content: "\f05e"; -} -.ot-icon-arrow-left:before { - content: "\f060"; -} -.ot-icon-arrow-right:before { - content: "\f061"; -} -.ot-icon-arrow-up:before { - content: "\f062"; -} -.ot-icon-arrow-down:before { - content: "\f063"; -} -.ot-icon-mail-forward:before { - content: "\f064"; -} -.ot-icon-expand:before { - content: "\f065"; -} -.ot-icon-compress:before { - content: "\f066"; -} -.ot-icon-plus:before { - content: "\f067"; -} -.ot-icon-minus:before { - content: "\f068"; -} -.ot-icon-asterisk:before { - content: "\f069"; -} -.ot-icon-exclamation-circle:before { - content: "\f06a"; -} -.ot-icon-gift:before { - content: "\f06b"; -} -.ot-icon-leaf:before { - content: "\f06c"; -} -.ot-icon-fire:before { - content: "\f06d"; -} -.ot-icon-eye:before { - content: "\f06e"; -} -.ot-icon-eye-slash:before { - content: "\f070"; -} -.ot-icon-warning:before { - content: "\f071"; -} -.ot-icon-plane:before { - content: "\f072"; -} -.ot-icon-calendar:before { - content: "\f073"; -} -.ot-icon-random:before { - content: "\f074"; -} -.ot-icon-comment:before { - content: "\f075"; -} -.ot-icon-magnet:before { - content: "\f076"; -} -.ot-icon-chevron-up:before { - content: "\f077"; -} -.ot-icon-chevron-down:before { - content: "\f078"; -} -.ot-icon-retweet:before { - content: "\f079"; -} -.ot-icon-shopping-cart:before { - content: "\f07a"; -} -.ot-icon-folder:before { - content: "\f07b"; -} -.ot-icon-folder-open:before { - content: "\f07c"; -} -.ot-icon-arrows-v:before { - content: "\f07d"; -} -.ot-icon-arrows-h:before { - content: "\f07e"; -} -.ot-icon-bar-chart-o:before { - content: "\f080"; -} -.ot-icon-twitter-square:before { - content: "\f081"; -} -.ot-icon-facebook-square:before { - content: "\f082"; -} -.ot-icon-camera-retro:before { - content: "\f083"; -} -.ot-icon-key:before { - content: "\f084"; -} -.ot-icon-gears:before { - content: "\f085"; -} -.ot-icon-comments:before { - content: "\f086"; -} -.ot-icon-thumbs-o-up:before { - content: "\f087"; -} -.ot-icon-thumbs-o-down:before { - content: "\f088"; -} -.ot-icon-star-half:before { - content: "\f089"; -} -.ot-icon-heart-o:before { - content: "\f08a"; -} -.ot-icon-sign-out:before { - content: "\f08b"; -} -.ot-icon-linkedin-square:before { - content: "\f08c"; -} -.ot-icon-thumb-tack:before { - content: "\f08d"; -} -.ot-icon-external-link:before { - content: "\f08e"; -} -.ot-icon-sign-in:before { - content: "\f090"; -} -.ot-icon-trophy:before { - content: "\f091"; -} -.ot-icon-github-square:before { - content: "\f092"; -} -.ot-icon-upload:before { - content: "\f093"; -} -.ot-icon-lemon-o:before { - content: "\f094"; -} -.ot-icon-phone:before { - content: "\f095"; -} -.ot-icon-square-o:before { - content: "\f096"; -} -.ot-icon-bookmark-o:before { - content: "\f097"; -} -.ot-icon-phone-square:before { - content: "\f098"; -} -.ot-icon-twitter:before { - content: "\f099"; -} -.ot-icon-facebook:before { - content: "\f09a"; -} -.ot-icon-github:before { - content: "\f09b"; -} -.ot-icon-unlock:before { - content: "\f09c"; -} -.ot-icon-credit-card:before { - content: "\f09d"; -} -.ot-icon-rss:before { - content: "\f09e"; -} -.ot-icon-hdd-o:before { - content: "\f0a0"; -} -.ot-icon-bullhorn:before { - content: "\f0a1"; -} -.ot-icon-bell:before { - content: "\f0a2"; -} -.ot-icon-certificate:before { - content: "\f0a3"; -} -.ot-icon-hand-o-right:before { - content: "\f0a4"; -} -.ot-icon-hand-o-left:before { - content: "\f0a5"; -} -.ot-icon-hand-o-up:before { - content: "\f0a6"; -} -.ot-icon-hand-o-down:before { - content: "\f0a7"; -} -.ot-icon-arrow-circle-left:before { - content: "\f0a8"; -} -.ot-icon-arrow-circle-right:before { - content: "\f0a9"; -} -.ot-icon-arrow-circle-up:before { - content: "\f0aa"; -} -.ot-icon-arrow-circle-down:before { - content: "\f0ab"; -} -.ot-icon-globe:before { - content: "\f0ac"; -} -.ot-icon-wrench:before { - content: "\f0ad"; -} -.ot-icon-tasks:before { - content: "\f0ae"; -} -.ot-icon-filter:before { - content: "\f0b0"; -} -.ot-icon-briefcase:before { - content: "\f0b1"; -} -.ot-icon-arrows-alt:before { - content: "\f0b2"; -} -.ot-icon-group:before { - content: "\f0c0"; -} -.ot-icon-chain:before { - content: "\f0c1"; -} -.ot-icon-cloud:before { - content: "\f0c2"; -} -.ot-icon-flask:before { - content: "\f0c3"; -} -.ot-icon-cut:before { - content: "\f0c4"; -} -.ot-icon-copy:before { - content: "\f0c5"; -} -.ot-icon-paperclip:before { - content: "\f0c6"; -} -.ot-icon-save:before { - content: "\f0c7"; -} -.ot-icon-square:before { - content: "\f0c8"; -} -.ot-icon-bars:before { - content: "\f0c9"; -} -.ot-icon-list-ul:before { - content: "\f0ca"; -} -.ot-icon-list-ol:before { - content: "\f0cb"; -} -.ot-icon-strikethrough:before { - content: "\f0cc"; -} -.ot-icon-underline:before { - content: "\f0cd"; -} -.ot-icon-table:before { - content: "\f0ce"; -} -.ot-icon-magic:before { - content: "\f0d0"; -} -.ot-icon-truck:before { - content: "\f0d1"; -} -.ot-icon-pinterest:before { - content: "\f0d2"; -} -.ot-icon-pinterest-square:before { - content: "\f0d3"; -} -.ot-icon-google-plus-square:before { - content: "\f0d4"; -} -.ot-icon-google-plus:before { - content: "\f0d5"; -} -.ot-icon-money:before { - content: "\f0d6"; -} -.ot-icon-caret-down:before { - content: "\f0d7"; -} -.ot-icon-caret-up:before { - content: "\f0d8"; -} -.ot-icon-caret-left:before { - content: "\f0d9"; -} -.ot-icon-caret-right:before { - content: "\f0da"; -} -.ot-icon-columns:before { - content: "\f0db"; -} -.ot-icon-unsorted:before { - content: "\f0dc"; -} -.ot-icon-sort-down:before { - content: "\f0dd"; -} -.ot-icon-sort-up:before { - content: "\f0de"; -} -.ot-icon-envelope:before { - content: "\f0e0"; -} -.ot-icon-linkedin:before { - content: "\f0e1"; -} -.ot-icon-rotate-left:before { - content: "\f0e2"; -} -.ot-icon-legal:before { - content: "\f0e3"; -} -.ot-icon-dashboard:before { - content: "\f0e4"; -} -.ot-icon-comment-o:before { - content: "\f0e5"; -} -.ot-icon-comments-o:before { - content: "\f0e6"; -} -.ot-icon-flash:before { - content: "\f0e7"; -} -.ot-icon-sitemap:before { - content: "\f0e8"; -} -.ot-icon-umbrella:before { - content: "\f0e9"; -} -.ot-icon-paste:before { - content: "\f0ea"; -} -.ot-icon-lightbulb-o:before { - content: "\f0eb"; -} -.ot-icon-exchange:before { - content: "\f0ec"; -} -.ot-icon-cloud-download:before { - content: "\f0ed"; -} -.ot-icon-cloud-upload:before { - content: "\f0ee"; -} -.ot-icon-user-md:before { - content: "\f0f0"; -} -.ot-icon-stethoscope:before { - content: "\f0f1"; -} -.ot-icon-suitcase:before { - content: "\f0f2"; -} -.ot-icon-bell-o:before { - content: "\f0f3"; -} -.ot-icon-coffee:before { - content: "\f0f4"; -} -.ot-icon-cutlery:before { - content: "\f0f5"; -} -.ot-icon-file-text-o:before { - content: "\f0f6"; -} -.ot-icon-building-o:before { - content: "\f0f7"; -} -.ot-icon-hospital-o:before { - content: "\f0f8"; -} -.ot-icon-ambulance:before { - content: "\f0f9"; -} -.ot-icon-medkit:before { - content: "\f0fa"; -} -.ot-icon-fighter-jet:before { - content: "\f0fb"; -} -.ot-icon-beer:before { - content: "\f0fc"; -} -.ot-icon-h-square:before { - content: "\f0fd"; -} -.ot-icon-plus-square:before { - content: "\f0fe"; -} -.ot-icon-angle-double-left:before { - content: "\f100"; -} -.ot-icon-angle-double-right:before { - content: "\f101"; -} -.ot-icon-angle-double-up:before { - content: "\f102"; -} -.ot-icon-angle-double-down:before { - content: "\f103"; -} -.ot-icon-angle-left:before { - content: "\f104"; -} -.ot-icon-angle-right:before { - content: "\f105"; -} -.ot-icon-angle-up:before { - content: "\f106"; -} -.ot-icon-angle-down:before { - content: "\f107"; -} -.ot-icon-desktop:before { - content: "\f108"; -} -.ot-icon-laptop:before { - content: "\f109"; -} -.ot-icon-tablet:before { - content: "\f10a"; -} -.ot-icon-mobile-phone:before { - content: "\f10b"; -} -.ot-icon-circle-o:before { - content: "\f10c"; -} -.ot-icon-quote-left:before { - content: "\f10d"; -} -.ot-icon-quote-right:before { - content: "\f10e"; -} -.ot-icon-spinner:before { - content: "\f110"; -} -.ot-icon-circle:before { - content: "\f111"; -} -.ot-icon-mail-reply:before { - content: "\f112"; -} -.ot-icon-github-alt:before { - content: "\f113"; -} -.ot-icon-folder-o:before { - content: "\f114"; -} -.ot-icon-folder-open-o:before { - content: "\f115"; -} -.ot-icon-smile-o:before { - content: "\f118"; -} -.ot-icon-frown-o:before { - content: "\f119"; -} -.ot-icon-meh-o:before { - content: "\f11a"; -} -.ot-icon-gamepad:before { - content: "\f11b"; -} -.ot-icon-keyboard-o:before { - content: "\f11c"; -} -.ot-icon-flag-o:before { - content: "\f11d"; -} -.ot-icon-flag-checkered:before { - content: "\f11e"; -} -.ot-icon-terminal:before { - content: "\f120"; -} -.ot-icon-code:before { - content: "\f121"; -} -.ot-icon-reply-all:before { - content: "\f122"; -} -.ot-icon-star-half-empty:before { - content: "\f123"; -} -.ot-icon-location-arrow:before { - content: "\f124"; -} -.ot-icon-crop:before { - content: "\f125"; -} -.ot-icon-code-fork:before { - content: "\f126"; -} -.ot-icon-unlink:before { - content: "\f127"; -} -.ot-icon-question:before { - content: "\f128"; -} -.ot-icon-info:before { - content: "\f129"; -} -.ot-icon-exclamation:before { - content: "\f12a"; -} -.ot-icon-superscript:before { - content: "\f12b"; -} -.ot-icon-subscript:before { - content: "\f12c"; -} -.ot-icon-eraser:before { - content: "\f12d"; -} -.ot-icon-puzzle-piece:before { - content: "\f12e"; -} -.ot-icon-microphone:before { - content: "\f130"; -} -.ot-icon-microphone-slash:before { - content: "\f131"; -} -.ot-icon-shield:before { - content: "\f132"; -} -.ot-icon-calendar-o:before { - content: "\f133"; -} -.ot-icon-fire-extinguisher:before { - content: "\f134"; -} -.ot-icon-rocket:before { - content: "\f135"; -} -.ot-icon-maxcdn:before { - content: "\f136"; -} -.ot-icon-chevron-circle-left:before { - content: "\f137"; -} -.ot-icon-chevron-circle-right:before { - content: "\f138"; -} -.ot-icon-chevron-circle-up:before { - content: "\f139"; -} -.ot-icon-chevron-circle-down:before { - content: "\f13a"; -} -.ot-icon-html5:before { - content: "\f13b"; -} -.ot-icon-css3:before { - content: "\f13c"; -} -.ot-icon-anchor:before { - content: "\f13d"; -} -.ot-icon-unlock-alt:before { - content: "\f13e"; -} -.ot-icon-bullseye:before { - content: "\f140"; -} -.ot-icon-ellipsis-h:before { - content: "\f141"; -} -.ot-icon-ellipsis-v:before { - content: "\f142"; -} -.ot-icon-rss-square:before { - content: "\f143"; -} -.ot-icon-play-circle:before { - content: "\f144"; -} -.ot-icon-ticket:before { - content: "\f145"; -} -.ot-icon-minus-square:before { - content: "\f146"; -} -.ot-icon-minus-square-o:before { - content: "\f147"; -} -.ot-icon-level-up:before { - content: "\f148"; -} -.ot-icon-level-down:before { - content: "\f149"; -} -.ot-icon-check-square:before { - content: "\f14a"; -} -.ot-icon-pencil-square:before { - content: "\f14b"; -} -.ot-icon-external-link-square:before { - content: "\f14c"; -} -.ot-icon-share-square:before { - content: "\f14d"; -} -.ot-icon-compass:before { - content: "\f14e"; -} -.ot-icon-toggle-down:before { - content: "\f150"; -} -.ot-icon-toggle-up:before { - content: "\f151"; -} -.ot-icon-toggle-right:before { - content: "\f152"; -} -.ot-icon-euro:before { - content: "\f153"; -} -.ot-icon-gbp:before { - content: "\f154"; -} -.ot-icon-dollar:before { - content: "\f155"; -} -.ot-icon-rupee:before { - content: "\f156"; -} -.ot-icon-cny:before { - content: "\f157"; -} -.ot-icon-ruble:before { - content: "\f158"; -} -.ot-icon-won:before { - content: "\f159"; -} -.ot-icon-bitcoin:before { - content: "\f15a"; -} -.ot-icon-file:before { - content: "\f15b"; -} -.ot-icon-file-text:before { - content: "\f15c"; -} -.ot-icon-sort-alpha-asc:before { - content: "\f15d"; -} -.ot-icon-sort-alpha-desc:before { - content: "\f15e"; -} -.ot-icon-sort-amount-asc:before { - content: "\f160"; -} -.ot-icon-sort-amount-desc:before { - content: "\f161"; -} -.ot-icon-sort-numeric-asc:before { - content: "\f162"; -} -.ot-icon-sort-numeric-desc:before { - content: "\f163"; -} -.ot-icon-thumbs-up:before { - content: "\f164"; -} -.ot-icon-thumbs-down:before { - content: "\f165"; -} -.ot-icon-youtube-square:before { - content: "\f166"; -} -.ot-icon-youtube:before { - content: "\f167"; -} -.ot-icon-xing:before { - content: "\f168"; -} -.ot-icon-xing-square:before { - content: "\f169"; -} -.ot-icon-youtube-play:before { - content: "\f16a"; -} -.ot-icon-dropbox:before { - content: "\f16b"; -} -.ot-icon-stack-overflow:before { - content: "\f16c"; -} -.ot-icon-instagram:before { - content: "\f16d"; -} -.ot-icon-flickr:before { - content: "\f16e"; -} -.ot-icon-adn:before { - content: "\f170"; -} -.ot-icon-bitbucket:before { - content: "\f171"; -} -.ot-icon-bitbucket-square:before { - content: "\f172"; -} -.ot-icon-tumblr:before { - content: "\f173"; -} -.ot-icon-tumblr-square:before { - content: "\f174"; -} -.ot-icon-long-arrow-down:before { - content: "\f175"; -} -.ot-icon-long-arrow-up:before { - content: "\f176"; -} -.ot-icon-long-arrow-left:before { - content: "\f177"; -} -.ot-icon-long-arrow-right:before { - content: "\f178"; -} -.ot-icon-apple:before { - content: "\f179"; -} -.ot-icon-windows:before { - content: "\f17a"; -} -.ot-icon-android:before { - content: "\f17b"; -} -.ot-icon-linux:before { - content: "\f17c"; -} -.ot-icon-dribbble:before { - content: "\f17d"; -} -.ot-icon-skype:before { - content: "\f17e"; -} -.ot-icon-foursquare:before { - content: "\f180"; -} -.ot-icon-trello:before { - content: "\f181"; -} -.ot-icon-female:before { - content: "\f182"; -} -.ot-icon-male:before { - content: "\f183"; -} -.ot-icon-gittip:before { - content: "\f184"; -} -.ot-icon-sun-o:before { - content: "\f185"; -} -.ot-icon-moon-o:before { - content: "\f186"; -} -.ot-icon-archive:before { - content: "\f187"; -} -.ot-icon-bug:before { - content: "\f188"; -} -.ot-icon-vk:before { - content: "\f189"; -} -.ot-icon-weibo:before { - content: "\f18a"; -} -.ot-icon-renren:before { - content: "\f18b"; -} -.ot-icon-pagelines:before { - content: "\f18c"; -} -.ot-icon-stack-exchange:before { - content: "\f18d"; -} -.ot-icon-arrow-circle-o-right:before { - content: "\f18e"; -} -.ot-icon-arrow-circle-o-left:before { - content: "\f190"; -} -.ot-icon-toggle-left:before { - content: "\f191"; -} -.ot-icon-dot-circle-o:before { - content: "\f192"; -} -.ot-icon-wheelchair:before { - content: "\f193"; -} -.ot-icon-vimeo-square:before { - content: "\f194"; -} -.ot-icon-turkish-lira:before { - content: "\f195"; -} -.ot-icon-plus-square-o:before { - content: "\f196"; -} - -/* -------------------------------------------------- - :: Screen Meta & Menu Icon - ---------------------------------------------------*/ -.appearance_page_ot-theme-options #screen-meta { - margin-right: 20px; - margin-left: 2px; - min-width: 533px; -} - -/* -------------------------------------------------- - :: Messages - ---------------------------------------------------*/ -.wrap.settings-wrap div.error, -.wrap.settings-wrap div.updated { - margin: 9px 5px 0px 2px !important; -} - -/* -------------------------------------------------- - :: OptionTree Wrappers - ---------------------------------------------------*/ -#option-tree-settings-api .metabox-holder { - overflow: hidden; -} -#option-tree-settings-api .postbox { - background: #fff; - border: none; - margin: 0 20px; -} -#option-tree-settings-api .inside { - margin: 0px !important; - padding: 0px !important; -} -#option-tree-settings-api > .ui-tabs { - background: #fff; - border: 1px solid #ccc; - border-top: none; - margin: 0px 5px 0 2px; - min-width: 533px; - padding-bottom: 5px; - position: relative; - -webkit-box-shadow: inset 146px 0 0 #f1f1f1, inset 147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05); - -moz-box-shadow: inset 146px 0 0 #f1f1f1, inset 147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05); - box-shadow: inset 146px 0 0 #f1f1f1, inset 147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05); - -webkit-border-radius: 0 0 2px 2px; - -moz-border-radius: 0 0 2px 2px; - border-radius: 0 0 2px 2px; -} - -/* -------------------------------------------------- - :: Header - ---------------------------------------------------*/ -#option-tree-header-wrap { - position: relative; -} -#option-tree-header { - background: #333; - color: #bbb; - display: block; - margin: 11px 5px 0 2px; - min-width: 535px; - overflow: hidden; - position: relative; - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05); - -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.05); - box-shadow: 0 1px 3px rgba(0,0,0,0.05); - -webkit-border-radius: 2px 2px 0 0; - -moz-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; -} -#option-tree-header li { - display: block; - float: left; - margin: 0px; - padding: 0px; -} -#option-tree-header li a { - color: #999; - text-decoration: none; - -webkit-transition: none; - -moz-transition: none; - transition: none; -} -#option-tree-header li a:hover { - color: #0074a2; -} -#option-tree-header #option-tree-logo a { - border-right: 1px solid #000; - float: left; - height: 24px; - padding: 3px 12px 3px 13px; - width: 20px; -} -#option-tree-header #option-tree-logo a:before { - content: "\e785"; - font: normal 20px/1 "option-tree-font" !important; - speak: none; - padding: 2px 0; - height: 24px; - width: 20px; - display: inline-block; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-transition: all .1s ease-in-out; - -moz-transition: all .1s ease-in-out; - transition: all .1s ease-in-out; -} -#option-tree-header li#option-tree-logo:hover { - background-color: #222; - color: #0074a2; - -webkit-border-top-left-radius: 2px; - -moz-border-radius-topleft: 2px; - border-top-left-radius: 2px; -} -#option-tree-header li#option-tree-logo:hover a { - border-right-color: #000; -} -#option-tree-header #option-tree-version span, -#option-tree-header #theme-version span { - border-left: 1px solid #444; - display: block; - float: left; - height: 24px; - line-height: 24px; - padding: 3px 12px 3px 12px; -} -#option-tree-header #theme-version:before { - border-right: 1px solid #000; - content: ""; - display: block; - float: left; - height: 30px; -} -/* light */ -.admin-color-light #option-tree-header { - background: #888; - color: #fff; -} -.admin-color-light #option-tree-header li a { - color: #ccc; -} -.admin-color-light #option-tree-header li a:hover { - color: #eee; -} -.admin-color-light #option-tree-header #option-tree-logo a, -.admin-color-light #option-tree-header #theme-version:before { - border-right-color: #3c3c3c; -} -.admin-color-light #option-tree-header li#option-tree-logo:hover { - background-color: #777; -} -.admin-color-light #option-tree-header li#option-tree-logo:hover a { - border-right-color: #3c3c3c; -} -.admin-color-light #option-tree-header #option-tree-version span, -.admin-color-light #option-tree-header #theme-version span { - border-left-color: #999; -} -/* blue */ -.admin-color-blue #option-tree-header { - background: #52accc; - color: #fff; -} -.admin-color-blue #option-tree-header li a { - color: #e2f8ff; -} -.admin-color-blue #option-tree-header li a:hover { - color: #fff; -} -.admin-color-blue #option-tree-header #option-tree-logo a, -.admin-color-blue #option-tree-header #theme-version:before { - border-right-color: #002b39; -} -.admin-color-blue #option-tree-header li#option-tree-logo:hover { - background-color: #006484; -} -.admin-color-blue #option-tree-header li#option-tree-logo:hover a { - border-right-color: #002b39; -} -.admin-color-blue #option-tree-header #option-tree-version span, -.admin-color-blue #option-tree-header #theme-version span { - border-left-color: #5dc2e6; -} -/* coffee */ -.admin-color-coffee #option-tree-header { - background: #59524c; - color: #c7cbc9; -} -.admin-color-coffee #option-tree-header li a { - color: #f3f2f1; -} -.admin-color-coffee #option-tree-header li a:hover { - color: #fff; -} -.admin-color-coffee #option-tree-header #option-tree-logo a, -.admin-color-coffee #option-tree-header #theme-version:before { - border-right-color: #0f0e0d; -} -.admin-color-coffee #option-tree-header li#option-tree-logo:hover { - background-color: #cca588; -} -.admin-color-coffee #option-tree-header li#option-tree-logo:hover a { - border-right-color: #0f0e0d; -} -.admin-color-coffee #option-tree-header #option-tree-version span, -.admin-color-coffee #option-tree-header #theme-version span { - border-left-color: #675f58; -} -/* ectoplasm */ -.admin-color-ectoplasm #option-tree-header { - background: #523f6d; - color: #c6c6d3; -} -.admin-color-ectoplasm #option-tree-header li a { - color: #f3f2f1; -} -.admin-color-ectoplasm #option-tree-header li a:hover { - color: #fff; -} -.admin-color-ectoplasm #option-tree-header #option-tree-logo a, -.admin-color-ectoplasm #option-tree-header #theme-version:before { - border-right-color: #181220; -} -.admin-color-ectoplasm #option-tree-header li#option-tree-logo:hover { - background-color: #a3b542; -} -.admin-color-ectoplasm #option-tree-header li#option-tree-logo:hover a { - border-right-color: #181220; -} -.admin-color-ectoplasm #option-tree-header #option-tree-version span, -.admin-color-ectoplasm #option-tree-header #theme-version span { - border-left-color: #644d85; -} -/* midnight */ -.admin-color-midnight #option-tree-header { - background: #363b3f; - color: #f1f2f3; -} -.admin-color-midnight #option-tree-header li a { - color: #f1f2f3; -} -.admin-color-midnight #option-tree-header li a:hover { - color: #fff; -} -.admin-color-midnight #option-tree-header #option-tree-logo a, -.admin-color-midnight #option-tree-header #theme-version:before { - border-right-color: #090a0b; -} -.admin-color-midnight #option-tree-header li#option-tree-logo:hover { - background-color: #ed543f; -} -.admin-color-midnight #option-tree-header li#option-tree-logo:hover a { - border-right-color: #090a0b; -} -.admin-color-midnight #option-tree-header #option-tree-version span, -.admin-color-midnight #option-tree-header #theme-version span { - border-left-color: #4c5359; -} -/* ocean */ -.admin-color-ocean #option-tree-header { - background: #738e96; - color: #f1fcff; -} -.admin-color-ocean #option-tree-header li a { - color: #f1fcff; -} -.admin-color-ocean #option-tree-header li a:hover { - color: #fff; -} -.admin-color-ocean #option-tree-header #option-tree-logo a, -.admin-color-ocean #option-tree-header #theme-version:before { - border-right-color: #39464a; -} -.admin-color-ocean #option-tree-header li#option-tree-logo:hover { - background-color: #9ab8a0; -} -.admin-color-ocean #option-tree-header li#option-tree-logo:hover a { - border-right-color: #39464a; -} -.admin-color-ocean #option-tree-header #option-tree-version span, -.admin-color-ocean #option-tree-header #theme-version span { - border-left-color: #87a6af; -} -/* sunrise */ -.admin-color-sunrise #option-tree-header { - background: #da4f41; - color: #fff; -} -.admin-color-sunrise #option-tree-header li a { - color: #f3f1f1; -} -.admin-color-sunrise #option-tree-header li a:hover { - color: #fff; -} -.admin-color-sunrise #option-tree-header #option-tree-logo a, -.admin-color-sunrise #option-tree-header #theme-version:before { - border-right-color: #8a322a; -} -.admin-color-sunrise #option-tree-header li#option-tree-logo:hover { - background-color: #e88436; -} -.admin-color-sunrise #option-tree-header li#option-tree-logo:hover a { - border-right-color: #8a322a; -} -.admin-color-sunrise #option-tree-header #option-tree-version span, -.admin-color-sunrise #option-tree-header #theme-version span { - border-left-color: #e75546; -} - -/* -------------------------------------------------- - :: Sub Header - ---------------------------------------------------*/ -#option-tree-sub-header { - background: #fafafa; - border: 1px solid #ccc; - border-top: none; - display: block; - margin: 0 5px 0 2px; - min-width: 523px; - overflow: hidden; - padding: 5px; - position: relative; - -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 3px rgba(0,0,0,0.05); - -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 3px rgba(0,0,0,0.05); - box-shadow: inset 0 1px 0 #fff, 0 1px 3px rgba(0,0,0,0.05); -} - -/* -------------------------------------------------- - :: Tabs - ---------------------------------------------------*/ -.wrap.settings-wrap .ui-tabs-nav { - float: left; - list-style: none; - margin: 0 0 0 -4px; - padding: 1em 0; - width: 151px; -} -.wrap.settings-wrap .ui-tabs-nav li { - border: 1px solid transparent; - border-right-width: 0px; - display: block; margin: 0; - -webkit-border-radius: 2px 0 0 2px; - -moz-border-radius: 2px 0 0 2px; - border-radius: 2px 0 0 2px; -} -.wrap.settings-wrap .ui-tabs-nav li.ui-state-active { - background: #fff; - border-color: #ccc; - color: #000; -} -.wrap.settings-wrap .ui-tabs-nav li a { - color: #21759b; - display: block; - line-height: 18px; - padding: 5px 5px 5px 12px; - text-decoration: none; -} -.wrap.settings-wrap .ui-tabs-nav li a:hover, -.wrap.settings-wrap .ui-tabs-nav li.ui-state-active a { - color: #000; - outline: none; -} -.wrap.settings-wrap .ui-tabs-panel { - clear: both; -} - -/* -------------------------------------------------- - :: Format Settings - ---------------------------------------------------*/ -.format-settings { - position: relative; - width: 100%; -} -.format-setting-wrap, -.option-tree-sortable .format-settings { - padding: 10px 0 20px 0; -} - -/* -------------------------------------------------- - :: Format Setting Label - ---------------------------------------------------*/ -.format-setting-label { - border-bottom: 1px dashed #ccc; - margin: 0 0 20px 0; - padding: 5px 0px 1px 0px; - width: 100%; -} -#option-tree-settings-api .description h3, -#option-tree-settings-api .format-setting-label .label, -#poststuff .format-setting-label .label { - background: none; - border: none; - color: #222; - cursor: text; - display: block; - font-size: 1.3em; - font-weight: 500; - line-height: 1.6em; - letter-spacing: 0; - padding: 0 0 9px 0; - -webkit-user-select: text; - text-shadow: none; -} - -/* -------------------------------------------------- - :: Format Setting - ---------------------------------------------------*/ -.format-setting { - overflow: hidden; - position: relative; - width: 100%; -} -.format-setting .format-setting-inner { - float: left; - position: relative; - width: 63%; -} -.format-setting.no-desc > .format-setting-inner, -.format-setting.wide-desc .format-setting-inner { - width: 100%; -} -.format-setting .description { - float: right; - padding: 5px 0; - width: 35%; -} -.format-setting.no-desc > .description, -.format-setting.wide-desc .description { - float: none; - width: 100%; -} -.list-item-description { - padding-top: 10px; -} -#option-tree-settings-api h4 { - color: #333; - font-size: 1.2em; - font-weight: 500; - line-height: 1.5em; - margin: 1em 0 0.5em 0; - padding: 0; -} -#option-tree-settings-api h5 { - color: #444; - font-size: 1em; - font-weight: 700; - line-height: 1.2em; - margin: 1em 0 0.5em 0; - padding: 0; -} -#option-tree-settings-api p { - margin: 0 0 1.5em 0 !important; -} -#post .format-setting-inner p { - float: left; - width: 100%; - margin: 0 0 1.05em 0 !important; -} -.aside { - border-bottom: 1px solid #eee; - padding-bottom: 15px; - margin-bottom: 15px; -} -.deprecated { - border-bottom: 1px solid #eee; - color: #b94029; - padding-bottom: 15px; - margin-bottom: 15px; -} -.warning { - color: #b94029; -} -.docs-ul { - line-height: 1.3em; - margin: 0; - padding: 0 0 1em 0; -} -.docs-ul li { - list-style-type: square; - margin-left: 20px; -} -#contextual-help-setting { - float: left; - padding: 10px 0 5px 0; - width: 100%; -} -#contextual-help-label { - float: left; - padding-top: 20px; - width: 100%; -} -#option_tree_settings_help { - float: left; - width: 100%; -} -#option-tree-settings-api blockquote { - font-style: italic; - padding-left: 15px; - position: relative; -} -#option-tree-settings-api blockquote:before { - color: #ccc; - content: "\201C"; - display: block; - font-size: 400%; - font-style: normal; - left: -10px; - position: absolute; - top: 10px; -} -@media only screen and (max-width: 1020px) { - .format-setting .description, - .format-setting .format-setting-inner { - width: 100%; - } - .format-setting .description { - padding-top: 0px; - padding-bottom: 20px; - } -} -.ot-background-group { - overflow: hidden; - width: auto; -} -.ot-background-size-input { - max-width: 110px; -} -.option-tree-setting-edit, -.option-tree-setting-remove { - text-indent: -9999px; -} - -/* -------------------------------------------------- - :: Code formatting - ---------------------------------------------------*/ -#option-tree-settings-api code, -.ot-metabox-wrapper code { - background-color: #f1f1f1; - color: #333; - font-size: 12px; -} -#option-tree-settings-api pre { - font-size: 13px; - padding: 0; - margin: 1.5em 0; - line-height: 18px; - overflow: auto; - overflow-Y: hidden; - padding-top: 18px; - background: #f1f1f1; - border-bottom: 1px solid #f1f1f1; - margin-bottom: 20px; - color: #000; - white-space: pre-wrap; - word-wrap: break-word; -} -#option-tree-settings-api pre code { - padding: 0 18px 18px 18px; - display: block; - background: url(../images/ot-pre-bg.gif) repeat left top; -} - -/* -------------------------------------------------- - :: Input & Upload - ---------------------------------------------------*/ -input.option-tree-ui-upload-input, -input.option-tree-ui-input { - background: #fff; - border: 1px solid #ccc !important; - line-height: 17px; - font-size: 12px; - margin-bottom: 5px !important; - padding: 7px 6px; - position: relative; - width: 100% !important; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); -} -input:hover.option-tree-ui-upload-input, -input:hover.option-tree-ui-input { - border-color: #bbb !important; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); -} -input:focus.option-tree-ui-upload-input, -input:focus.option-tree-ui-input { - border-color: #999 !important; -} - -@media screen and (-webkit-min-device-pixel-ratio:0) { - .option-tree-ui-input, - .option-tree-ui-upload-input { - padding: 5px 6px !important; - } -} - -/* -------------------------------------------------- - :: Upload - ---------------------------------------------------*/ -div.option-tree-ui-media-wrap { - margin: 0 55px 0 0; - min-height: 35px; - position: relative; -} -.option-tree-ui-media-wrap img { - background: #fafafa; - border: 1px solid #ccc; - padding: 4px; - display: block; - float: left; - max-width: 100%; - height: auto; - -ms-interpolation-mode: bicubic; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.option-tree-ui-upload-parent { - width: auto !important; - margin-right: 45px; - padding: 0px; - position: relative; -} -.ot_upload_media { - top: 0px; - margin: 0px !important; - position: absolute; - right: -45px; - text-indent: -9999px; -} -.option-tree-ui-media-wrap a.option-tree-ui-remove-media { - float: none !important; - margin: 0px !important; - position: absolute !important; - right: -55px; - text-indent: -9999px; - top: 1px; -} - -/* -------------------------------------------------- - :: Textarea - ---------------------------------------------------*/ -.fill-area .description, -.fill-area .format-setting-inner { - width: 100% !important; -} -.wp-editor-area { - display: block; -} -.textarea, -.ot-metabox-wrapper textarea { - width: 99.9%; - border: 1px solid #ccc; - font-family: Consolas, Monaco, monospace; - line-height: 150%; - outline: 0; - padding: 10px; - resize: vertical; -} -#contextual-help-setting .textarea { - width: 99.75%; -} -.ot-metabox-wrapper .wp-editor-container { - border: none; -} -.textarea:hover, -.ot-metabox-wrapper textarea:hover { - border-color: #bbb !important; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); -} -.textarea:focus, -.ot-metabox-wrapper textarea:focus { - border-color: #999 !important; -} - -@media only screen and (max-width: 1105px) { - .type-textarea .description, .type-textarea .format-setting-inner { - width: 100%; - } -} - -/* -------------------------------------------------- - :: Setting Item with Drag & Drop - ---------------------------------------------------*/ -.option-tree-setting-wrap { - margin-top: 0px; -} -.option-tree-setting-wrap li { - margin: 5px 0px; -} -.option-tree-setting { - border: 1px solid #ccc; - overflow: hidden; - position: relative; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.option-tree-setting:hover { - border-color: #999; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); -} -.option-tree-setting a { - text-decoration: none; -} -.option-tree-setting .open { - background: #fafafa; - line-height: 21px; - height: 21px; - padding: 10px 100px 10px 10px; - display: block; -} -.option-tree-sortable .open { - cursor: move; -} -.ui-state-disabled .option-tree-setting .open { - cursor: default; -} -.option-tree-setting .open:hover { - background: #fafafa; -} -.option-tree-setting .open:hover:before { - color: #999; - content: "\f142"; - left: 4px; - font-family: "option-tree-font"; - speak: none; - font-size: 14px; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - position: absolute; - top: 14px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.option-tree-setting.is-section .open:hover:before { - color: #000; -} -.button-section { - position: absolute; - right: 0px; - top: 1px; -} -.option-tree-setting.is-section { - border: 1px solid #000; -} -.option-tree-setting.is-section .option-tree-setting-body, -.option-tree-setting.is-section .option-tree-ui-button { - border-right-color: #000 !important; -} -.option-tree-setting.is-section .open { - background: #333; - color: #bbb; -} -.format-setting .ui-sortable-helper .option-tree-setting .open { - background: #fff; -} -.option-tree-setting.is-section .open:hover, -.format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #333; -} -/* light */ -.admin-color-light .option-tree-setting.is-section, -.admin-color-light .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-light .option-tree-setting.is-section .option-tree-ui-button { - border-color: #3c3c3c !important; -} -.admin-color-light .option-tree-setting.is-section .open:hover:before { - color: #3c3c3c; -} -.admin-color-light .option-tree-setting.is-section .open { - background: #888; - color: #fff; -} -.admin-color-light .option-tree-setting.is-section .open:hover, -.admin-color-light .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #888; -} -/* blue */ -.admin-color-blue .option-tree-setting.is-section, -.admin-color-blue .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-blue .option-tree-setting.is-section .option-tree-ui-button { - border-color: #002b39 !important; -} -.admin-color-blue .option-tree-setting.is-section .open:hover:before { - color: #002b39; -} -.admin-color-blue .option-tree-setting.is-section .open { - background: #52accc; - color: #fff; -} -.admin-color-blue .option-tree-setting.is-section .open:hover, -.admin-color-blue .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #52accc; -} -/* coffee */ -.admin-color-coffee .option-tree-setting.is-section, -.admin-color-coffee .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-coffee .option-tree-setting.is-section .option-tree-ui-button { - border-color: #0f0e0d !important; -} -.admin-color-coffee .option-tree-setting.is-section .open:hover:before { - color: #0f0e0d; -} -.admin-color-coffee .option-tree-setting.is-section .open { - background: #59524c; - color: #c7cbc9; -} -.admin-color-coffee .option-tree-setting.is-section .open:hover, -.admin-color-coffee .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #59524c; -} -/* ectoplasm */ -.admin-color-ectoplasm .option-tree-setting.is-section, -.admin-color-ectoplasm .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-ectoplasm .option-tree-setting.is-section .option-tree-ui-button { - border-color: #181220 !important; -} -.admin-color-ectoplasm .option-tree-setting.is-section .open:hover:before { - color: #181220; -} -.admin-color-ectoplasm .option-tree-setting.is-section .open { - background: #523f6d; - color: #c6c6d3; -} -.admin-color-ectoplasm .option-tree-setting.is-section .open:hover, -.admin-color-ectoplasm .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #523f6d; -} -/* midnight */ -.admin-color-midnight .option-tree-setting.is-section, -.admin-color-midnight .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-midnight .option-tree-setting.is-section .option-tree-ui-button { - border-color: #090a0b !important; -} -.admin-color-midnight .option-tree-setting.is-section .open:hover:before { - color: #090a0b; -} -.admin-color-midnight .option-tree-setting.is-section .open { - background: #363b3f; - color: #f1f2f3; -} -.admin-color-midnight .option-tree-setting.is-section .open:hover, -.admin-color-midnight .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #363b3f; -} -/* ocean */ -.admin-color-ocean .option-tree-setting.is-section, -.admin-color-ocean .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-ocean .option-tree-setting.is-section .option-tree-ui-button { - border-color: #39464a !important; -} -.admin-color-ocean .option-tree-setting.is-section .open:hover:before { - color: #39464a; -} -.admin-color-ocean .option-tree-setting.is-section .open { - background: #738e96; - color: #f1fcff; -} -.admin-color-ocean .option-tree-setting.is-section .open:hover, -.admin-color-ocean .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #738e96; -} -/* sunrise */ -.admin-color-sunrise .option-tree-setting.is-section, -.admin-color-sunrise .option-tree-setting.is-section .option-tree-setting-body, -.admin-color-sunrise .option-tree-setting.is-section .option-tree-ui-button { - border-color: #8a322a !important; -} -.admin-color-sunrise .option-tree-setting.is-section .open:hover:before { - color: #8a322a; -} -.admin-color-sunrise .option-tree-setting.is-section .open { - background: #da4f41; - color: #fff; -} -.admin-color-sunrise .option-tree-setting.is-section .open:hover, -.admin-color-sunrise .format-setting .ui-sortable-helper .option-tree-setting.is-section .open { - background: #da4f41; -} -.ui-state-highlight { - border: 1px dashed #ccc; - display: block; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.option-tree-setting-body { - background: #fff; - border-top: 1px solid #ccc; - display: none; - padding: 10px; - -webkit-border-bottom-right-radius: 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-bottomleft: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -li ul .format-setting-wrap { - padding: 0 0 10px 0; -} -li ul .format-setting-label { - border: none; - padding: 0px; - margin: 0px; -} - -/* -------------------------------------------------- - :: Layouts - ---------------------------------------------------*/ -#option_tree_layouts { - display: none; - padding-top: 12px; -} -#option-tree-options-layouts-form { - left: 13px; - position: absolute; - top: 30px; - z-index: 10; -} -.option-tree-save-layout { - float: left; - padding: 10px 0; -} -.option-tree-save-layout.active-layout { - padding-left: 10px; -} -.option-tree-save-layout .widefat { - float: left; - width: 128px !important; - margin: 0; -} -.option-tree-active-layout { - border-right: 1px solid #ccc; - float: left; - padding: 10px 10px 10px 0; - min-width: 126px; -} -.button.save-layout { - margin: 0 0 0 10px !important; -} -.option-tree-layout-activate { - text-indent: -9999px; -} -.option-tree-layout-activate .icon:before { - content: "\f096"; - position: relative; - top: 1px; -} -.option-tree-layout-activate.active .icon:before { - content: "\f046"; - padding-left: 1px; -} - -/* -------------------------------------------------- - :: Option Group - ---------------------------------------------------*/ -.ot-option-group { - float: left; - padding-right: 5px; - position: relative; - width: 20%; - box-sizing: border-box; -} -.ot-option-group--three-fourths { - width: 75%; -} -.ot-option-group--two-thirds { - width: 66.6%; -} -.ot-option-group--one-half { - width: 50%; -} -.ot-option-group--one-third { - width: 33.3%; -} -.ot-option-group--one-fourth { - width: 25%; -} -.ot-option-group--one-fifth { - width: 20%; -} -.ot-option-group--one-sixth { - width: 16.6%; -} -.ot-option-group--one-eighth { - width: 12.5%; -} -.ot-option-group--is-last { - padding-right: 0; -} -.ot-option-group--icon { - background: #fafafa; - border-right: 1px solid #ccc; - display: inline-block; - font-size: 14px; - line-height: 14px; - padding: 6px 6px 7px; - position: absolute; - text-align: center; - top: 1px; - left: 1px; - width: 14px; - z-index: 10; -} -.ot-icon-circle.ot-option-group--icon:before { - left: 1px; - position: relative; - -webkit-filter: blur(1px); - -moz-filter: blur(1px); - -ms-filter: blur(1px); - -o-filter: blur(1px); - filter: blur(1px); -} -.ot-option-group--icon + input.option-tree-ui-input { - padding-left: 34px !important; - margin-right: 5px; -} -.ot-option-group--checkbox { - float: left; - padding-top: 2px; - padding-right: 10px; - width: auto; -} -#post-body .ot-option-group--checkbox p { - color: #a9a9a9; - float: left; - margin: 1px 0 0.3em 0 !important; -} -@media screen and ( min-width: 783px ) { - #post-body .ot-option-group--checkbox p input { - margin-top: 0px !important; - } -} -@media screen and ( max-width: 1020px ) { - .ot-option-group--one-fourth, - .ot-option-group--one-fifth, - .ot-option-group--one-sixth, - .ot-option-group--one-eighth { - width: 33.3%; - } - .ot-option-group--checkbox { - width: 100%; - } -} -@media screen and ( max-width: 782px ) { - .ot-option-group { - width: 50%; - } - .ot-option-group--three-fourths, - .ot-option-group--two-thirds, - .ot-option-group--one-half { - width: 100%; - } - .ot-option-group--checkbox { - padding-top: 0.3em; - } -} -.ot-option-group .select-wrapper { - width: 100%; -} - -/* -------------------------------------------------- - :: Select - ---------------------------------------------------*/ -.select-wrapper { - background: #fff url(../images/ot-select.png) no-repeat right center; - border: 1px solid #ccc; - display: block; - float: left; - font-size: 12px; - height: 29px; - margin: 0 5px 5px 0; - max-width: 100%; - width: auto; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.select-wrapper:hover { - background-image: url(../images/ot-select-hover.png); - border-color: #999; -} -select.option-tree-ui-select { - cursor: pointer; - filter: alpha(opacity: 0); - font-size: 14px; - height: 29px; - margin: 0; - max-width: 100%; - -moz-opacity: 0; - opacity: 0; - padding: 0 !important; - position: relative; - width: inherit; - z-index: 4; - min-width: 118px; -} - -select.option-tree-ui-select option { - padding: 3px 15px !important; -} -.select-wrapper span { - height: 27px; - line-height: 27px; - overflow: hidden; - padding-left: 7px; - padding-right: 27px; - position: absolute; - z-index: 2; -} -#option-tree-options-layouts-form .select-wrapper { - margin: 0px; -} -#option-tree-options-layouts-form select.option-tree-ui-select { - min-width: 124px; -} -.type-measurement select.option-tree-ui-select { - min-width: 73px !important; -} -.type-measurement .select-wrapper { - margin-right: 0; - position: absolute; - right: 0px; - top: 0px; -} - -/* FireFox */ -@-moz-document url-prefix() { - #option-tree-options-layouts-form .select-wrapper { - left: 250px; - } -} - -/* -------------------------------------------------- - :: Measurement - ---------------------------------------------------*/ -.option-tree-ui-measurement-input-wrap { - margin-right: 80px; -} - -/* -------------------------------------------------- - :: Checkbox & Radio - ---------------------------------------------------*/ -.format-setting.type-checkbox input, -.format-setting.type-radio input { - float: left; - margin: 2px 5px 0 1px; -} -.format-setting.type-checkbox label, -.format-setting.type-radio label { - float: left; - max-width: 90%; - padding: 0px; -} -#option-tree-settings-api .format-setting.type-checkbox p, -#option-tree-settings-api .format-setting.type-radio p { - float: left; - margin: 0.5em 0 !important; - width: 100%; -} -@media screen and ( max-width: 782px ) { - .format-setting.type-checkbox, - .format-setting.type-radio { - padding-top: 0.3em; - } -} - -/* -------------------------------------------------- - :: Radio Images - ---------------------------------------------------*/ -.type-radio-image .option-tree-ui-radio-images { - float: left; - margin: 0 10px 10px 0px; -} -.type-radio-image .option-tree-ui-radio-images img { - background: #fff; - border: 1px solid #ccc; - cursor: pointer; - opacity: 0.8; - padding: 5px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.type-radio-image .option-tree-ui-radio-images img.option-tree-ui-radio-image-selected, -.type-radio-image .option-tree-ui-radio-images img:hover { - border-color: #464646; - opacity: 1; - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05); - -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.05); - box-shadow: 0 1px 3px rgba(0,0,0,0.05); -} - -/* -------------------------------------------------- - :: Social Links - ---------------------------------------------------*/ -.type-social-links input.option-tree-ui-input { - margin-top: 5px; -} - -/* -------------------------------------------------- - :: Numeric Slider - ---------------------------------------------------*/ -.type-numeric-slider .format-setting-inner { - background: #fcfcfc; - border: 1px solid #ccc; - min-height: 41px; - padding: 5px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.ot-numeric-slider-wrap { - margin: 0 96px 0 0; -} -.ot-numeric-slider-wrap .ot-numeric-slider-helper-input { - position: absolute; - right: 5px; - text-align: center; - top: 5px; - width: 90px !important; -} -.ot-numeric-slider.ui-slider { - background: #fff; - border: 1px solid #ccc; - margin: 8px 8px 0 8px; - position: relative; - -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.ot-numeric-slider.ui-slider-horizontal { - height: 11px; -} -.ot-numeric-slider.ui-slider .ui-slider-handle { - border: 1px solid #000; - color: #555; - cursor: pointer; - display: block; - height: 27px; - margin: -9px -8px; - outline: 0; - position: absolute; - width: 16px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08); - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -/* default */ -.ot-numeric-slider.ui-slider .ui-slider-handle { - background: #333; - border-color: #000; -} -.ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #444; - border-color: #111; -} -/* light */ -.admin-color-light .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #888; - border-color: #3c3c3c; -} -.admin-color-light .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-light .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #999; - border-color: #777; -} -/* blue */ -.admin-color-blue .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #52accc; - border-color: #002b39; -} -.admin-color-blue .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-blue .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #5dc2e6; - border-color: #006484; -} -/* coffee */ -.admin-color-coffee .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #59524c; - border-color: #0f0e0d; -} -.admin-color-coffee .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-coffee .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #cca588; - border-color: #675f58; -} -/* ectoplasm */ -.admin-color-ectoplasm .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #523f6d; - border-color: #181220; -} -.admin-color-ectoplasm .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-ectoplasm .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #a3b542; - border-color: #644d85; -} -/* midnight */ -.admin-color-midnight .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #363b3f; - border-color: #090a0b; -} -.admin-color-midnight .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-midnight .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #ed543f; - border-color: #a0382a; -} -/* ocean */ -.admin-color-ocean .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #738e96; - border-color: #39464a; -} -.admin-color-ocean .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-ocean .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #9ab8a0; - border-color: #5a6c5e; -} -/* sunrise */ -.admin-color-sunrise .ot-numeric-slider.ui-slider .ui-slider-handle { - background: #da4f41; - border-color: #8a322a; -} -.admin-color-sunrise .ot-numeric-slider.ui-slider .ui-slider-handle:hover, -.admin-color-sunrise .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active { - background: #e88436; - border-color: #e75546; -} - -/* -------------------------------------------------- - :: Colorpicker - ---------------------------------------------------*/ -.option-tree-ui-colorpicker-input-wrap { - float: left; -} -.hide-color-picker { - display: none; -} -.option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label { - height: 30px; - line-height: 30px; - margin-right: 10px; - display: block; -} -.type-link-color .option-tree-ui-colorpicker-input-wrap { - margin-right: 20px; -} -.option-tree-ui-colorpicker-input-wrap .wp-color-picker, -.option-tree-ui-colorpicker-input-wrap .wp-picker-default, -.option-tree-ui-colorpicker-input-wrap .wp-picker-clear { - border-color: #ccc; - font-size: 12px !important; - height: 29px !important; - line-height: 27px !important; - margin-top: 0px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.option-tree-ui-colorpicker-input-wrap .wp-color-picker { - margin: 0 0 5px 0 !important; -} -.option-tree-ui-colorpicker-input-wrap .wp-color-result { - height: 27px; - outline: 0; - margin: 0 5px 5px 0px; - top: 0px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -.option-tree-ui-colorpicker-input-wrap .wp-color-result:after { - line-height: 27px; -} -.option-tree-ui-colorpicker-input-wrap .wp-picker-container .iris-picker { - border-color: #ccc; - margin: 0px 5px 5px 0; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -@media screen and ( max-width: 782px ) { - .option-tree-ui-colorpicker-input-wrap .wp-color-picker { - padding: 3px 5px !important; - } - .option-tree-ui-colorpicker-input-wrap .wp-picker-clear, - .option-tree-ui-colorpicker-input-wrap .wp-picker-default { - margin-top: 4px; - padding: 0 8px 1px !important; - } -} - -/* -------------------------------------------------- - :: Colorpicker Opacity (Derivative work of the Codestar WP Color Picker.) - ---------------------------------------------------*/ -.option-tree-opacity-wrap { - background-color: #fff; - border: 1px solid #ccc; - border-top: none; - border-radius: 0 0 2px 2px; - direction: ltr; - display: none; - padding: 10px; - position: relative; - top: -6px; - width: 235px; -} -.option-tree-opacity-slider { - left: 10px; - position: absolute; - width: 171px; - margin-left: 3px; - height: 28px; -} -.option-tree-opacity-slider .ui-slider-handle { - position: absolute; - top: -3px; - bottom: -3px; - z-index: 5; - border-color: #aaa; - border-style: solid; - border-width: 4px 3px; - width: 6px; - height: 26px; - margin: 0 -3px; - background: none; - cursor: ew-resize; - opacity: 0.9; - border-radius: 4px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); -} -.option-tree-opacity-slider .ui-slider-handle:before { - content: " "; - position: absolute; - left: -2px; - right: -2px; - top: -3px; - bottom: -3px; - border: 2px solid #fff; - border-radius: 3px; -} -.option-tree-opacity-slider-offset { - height: 28px; - width: 183px; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAASCAYAAAAe/ZHXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkNEQUQ0ODM4RUE0MTFFNEExOEJFN0E5M0VFOTg0QUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkNEQUQ0ODQ4RUE0MTFFNEExOEJFN0E5M0VFOTg0QUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2Q0RBRDQ4MThFQTQxMUU0QTE4QkU3QTkzRUU5ODRBRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2Q0RBRDQ4MjhFQTQxMUU0QTE4QkU3QTkzRUU5ODRBRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/r/N8AAAWYSURBVHjarFvvR3VBEN45JZGIPkREHyIiIhJJf3qUSERE9CGiDxERkcg9z9u92uucvTszz5z7xnHPj93Z2d359cxscn5+jpTS+EoiMr3/+51cZ2dn4+e29i2/u7y8RKf/pO3vc+o+n5ycoNK31+f6+jrfZ37yuG2mf3R01H3fa5N/b29vU6dP5qft0G4PDg5MGuPr/v4+jz1t27mfvN/b21P75+fHx8eZfiV/Ozs7rUJnSu/5+RlFv+m6ZJpbW1s1PnrvXl9fZ/qX89zY2LB4mfy+v7/nsdV1XltbK/dr5vnz87OcV5bJabuVlRVLBifjfX9/l/xkGtM+S0tLNXnu0szfU/P3IMn/k0678h6ddqjQFGccVL6hoCsVfsq+NZ5QtCv5rfFS41sq37W+UPhMyhxEWTetvce3NR8oewqD39qalXuGAK/WPltjajIC4x2c9Ye1f43SGcqGwRBeTZjhMNntL4pCWZMQYhE05RVl02EovRgC4RkCbUNSQAGhGB/GsKG4h6FQoigDa2i8fRBy3uLMXYIG3Vr3aZvRaCRdBYlYIMZywhBGCVhgzzOlgRuUSOvC0GMEWxOM/+EtQFh1OIIXtfwg1tRaayGjg5px0jyZKEaTle3e+AsLCygVRAh3FlEgKbReE3oYGj9EgIR00QiEgKw3ZBQbRGjBeAMtDETQmHiKDsezJNLgCTFGItZXlAgCSiQggblP+9c8SDI0lXWlFv5g3K63KZ51FOcZzthQ3LomoNHwJmKIQISI3vqzSpwIQ8liSjGMFQjDpoVgaQ6cWgvLhOC7qiAwiHrWbEg4JMSmeUrBuHoYwioOQNXmhmAcrs096s1gJCGi3hSEVU8DQxYElYHhKwUUGAa+NqOBMsSSAQJuhQhCAH4vxozExsxiihPuaIrjCVYKWlYEsjSM52G8Kxxryngl5j0j+EyGTIiED4s1Itm0ZGWxMFCLJaBAcEI6OBkmFgNBoc8Cait2ZnENE/6wQN8LJSJeSMNAjKVm+LUMAIt3PR5AQgIGp1Z5zxhE8PtXUYReYeXi4mKmOPNXBMzt2tPT07LIUtJqr66uusXEbkFnWiQ6Pj72ikrtzc1NKopuvbbj58PDwxqNHp27u7tuYWumUDV+v7+/Xyu6pc59+/DwUCsC9ujt7u6qRbt8//T01C3elbyN70fb29uZ/1FSincvLy/lPGb42tzc9IqJeHt7q61Pr2C6vr7u7tfHx8fMPhV0sLq6WhZtU0n36+uru8elPE7aLi8v1wqJPXn++fmZKYgX8ozFxcXJb0NaQTHClZT8+gBjsYdaFc+zWcUkGTCWENY66ta92oSVzo3WI6IZKGtukeyfBLFKBNAj6bUOBgaoe9wE4n04IBNkLMoC7+Skj630ZlTJMYdyMsU2T8AwpzALkVFilZgJcT2l9PCWDDSAMBSjVlJgZNk0lE1AIby0qCiCnBQNj6aBGQslZIZJ5hB6D/AzQHto5Z9Nk8tARdN4q2ExBnsyIJ311EymShyjan2rKk0zh1Ay1oQVWAZQRnkUA8RFw7TahjBnmNgMVMQrsCGZJezRtGlU0cUZ1zuaxGZPpbhApM+ZpFQqQ6xadoMtBrEKpBVo4GRXvNSxpaRixKiR+TChCYhsDwZkfFj8IkErjAHejcUI0XQrgwehhNSMHAz21E0wZ23FcCAmj8Sd/PXy2xLYLAuwRw4IMsqjFaWYOpMEhDySAPFCWyFkgAHrEcA+BNeJ4UE8HCzJPpCrerUmQIx1pWJkjqxJD8EikUo2c5aI8ZYgsAkM4WQtnHd0ns0ORgVTBghy5ISy928SGsbTMqYg523RUY8oNYG4FIYiyRyZCnFCJC87IoRAIMVOqQ7BKexxCS2hYVl9JhvlpYjnAe4MhmRPMWhhvLfXINaI9WKM0Zu0+SfAAFLE1EgfVSv7AAAAAElFTkSuQmCC); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.4) inset; - border-radius: 2px; -} -.option-tree-opacity-text { - position: absolute; - top: 15px; - left: 215px; - width: 30px; - font-size: 12px; - text-align: center; -} - -/* -------------------------------------------------- - :: Google Font - ---------------------------------------------------*/ -.type-google-font { - -} -.type-google-font-group-clone { - display: none; -} -.type-google-font-group { - float: left; - margin-bottom: 20px; - width: 100%; -} -.js-remove-google-font.option-tree-ui-button.button { - margin-left: 0; - margin-top: 0; -} - -/* -------------------------------------------------- - :: OptionTree UI Buttons - ---------------------------------------------------*/ -.option-tree-ui-button.button { - float: left; - font-size: 12px !important; - line-height: 27px !important; - height: 29px !important; - margin: 5px; - min-width: 40px; - padding: 0 10px 1px !important; -} -.option-tree-ui-button:active, -.option-tree-ui-button:hover, -.option-tree-ui-button:focus { - outline: 0; -} -.option-tree-ui-button.hidden { - display: none; -} -.option-tree-ui-button.button-secondary { - background: #b73b27; - border-color: #7f291b; - color: #fff; - text-shadow: none; - -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15); - box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15); -} -.option-tree-ui-button.button-secondary.hover, -.option-tree-ui-button.button-secondary:hover, -.option-tree-ui-button.button-secondary.focus, -.option-tree-ui-button.button-secondary:focus { - background: #9b3221; - border-color: #7f291b; - color: #fff; - -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6); - -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15); - box-shadow: inset 0 1px 0 rgba(229,134,119,0.6); -} -.option-tree-ui-button.button-secondary.focus, -.option-tree-ui-button.button-secondary:focus { - border-color: #4f160d; - -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 1px 1px 2px rgba(0,0,0,0.4); - -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 1px 1px 2px rgba(0,0,0,0.4); - box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 1px 1px 2px rgba(0,0,0,0.4); -} -.option-tree-ui-button.button-secondary.active, -.option-tree-ui-button.button-secondary.active:hover, -.option-tree-ui-button.button-secondary.active:focus, -.option-tree-ui-button.button-secondary:active { - background: #b73b27; - border-color: #7f291b; - color: rgba(255,255,255,0.95); - -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); - -moz-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); - box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); - vertical-align: top; -} -.option-tree-ui-button.right { - float: right; -} -.option-tree-ui-button.hug-left { - margin-left: 0px; -} -.option-tree-ui-button.hug-right { - margin-right: 0px; -} -.option-tree-ui-button.pad { - padding: 0px 21px; -} -.option-tree-ui-button.left-item { - margin: 5px 0 5px 5px; - -webkit-border-top-right-radius: 0px; - -webkit-border-bottom-right-radius: 0px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} -.option-tree-ui-button.center-item { - margin: 5px 0 5px -1px; - -webkit-border-radius: 0px; - -moz-border-radius: 0px; - border-radius: 0px; -} -.option-tree-ui-button.right-item { - margin: 5px 5px 5px -1px; - -webkit-border-top-left-radius: 0px; - -webkit-border-bottom-left-radius: 0px; - -moz-border-radius-topleft: 0px; - -moz-border-radius-bottomleft: 0px; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} -.option-tree-ui-buttons { - background: #fff; - border: 1px solid #ccc; - margin: 11px 5px 0 2px; - min-width: 523px; - overflow: hidden; - padding: 5px; - position: relative; - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05); - -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.05); - box-shadow: 0 1px 3px rgba(0,0,0,0.05); - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.option-tree-ui-buttons.alt { - background: #f5f5f5; - border-color: #dfdfdf; -} -.option-tree-ui-buttons:before, -.option-tree-ui-buttons:after { - content: "\0020"; - display: block; - height: 0; - visibility: hidden; -} -.option-tree-ui-buttons:after { - clear: both; -} -.option-tree-ui-buttons { - zoom: 1; -} -button.reset-settings { - position: relative; - top: -45px; - left: 8px; -} - -/* -------------------------------------------------- - :: OptionTree UI Button Icons - ---------------------------------------------------*/ -.option-tree-ui-button .icon { - color: #3a3a3a; - display: inline-block; - float: left; - font-size: 20px; - height: 20px; - margin-top: 3px; - opacity: 0.9; - overflow: hidden; - text-align: center; - text-indent: 0; - width: 18px; -} -button.option-tree-ui-button .icon { - margin-top: -3px; -} -.option-tree-ui-button.light .icon { - color: #fff; - opacity: 0.9; -} -.option-tree-ui-button.active .icon, -.option-tree-ui-button:hover .icon { - opacity: 1; -} -.option-tree-ui-button .icon.right-label { - margin-right: 10px; -} -.option-tree-ui-button .icon.left-label { - margin-left: 10px; - float: right; -} -.option-tree-ui-button .upload { - background-position: -0px -0px; -} -.option-tree-ui-button .trash-can { - background-position: -18px -0px; -} -.option-tree-ui-button .pencil, -.option-tree-ui-button .check { - background-position: -36px -0px; -} -.option-tree-ui-button:hover .pencil, -.option-tree-ui-button:hover .check, -.option-tree-ui-button.active .pencil, -.option-tree-ui-button.active .check { - background-position: -54px -0px; -} - -/* -------------------------------------------------- - :: WP 3.8 Fixes (via Github @AlxMedia) - ---------------------------------------------------*/ -#option-tree-settings-api #poststuff, -#option-tree-settings-api #post-body-content { - min-width: 0; -} -#option-tree-settings-api #poststuff h3 { - font-family: inherit !important; -} -#option-tree-settings-api .postbox { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} -#option-tree-settings-api p input[type="checkbox"], -#option-tree-settings-api p input[type="radio"] { - margin-top: 2px; -} -#option-tree-settings-api .format-setting.type-checkbox p, -#option-tree-settings-api .format-setting.type-radio p { - margin: 0.3em 0 !important; -} -input.option-tree-ui-upload-input, -input.option-tree-ui-input { - padding-top: 5px; - padding-bottom: 5px; -} -@media screen and ( max-width: 782px ) { - #option-tree-settings-api p input[type="checkbox"], - #option-tree-settings-api p input[type="radio"] { - margin-top: -3px; - } -} - -/* -------------------------------------------------- - :: Gallery - ---------------------------------------------------*/ -ul.ot-gallery-list { - float: left; - margin: 0; - width: 100%; -} -ul.ot-gallery-list li { - background: none repeat scroll 0 0 white; - border: 1px solid #bbb; - float: left; - margin: 0px 10px 10px 0; - padding: 4px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -ul.ot-gallery-list li img { - display: block; - margin: 0; -} - -.ot-gallery-buttons { - float: left; - width: 100%; -} -.ot-gallery-buttons a.option-tree-ui-button { - margin-top: 0px; - margin-bottom: 0px; -} - -/* -------------------------------------------------- - :: Google Fonts - ---------------------------------------------------*/ -.option-tree-google-font-family, -.option-tree-google-font-variants, -.option-tree-google-font-subsets { - float: left; - width: 20%; -} -.option-tree-google-font-family { - width: 100%; -} -#option-tree-settings-api p.checkbox-wrap, -#post-body .ot-metabox-panels p.checkbox-wrap { - display: block; - float: left; - margin: 0.3em 0 !important; - width: 100%; -} -@media screen and ( max-width: 1020px ) { - .option-tree-google-font-variants, - .option-tree-google-font-subsets { - width: 33%; - } -} -@media screen and ( max-width: 782px ) { - .option-tree-google-font-variants, - .option-tree-google-font-subsets { - width: 50%; - } -} - -/* -------------------------------------------------- - :: On/Off Switch - ---------------------------------------------------*/ -.on-off-switch .slide-button { - display: none; -} -@media only screen { - .on-off-switch { - background-color: #fff; - border: 1px solid #ccc; - color: #333; - display: block; - font-size: 12px; - font-weight: normal; - height: 27px; - margin: 2px 1px; - position: relative; - padding: 0; - text-align: center; - text-transform: uppercase; - width: 100px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05); - } - .on-off-switch * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .on-off-switch input { - position: absolute; - opacity: 0; - } - .on-off-switch label { - cursor: pointer; - float: left; - height: 27px; - line-height: 27px; - margin: 0; - position: relative; - text-align: center; - vertical-align: middle; - width: 50%; - z-index: 2; - } - .on-off-switch input:last-of-type + label { - color: #333; - } - .on-off-switch input:checked + label { - color: #333; - } - .on-off-switch input:last-of-type:checked + label { - color: #fff; - } - .on-off-switch input:focus + label { - outline: none; - } - .on-off-switch .slide-button { - background: #b2d27e; - border: 1px solid #7c9258; - display: block; - height: 29px; - left: -1px; - padding: 0; - position: absolute; - text-decoration: none; - top: -1px; - width: 51%; - z-index: 1; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 0 #c8eb8e, 0 1px 0 rgba(0,0,0,.08); - -moz-box-shadow: inset 0 1px 0 #c8eb8e, 0 1px 0 rgba(0,0,0,.08); - box-shadow: inset 0 1px 0 #c8eb8e, 0 1px 0 rgba(0,0,0,.08); - -webkit-transition: all 0.2s ease-out; - -moz-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; - } - .on-off-switch input:last-of-type:checked ~ .slide-button { - background: #b73b27; - border-color: #7f291b; - color: #fff; - left: 50%; - -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15); - -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15); - box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15); - } -} -@media only screen and (-webkit-max-device-pixel-ratio: 2) and (max-device-width: 1280px) { - .on-off-switch { - -webkit-animation: webkitSiblingBugfix infinite 1s; - } -} -@-webkit-keyframes webkitSiblingBugfix { - from { - -webkit-transform: translate3d(0, 0, 0); - } - to { - -webkit-transform: translate3d(0, 0, 0); - } -} - -/* -------------------------------------------------- - :: Simple Input Append & Prepend - ---------------------------------------------------*/ -.ot-input-append, -.ot-input-prepend { - display: inline-block; - vertical-align: middle; - font-size: 0; - white-space: nowrap; -} -.ot-input-append input { - position: relative; - margin-bottom: 0; - *margin-left: 0; - vertical-align: top; - -webkit-border-radius: 0 2px 2px 0; - -moz-border-radius: 0 2px 2px 0; - border-radius: 0 2px 2px 0; -} -.ot-input-append input:focus, -.ot-input-prepend input:focus { - z-index: 2; -} -.ot-input-append .ot-add-on, -.ot-input-prepend .ot-add-on { - display: inline-block; - width: auto; - height: 27px; - line-height: 28px; - min-width: 16px; - padding: 0 6px; - font-size: 16px; - font-weight: normal; - text-align: center; - text-shadow: 0 1px 0 white; - background-color: #f7f7f7; - border: 1px solid #ccc; -} -.ot-input-prepend input { - border-left: 0 !important; -} -.ot-input-prepend .ot-add-on:first-child { - -webkit-border-radius: 2px 0 0 2px; - -moz-border-radius: 2px 0 0 2px; - border-radius: 2px 0 0 2px; -} -.ot-input-append input { - border-right: 0 !important; - -webkit-border-radius: 2px 0 0 2px; - -moz-border-radius: 2px 0 0 2px; - border-radius: 2px 0 0 2px; -} -.ot-input-append input + .btn-group .btn:first-child { - -webkit-border-top-left-radius: 0; - -moz-border-radius-topleft: 0; - border-top-left-radius: 0; - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; -} -.ot-input-append .ot-add-on:last-child { - -webkit-border-radius: 0 2px 2px 0; - -moz-border-radius: 0 2px 2px 0; - border-radius: 0 2px 2px 0; -} -.ot-input-prepend.ot-input-append input { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.ot-input-prepend.ot-input-append .ot-add-on:first-child { - -webkit-border-radius: 2px 0 0 2px; - -moz-border-radius: 2px 0 0 2px; - border-radius: 2px 0 0 2px; -} -.ot-input-prepend.ot-input-append .ot-add-on:last-child { - -webkit-border-radius: 0 2px 2px 0; - -moz-border-radius: 0 2px 2px 0; - border-radius: 0 2px 2px 0; -} - -/* -------------------------------------------------- - :: CSS Editor - ---------------------------------------------------*/ -#option-tree-settings-api pre.ot-css-editor, -#poststuff .type-css pre.ot-css-editor, -#option-tree-settings-api pre.ot-javascript-editor, -#poststuff .type-javascript pre.ot-javascript-editor { - bottom: 0; - height: 280px; - left: 0; - margin: 0 !important; - right: 0; - top: 0; -} -#option-tree-settings-api pre.ace-chrome, -#poststuff .type-css pre.ace-chrome, -#poststuff .type-javascript pre.ace-chrome { - background-color: #fff !important; - border: 1px solid #ccc; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -#option-tree-settings-api pre.ace-chrome:hover, -#poststuff .type-css pre.ace-chrome:hover, -#poststuff .type-javascript pre.ace-chrome:hover { - border-color: #bbb !important; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); -} -#option-tree-settings-api pre.ace-chrome.ace_focus, -#poststuff .type-css pre.ace-chrome.ace_focus, -#poststuff .type-javascript pre.ace-chrome.ace_focus { - border-color: #999 !important; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392); -} - -/* -------------------------------------------------- - :: Date Picker - ---------------------------------------------------*/ -.ui-datepicker { - background: #fff; - border: 1px solid #ccc; - height: auto; - margin: 5px auto 0; - width: 216px; - z-index: 101 !important; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.ui-datepicker a { - text-decoration: none; -} -.ui-datepicker table { - border-collapse: collapse; - border-spacing: 0; - width: 100%; -} -.ui-datepicker .ui-widget-header { - left: -1px; - line-height: 30px; - position: relative; - top: -1px; - width: 218px; - -webkit-border-radius: 2px 2px 0 0; - -moz-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; -} -.ui-datepicker .ui-datepicker-title { - text-align: center; -} -.ui-datepicker-prev, -.ui-datepicker-next { - color: #ccc; - display: inline-block; - font-family: "option-tree-font"; - font-size: 16px; - width: 30px; - height: 30px; - text-align: center; - cursor: pointer; - -webkit-border-radius: 2px 0 0 0; - -moz-border-radius: 2px 0 0 0; - border-radius: 2px 0 0 0; -} -.ui-datepicker-next { - -webkit-border-radius: 0 2px 0 0; - -moz-border-radius: 0 2px 0 0; - border-radius: 0 2px 0 0; -} -.ui-datepicker-prev span, -.ui-datepicker-next span { - display: none; -} -.ui-datepicker-prev:hover, -.ui-datepicker-next:hover { - color: #fff; -} -.ui-datepicker-prev:before { - border-right: 1px solid #555; - content: "\f104"; - display: block; - float: left; - width: 31px; - height: 30px; -} -.ui-datepicker-prev { - border-right: 1px solid #333; - float: left; -} -.ui-datepicker-next:before { - border-left: 1px solid #555; - content: "\f105"; - display: block; - float: right; - width: 30px; - height: 30px; -} -.ui-datepicker-next { - border-left: 1px solid #333; - float: right; - width: 31px; -} -a.ui-datepicker-prev, -a.ui-datepicker-next { - outline: 0; -} -.ui-datepicker thead { - background-color: #fafafa; - border-bottom: 1px solid #ccc; -} -.ui-datepicker th { - text-transform: uppercase; - font-size: 9px; - padding: 5px 0; - color: #555; - text-shadow: 1px 0px 0px rgba(255,255,255,0.5); -} -.ui-datepicker tbody td { - border-right: 1px solid #ccc; - padding: 0; -} -.ui-datepicker tbody td:last-child { - border-right: 0px; -} -.ui-datepicker tbody tr { - border-bottom: 1px solid #ccc; -} -.ui-datepicker tbody tr:last-child { - border-bottom: 0px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: inline-block; - font-size: 11px; - text-align: center; - width: 30px; - height: 29px; - line-height: 30px; - color: #555; - text-shadow: 1px 0px 0px rgba(255,255,255,0.5); -} -.ui-datepicker-calendar .ui-state-default { - background-color: #f1f1f1; -} -.ui-datepicker-calendar .ui-state-highlight { - border-radius: 0px; - border: none; - color: #0074a2; -} -.ui-datepicker-calendar .ui-state-hover { - background: #fff; -} -.ui-datepicker-calendar .ui-state-active { - background-color: #0074a2; - color: #fff !important; - text-shadow: 0px 1px 0px rgba(0,0,0,0.25); - position: relative; -} -.ui-datepicker-unselectable .ui-state-default { - background: #fff; - color: #aaa; -} -.ui-datepicker-calendar td:first-child .ui-state-active { - margin-left: 0; - width: 30px; -} -.ui-datepicker-calendar td:last-child .ui-state-active { - margin-right: 0; - width: 30px; -} -.ui-datepicker-calendar tr:last-child .ui-state-active { - height: 30px; - margin-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - border-left: 0; - border-right: 0; - border-bottom: 0; - margin: 0; - padding: 0 .7em; -} -.ui-datepicker .ui-datepicker-buttonpane button { - background: #f7f7f7; - border: 1px solid #ccc; - color: #555; - cursor: pointer; - float: right; - height: auto; - margin: .7em 0; - padding: 5px 14px; - width: auto; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08); - -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08); - box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08); -} -.ui-datepicker .ui-datepicker-buttonpane button::-moz-focus-inner { - border-width: 1px 0; - border-style: solid none; - border-color: transparent; - padding: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button:hover, -.ui-datepicker .ui-datepicker-buttonpane button:focus { - background: #fafafa; - border-color: #999; - color: #222; - outline: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button:focus { - -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2); - -moz-box-shadow: 1px 1px 1px rgba(0,0,0,.2); - box-shadow: 1px 1px 1px rgba(0,0,0,.2); -} -.ui-datepicker .ui-datepicker-buttonpane button:active { - background: #eee; - border-color: #999; - color: #333; - outline: 0; - -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); - -moz-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); - box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} -.ui-datepicker-calendar + .ui-datepicker-buttonpane { - border-bottom: 1px solid #ccc; -} -.ui-datepicker-multi-2 { - width: 432px !important; -} -.ui-datepicker-multi-3 { - width: 648px !important; -} -.ui-datepicker-multi-4 { - width: 864px !important; -} -.ui-datepicker-group { - float: left; - width: 216px !important; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - border-top: 1px solid #ccc !important; -} - -/* default color scheme */ -.ui-datepicker .ui-widget-header { - background: #333; - color: #bbb; -} -.ui-datepicker .ui-widget-header a { - color: #999; -} -.ui-datepicker-prev, -.ui-datepicker-next:before { - border-color: #000; -} -.ui-datepicker-next, -.ui-datepicker-prev:before { - border-color: #444; -} -.ui-datepicker-prev:hover, -.ui-datepicker-next:hover { - background: #222; - color: #0074a2 !important; -} -/* light */ -.admin-color-light .ui-datepicker .ui-widget-header { - background: #888; - color: #fff; -} -.admin-color-light .ui-datepicker .ui-widget-header a { - color: #ccc; -} -.admin-color-light .ui-datepicker-prev, -.admin-color-light .ui-datepicker-next:before { - border-color: #3c3c3c; -} -.admin-color-light .ui-datepicker-next, -.admin-color-light .ui-datepicker-prev:before { - border-color: #999; -} -.admin-color-light .ui-datepicker-prev:hover, -.admin-color-light .ui-datepicker-next:hover { - background: #777; - color: #eee !important; -} -/* blue */ -.admin-color-blue .ui-datepicker .ui-widget-header { - background: #52accc; - color: #fff; -} -.admin-color-blue .ui-datepicker .ui-widget-header a { - color: #e2f8ff; -} -.admin-color-blue .ui-datepicker-prev, -.admin-color-blue .ui-datepicker-next:before { - border-color: #002b39; -} -.admin-color-blue .ui-datepicker-next, -.admin-color-blue .ui-datepicker-prev:before { - border-color: #5dc2e6; -} -.admin-color-blue .ui-datepicker-prev:hover, -.admin-color-blue .ui-datepicker-next:hover { - background: #006484; - color: #fff !important; -} -/* coffee */ -.admin-color-coffee .ui-datepicker .ui-widget-header { - background: #59524c; - color: #c7cbc9; -} -.admin-color-coffee .ui-datepicker .ui-widget-header a { - color: #f3f2f1; -} -.admin-color-coffee .ui-datepicker-prev, -.admin-color-coffee .ui-datepicker-next:before { - border-color: #0f0e0d; -} -.admin-color-coffee .ui-datepicker-next, -.admin-color-coffee .ui-datepicker-prev:before { - border-color: #675f58; -} -.admin-color-coffee .ui-datepicker-prev:hover, -.admin-color-coffee .ui-datepicker-next:hover { - background: #cca588; - color: #fff !important; -} -/* ectoplasm */ -.admin-color-ectoplasm .ui-datepicker .ui-widget-header { - background: #523f6d; - color: #c6c6d3; -} -.admin-color-ectoplasm .ui-datepicker .ui-widget-header a { - color: #f3f2f1; -} -.admin-color-ectoplasm .ui-datepicker-prev, -.admin-color-ectoplasm .ui-datepicker-next:before { - border-color: #181220; -} -.admin-color-ectoplasm .ui-datepicker-next, -.admin-color-ectoplasm .ui-datepicker-prev:before { - border-color: #644d85; -} -.admin-color-ectoplasm .ui-datepicker-prev:hover, -.admin-color-ectoplasm .ui-datepicker-next:hover { - background: #a3b542; - color: #fff !important; -} -/* midnight */ -.admin-color-midnight .ui-datepicker .ui-widget-header { - background: #363b3f; - color: #f1f2f3; -} -.admin-color-midnight .ui-datepicker .ui-widget-header a { - color: #f1f2f3; -} -.admin-color-midnight .ui-datepicker-prev, -.admin-color-midnight .ui-datepicker-next:before { - border-color: #090a0b; -} -.admin-color-midnight .ui-datepicker-next, -.admin-color-midnight .ui-datepicker-prev:before { - border-color: #4c5359; -} -.admin-color-midnight .ui-datepicker-prev:hover, -.admin-color-midnight .ui-datepicker-next:hover { - background: #ed543f; - color: #fff !important; -} -/* ocean */ -.admin-color-ocean .ui-datepicker .ui-widget-header { - background: #738e96; - color: #f1fcff; -} -.admin-color-ocean .ui-datepicker .ui-widget-header a { - color: #f1fcff; -} -.admin-color-ocean .ui-datepicker-prev, -.admin-color-ocean .ui-datepicker-next:before { - border-color: #39464a; -} -.admin-color-ocean .ui-datepicker-next, -.admin-color-ocean .ui-datepicker-prev:before { - border-color: #87a6af; -} -.admin-color-ocean .ui-datepicker-prev:hover, -.admin-color-ocean .ui-datepicker-next:hover { - background: #9ab8a0; - color: #fff !important; -} -/* sunrise */ -.admin-color-sunrise .ui-datepicker .ui-widget-header { - background: #da4f41; - color: #fff; -} -.admin-color-sunrise .ui-datepicker .ui-widget-header a { - color: #f3f1f1; -} -.admin-color-sunrise .ui-datepicker-prev, -.admin-color-sunrise .ui-datepicker-next:before { - border-color: #8a322a; -} -.admin-color-sunrise .ui-datepicker-next, -.admin-color-sunrise .ui-datepicker-prev:before { - border-color: #e75546; -} -.admin-color-sunrise .ui-datepicker-prev:hover, -.admin-color-sunrise .ui-datepicker-next:hover { - background: #e88436; - color: #fff !important; -} - -/* -------------------------------------------------- - :: Time Picker - ---------------------------------------------------*/ -.ui-timepicker-div { - border-top: 1px solid #ccc; - padding: 0 .4em; -} -.ui-timepicker-div .ui-widget-content { - border: 1px solid #aaa; - background: #fff; - font-weight: normal; - color: #212121; -} -.ui-timepicker-div .ui-slider { - position: relative; - text-align: left; -} -.ui-timepicker-div .ui-slider-horizontal { - height: .8em; - bottom: -.3em; - position: relative; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #f7f7f7; - border: 1px solid #ccc; - color: #555; - cursor: pointer; - display: block; - height: 1.3em; - margin-left: -.5em; - outline: 0; - position: absolute; - top: -.325em; - width: .8em; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08); - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover { - background: #fafafa; - border-color: #999; - color: #222; -} -.ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #eee; - border-color: #999; - color: #333; - outline: none; -} -.ui-datepicker-prev, -.ui-datepicker-next:before { - border-color: #000; -} -.ui-datepicker-next, -.ui-datepicker-prev:before { - border-color: #444; -} -.ui-datepicker-prev:hover, -.ui-datepicker-next:hover { - background: #222; - color: #0074a2 !important; -} - -.ui-timepicker-div dl { - text-align: left; -} -.ui-timepicker-div dl dt { - float: left; - clear: left; - padding: 0 0 0 5px; -} -.ui-timepicker-div dl dd { - margin: 0 10px 10px 45%; -} -.ui-timepicker-div td { - font-size: 90%; -} -.ui-tpicker-grid-label { - background: none; - border: none; - margin: 0; - padding: 0; -} -/* default */ -.ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #333; - border-color: #000; -} -.ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #444; - border-color: #111; -} -/* light */ -.admin-color-light .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #888; - border-color: #3c3c3c; -} -.admin-color-light .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-light .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #999; - border-color: #777; -} -/* blue */ -.admin-color-blue .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #52accc; - border-color: #002b39; -} -.admin-color-blue .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-blue .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #5dc2e6; - border-color: #006484; -} -/* coffee */ -.admin-color-coffee .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #59524c; - border-color: #0f0e0d; -} -.admin-color-coffee .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-coffee .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #cca588; - border-color: #675f58; -} -/* ectoplasm */ -.admin-color-ectoplasm .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #523f6d; - border-color: #181220; -} -.admin-color-ectoplasm .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-ectoplasm .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #a3b542; - border-color: #644d85; -} -/* midnight */ -.admin-color-midnight .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #363b3f; - border-color: #090a0b; -} -.admin-color-midnight .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-midnight .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #ed543f; - border-color: #a0382a; -} -/* ocean */ -.admin-color-ocean .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #738e96; - border-color: #39464a; -} -.admin-color-ocean .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-ocean .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #9ab8a0; - border-color: #5a6c5e; -} -/* sunrise */ -.admin-color-sunrise .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle { - background: #da4f41; - border-color: #8a322a; -} -.admin-color-sunrise .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover, -.admin-color-sunrise .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active { - background: #e88436; - border-color: #e75546; -} - -/* -------------------------------------------------- - :: Meta Box Tabs - ---------------------------------------------------*/ -.ot-metabox-tabs.ui-tabs { - overflow: hidden; - position: relative; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-wrapper { - overflow: hidden; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-panels { - background: white; - border: 1px solid #ccc; - margin: 7px 0 1px 0; - min-height: 140px; - overflow: hidden; - padding: 12px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav { - float: left; - list-style: none; - margin: 0 -1px 0 0; - padding: 18px 0 12px 0; - width: 151px; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li, -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-focus { - background: none; - border: 1px solid transparent; - border-right-width: 0px; - display: block; - margin: 0; - outline: 0; - padding: 1px 0; - width: 150px; - -webkit-border-radius: 2px 0 0 2px; - -moz-border-radius: 2px 0 0 2px; - border-radius: 2px 0 0 2px; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active { - background: white; - border-color: #ccc; - color: black; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a { - color: #21759b; - display: block; - line-height: 18px; - outline: 0; - padding: 5px 5px 5px 12px; - text-decoration: none; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a:hover { - color: black; - outline: none; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active a { - color: black; - outline: none; -} -.ot-metabox-tabs.ui-tabs .ot-metabox-panel { - clear: both; -} - -/* -------------------------------------------------- - :: Theme Option & Side Metabox Tabs - ---------------------------------------------------*/ -.ot-theme-option-tabs.ui-tabs -#side-sortables .ot-metabox-tabs.ui-tabs { - position: relative; -} -.ot-theme-option-tabs.ui-tabs .inside, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-wrapper { - overflow: hidden; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-panels, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-panels { - border: 0; - margin: 0; - overflow: hidden; - padding: 0; - width: 100%; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav { - border-bottom: 1px solid #ccc; - float: none; - font-size: 12px !important; - height: 30px; - list-style: none; - margin: 2px 0 0 0; - padding: 0; - width: 100%; -} -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav { - margin-top: 10px; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-default, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-default { - background: #fafafa; - border: 1px solid #ccc; - border-width: 1px 1px 0px 1px; - display: block; - float: left; - margin: 0 0 0 3px; - padding: 0; - outline: 0; - -webkit-border-radius: 2px 2px 0 0; - -moz-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li:hover, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li:hover { - background: #f1f1f1; - border: 1px solid #ccc; - border-width: 1px 1px 0px 1px; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-active, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active { - background: white; - border-color: #ccc; - border-width: 1px 1px 0px 1px; - color: black; - padding: 0; - -webkit-border-radius: 2px 2px 0 0; - -moz-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li a, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a { - color: #21759b; - display: block; - line-height: 18px; - outline: 0; - padding: 6px 12px 5px 12px !important; - text-decoration: none; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li a:hover, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a:hover { - color: black; - outline: none; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-active a, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active a { - color: black; - outline: none; - padding: 6px 12px 6px 12px !important; -} -.ot-theme-option-tabs.ui-tabs .ot-theme-option-panel, -#side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-panel { - clear: both; -} -#side-sortables .ot-metabox-tabs.ui-tabs .format-setting .description, -#side-sortables .ot-metabox-tabs.ui-tabs .format-setting .format-setting-inner { - width: 100%; -} - -/* -------------------------------------------------- - :: Metabox Tabs for Small Screens & Mobile Devices - ---------------------------------------------------*/ -@media screen and ( max-width: 1020px ) { - .ot-metabox-tabs.ui-tabs { - position: relative; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-wrapper { - overflow: hidden; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-panels { - border: 0; - margin: 0; - overflow: hidden; - padding: 0; - width: 100%; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav { - border-bottom: 1px solid #ccc; - float: none; - font-size: 12px !important; - height: 30px; - list-style: none; - margin: 2px 0 0 0; - padding: 0; - width: 100%; - } - #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav { - margin-top: 10px; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li { - background: #fafafa; - border: 1px solid #ccc !important; - border-width: 1px 1px 0px 1px !important; - display: inline-block !important; - margin: 0 0 0 3px !important; - padding: 0 !important; - outline: 0 !important; - width: auto !important; - -webkit-border-radius: 2px 2px 0 0; - -moz-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li:hover { - background: #f1f1f1; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active { - background: white; - color: black; - padding: 0; - -webkit-border-radius: 2px 2px 0 0; - -moz-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a { - color: #21759b; - display: block; - line-height: 18px; - outline: 0; - padding: 6px 12px 5px 12px !important; - text-decoration: none; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a:hover { - color: black; - outline: none; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active a { - color: black; - outline: none; - padding: 6px 12px 6px 12px !important; - } - .ot-metabox-tabs.ui-tabs .ot-metabox-panel { - clear: both; - } -} \ No newline at end of file diff --git a/option-tree/assets/fonts/option-tree-font.eot b/option-tree/assets/fonts/option-tree-font.eot deleted file mode 100644 index b3dcf0aa766f8aeaffaab281b6f0583de04ea999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95152 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 - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/option-tree/assets/fonts/option-tree-font.ttf b/option-tree/assets/fonts/option-tree-font.ttf deleted file mode 100644 index 713b6adffec63c96e3bf51b186b6524384b74b06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94952 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 z KmBIo!$a$W1y3LQHFO*F`L_Jzg81-ssPWl$hzOd)Cm-@CtURElnc|K z&D>OSN__Q?DGcEdqp4>J-O$8E{7pq3yKZ)x!)I#zf+>)`zSwC7h;Gn~3ES`HiWAeb z3s^c#G)^Ztdbl$;TdVL|H<(2&Nt&_Awa#_d<6*7G%*e>X=dQEz;uU6o_LwsbC9>lY&WN*8<3#sxLpqF+6P3FQc*W4nkiHrwI34*=LjyCYO>SFB*Qdt z2#|sMdG(@$;C$!nPzao4dL!%}cA27IXDajSyeaI;x^%)(`b>e+4kjwg1uPz#XotQ`Az{~IxCATA8q+{j^ zLm|0+AHxr4wbS$L(OUq&<1G@zISSWevqKMDOr<(*>M(5J}10TwZP(kO|C3xZmfCAd^o}}}o+RLGJy8bJ z#n?!tZ~oTd-4bA_==_#?>r%OL=4`pLq&|VE^Ss_ew}=y5e0_AZHhKtNg*aD%b*RSG zdK4O;NM<;?1>pys+f@7HbuT!@D!CV2ce1Te1)!z|f@E)8-IE8ezxIWTV>ReCK!nID zXx*!gExz#D>kmS6z>a9ZKNHyire(g$f;zoQig4UwarQk~A|=P(8Yu=)ub0wGrD&z7 zm4&>>Q7>37`Re`_Lzi4jIWeE3MR4GNp7E1$C(%KTY-KtzqBzaX`Rvr&$yi9porHso z-C`^Bq?KArB1LmV1G%#&7Y%l6e)OIhjbeJrAtX^B_buI{J z?l6sU!oiKEPz(x%XtV$vjF#7#3u5H5+&h79%!lKLtfRdKQ1w8rm`Y-StkhWqA4Tzm z4bpj7Y0!=~kqFr3(=4qn&Xv%P6vZUnH*vuk$bvBR7`9tV`SBzLX>?r3HSn90{m4Qc zogSl`SReLpfJxNYJ#KrtJslDf894nFe!R#2XqHPZj)yUBJd4pFjH&|b#^%jWFdC;Jd z3FI|0-W%I6Q$Bv*QipQRBdEKumat+$G*8rfWYhq`T~yrYAN@iK{tUC4AFU)Pm%Vz7 zio-Z!UO;Oe%N9zdS*tkid6^slMn$rPdOi=k$_HPWbWwy^En5m#OW88Tm}lBvDY#S5 zvn#w`I-pUR9dhLB`MtR|W~40rq(82re>Dq^#d@Xf1)!sFcJ%;Z?>XdA^QGQAX;h5_qG9>cRpvATV<#LeOmPR)VSrUjvK}0Rn zbR_6v#>3f~kL%|1^+HzsSBj-v#`DHXv*of`4yV;kuomzbe}*r;t$`n7HVQ}gPHhFo zjCcX{AJ7ASPsK}a0WbYhK9(y5=;B64#%k4OXEFC8ZIc$GBk@*6*b_)20-BYL+dekw z0IPGnUO~g?{SY2rSR;!QOCSe!+b)l^hQ{Xw==^_{Ii{x*mM=}p`Y6vAUm*RJN!3?^ z^e&LXxM%L`V_TM-^(LgAU1Cda$(|0_prve?SI36^zIrHe_#Cp|Oe}2}LYE~SyN#+! zVB4~Q>=cq`53u#}0i+KN*s)Zm2i9H;ur>~$J&mCNb7>6i06R5{A6=%1yG01haWA8R zS*DbT)&k6C3S6v=;!9R!iVGKkq+_Wf3R4+<{b6+<=4_NLj{+6sdSy%-yzz3WKGBCV z#(ZbCI-;`B@$nL$@gMTamAcGlRKzqVmV>7erJY9D#MEW_0cnB>gcl#^B${aHd-0=$ zNTHbM2R&jK;3MUpL2h)p>GYnQXEa!527G8ej01F^>)s~;bchYK{vpw^zB3I z9yOv`_w66_h_F+`6%_~Ibq`3=t?>5^db78$rOqw*B2&c<1_+q~5OtBsz$h?7&$OxU zJy&*@u7&B#eIqqJL8V2_Fa7LQ1!c59)OTTjxFgJ8&52siu$S+CZ4fXKM61c&7z^I_ z!p$@Fdw;0+^q_R_zHOl6djJLS?*X=b`(5*ATK`e8-e&ziIu(%*w61&)G?bzG^%XHb z8eXbA%`eC~rXe7`fV&~vcbJ8}(%?2!yoFh^t`XYuOx;^P1ak{ks>`lE>o66oP$NkQ z<abAF0N45&Q)d7)s+yQc=b*-KYruW}WqV$>1@WWveT^bA{3=u&m!J zHK1Pljnen#1*`!oEfXo02I&_`xvf%N8X(xRvnHCZmdE}~yZ~C(LE%NEs1CO&1u&wyl0szcc!%#ZB>5qzdB%CxGGLBAF9(TJm2_=l}5K-c7b9aC&{kc%(1Qu z)hXfem(2q}0RZE+eQc3CK0=}r!f&26}d5&4qWmqANk1A#8 zK3`@l9qv+sX56Wf<_=JVt=D;t=+x@?v+--j_o2HQa;+_kfTlo74jiUa+^}fj6$}b8Zw3Amo1%QKD1L5bYek)jn}WBeBo1#RRz)` zKjfVppo5S)%9D3U$x^&2R`OeHiX@a$UMmlX&CCgtp?FoH03;=4iAi(5YU)Nsh#M@K zOb$81Iz~yTn<=@a?dHIyU;NY`(o5OY&QM%aoNlXdpX8I;%HE=qTt5}wSgWZ;Tn=vv zQJ3D(Rn}#){8yf#fR%#HTXb@MqRbTUFwEJ#dPs>ezx8%g@<2b7+a{+@s9%A7h(e{;_YJ}EQ&J77 z79YKCkA+nXuX&U1SSi|k`frsxlo;MOw{>qwDfA0(*S%x1A-n-h!f?_eN+zXrHXjzd zOQ#4MqZPE$bHdNy!bUlCM)+>s{~8Q=s$VX!B{?aX58W;uMDg6SR2dg;xkQ7&^pF?v zT5TP}ynx)PlTtJ~L!RgaQkL=()Kl6)UTFnCHFt%;45v&A^T%Uy${n&wQn@Yd4V<3c z!xTa3x_MlQo=u9742*I(2?S}BBvk$>0Mn@d0+*;jq@Jf4D=JtMGo+u z`lepzmWfPik20`vpDuw8+rx3W1<#5C*pOmDpdmBKLakz1@T~D)SH6D-u zheWY7`Wt?7dTP$>8=lSOu=(EJv5Li9mde_@4D#>%?Rb1bR)zkDQG$#7NIXANshG_R z5tZ?Twhx_{z_mFRgIkt07ZDRz#jLxpqfo-NV!`k-=4D=)u=D=JM&)s!80&#@i=gX3ppTi!>2F?ND#!ZFjkvi{_&CJM6r?m`X( zs!5?F@~I5KeyKN_&8=qhkw)W5%m<dre8~0@(u@ zD;$o5Y}BdCHSQYh(HZ(`5SUhsU8@~-#{dv^hZcY^7q_>z)CP*x?pZXe;+c1rW<9oZ z>eNm*!tJ|IX+DZa(p@}Nw14}4<4Sq|LAr`=I@oADu(^quxVIH2#$#zSAI%@$$eG1L zFa&1fww9;0lc4TU_%@k7HR_1@x1|h5%U0WX7LKKUeqMefK=tF2;yx z*6&TS)!gjeubpQVX&iAwh7kqH?CV}PE4D0|z6|hvY%>|mzxM9gnCB$lYnXE^=uthkq^q8-)~?L>;KJ3AXW7kQud+V8D+Fmn(l zOSn~+=@~lb$#m>}O&ZuGrnG!}*TOh4RyrQDa5>?W)~h3g_uO@30U1cxval3b&K7Um zmFyQ5$6DBM>f&=oIMuvWRx7N4_=o8tYC-6R>=GMGrL#8vz6sXM7V;QlqcK~17K`sS zcuRGkF#2z^LC8hcq4n3KUC3lAGvkY8mCsXtJcgla*E%6pk0(lZd-90|v(ulMmVL(w zIh4v~3CDvuQ!Lg9R6c*m@u*g?Vw$HJb z&La8U5+u4S7t;o*p=Kbz1pb`!Ws07z^D=!d&sQo(%k{dv?WpnN z)b?EFgx;q>3@>KsB;c#nw+6oTkuDJkx0+Lv2fG(B!4`^BitS?-iS1RWG1l>BrLx5^ zLtC1Y6Y0QZn-z?UqUCDWuVxJ6JU zW&%*m5>JZi(^#-3y4&NpkUbRYR>RQdxm#}j;!R%jnkt(@qcP9czWG)d381pKHG&SA z_2$A4s~-t|RK1%z^wy!ux_!X{@4e=1z<7 zGa<+p;VujZHl+W&W6QUK8GH-f->`b{U{ zIpfutg+?`*h5@py$=`tiv}OW=$NyqF>Q$=a_{@4iiGV$^atXslqA)g6@q$#0TPvgD z|5%Yw9hU@&ICi6e?g zdF>YN{^gGNGz%Rt8;o?^Z0~wXeQU^d;iLS9)V^J|wU*#@h3vf_z2lDUJMK7qM)t*i z$Cj`z*>n877iL3lbuTcpIiKcV@1^~ADIkcyGI8w1FW!9di$C}Bd!?Z54Wgn2f2lU~ z1+Xi;ic$|_W4wXcL*2xzsHaT_5Hb24xziFL63kcz%Cus$e@9xhCzpD-RGw;$eQk1b zf(6T;w6SeC)~8Bi6NO^&Yq<(b%X1$m&J3$~-_8dk173{vOnRR-V-J`8VS4*|;Mcdy)l1#ob5_QI zSQYv%&~&5NB=FIZbqL~jC>m}(@!WU1ymD6&r0-q3jO@MMcN5F4;k{XV z4E-ZB@D7Ge8$71|B8TL#U0%@s(Cd*GfT`bXyk>UsNo|06*NtH&oBj(!7d)p_`|p1^ z>{2uQ+w6q+DB>g^CF?G_yWDTCd=4~qhtr2^=FQ6aEu#HqG9`2Ij$SbOu=J?8ZI1U2 zK_*3R?cPgL_no70-=7ly_~ytDMBW~GAo8((-*tr4fD(MI$6N0#i|SSckfNsV?PA@a z6Yz%C9SVh#q{8WHI163{LWfBh`x>+Vi*>elOP$Z;7?5mF_z3p)W^oSdZgdGXh6(pylO&Oi9&09VrVGB zhyBFi&?U=AQdL;BAZKOZsRbz02dYyJv;Ef><19PH;_K0JUTUjYI$zAg0~gX#v`dUhXy?i1r9J(Zsn1&3X6 z(&=h_5-B5pEI$r8e)#QH+)u>_bx>+dmS-gZi5kPv8dXXxK_s$bu2f1U%dxQ?P~T9* zyL>EJ8(C|zawHZn*RzmCYaug2D9j?k?c8MGZzR$aW0_Qpb?u%HmFM*nDG5aZ;>Fp< z%EB4Y=fqj76bThLu+6+a@}tPvEOgN-Z4}g~vpZvW=*|cwl*mzG(=}lC8*k`J%Wt(i zXsu1>8B!^B01<-Cw*~f;uk__iUE6+OT*C!-teBxMQ~2-`1RymNt5l|_lxyiS@H(WJdPUP`KMO02DOT~I=@s;a7!6UOebhxP4@Wmi1hnbJe0CgG*byJ_nc9o~N>Nt{|rHw6#0$o~OIhHi-S$Js)mZdLI4Go_$ybI7V|E z{Y`Ss+n(qXjNa3bv*}&xbC~E^6A$M-(+!tbs*Z7DBCv~=iLY@+;3vi{(Z_R2+e zLE$-w?-uTBRcw~iYDpbe6ENL!cEjsdcviRHK5_fU-0nkSy*-Q!evg>RuX4NZ86AxV zqocvO!-uoE!-sQfgo`LQKgGYCRhyjc!0kTlx`#y^QEzg|7_945!RV=MmaN&skLlFW z(Vq$L3m=Mt4BkWJ!x5y19|5jq(rXiyQT?p7IuJbhpx==F&h-3K_Bdi!+IfQ{Nr?di4+%Y8fkT}z9ZnF7I$5!HE*}u6VIs$Y6 zh;yh%jk;&koN}m2%@Y!66)O0G)b>?49tEGFS+*6(I zjur_Kmu9eOxL9(8^oty%MTiDH>tySqkR)kn*qN9hLQT?3r?d51 zjbrxztL{y}gu(sx}Omg9p1RN%0AU7G>^ZTFk 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 Fe+PJ9FpG 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≤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 diff --git a/option-tree/assets/images/layout/left-dual-sidebar.png b/option-tree/assets/images/layout/left-dual-sidebar.png deleted file mode 100644 index 81c3a9499b24019c1df5cb7f5cbea8e607b3e5f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3923 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 rUDh^FXXd@FT4#a8Hy0+uxP$dI#7(-->q%0AUR32;DDiK8( z*|KCQ%9;{cW~@aD-+11q=l%Zp`tIYn@9X+q$9bN=_5S0!YGY+8$S=(g000Ed&5Z2W zt0VhG^YXC2D(>Zj>_v)d>`b*Mc~FC~6aqjWPr5(=nfqfs33dc5J|v)nfB^uwz}^nd zRA);IG>+u2hTX-e(f!G6HUNOpqm!{XUjh|$f#B&))CDiTXaIw}@w#9qO-r~X*^uDn zZ5B!)*oRs<;6iWvjzMKR4j<@??((o({;gr>!R8F-D4OS^f!d+s|)^5 zP|lV%AVU&`0Mb;0tK#5VaF7;44WX`~t*s3OA>jx(432~$kg5o6v^o+EhlBokz-(_6 zya(FO$mAbiY)cpHMWvF_Fj#PKuv)OX8j0cwL!eNoT@55sm5oph3?WjnbX8)Y+;0UV zLLiRfO{RL2h@f3X>;+N~RTs>T^gk*1lmC?^2L4kfcEMnDEE$GSgYTyF8)#|y|3m%# z|3wE%vQ{Y66>A1tzXMU&#H53b0D=jKNngKR^JUYCg=3M1Q(eTj$85jIHzG z#22)mJA*_S(0A4tYa8#&=UnaSjs{VgM5pi72WzX>u#+~O4`Jt|s@It~hs3d;PoKSO zoltzc8Q7+o(?WwJuN&7wkA?OVbuT{;etV=%eQU-Ud4*R*qm(`fx|h8ESUJ3(8@Mi~ z!CiEE+1|l?%6{@YV*kU&FZGzquNf({+yg@yFFZ0!FNRYjqVRy#IkEms%e> za%g6U2CbJF>$xv3aazpi=sWKa|Kqm@B7Cyrh_~&#@)GNH7S5a#tV1_cU@CF~9J*O0 zGy1;Qh67~whbu~LY@gUOubP9BHK`&cYn6@at}O#VJ*2OyF*r($sGegGdNhkzXn}c^ zdjg-dR37dh7|(gk1+~<9xIG~$AkiFmQKs85q5AOQVnflQ^qc#&tz+|V9P^X!PW5n# zD3gGVC7hjs_*{=_>8})EStGs*EApItAPyL}FrIz*Ii_-pBS&Mv^jy@M)}Xk` z1EZ8HF8Vo9sFpbJMvM}M``XAQQ>V>*`M2{;f^#~b0^{$RjCV2g=WpBW?RFnJBrZ0& z`*%#S>W-_8Zbay1l)PV?r7zG2Uv0KkM6g=xRr8#V_ECO56%iqtm*HO@99i6PHkZ`w zd?qxp!~8*G2}S()5Hk5~^^~l3sASma>Pk!B^iOT?Lk+*yRzHW6x;eT=CML@A+nH~4 zWNEFENi*X+=Xi7L`^sR?0`s~jJeVL~x&ls3D9k?LvqWM0PsS&*ulvMvixKZaknyh>* zqe%w5#BtnApoM=!JJ+YQNv%x~~F#1O+S z_w0n?&D$pG{Xy*qfu1Se`^86r;J7q=LLS`OZ#5Da<4`mfKqO!e01+|DnH4AHrFsht zdolzzL*jxGJ0e4d;x_64e#jfwX<|*&E21v0^53bZ~QtpAQJT!P8On>*Z-x1MYy9$9g(>H=X5!MbTNPc9xj){b-)AxwrX?P+YH@u%h?( zk?)X0c@C1@^;FgAMTPPxs;CT+8KP?Caht+tKuSPOF2SJjVb3&Tuw`9C6h4_8*VU)P zngbicU$`t7oOi05`Lt%_0IDg=o)!W78g88|&@KFIwxKL_d{!|*!mXA0CJ>bWFwo!xS|x0T>6+?gNW6{w_Qg#Ub$8`2R!{TP`)I#Nl^Sc zJk658pI$Nw+|!Dj{b4k6rYf<-@Kf#}sJqPeO~-k&Vb^(P9DJkItZ- z@*6$5+yLEqm$IwT1knk-x#|m(u^Yk%UR`+!(93%J>s=C@ zfxw5Thc59>L;PBcQTS7+*}F+mo^~Ne$*9U!(C&iP^c5b2sn!VI~puNKRu@~wIOv0Gd(pPaGbfGK|JshiHb+R-@T zvA0zuHs|R#vroOj5vg)Xr)M8oAkw0Njq4c$kJ5d+I3-2kuggU~>X#EAz9ea`x`h5N>@ zJ&}Ldn^iohmRZwazzi6@JqRVaf|TfAGl~xm~_vFd;mwcA&tGPCpZ8{2Kf~D*n{jl2>D` z$&V~Fy(QPlc0y92!SLY^ zW|yeUIJeu!6BB{`7pm<`ZQ{;5i@x4)0mb7wQpI>0n{3fMmb0&(&;+mo;EKYyRDBg5 z)^MC>3p{x89m`nZe)zWT<&v(9595befqS8AK78OGwXD6p-O58skMAdy{YI zR;dHV)9<1d_Bg(bo?calY|h&2SN>IV*9pcq?w6l_RKZ2vWQ}mIJW>4JUyBb5J9|RI zGT~2HM`O{#@`t%H3+^79bVcOq;heLj$_v(h!QJu?ygU&Ft#QUTAyiL2TZA_O&y44{ zNzT7vyz#OhE3Ep-BUtIDW{|6)z!0UVtbhquZAU9gvwOm(no7S^Qfxfr9taCbuLJ4g zb_n|~eH!auAi4sFIhO>Tn%$c^_xhT&iCj!F2!^PMz;rmXF1_&F?BS?F#CoKp`L8}! zyC?@kV6q$tNf##oD9 z3Rq2uV>so?mzCZa8F70SHaxK0mt3?swn<1D+L3Svw9u|r?s@dBVfVUhZfs>#Zr~pM EKVXU&B>(^b diff --git a/option-tree/assets/images/layout/right-dual-sidebar.png b/option-tree/assets/images/layout/right-dual-sidebar.png deleted file mode 100644 index 8f0d207eb2f229c9085ca941fe617e99e1d30f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3948 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 diff --git a/option-tree/assets/images/ot-select-hover.png b/option-tree/assets/images/ot-select-hover.png deleted file mode 100644 index 776b521e26c468975fc550836f5ef8d22c71d0a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044 zcmaJ=O-K|`93L`7HZ>vWW9efW=^(W8weHv8D(lRyE;O?4F1S#XTMvG`Tg#N4N$g^lW1>-rGF@|A5vH%uSj3Iz0HE9H-fut12-+~Sd zt0UBG4(7y5oNQ>MESO5=@ zv`?mkG#+F~#@`+ag)ZVO&CnFhQVi>3LY$xFXc{kn1oCDn!(3WOlzky9O5`ClIf^P2 z3S_}g8rBHKL?RJagJpdP;j@c6lpLRKw^kGcV9SK!S#q zHH@)J6;pWw8g||=aXu5kMM+k5*Dm2jkxS|}lyn&+g(!g(NL5w1I2{&Zfj}Z0jzkzH z?vL@2aI8JS3v7^Qy90EED;V;G26R~ADphWfuE}*rK{JtO0a)q{pd>6q!%Hc1YVBBr zntElfQZtr7ye5}I!BB2v|7vvQ3QdoDtd1=*s)G-7H0>4|>-D+AkI<8tO$xEBv-SC7 zzvnjISU>oXe7;&dzC7Qv*;cqy-+eNYkG%iBlABqXIw7`gAB`)Xo458aY>frqgaaAv@sirCG_L>Hol>{YG`vVJ u-k+^oyLRR4)28W#pWe;ocPV~gr)3bEt_#P%Y&5@i-)S=5CoFXj&in>yXH_@= diff --git a/option-tree/assets/images/ot-select-rtl.png b/option-tree/assets/images/ot-select-rtl.png deleted file mode 100644 index 68cc5c047c6514209cffc6e0d41b1c0e0559a3c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1047 zcmaJ=O=#0l9M9YbI-GcLhlyy&(38za=hh~+)~;!{irH#gurLQ^$!imY(3%)@XpJdA-T_|mnV2Wuejz5nC)`~5%POk!lH ztMhOtK@eT>VKIsKBlxHG?!oKQG5RRpdQdcjQZS23vIU5+3MT*=*X0~Y0$D9jt$+YQ zv{G6+gEG>2L4i6gyBONhP0S{UK*%v=r2r5)0dkrVq&6QfQlzE^sf+y*E140H*M=(= zNL5DCN~NIiDiu0I1{?tk=m5#2qfZ*P-~_3vu7J<(HA9hA2r2}rouD#Of{Z{5ko`34 zQP=^N9N=iK@08EyJ4t$3j%8Rc!+AZNPw4XsEKAlt3VXBEtdJCAHDA~YQh9_-fniFe z5?$(}p_OAep66W+uh)YS9=mKH+3^^5Z(TtIwqj`}(x5@Qit+?3q9BDM-AO?=8?uI7 zD-$jlK*}s&my{F4vUnj)HDt&myq2D?p7|P$#P?3tH1yqS2;$ zHLlt;mT0Ugm%+g>Ze#yybo~lXk9%y4EjAj14-7o*79Q)@OJfQABxd7cIPJXOc*}J@ zCHJ={x+=uzx3#skt-y7<`x-UB3=8WwLNlM{?uz5*E{x6DC$_?E-RafP>cMB(g_)Q9 zhvSLKR=jMqjKA1U6}}fAzI(o%TH0KBusB;b*SY0KU+>H>_iX-NxO(g6$3vII+i%vV tzdZT% diff --git a/option-tree/assets/images/ot-select.png b/option-tree/assets/images/ot-select.png deleted file mode 100644 index 5b335f4db1b1471699cb09d21a4b9b5f88339475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmaJ=O-K|`93K+R7KFeKxr7ZPAwfG|tGheHuCnfEt~R#pZnTJ)(f`qv%jnWMmy8C@L(nLj@Mpo7G)Av<=LA@BjGye*e!mo#@$L zAAm51 zRS;@A12f_QUN$sRaxtW%nTU;H;a10#vb31oCDnLwr)`*zkp{2$6-* z-Y63)80APN#gMd{QV}SM|A%T?32nn9*o^m|!ghMx1XL2(#+W6e#tk*Nu1r2=0SOvb z+Av0nRZL_JXxLf9#AB&uT$E&0ckKdR6#2MrLrIrGT!;`zfmBt6Z}M{?HX7i9?R1P` z+Wj0S&`~B7@re;f0iWwR|kW zvU(d_rF<-*vRn!UL%EIptI@?PG(GOIG`7en4L;D(v|DJbFSaaop(k-FE=1GL%TLdu zo@4m-%EV0gPT$>?1?%0t#qow?A|-O=hf=LpDRZ$Tt9b`>6ul#rXRgIyWIBm`>h|J z&)i?EINp0{VXFGj?-x}APwM+pH*4O0tW7_jS+3lPeei}BUN`m&?t6{5_XwBU1}6Ui D;67U* diff --git a/option-tree/assets/js/ot-admin.js b/option-tree/assets/js/ot-admin.js deleted file mode 100644 index d15bc73..0000000 --- a/option-tree/assets/js/ot-admin.js +++ /dev/null @@ -1,1293 +0,0 @@ -/** - * Option Tree UI - * - * Dependencies: jQuery, jQuery UI, ColorPicker - * - * @author Derek Herman (derek@valendesigns.com) - */ -;(function($) { - OT_UI = { - processing: false, - init: function() { - this.init_hide_body(); - this.init_sortable(); - this.init_add(); - this.init_edit(); - this.init_remove(); - this.init_edit_title(); - this.init_edit_id(); - this.init_activate_layout(); - this.init_conditions(); - this.init_upload(); - this.init_upload_remove(); - this.init_numeric_slider(); - this.init_tabs(); - this.init_radio_image_select(); - this.init_select_wrapper(); - this.bind_select_wrapper(); - this.init_google_fonts(); - this.fix_upload_parent(); - this.fix_textarea(); - this.replicate_ajax(); - this.reset_settings(); - this.css_editor_mode(); - this.javascript_editor_mode(); - }, - init_hide_body: function(elm,type) { - var css = '.option-tree-setting-body'; - if ( type == 'parent' ) { - $(css).not( elm.parent().parent().children(css) ).hide(); - } else if ( type == 'child' ) { - elm.closest('ul').find(css).not( elm.parent().parent().children(css) ).hide(); - } else if ( type == 'child-add' ) { - elm.children().find(css).hide(); - } else if ( type == 'toggle' ) { - elm.parent().parent().children(css).toggle(); - } else { - $(css).hide(); - } - }, - init_remove_active: function(elm,type) { - var css = '.option-tree-setting-edit'; - if ( type == 'parent' ) { - $(css).not(elm).removeClass('active'); - } else if ( type == 'child' ) { - elm.closest('ul').find(css).not(elm).removeClass('active'); - } else if ( type == 'child-add' ) { - elm.children().find(css).removeClass('active'); - } else { - $(css).removeClass('active'); - } - }, - init_sortable: function(scope) { - scope = scope || document; - $('.option-tree-sortable', scope).each( function() { - if ( $(this).children('li').length ) { - var elm = $(this); - elm.show(); - elm.sortable({ - items: 'li:not(.ui-state-disabled)', - handle: 'div.open', - placeholder: 'ui-state-highlight', - start: function (event, ui) { - ui.placeholder.height(ui.item.height()-2); - }, - stop: function(evt, ui) { - setTimeout( - function(){ - OT_UI.update_ids(elm); - }, - 200 - ) - } - }); - } - }); - }, - init_add: function() { - $(document).on('click', '.option-tree-section-add', function(e) { - e.preventDefault(); - OT_UI.add(this,'section'); - }); - $(document).on('click', '.option-tree-setting-add', function(e) { - e.preventDefault(); - OT_UI.add(this,'setting'); - }); - $(document).on('click', '.option-tree-help-add', function(e) { - e.preventDefault(); - OT_UI.add(this,'the_contextual_help'); - }); - $(document).on('click', '.option-tree-choice-add', function(e) { - e.preventDefault(); - OT_UI.add(this,'choice'); - }); - $(document).on('click', '.option-tree-list-item-add', function(e) { - e.preventDefault(); - OT_UI.add(this,'list_item'); - }); - $(document).on('click', '.option-tree-social-links-add', function(e) { - e.preventDefault(); - OT_UI.add(this,'social_links'); - }); - $(document).on('click', '.option-tree-list-item-setting-add', function(e) { - e.preventDefault(); - if ( $(this).parents('ul').parents('ul').hasClass('ui-sortable') ) { - alert(option_tree.setting_limit); - return false; - } - OT_UI.add(this,'list_item_setting'); - }); - }, - init_edit: function() { - $(document).on('click', '.option-tree-setting-edit', function(e) { - e.preventDefault(); - if ( $(this).parents().hasClass('option-tree-setting-body') ) { - OT_UI.init_remove_active($(this),'child'); - OT_UI.init_hide_body($(this),'child'); - } else { - OT_UI.init_remove_active($(this),'parent'); - OT_UI.init_hide_body($(this), 'parent'); - } - $(this).toggleClass('active'); - OT_UI.init_hide_body($(this), 'toggle'); - }); - }, - init_remove: function() { - $(document).on('click', '.option-tree-setting-remove', function(event) { - event.preventDefault(); - if ( $(this).parents('li').hasClass('ui-state-disabled') ) { - alert(option_tree.remove_no); - return false; - } - var agree = confirm(option_tree.remove_agree); - if (agree) { - var list = $(this).parents('ul'); - OT_UI.remove(this); - setTimeout( function() { - OT_UI.update_ids(list); - }, 200 ); - } - return false; - }); - }, - init_edit_title: function() { - $(document).on('keyup', '.option-tree-setting-title', function() { - OT_UI.edit_title(this); - }); - // Automatically fill option IDs with clean versions of their respective option labels - $(document).on('blur', '.option-tree-setting-title', function() { - var optionId = $(this).parents('.option-tree-setting-body').find('[type="text"][name$="id]"]') - if ( optionId.val() === '' ) { - optionId.val($(this).val().replace(/[^a-z0-9]/gi,'_').toLowerCase()); - } - }); - }, - init_edit_id: function() { - $(document).on('keyup', '.section-id', function(){ - OT_UI.update_id(this); - }); - }, - init_activate_layout: function() { - $(document).on('click', '.option-tree-layout-activate', function() { - var active = $(this).parents('.option-tree-setting').find('.open').text(); - $('.option-tree-layout-activate').removeClass('active'); - $(this).toggleClass('active'); - $('.active-layout-input').attr({'value':active}); - }); - $(document).on('change', '#option-tree-options-layouts-form select', function() { - var agree = confirm(option_tree.activate_layout_agree); - if (agree) { - $('#option-tree-options-layouts-form').submit(); - } else { - var active = $('#the_current_layout').attr('value'); - $('#option-tree-options-layouts-form select option[value="' + active + '"]').attr({'selected':'selected'}); - $('#option-tree-options-layouts-form select').prev('span').replaceWith('' + active + ''); - } - }); - }, - add: function(elm,type) { - var self = this, - list = '', - list_class = '', - name = '', - post_id = 0, - get_option = '', - settings = ''; - if ( type == 'the_contextual_help' ) { - list = $(elm).parent().find('ul:last'); - list_class = 'list-contextual-help'; - } else if ( type == 'choice' ) { - list = $(elm).parent().children('ul'); - list_class = 'list-choice'; - } else if ( type == 'list_item' ) { - list = $(elm).parent().children('ul'); - list_class = 'list-sub-setting'; - } else if ( type == 'list_item_setting' ) { - list = $(elm).parent().children('ul'); - list_class = 'list-sub-setting'; - } else if ( type == 'social_links' ) { - list = $(elm).parent().children('ul'); - list_class = 'list-sub-setting'; - } else { - list = $(elm).parent().find('ul:first'); - list_class = ( type == 'section' ) ? 'list-section' : 'list-setting'; - } - name = list.data('name'); - post_id = list.data('id'); - get_option = list.data('getOption'); - settings = $('#'+name+'_settings_array').val(); - if ( this.processing === false ) { - this.processing = true; - var count = parseInt(list.children('li').length); - if ( type == 'list_item' || type == 'social_links' ) { - list.find('li input.option-tree-setting-title', self).each(function(){ - var setting = $(this).attr('name'), - regex = /\[([0-9]+)\]/, - matches = setting.match(regex), - id = null != matches ? parseInt(matches[1]) : 0; - id++; - if ( id > count) { - count = id; - } - }); - } - $.ajax({ - url: option_tree.ajax, - type: 'post', - data: { - action: 'add_' + type, - count: count, - name: name, - post_id: post_id, - get_option: get_option, - settings: settings, - type: type, - nonce: option_tree.nonce - }, - complete: function( data ) { - if ( type == 'choice' || type == 'list_item_setting' ) { - OT_UI.init_remove_active(list,'child-add'); - OT_UI.init_hide_body(list,'child-add'); - } else { - OT_UI.init_remove_active(); - OT_UI.init_hide_body(); - } - var listItem = $('
                      • ' + data.responseText + '
                      • '); - list.append(listItem); - list.children().last().find('.option-tree-setting-edit').toggleClass('active'); - list.children().last().find('.option-tree-setting-body').toggle(); - list.children().last().find('.option-tree-setting-title').focus(); - if ( type != 'the_contextual_help' ) { - OT_UI.update_ids(list); - } - OT_UI.init_sortable(listItem); - OT_UI.init_select_wrapper(listItem); - OT_UI.init_numeric_slider(listItem); - OT_UI.parse_condition(); - self.processing = false; - } - }); - } - }, - remove: function(e) { - $(e).parent().parent().parent('li').remove(); - }, - edit_title: function(e) { - if ( this.timer ) { - clearTimeout(e.timer); - } - this.timer = setTimeout( function() { - $(e).parent().parent().parent().parent().parent().children('.open').text(e.value); - }, 100); - return true; - }, - update_id: function(e) { - if ( this.timer ) { - clearTimeout(e.timer); - } - this.timer = setTimeout( function() { - OT_UI.update_ids($(e).parents('ul')); - }, 100); - return true; - }, - update_ids: function(list) { - var last_section, section, list_items = list.children('li'); - list_items.each(function(index) { - if ( $(this).hasClass('list-section') ) { - section = $(this).find('.section-id').val().trim().toLowerCase().replace(/[^a-z0-9]/gi,'_'); - if (!section) { - section = $(this).find('.section-title').val().trim().toLowerCase().replace(/[^a-z0-9]/gi,'_'); - } - if (!section) { - section = last_section; - } - } - if ($(this).hasClass('list-setting') ) { - $(this).find('.hidden-section').attr({'value':section}); - } - last_section = section; - }); - }, - condition_objects: function() { - return 'select, input[type="radio"]:checked, input[type="text"], input[type="hidden"], input.ot-numeric-slider-hidden-input'; - }, - match_conditions: function(condition) { - var match; - var regex = /(.+?):(is|not|contains|less_than|less_than_or_equal_to|greater_than|greater_than_or_equal_to)\((.*?)\),?/g; - var conditions = []; - - while( match = regex.exec( condition ) ) { - conditions.push({ - 'check': match[1], - 'rule': match[2], - 'value': match[3] || '' - }); - } - - return conditions; - }, - parse_condition: function() { - $( '.format-settings[id^="setting_"][data-condition]' ).each(function() { - - var passed; - var conditions = OT_UI.match_conditions( $( this ).data( 'condition' ) ); - var operator = ( $( this ).data( 'operator' ) || 'and' ).toLowerCase(); - - $.each( conditions, function( index, condition ) { - - var target = $( '#setting_' + condition.check ); - var targetEl = !! target.length && target.find( OT_UI.condition_objects() ).first(); - - if ( ! target.length || ( ! targetEl.length && condition.value.toString() != '' ) ) { - return; - } - - var v1 = targetEl.length ? targetEl.val().toString() : ''; - var v2 = condition.value.toString(); - var result; - - switch ( condition.rule ) { - case 'less_than': - result = ( parseInt( v1 ) < parseInt( v2 ) ); - break; - case 'less_than_or_equal_to': - result = ( parseInt( v1 ) <= parseInt( v2 ) ); - break; - case 'greater_than': - result = ( parseInt( v1 ) > parseInt( v2 ) ); - break; - case 'greater_than_or_equal_to': - result = ( parseInt( v1 ) >= parseInt( v2 ) ); - break; - case 'contains': - result = ( v1.indexOf(v2) !== -1 ? true : false ); - break; - case 'is': - result = ( v1 == v2 ); - break; - case 'not': - result = ( v1 != v2 ); - break; - } - - if ( 'undefined' == typeof passed ) { - passed = result; - } - - switch ( operator ) { - case 'or': - passed = ( passed || result ); - break; - case 'and': - default: - passed = ( passed && result ); - break; - } - - }); - - if ( passed ) { - $(this).animate({opacity: 'show' , height: 'show'}, 200); - } else { - $(this).animate({opacity: 'hide' , height: 'hide'}, 200); - } - - delete passed; - - }); - }, - init_conditions: function() { - var delay = (function() { - var timer = 0; - return function(callback, ms) { - clearTimeout(timer); - timer = setTimeout(callback, ms); - }; - })(); - - $('.format-settings[id^="setting_"]').on( 'change.conditionals, keyup.conditionals', OT_UI.condition_objects(), function(e) { - if (e.type === 'keyup') { - // handle keyup event only once every 500ms - delay(function() { - OT_UI.parse_condition(); - }, 500); - } else { - OT_UI.parse_condition(); - } - OT_UI.load_editors(); - }); - OT_UI.parse_condition(); - }, - init_upload: function() { - $(document).on('click', '.ot_upload_media', function() { - var field_id = $(this).parent('.option-tree-ui-upload-parent').find('input').attr('id'), - post_id = $(this).attr('rel'), - save_attachment_id = $('#'+field_id).hasClass('ot-upload-attachment-id'), - btnContent = ''; - if ( window.wp && wp.media ) { - window.ot_media_frame = window.ot_media_frame || new wp.media.view.MediaFrame.Select({ - title: $(this).attr('title'), - button: { - text: option_tree.upload_text - }, - multiple: false - }); - window.ot_media_frame.on('select', function() { - var attachment = window.ot_media_frame.state().get('selection').first(), - href = attachment.attributes.url, - attachment_id = attachment.attributes.id, - mime = attachment.attributes.mime, - regex = /^image\/(?:jpe?g|png|gif|x-icon)$/i; - if ( mime.match(regex) ) { - btnContent += '
                        '; - } - btnContent += '
                        '+option_tree.remove_media_text+''; - $('#'+field_id).val( ( save_attachment_id ? attachment_id : href ) ); - $('#'+field_id+'_media').remove(); - $('#'+field_id).parent().parent('div').append('
                        '); - $('#'+field_id+'_media').append(btnContent).slideDown(); - window.ot_media_frame.off('select'); - }).open(); - } else { - var backup = window.send_to_editor, - intval = window.setInterval( - function() { - if ( $('#TB_iframeContent').length > 0 && $('#TB_iframeContent').attr('src').indexOf( "&field_id=" ) !== -1 ) { - $('#TB_iframeContent').contents().find('#tab-type_url').hide(); - } - $('#TB_iframeContent').contents().find('.savesend .button').val(option_tree.upload_text); - }, 50); - tb_show('', 'media-upload.php?post_id='+post_id+'&field_id='+field_id+'&type=image&TB_iframe=1'); - window.send_to_editor = function(html) { - var href = $(html).find('img').attr('src'); - if ( typeof href == 'undefined') { - href = $(html).attr('src'); - } - if ( typeof href == 'undefined') { - href = $(html).attr('href'); - } - var image = /\.(?:jpe?g|png|gif|ico)$/i; - if (href.match(image) && OT_UI.url_exists(href)) { - btnContent += '
                        '; - } - btnContent += ''+option_tree.remove_media_text+''; - $('#'+field_id).val(href); - $('#'+field_id+'_media').remove(); - $('#'+field_id).parent().parent('div').append('
                        '); - $('#'+field_id+'_media').append(btnContent).slideDown(); - OT_UI.fix_upload_parent(); - tb_remove(); - window.clearInterval(intval); - window.send_to_editor = backup; - }; - } - return false; - }); - }, - init_upload_remove: function() { - $(document).on('click', '.option-tree-ui-remove-media', function(event) { - event.preventDefault(); - var agree = confirm(option_tree.remove_agree); - if (agree) { - OT_UI.remove_image(this); - return false; - } - return false; - }); - }, - init_upload_fix: function(elm) { - var id = $(elm).attr('id'), - val = $(elm).val(), - img = $(elm).parent().next('.option-tree-ui-media-wrap').find('img'), - src = img.attr('src'), - btnContent = ''; - if ( val == src ) { - return; - } - if ( val != src ) { - img.attr('src', val); - } - if ( val !== '' && ( typeof src == 'undefined' || src == false ) && OT_UI.url_exists(val) ) { - var image = /\.(?:jpe?g|png|gif|ico)$/i; - if (val.match(image)) { - btnContent += '
                        '; - } - btnContent += ''+option_tree.remove_media_text+''; - $('#'+id).val(val); - $('#'+id+'_media').remove(); - $('#'+id).parent().parent('div').append('
                        '); - $('#'+id+'_media').append(btnContent).slideDown(); - } else if ( val == '' || ! OT_UI.url_exists(val) ) { - $(elm).parent().next('.option-tree-ui-media-wrap').remove(); - } - }, - init_numeric_slider: function(scope) { - scope = scope || document; - $(".ot-numeric-slider-wrap", scope).each(function() { - var hidden = $(".ot-numeric-slider-hidden-input", this), - value = hidden.val(), - helper = $(".ot-numeric-slider-helper-input", this); - if ( ! value ) { - value = hidden.data("min"); - helper.val(value) - } - $(".ot-numeric-slider", this).slider({ - min: hidden.data("min"), - max: hidden.data("max"), - step: hidden.data("step"), - value: value, - slide: function(event, ui) { - hidden.add(helper).val(ui.value).trigger('change'); - }, - create: function() { - hidden.val($(this).slider('value')); - }, - change: function() { - OT_UI.parse_condition(); - } - }); - }); - }, - init_tabs: function() { - $(".wrap.settings-wrap .ui-tabs").tabs({ - fx: { - opacity: "toggle", - duration: "fast" - } - }); - $(".wrap.settings-wrap .ui-tabs a.ui-tabs-anchor").on("click", function(event, ui) { - var obj = "input[name='_wp_http_referer']"; - if ( $(obj).length > 0 ) { - var url = $(obj).val(), - hash = $(this).attr('href'); - if ( url.indexOf("#") != -1 ) { - var o = url.split("#")[1], - n = hash.split("#")[1]; - url = url.replace(o, n); - } else { - url = url + hash; - } - $(obj).val(url); - } - }); - }, - init_radio_image_select: function() { - $(document).on('click', '.option-tree-ui-radio-image', function() { - $(this).closest('.type-radio-image').find('.option-tree-ui-radio-image').removeClass('option-tree-ui-radio-image-selected'); - $(this).toggleClass('option-tree-ui-radio-image-selected'); - $(this).parent().find('.option-tree-ui-radio').prop('checked', true).trigger('change'); - }); - }, - init_select_wrapper: function(scope) { - scope = scope || document; - $('.option-tree-ui-select', scope).each(function () { - if ( ! $(this).parent().hasClass('select-wrapper') ) { - $(this).wrap('
                        '); - $(this).parent('.select-wrapper').prepend('' + $(this).find('option:selected').text() + ''); - } - }); - }, - bind_select_wrapper: function() { - $(document).on('change', '.option-tree-ui-select', function () { - $(this).prev('span').replaceWith('' + $(this).find('option:selected').text() + ''); - }); - }, - init_google_fonts: function() { - var update_items = function(input, items, element) { - var itemsUI = input.closest('.type-google-font-group').find(element); - if ( itemsUI.length ) { - itemsUI.empty(); - itemsUI.append($.map(items, function(item) { - var input = document.createElement('input'), - label = document.createElement('label'); - input.type = 'checkbox'; - input.id = ( itemsUI.data('field-id-prefix') || '' ) + item; - input.name = ( itemsUI.data('field-name') || '' ) + '[]'; - input.value = item; - label.innerHTML = item; - $( label ).attr( 'for', input.id ); - return $( document.createElement('p') ).addClass('checkbox-wrap').append([input, label]); - })); - } - }; - $(document).on('change', '.option-tree-google-font-family select', function() { - var input = $(this); - $.ajax({ - url: option_tree.ajax, - type: 'POST', - dataType: 'json', - data: { - action: 'ot_google_font', - family: input.val(), - field_id: input.attr('id') - } - }).done(function(response) { - if ( response.hasOwnProperty('variants') ) { - update_items( input, response.variants, '.option-tree-google-font-variants' ); - } - if ( response.hasOwnProperty('subsets') ) { - update_items( input, response.subsets, '.option-tree-google-font-subsets' ); - } - }); - }); - $('.js-add-google-font').on('click', function (event) { - var $group = $(this).parent('.format-setting-inner').find('.type-google-font-group'), - $el_clone = $(this).prev('.type-google-font-group-clone'), - $clone = $el_clone.clone(true), - $count = $group.length ? $group.length : 0; - $clone.attr('class', 'type-google-font-group'); - var replacer = function(index, elm) { - return elm.replace('%key%', $count); - } - $('select', $clone).each( function() { - $(this).attr('id', replacer ).attr('name', replacer ); - }); - $('.option-tree-google-font-variants', $clone).each( function() { - $(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer ); - }); - $('.option-tree-google-font-subsets', $clone).each( function() { - $(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer ); - }); - $el_clone.before($clone) - event.preventDefault() - }); - $('.js-remove-google-font').on('click', function (event) { - $(this).parents('.type-google-font-group').remove(); - event.preventDefault(); - }); - }, - bind_colorpicker: function(field_id) { - $('#'+field_id).wpColorPicker({ - change: function() { - OT_UI.parse_condition(); - }, - clear: function() { - OT_UI.parse_condition(); - } - }); - }, - bind_date_picker: function(field_id, date_format) { - $('#'+field_id).datepicker({ - showOtherMonths: true, - showButtonPanel: true, - currentText: option_tree.date_current, - closeText: option_tree.date_close, - dateFormat: date_format - }); - }, - bind_date_time_picker: function(field_id, date_format) { - $('#'+field_id).datetimepicker({ - showOtherMonths: true, - closeText: option_tree.date_close, - dateFormat: date_format - }); - }, - fix_upload_parent: function() { - $('.option-tree-ui-upload-input').not('.ot-upload-attachment-id').on('focus blur', function(){ - $(this).parent('.option-tree-ui-upload-parent').toggleClass('focus'); - OT_UI.init_upload_fix(this); - }); - }, - remove_image: function(e) { - $(e).parent().parent().find('.option-tree-ui-upload-input').attr('value',''); - $(e).parent('.option-tree-ui-media-wrap').remove(); - }, - fix_textarea: function() { - $('.wp-editor-area').focus( function(){ - $(this).parent('div').css({borderColor:'#bbb'}); - }).blur( function(){ - $(this).parent('div').css({borderColor:'#ccc'}); - }); - }, - replicate_ajax: function() { - if (location.href.indexOf("#") != -1) { - var url = $("input[name=\'_wp_http_referer\']").val(), - hash = location.href.substr(location.href.indexOf("#")); - $("input[name=\'_wp_http_referer\']").val( url + hash ); - this.scroll_to_top(); - } - setTimeout( function() { - $(".wrap.settings-wrap .fade").fadeOut("fast"); - }, 3000 ); - }, - reset_settings: function() { - $(document).on("click", ".reset-settings", function(event){ - var agree = confirm(option_tree.reset_agree); - if (agree) { - return true; - } else { - return false; - } - event.preventDefault(); - }); - }, - css_editor_mode: function() { - $('.ot-css-editor').each(function() { - var editor = ace.edit($(this).attr('id')); - var this_textarea = $('#textarea_' + $(this).attr('id')); - editor.setTheme("ace/theme/chrome"); - editor.getSession().setMode("ace/mode/css"); - editor.setShowPrintMargin( false ); - - editor.getSession().setValue(this_textarea.val()); - editor.getSession().on('change', function(){ - this_textarea.val(editor.getSession().getValue()); - }); - this_textarea.on('change', function(){ - editor.getSession().setValue(this_textarea.val()); - }); - }); - }, - javascript_editor_mode: function() { - $('.ot-javascript-editor').each(function() { - var editor = ace.edit($(this).attr('id')); - var this_textarea = $('#textarea_' + $(this).attr('id')); - editor.setTheme("ace/theme/chrome"); - editor.getSession().setMode("ace/mode/javascript"); - editor.setShowPrintMargin( false ); - - editor.getSession().setValue(this_textarea.val()); - editor.getSession().on('change', function(){ - this_textarea.val(editor.getSession().getValue()); - }); - this_textarea.on('change', function(){ - editor.getSession().setValue(this_textarea.val()); - }); - }); - }, - load_editors: function() { - OT_UI.css_editor_mode(); - OT_UI.javascript_editor_mode(); - }, - url_exists: function(url) { - var link = document.createElement('a') - link.href = url - if ( link.hostname != window.location.hostname ) { - return true; // Stop the code from checking across domains. - } - var http = new XMLHttpRequest(); - http.open('HEAD', url, false); - http.send(); - return http.status!=404; - }, - scroll_to_top: function() { - setTimeout( function() { - $(this).scrollTop(0); - }, 50 ); - } - }; - $(document).ready( function() { - OT_UI.init(); - }); -})(jQuery); - -/* Gallery */ -!function ($) { - - ot_gallery = { - - frame: function (elm) { - - var selection = this.select(elm) - - this._frame = wp.media({ - id: 'ot-gallery-frame' - , frame: 'post' - , state: 'gallery-edit' - , title: wp.media.view.l10n.editGalleryTitle - , editing: true - , multiple: true - , selection: selection - }) - - this._frame.on('update', function () { - var controller = ot_gallery._frame.states.get('gallery-edit') - , library = controller.get('library') - , ids = library.pluck('id') - , parent = $(elm).parents('.format-setting-inner') - , input = parent.children('.ot-gallery-value') - , shortcode = wp.media.gallery.shortcode( selection ).string().replace(/\"/g,"'") - - input.attr('value', ids) - - if ( parent.children('.ot-gallery-list').length <= 0 ) - input.after('