diff --git a/GanjooRazor/Areas/User/Pages/Editor.cshtml b/GanjooRazor/Areas/User/Pages/Editor.cshtml
index 6447b9fe..52eb28ac 100644
--- a/GanjooRazor/Areas/User/Pages/Editor.cshtml
+++ b/GanjooRazor/Areas/User/Pages/Editor.cshtml
@@ -38,7 +38,7 @@ else
|
- @verse.Text
+ @verse.Text
|
@@ -48,7 +48,17 @@ else
|
-
+
+ |
+
+
+ |
+ تغییرات:
+ |
+
+
+
+ @verse.Text
|
diff --git a/GanjooRazor/GanjooRazor.csproj b/GanjooRazor/GanjooRazor.csproj
index b737caf9..1109a777 100644
--- a/GanjooRazor/GanjooRazor.csproj
+++ b/GanjooRazor/GanjooRazor.csproj
@@ -10,8 +10,4 @@
-
-
-
-
diff --git a/GanjooRazor/Pages/Shared/_Layout.cshtml b/GanjooRazor/Pages/Shared/_Layout.cshtml
index 9b91d51f..a6661ae2 100644
--- a/GanjooRazor/Pages/Shared/_Layout.cshtml
+++ b/GanjooRazor/Pages/Shared/_Layout.cshtml
@@ -15,6 +15,7 @@
+
diff --git a/GanjooRazor/wwwroot/lib/chosen/chosen-sprite.png b/GanjooRazor/wwwroot/lib/chosen/chosen-sprite.png
deleted file mode 100644
index c57da70b..00000000
Binary files a/GanjooRazor/wwwroot/lib/chosen/chosen-sprite.png and /dev/null differ
diff --git a/GanjooRazor/wwwroot/lib/chosen/chosen-sprite@2x.png b/GanjooRazor/wwwroot/lib/chosen/chosen-sprite@2x.png
deleted file mode 100644
index 6b505452..00000000
Binary files a/GanjooRazor/wwwroot/lib/chosen/chosen-sprite@2x.png and /dev/null differ
diff --git a/GanjooRazor/wwwroot/lib/chosen/chosen.css b/GanjooRazor/wwwroot/lib/chosen/chosen.css
deleted file mode 100644
index 5ae6fc94..00000000
--- a/GanjooRazor/wwwroot/lib/chosen/chosen.css
+++ /dev/null
@@ -1,496 +0,0 @@
-/*!
-Chosen, a Select Box Enhancer for jQuery and Prototype
-by Patrick Filler for Harvest, http://getharvest.com
-
-Version 1.8.7
-Full source at https://github.com/harvesthq/chosen
-Copyright (c) 2011-2018 Harvest http://getharvest.com
-
-MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
-This file is generated by `grunt build`, do not edit it by hand.
-*/
-
-/* @group Base */
-.chosen-container {
- position: relative;
- display: inline-block;
- vertical-align: middle;
- font-size: 13px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.chosen-container * {
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.chosen-container .chosen-drop {
- position: absolute;
- top: 100%;
- z-index: 1010;
- width: 100%;
- border: 1px solid #aaa;
- border-top: 0;
- background: #fff;
- -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
- box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
- clip: rect(0, 0, 0, 0);
- -webkit-clip-path: inset(100% 100%);
- clip-path: inset(100% 100%);
-}
-
-.chosen-container.chosen-with-drop .chosen-drop {
- clip: auto;
- -webkit-clip-path: none;
- clip-path: none;
-}
-
-.chosen-container a {
- cursor: pointer;
-}
-
-.chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
- margin-right: 4px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- font-weight: normal;
- color: #999999;
-}
-
-.chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
- content: ":";
- padding-left: 2px;
- vertical-align: top;
-}
-
-/* @end */
-/* @group Single Chosen */
-.chosen-container-single .chosen-single {
- position: relative;
- display: block;
- overflow: hidden;
- padding: 0 0 0 8px;
- height: 25px;
- border: 1px solid #aaa;
- border-radius: 5px;
- background-color: #fff;
- background: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #fff), color-stop(50%, #f6f6f6), color-stop(52%, #eee), to(#f4f4f4));
- background: linear-gradient(#fff 20%, #f6f6f6 50%, #eee 52%, #f4f4f4 100%);
- background-clip: padding-box;
- -webkit-box-shadow: 0 0 3px #fff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
- box-shadow: 0 0 3px #fff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
- color: #444;
- text-decoration: none;
- white-space: nowrap;
- line-height: 24px;
-}
-
-.chosen-container-single .chosen-default {
- color: #999;
-}
-
-.chosen-container-single .chosen-single span {
- display: block;
- overflow: hidden;
- margin-right: 26px;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.chosen-container-single .chosen-single-with-deselect span {
- margin-right: 38px;
-}
-
-.chosen-container-single .chosen-single abbr {
- position: absolute;
- top: 6px;
- right: 26px;
- display: block;
- width: 12px;
- height: 12px;
- background: url("chosen-sprite.png") -42px 1px no-repeat;
- font-size: 1px;
-}
-
-.chosen-container-single .chosen-single abbr:hover {
- background-position: -42px -10px;
-}
-
-.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
- background-position: -42px -10px;
-}
-
-.chosen-container-single .chosen-single div {
- position: absolute;
- top: 0;
- right: 0;
- display: block;
- width: 18px;
- height: 100%;
-}
-
-.chosen-container-single .chosen-single div b {
- display: block;
- width: 100%;
- height: 100%;
- background: url("chosen-sprite.png") no-repeat 0px 2px;
-}
-
-.chosen-container-single .chosen-search {
- position: relative;
- z-index: 1010;
- margin: 0;
- padding: 3px 4px;
- white-space: nowrap;
-}
-
-.chosen-container-single .chosen-search input[type="text"] {
- margin: 1px 0;
- padding: 4px 20px 4px 5px;
- width: 100%;
- height: auto;
- outline: 0;
- border: 1px solid #aaa;
- background: url("chosen-sprite.png") no-repeat 100% -20px;
- font-size: 1em;
- font-family: sans-serif;
- line-height: normal;
- border-radius: 0;
-}
-
-.chosen-container-single .chosen-drop {
- margin-top: -1px;
- border-radius: 0 0 4px 4px;
- background-clip: padding-box;
-}
-
-.chosen-container-single.chosen-container-single-nosearch .chosen-search {
- position: absolute;
- clip: rect(0, 0, 0, 0);
- -webkit-clip-path: inset(100% 100%);
- clip-path: inset(100% 100%);
-}
-
-/* @end */
-/* @group Results */
-.chosen-container .chosen-results {
- color: #444;
- position: relative;
- overflow-x: hidden;
- overflow-y: auto;
- margin: 0 4px 4px 0;
- padding: 0 0 0 4px;
- max-height: 240px;
- -webkit-overflow-scrolling: touch;
-}
-
-.chosen-container .chosen-results li {
- display: none;
- margin: 0;
- padding: 5px 6px;
- list-style: none;
- line-height: 15px;
- word-wrap: break-word;
- -webkit-touch-callout: none;
-}
-
-.chosen-container .chosen-results li.active-result {
- display: list-item;
- cursor: pointer;
-}
-
-.chosen-container .chosen-results li.disabled-result {
- display: list-item;
- color: #ccc;
- cursor: default;
-}
-
-.chosen-container .chosen-results li.highlighted {
- background-color: #3875d7;
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
- background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
- color: #fff;
-}
-
-.chosen-container .chosen-results li.no-results {
- color: #777;
- display: list-item;
- background: #f4f4f4;
-}
-
-.chosen-container .chosen-results li.group-result {
- display: list-item;
- font-weight: bold;
- cursor: default;
-}
-
-.chosen-container .chosen-results li.group-option {
- padding-left: 15px;
-}
-
-.chosen-container .chosen-results li em {
- font-style: normal;
- text-decoration: underline;
-}
-
-/* @end */
-/* @group Multi Chosen */
-.chosen-container-multi .chosen-choices {
- position: relative;
- overflow: hidden;
- margin: 0;
- padding: 0 5px;
- width: 100%;
- height: auto;
- border: 1px solid #aaa;
- background-color: #fff;
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(1%, #eee), color-stop(15%, #fff));
- background-image: linear-gradient(#eee 1%, #fff 15%);
- cursor: text;
-}
-
-.chosen-container-multi .chosen-choices li {
- float: left;
- list-style: none;
-}
-
-.chosen-container-multi .chosen-choices li.search-field {
- margin: 0;
- padding: 0;
- white-space: nowrap;
-}
-
-.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
- margin: 1px 0;
- padding: 0;
- height: 25px;
- outline: 0;
- border: 0 !important;
- background: transparent !important;
- -webkit-box-shadow: none;
- box-shadow: none;
- color: #999;
- font-size: 100%;
- font-family: sans-serif;
- line-height: normal;
- border-radius: 0;
- width: 25px;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice {
- position: relative;
- margin: 3px 5px 3px 0;
- padding: 3px 20px 3px 5px;
- border: 1px solid #aaa;
- max-width: 100%;
- border-radius: 3px;
- background-color: #eeeeee;
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), to(#eee));
- background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
- background-size: 100% 19px;
- background-repeat: repeat-x;
- background-clip: padding-box;
- -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- color: #333;
- line-height: 13px;
- cursor: default;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice span {
- word-wrap: break-word;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
- position: absolute;
- top: 4px;
- right: 3px;
- display: block;
- width: 12px;
- height: 12px;
- background: url("chosen-sprite.png") -42px 1px no-repeat;
- font-size: 1px;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
- background-position: -42px -10px;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice-disabled {
- padding-right: 5px;
- border: 1px solid #ccc;
- background-color: #e4e4e4;
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), to(#eee));
- background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
- color: #666;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice-focus {
- background: #d4d4d4;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
- background-position: -42px -10px;
-}
-
-.chosen-container-multi .chosen-results {
- margin: 0;
- padding: 0;
-}
-
-.chosen-container-multi .chosen-drop .result-selected {
- display: list-item;
- color: #ccc;
- cursor: default;
-}
-
-/* @end */
-/* @group Active */
-.chosen-container-active .chosen-single {
- border: 1px solid #5897fb;
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
-}
-
-.chosen-container-active.chosen-with-drop .chosen-single {
- border: 1px solid #aaa;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #eee), color-stop(80%, #fff));
- background-image: linear-gradient(#eee 20%, #fff 80%);
- -webkit-box-shadow: 0 1px 0 #fff inset;
- box-shadow: 0 1px 0 #fff inset;
-}
-
-.chosen-container-active.chosen-with-drop .chosen-single div {
- border-left: none;
- background: transparent;
-}
-
-.chosen-container-active.chosen-with-drop .chosen-single div b {
- background-position: -18px 2px;
-}
-
-.chosen-container-active .chosen-choices {
- border: 1px solid #5897fb;
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
-}
-
-.chosen-container-active .chosen-choices li.search-field input[type="text"] {
- color: #222 !important;
-}
-
-/* @end */
-/* @group Disabled Support */
-.chosen-disabled {
- opacity: 0.5 !important;
- cursor: default;
-}
-
-.chosen-disabled .chosen-single {
- cursor: default;
-}
-
-.chosen-disabled .chosen-choices .search-choice .search-choice-close {
- cursor: default;
-}
-
-/* @end */
-/* @group Right to Left */
-.chosen-rtl {
- text-align: right;
-}
-
-.chosen-rtl .chosen-single {
- overflow: visible;
- padding: 0 8px 0 0;
-}
-
-.chosen-rtl .chosen-single span {
- margin-right: 0;
- margin-left: 26px;
- direction: rtl;
-}
-
-.chosen-rtl .chosen-single-with-deselect span {
- margin-left: 38px;
-}
-
-.chosen-rtl .chosen-single div {
- right: auto;
- left: 3px;
-}
-
-.chosen-rtl .chosen-single abbr {
- right: auto;
- left: 26px;
-}
-
-.chosen-rtl .chosen-choices li {
- float: right;
-}
-
-.chosen-rtl .chosen-choices li.search-field input[type="text"] {
- direction: rtl;
-}
-
-.chosen-rtl .chosen-choices li.search-choice {
- margin: 3px 5px 3px 0;
- padding: 3px 5px 3px 19px;
-}
-
-.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
- right: auto;
- left: 4px;
-}
-
-.chosen-rtl.chosen-container-single .chosen-results {
- margin: 0 0 4px 4px;
- padding: 0 4px 0 0;
-}
-
-.chosen-rtl .chosen-results li.group-option {
- padding-right: 15px;
- padding-left: 0;
-}
-
-.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
- border-right: none;
-}
-
-.chosen-rtl .chosen-search input[type="text"] {
- padding: 4px 5px 4px 20px;
- background: url("chosen-sprite.png") no-repeat -30px -20px;
- direction: rtl;
-}
-
-.chosen-rtl.chosen-container-single .chosen-single div b {
- background-position: 6px 2px;
-}
-
-.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
- background-position: -12px 2px;
-}
-
-/* @end */
-/* @group Retina compatibility */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
- .chosen-rtl .chosen-search input[type="text"],
- .chosen-container-single .chosen-single abbr,
- .chosen-container-single .chosen-single div b,
- .chosen-container-single .chosen-search input[type="text"],
- .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
- .chosen-container .chosen-results-scroll-down span,
- .chosen-container .chosen-results-scroll-up span {
- background-image: url("chosen-sprite@2x.png") !important;
- background-size: 52px 37px !important;
- background-repeat: no-repeat !important;
- }
-}
-
-/* @end */
diff --git a/GanjooRazor/wwwroot/lib/chosen/chosen.jquery.js b/GanjooRazor/wwwroot/lib/chosen/chosen.jquery.js
deleted file mode 100644
index 5f2df671..00000000
--- a/GanjooRazor/wwwroot/lib/chosen/chosen.jquery.js
+++ /dev/null
@@ -1,1359 +0,0 @@
-/*!
-Chosen, a Select Box Enhancer for jQuery and Prototype
-by Patrick Filler for Harvest, http://getharvest.com
-
-Version 1.8.7
-Full source at https://github.com/harvesthq/chosen
-Copyright (c) 2011-2018 Harvest http://getharvest.com
-
-MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
-This file is generated by `grunt build`, do not edit it by hand.
-*/
-
-(function() {
- var $, AbstractChosen, Chosen, SelectParser,
- bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
-
- SelectParser = (function() {
- function SelectParser() {
- this.options_index = 0;
- this.parsed = [];
- }
-
- SelectParser.prototype.add_node = function(child) {
- if (child.nodeName.toUpperCase() === "OPTGROUP") {
- return this.add_group(child);
- } else {
- return this.add_option(child);
- }
- };
-
- SelectParser.prototype.add_group = function(group) {
- var group_position, i, len, option, ref, results1;
- group_position = this.parsed.length;
- this.parsed.push({
- array_index: group_position,
- group: true,
- label: group.label,
- title: group.title ? group.title : void 0,
- children: 0,
- disabled: group.disabled,
- classes: group.className
- });
- ref = group.childNodes;
- results1 = [];
- for (i = 0, len = ref.length; i < len; i++) {
- option = ref[i];
- results1.push(this.add_option(option, group_position, group.disabled));
- }
- return results1;
- };
-
- SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
- if (option.nodeName.toUpperCase() === "OPTION") {
- if (option.text !== "") {
- if (group_position != null) {
- this.parsed[group_position].children += 1;
- }
- this.parsed.push({
- array_index: this.parsed.length,
- options_index: this.options_index,
- value: option.value,
- text: option.text,
- html: option.innerHTML,
- title: option.title ? option.title : void 0,
- selected: option.selected,
- disabled: group_disabled === true ? group_disabled : option.disabled,
- group_array_index: group_position,
- group_label: group_position != null ? this.parsed[group_position].label : null,
- classes: option.className,
- style: option.style.cssText
- });
- } else {
- this.parsed.push({
- array_index: this.parsed.length,
- options_index: this.options_index,
- empty: true
- });
- }
- return this.options_index += 1;
- }
- };
-
- return SelectParser;
-
- })();
-
- SelectParser.select_to_array = function(select) {
- var child, i, len, parser, ref;
- parser = new SelectParser();
- ref = select.childNodes;
- for (i = 0, len = ref.length; i < len; i++) {
- child = ref[i];
- parser.add_node(child);
- }
- return parser.parsed;
- };
-
- AbstractChosen = (function() {
- function AbstractChosen(form_field, options1) {
- this.form_field = form_field;
- this.options = options1 != null ? options1 : {};
- this.label_click_handler = bind(this.label_click_handler, this);
- if (!AbstractChosen.browser_is_supported()) {
- return;
- }
- this.is_multiple = this.form_field.multiple;
- this.set_default_text();
- this.set_default_values();
- this.setup();
- this.set_up_html();
- this.register_observers();
- this.on_ready();
- }
-
- AbstractChosen.prototype.set_default_values = function() {
- this.click_test_action = (function(_this) {
- return function(evt) {
- return _this.test_active_click(evt);
- };
- })(this);
- this.activate_action = (function(_this) {
- return function(evt) {
- return _this.activate_field(evt);
- };
- })(this);
- this.active_field = false;
- this.mouse_on_container = false;
- this.results_showing = false;
- this.result_highlighted = null;
- this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className);
- this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
- this.disable_search_threshold = this.options.disable_search_threshold || 0;
- this.disable_search = this.options.disable_search || false;
- this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
- this.group_search = this.options.group_search != null ? this.options.group_search : true;
- this.search_contains = this.options.search_contains || false;
- this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
- this.max_selected_options = this.options.max_selected_options || Infinity;
- this.inherit_select_classes = this.options.inherit_select_classes || false;
- this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
- this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
- this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
- this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
- this.case_sensitive_search = this.options.case_sensitive_search || false;
- return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
- };
-
- AbstractChosen.prototype.set_default_text = function() {
- if (this.form_field.getAttribute("data-placeholder")) {
- this.default_text = this.form_field.getAttribute("data-placeholder");
- } else if (this.is_multiple) {
- this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
- } else {
- this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
- }
- this.default_text = this.escape_html(this.default_text);
- return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
- };
-
- AbstractChosen.prototype.choice_label = function(item) {
- if (this.include_group_label_in_selected && (item.group_label != null)) {
- return "" + (this.escape_html(item.group_label)) + "" + item.html;
- } else {
- return item.html;
- }
- };
-
- AbstractChosen.prototype.mouse_enter = function() {
- return this.mouse_on_container = true;
- };
-
- AbstractChosen.prototype.mouse_leave = function() {
- return this.mouse_on_container = false;
- };
-
- AbstractChosen.prototype.input_focus = function(evt) {
- if (this.is_multiple) {
- if (!this.active_field) {
- return setTimeout(((function(_this) {
- return function() {
- return _this.container_mousedown();
- };
- })(this)), 50);
- }
- } else {
- if (!this.active_field) {
- return this.activate_field();
- }
- }
- };
-
- AbstractChosen.prototype.input_blur = function(evt) {
- if (!this.mouse_on_container) {
- this.active_field = false;
- return setTimeout(((function(_this) {
- return function() {
- return _this.blur_test();
- };
- })(this)), 100);
- }
- };
-
- AbstractChosen.prototype.label_click_handler = function(evt) {
- if (this.is_multiple) {
- return this.container_mousedown(evt);
- } else {
- return this.activate_field();
- }
- };
-
- AbstractChosen.prototype.results_option_build = function(options) {
- var content, data, data_content, i, len, ref, shown_results;
- content = '';
- shown_results = 0;
- ref = this.results_data;
- for (i = 0, len = ref.length; i < len; i++) {
- data = ref[i];
- data_content = '';
- if (data.group) {
- data_content = this.result_add_group(data);
- } else {
- data_content = this.result_add_option(data);
- }
- if (data_content !== '') {
- shown_results++;
- content += data_content;
- }
- if (options != null ? options.first : void 0) {
- if (data.selected && this.is_multiple) {
- this.choice_build(data);
- } else if (data.selected && !this.is_multiple) {
- this.single_set_selected_text(this.choice_label(data));
- }
- }
- if (shown_results >= this.max_shown_results) {
- break;
- }
- }
- return content;
- };
-
- AbstractChosen.prototype.result_add_option = function(option) {
- var classes, option_el;
- if (!option.search_match) {
- return '';
- }
- if (!this.include_option_in_results(option)) {
- return '';
- }
- classes = [];
- if (!option.disabled && !(option.selected && this.is_multiple)) {
- classes.push("active-result");
- }
- if (option.disabled && !(option.selected && this.is_multiple)) {
- classes.push("disabled-result");
- }
- if (option.selected) {
- classes.push("result-selected");
- }
- if (option.group_array_index != null) {
- classes.push("group-option");
- }
- if (option.classes !== "") {
- classes.push(option.classes);
- }
- option_el = document.createElement("li");
- option_el.className = classes.join(" ");
- if (option.style) {
- option_el.style.cssText = option.style;
- }
- option_el.setAttribute("data-option-array-index", option.array_index);
- option_el.innerHTML = option.highlighted_html || option.html;
- if (option.title) {
- option_el.title = option.title;
- }
- return this.outerHTML(option_el);
- };
-
- AbstractChosen.prototype.result_add_group = function(group) {
- var classes, group_el;
- if (!(group.search_match || group.group_match)) {
- return '';
- }
- if (!(group.active_options > 0)) {
- return '';
- }
- classes = [];
- classes.push("group-result");
- if (group.classes) {
- classes.push(group.classes);
- }
- group_el = document.createElement("li");
- group_el.className = classes.join(" ");
- group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);
- if (group.title) {
- group_el.title = group.title;
- }
- return this.outerHTML(group_el);
- };
-
- AbstractChosen.prototype.results_update_field = function() {
- this.set_default_text();
- if (!this.is_multiple) {
- this.results_reset_cleanup();
- }
- this.result_clear_highlight();
- this.results_build();
- if (this.results_showing) {
- return this.winnow_results();
- }
- };
-
- AbstractChosen.prototype.reset_single_select_options = function() {
- var i, len, ref, result, results1;
- ref = this.results_data;
- results1 = [];
- for (i = 0, len = ref.length; i < len; i++) {
- result = ref[i];
- if (result.selected) {
- results1.push(result.selected = false);
- } else {
- results1.push(void 0);
- }
- }
- return results1;
- };
-
- AbstractChosen.prototype.results_toggle = function() {
- if (this.results_showing) {
- return this.results_hide();
- } else {
- return this.results_show();
- }
- };
-
- AbstractChosen.prototype.results_search = function(evt) {
- if (this.results_showing) {
- return this.winnow_results();
- } else {
- return this.results_show();
- }
- };
-
- AbstractChosen.prototype.winnow_results = function(options) {
- var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
- this.no_results_clear();
- results = 0;
- query = this.get_search_text();
- escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
- regex = this.get_search_regex(escapedQuery);
- ref = this.results_data;
- for (i = 0, len = ref.length; i < len; i++) {
- option = ref[i];
- option.search_match = false;
- results_group = null;
- search_match = null;
- option.highlighted_html = '';
- if (this.include_option_in_results(option)) {
- if (option.group) {
- option.group_match = false;
- option.active_options = 0;
- }
- if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
- results_group = this.results_data[option.group_array_index];
- if (results_group.active_options === 0 && results_group.search_match) {
- results += 1;
- }
- results_group.active_options += 1;
- }
- text = option.group ? option.label : option.text;
- if (!(option.group && !this.group_search)) {
- search_match = this.search_string_match(text, regex);
- option.search_match = search_match != null;
- if (option.search_match && !option.group) {
- results += 1;
- }
- if (option.search_match) {
- if (query.length) {
- startpos = search_match.index;
- prefix = text.slice(0, startpos);
- fix = text.slice(startpos, startpos + query.length);
- suffix = text.slice(startpos + query.length);
- option.highlighted_html = (this.escape_html(prefix)) + "" + (this.escape_html(fix)) + "" + (this.escape_html(suffix));
- }
- if (results_group != null) {
- results_group.group_match = true;
- }
- } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
- option.search_match = true;
- }
- }
- }
- }
- this.result_clear_highlight();
- if (results < 1 && query.length) {
- this.update_results_content("");
- return this.no_results(query);
- } else {
- this.update_results_content(this.results_option_build());
- if (!(options != null ? options.skip_highlight : void 0)) {
- return this.winnow_results_set_highlight();
- }
- }
- };
-
- AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
- var regex_flag, regex_string;
- regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*";
- if (!(this.enable_split_word_search || this.search_contains)) {
- regex_string = "^" + regex_string;
- }
- regex_flag = this.case_sensitive_search ? "" : "i";
- return new RegExp(regex_string, regex_flag);
- };
-
- AbstractChosen.prototype.search_string_match = function(search_string, regex) {
- var match;
- match = regex.exec(search_string);
- if (!this.search_contains && (match != null ? match[1] : void 0)) {
- match.index += 1;
- }
- return match;
- };
-
- AbstractChosen.prototype.choices_count = function() {
- var i, len, option, ref;
- if (this.selected_option_count != null) {
- return this.selected_option_count;
- }
- this.selected_option_count = 0;
- ref = this.form_field.options;
- for (i = 0, len = ref.length; i < len; i++) {
- option = ref[i];
- if (option.selected) {
- this.selected_option_count += 1;
- }
- }
- return this.selected_option_count;
- };
-
- AbstractChosen.prototype.choices_click = function(evt) {
- evt.preventDefault();
- this.activate_field();
- if (!(this.results_showing || this.is_disabled)) {
- return this.results_show();
- }
- };
-
- AbstractChosen.prototype.keydown_checker = function(evt) {
- var ref, stroke;
- stroke = (ref = evt.which) != null ? ref : evt.keyCode;
- this.search_field_scale();
- if (stroke !== 8 && this.pending_backstroke) {
- this.clear_backstroke();
- }
- switch (stroke) {
- case 8:
- this.backstroke_length = this.get_search_field_value().length;
- break;
- case 9:
- if (this.results_showing && !this.is_multiple) {
- this.result_select(evt);
- }
- this.mouse_on_container = false;
- break;
- case 13:
- if (this.results_showing) {
- evt.preventDefault();
- }
- break;
- case 27:
- if (this.results_showing) {
- evt.preventDefault();
- }
- break;
- case 32:
- if (this.disable_search) {
- evt.preventDefault();
- }
- break;
- case 38:
- evt.preventDefault();
- this.keyup_arrow();
- break;
- case 40:
- evt.preventDefault();
- this.keydown_arrow();
- break;
- }
- };
-
- AbstractChosen.prototype.keyup_checker = function(evt) {
- var ref, stroke;
- stroke = (ref = evt.which) != null ? ref : evt.keyCode;
- this.search_field_scale();
- switch (stroke) {
- case 8:
- if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
- this.keydown_backstroke();
- } else if (!this.pending_backstroke) {
- this.result_clear_highlight();
- this.results_search();
- }
- break;
- case 13:
- evt.preventDefault();
- if (this.results_showing) {
- this.result_select(evt);
- }
- break;
- case 27:
- if (this.results_showing) {
- this.results_hide();
- }
- break;
- case 9:
- case 16:
- case 17:
- case 18:
- case 38:
- case 40:
- case 91:
- break;
- default:
- this.results_search();
- break;
- }
- };
-
- AbstractChosen.prototype.clipboard_event_checker = function(evt) {
- if (this.is_disabled) {
- return;
- }
- return setTimeout(((function(_this) {
- return function() {
- return _this.results_search();
- };
- })(this)), 50);
- };
-
- AbstractChosen.prototype.container_width = function() {
- if (this.options.width != null) {
- return this.options.width;
- } else {
- return this.form_field.offsetWidth + "px";
- }
- };
-
- AbstractChosen.prototype.include_option_in_results = function(option) {
- if (this.is_multiple && (!this.display_selected_options && option.selected)) {
- return false;
- }
- if (!this.display_disabled_options && option.disabled) {
- return false;
- }
- if (option.empty) {
- return false;
- }
- return true;
- };
-
- AbstractChosen.prototype.search_results_touchstart = function(evt) {
- this.touch_started = true;
- return this.search_results_mouseover(evt);
- };
-
- AbstractChosen.prototype.search_results_touchmove = function(evt) {
- this.touch_started = false;
- return this.search_results_mouseout(evt);
- };
-
- AbstractChosen.prototype.search_results_touchend = function(evt) {
- if (this.touch_started) {
- return this.search_results_mouseup(evt);
- }
- };
-
- AbstractChosen.prototype.outerHTML = function(element) {
- var tmp;
- if (element.outerHTML) {
- return element.outerHTML;
- }
- tmp = document.createElement("div");
- tmp.appendChild(element);
- return tmp.innerHTML;
- };
-
- AbstractChosen.prototype.get_single_html = function() {
- return "\n " + this.default_text + "\n
\n\n";
- };
-
- AbstractChosen.prototype.get_multi_html = function() {
- return "\n";
- };
-
- AbstractChosen.prototype.get_no_results_html = function(terms) {
- return "\n " + this.results_none_found + " " + (this.escape_html(terms)) + "\n";
- };
-
- AbstractChosen.browser_is_supported = function() {
- if ("Microsoft Internet Explorer" === window.navigator.appName) {
- return document.documentMode >= 8;
- }
- if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
- return false;
- }
- return true;
- };
-
- AbstractChosen.default_multiple_text = "Select Some Options";
-
- AbstractChosen.default_single_text = "Select an Option";
-
- AbstractChosen.default_no_result_text = "No results match";
-
- return AbstractChosen;
-
- })();
-
- $ = jQuery;
-
- $.fn.extend({
- chosen: function(options) {
- if (!AbstractChosen.browser_is_supported()) {
- return this;
- }
- return this.each(function(input_field) {
- var $this, chosen;
- $this = $(this);
- chosen = $this.data('chosen');
- if (options === 'destroy') {
- if (chosen instanceof Chosen) {
- chosen.destroy();
- }
- return;
- }
- if (!(chosen instanceof Chosen)) {
- $this.data('chosen', new Chosen(this, options));
- }
- });
- }
- });
-
- Chosen = (function(superClass) {
- extend(Chosen, superClass);
-
- function Chosen() {
- return Chosen.__super__.constructor.apply(this, arguments);
- }
-
- Chosen.prototype.setup = function() {
- this.form_field_jq = $(this.form_field);
- return this.current_selectedIndex = this.form_field.selectedIndex;
- };
-
- Chosen.prototype.set_up_html = function() {
- var container_classes, container_props;
- container_classes = ["chosen-container"];
- container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
- if (this.inherit_select_classes && this.form_field.className) {
- container_classes.push(this.form_field.className);
- }
- if (this.is_rtl) {
- container_classes.push("chosen-rtl");
- }
- container_props = {
- 'class': container_classes.join(' '),
- 'title': this.form_field.title
- };
- if (this.form_field.id.length) {
- container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
- }
- this.container = $("", container_props);
- this.container.width(this.container_width());
- if (this.is_multiple) {
- this.container.html(this.get_multi_html());
- } else {
- this.container.html(this.get_single_html());
- }
- this.form_field_jq.hide().after(this.container);
- this.dropdown = this.container.find('div.chosen-drop').first();
- this.search_field = this.container.find('input').first();
- this.search_results = this.container.find('ul.chosen-results').first();
- this.search_field_scale();
- this.search_no_results = this.container.find('li.no-results').first();
- if (this.is_multiple) {
- this.search_choices = this.container.find('ul.chosen-choices').first();
- this.search_container = this.container.find('li.search-field').first();
- } else {
- this.search_container = this.container.find('div.chosen-search').first();
- this.selected_item = this.container.find('.chosen-single').first();
- }
- this.results_build();
- this.set_tab_index();
- return this.set_label_behavior();
- };
-
- Chosen.prototype.on_ready = function() {
- return this.form_field_jq.trigger("chosen:ready", {
- chosen: this
- });
- };
-
- Chosen.prototype.register_observers = function() {
- this.container.on('touchstart.chosen', (function(_this) {
- return function(evt) {
- _this.container_mousedown(evt);
- };
- })(this));
- this.container.on('touchend.chosen', (function(_this) {
- return function(evt) {
- _this.container_mouseup(evt);
- };
- })(this));
- this.container.on('mousedown.chosen', (function(_this) {
- return function(evt) {
- _this.container_mousedown(evt);
- };
- })(this));
- this.container.on('mouseup.chosen', (function(_this) {
- return function(evt) {
- _this.container_mouseup(evt);
- };
- })(this));
- this.container.on('mouseenter.chosen', (function(_this) {
- return function(evt) {
- _this.mouse_enter(evt);
- };
- })(this));
- this.container.on('mouseleave.chosen', (function(_this) {
- return function(evt) {
- _this.mouse_leave(evt);
- };
- })(this));
- this.search_results.on('mouseup.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_mouseup(evt);
- };
- })(this));
- this.search_results.on('mouseover.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_mouseover(evt);
- };
- })(this));
- this.search_results.on('mouseout.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_mouseout(evt);
- };
- })(this));
- this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_mousewheel(evt);
- };
- })(this));
- this.search_results.on('touchstart.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_touchstart(evt);
- };
- })(this));
- this.search_results.on('touchmove.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_touchmove(evt);
- };
- })(this));
- this.search_results.on('touchend.chosen', (function(_this) {
- return function(evt) {
- _this.search_results_touchend(evt);
- };
- })(this));
- this.form_field_jq.on("chosen:updated.chosen", (function(_this) {
- return function(evt) {
- _this.results_update_field(evt);
- };
- })(this));
- this.form_field_jq.on("chosen:activate.chosen", (function(_this) {
- return function(evt) {
- _this.activate_field(evt);
- };
- })(this));
- this.form_field_jq.on("chosen:open.chosen", (function(_this) {
- return function(evt) {
- _this.container_mousedown(evt);
- };
- })(this));
- this.form_field_jq.on("chosen:close.chosen", (function(_this) {
- return function(evt) {
- _this.close_field(evt);
- };
- })(this));
- this.search_field.on('blur.chosen', (function(_this) {
- return function(evt) {
- _this.input_blur(evt);
- };
- })(this));
- this.search_field.on('keyup.chosen', (function(_this) {
- return function(evt) {
- _this.keyup_checker(evt);
- };
- })(this));
- this.search_field.on('keydown.chosen', (function(_this) {
- return function(evt) {
- _this.keydown_checker(evt);
- };
- })(this));
- this.search_field.on('focus.chosen', (function(_this) {
- return function(evt) {
- _this.input_focus(evt);
- };
- })(this));
- this.search_field.on('cut.chosen', (function(_this) {
- return function(evt) {
- _this.clipboard_event_checker(evt);
- };
- })(this));
- this.search_field.on('paste.chosen', (function(_this) {
- return function(evt) {
- _this.clipboard_event_checker(evt);
- };
- })(this));
- if (this.is_multiple) {
- return this.search_choices.on('click.chosen', (function(_this) {
- return function(evt) {
- _this.choices_click(evt);
- };
- })(this));
- } else {
- return this.container.on('click.chosen', function(evt) {
- evt.preventDefault();
- });
- }
- };
-
- Chosen.prototype.destroy = function() {
- $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action);
- if (this.form_field_label.length > 0) {
- this.form_field_label.off('click.chosen');
- }
- if (this.search_field[0].tabIndex) {
- this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
- }
- this.container.remove();
- this.form_field_jq.removeData('chosen');
- return this.form_field_jq.show();
- };
-
- Chosen.prototype.search_field_disabled = function() {
- this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled');
- this.container.toggleClass('chosen-disabled', this.is_disabled);
- this.search_field[0].disabled = this.is_disabled;
- if (!this.is_multiple) {
- this.selected_item.off('focus.chosen', this.activate_field);
- }
- if (this.is_disabled) {
- return this.close_field();
- } else if (!this.is_multiple) {
- return this.selected_item.on('focus.chosen', this.activate_field);
- }
- };
-
- Chosen.prototype.container_mousedown = function(evt) {
- var ref;
- if (this.is_disabled) {
- return;
- }
- if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {
- evt.preventDefault();
- }
- if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
- if (!this.active_field) {
- if (this.is_multiple) {
- this.search_field.val("");
- }
- $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action);
- this.results_show();
- } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
- evt.preventDefault();
- this.results_toggle();
- }
- return this.activate_field();
- }
- };
-
- Chosen.prototype.container_mouseup = function(evt) {
- if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
- return this.results_reset(evt);
- }
- };
-
- Chosen.prototype.search_results_mousewheel = function(evt) {
- var delta;
- if (evt.originalEvent) {
- delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
- }
- if (delta != null) {
- evt.preventDefault();
- if (evt.type === 'DOMMouseScroll') {
- delta = delta * 40;
- }
- return this.search_results.scrollTop(delta + this.search_results.scrollTop());
- }
- };
-
- Chosen.prototype.blur_test = function(evt) {
- if (!this.active_field && this.container.hasClass("chosen-container-active")) {
- return this.close_field();
- }
- };
-
- Chosen.prototype.close_field = function() {
- $(this.container[0].ownerDocument).off("click.chosen", this.click_test_action);
- this.active_field = false;
- this.results_hide();
- this.container.removeClass("chosen-container-active");
- this.clear_backstroke();
- this.show_search_field_default();
- this.search_field_scale();
- return this.search_field.blur();
- };
-
- Chosen.prototype.activate_field = function() {
- if (this.is_disabled) {
- return;
- }
- this.container.addClass("chosen-container-active");
- this.active_field = true;
- this.search_field.val(this.search_field.val());
- return this.search_field.focus();
- };
-
- Chosen.prototype.test_active_click = function(evt) {
- var active_container;
- active_container = $(evt.target).closest('.chosen-container');
- if (active_container.length && this.container[0] === active_container[0]) {
- return this.active_field = true;
- } else {
- return this.close_field();
- }
- };
-
- Chosen.prototype.results_build = function() {
- this.parsing = true;
- this.selected_option_count = null;
- this.results_data = SelectParser.select_to_array(this.form_field);
- if (this.is_multiple) {
- this.search_choices.find("li.search-choice").remove();
- } else {
- this.single_set_selected_text();
- if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
- this.search_field[0].readOnly = true;
- this.container.addClass("chosen-container-single-nosearch");
- } else {
- this.search_field[0].readOnly = false;
- this.container.removeClass("chosen-container-single-nosearch");
- }
- }
- this.update_results_content(this.results_option_build({
- first: true
- }));
- this.search_field_disabled();
- this.show_search_field_default();
- this.search_field_scale();
- return this.parsing = false;
- };
-
- Chosen.prototype.result_do_highlight = function(el) {
- var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
- if (el.length) {
- this.result_clear_highlight();
- this.result_highlight = el;
- this.result_highlight.addClass("highlighted");
- maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
- visible_top = this.search_results.scrollTop();
- visible_bottom = maxHeight + visible_top;
- high_top = this.result_highlight.position().top + this.search_results.scrollTop();
- high_bottom = high_top + this.result_highlight.outerHeight();
- if (high_bottom >= visible_bottom) {
- return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
- } else if (high_top < visible_top) {
- return this.search_results.scrollTop(high_top);
- }
- }
- };
-
- Chosen.prototype.result_clear_highlight = function() {
- if (this.result_highlight) {
- this.result_highlight.removeClass("highlighted");
- }
- return this.result_highlight = null;
- };
-
- Chosen.prototype.results_show = function() {
- if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
- this.form_field_jq.trigger("chosen:maxselected", {
- chosen: this
- });
- return false;
- }
- this.container.addClass("chosen-with-drop");
- this.results_showing = true;
- this.search_field.focus();
- this.search_field.val(this.get_search_field_value());
- this.winnow_results();
- return this.form_field_jq.trigger("chosen:showing_dropdown", {
- chosen: this
- });
- };
-
- Chosen.prototype.update_results_content = function(content) {
- return this.search_results.html(content);
- };
-
- Chosen.prototype.results_hide = function() {
- if (this.results_showing) {
- this.result_clear_highlight();
- this.container.removeClass("chosen-with-drop");
- this.form_field_jq.trigger("chosen:hiding_dropdown", {
- chosen: this
- });
- }
- return this.results_showing = false;
- };
-
- Chosen.prototype.set_tab_index = function(el) {
- var ti;
- if (this.form_field.tabIndex) {
- ti = this.form_field.tabIndex;
- this.form_field.tabIndex = -1;
- return this.search_field[0].tabIndex = ti;
- }
- };
-
- Chosen.prototype.set_label_behavior = function() {
- this.form_field_label = this.form_field_jq.parents("label");
- if (!this.form_field_label.length && this.form_field.id.length) {
- this.form_field_label = $("label[for='" + this.form_field.id + "']");
- }
- if (this.form_field_label.length > 0) {
- return this.form_field_label.on('click.chosen', this.label_click_handler);
- }
- };
-
- Chosen.prototype.show_search_field_default = function() {
- if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
- this.search_field.val(this.default_text);
- return this.search_field.addClass("default");
- } else {
- this.search_field.val("");
- return this.search_field.removeClass("default");
- }
- };
-
- Chosen.prototype.search_results_mouseup = function(evt) {
- var target;
- target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
- if (target.length) {
- this.result_highlight = target;
- this.result_select(evt);
- return this.search_field.focus();
- }
- };
-
- Chosen.prototype.search_results_mouseover = function(evt) {
- var target;
- target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
- if (target) {
- return this.result_do_highlight(target);
- }
- };
-
- Chosen.prototype.search_results_mouseout = function(evt) {
- if ($(evt.target).hasClass("active-result") || $(evt.target).parents('.active-result').first()) {
- return this.result_clear_highlight();
- }
- };
-
- Chosen.prototype.choice_build = function(item) {
- var choice, close_link;
- choice = $('', {
- "class": "search-choice"
- }).html("" + (this.choice_label(item)) + "");
- if (item.disabled) {
- choice.addClass('search-choice-disabled');
- } else {
- close_link = $('', {
- "class": 'search-choice-close',
- 'data-option-array-index': item.array_index
- });
- close_link.on('click.chosen', (function(_this) {
- return function(evt) {
- return _this.choice_destroy_link_click(evt);
- };
- })(this));
- choice.append(close_link);
- }
- return this.search_container.before(choice);
- };
-
- Chosen.prototype.choice_destroy_link_click = function(evt) {
- evt.preventDefault();
- evt.stopPropagation();
- if (!this.is_disabled) {
- return this.choice_destroy($(evt.target));
- }
- };
-
- Chosen.prototype.choice_destroy = function(link) {
- if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
- if (this.active_field) {
- this.search_field.focus();
- } else {
- this.show_search_field_default();
- }
- if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {
- this.results_hide();
- }
- link.parents('li').first().remove();
- return this.search_field_scale();
- }
- };
-
- Chosen.prototype.results_reset = function() {
- this.reset_single_select_options();
- this.form_field.options[0].selected = true;
- this.single_set_selected_text();
- this.show_search_field_default();
- this.results_reset_cleanup();
- this.trigger_form_field_change();
- if (this.active_field) {
- return this.results_hide();
- }
- };
-
- Chosen.prototype.results_reset_cleanup = function() {
- this.current_selectedIndex = this.form_field.selectedIndex;
- return this.selected_item.find("abbr").remove();
- };
-
- Chosen.prototype.result_select = function(evt) {
- var high, item;
- if (this.result_highlight) {
- high = this.result_highlight;
- this.result_clear_highlight();
- if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
- this.form_field_jq.trigger("chosen:maxselected", {
- chosen: this
- });
- return false;
- }
- if (this.is_multiple) {
- high.removeClass("active-result");
- } else {
- this.reset_single_select_options();
- }
- high.addClass("result-selected");
- item = this.results_data[high[0].getAttribute("data-option-array-index")];
- item.selected = true;
- this.form_field.options[item.options_index].selected = true;
- this.selected_option_count = null;
- if (this.is_multiple) {
- this.choice_build(item);
- } else {
- this.single_set_selected_text(this.choice_label(item));
- }
- if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
- if (evt.metaKey || evt.ctrlKey) {
- this.winnow_results({
- skip_highlight: true
- });
- } else {
- this.search_field.val("");
- this.winnow_results();
- }
- } else {
- this.results_hide();
- this.show_search_field_default();
- }
- if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
- this.trigger_form_field_change({
- selected: this.form_field.options[item.options_index].value
- });
- }
- this.current_selectedIndex = this.form_field.selectedIndex;
- evt.preventDefault();
- return this.search_field_scale();
- }
- };
-
- Chosen.prototype.single_set_selected_text = function(text) {
- if (text == null) {
- text = this.default_text;
- }
- if (text === this.default_text) {
- this.selected_item.addClass("chosen-default");
- } else {
- this.single_deselect_control_build();
- this.selected_item.removeClass("chosen-default");
- }
- return this.selected_item.find("span").html(text);
- };
-
- Chosen.prototype.result_deselect = function(pos) {
- var result_data;
- result_data = this.results_data[pos];
- if (!this.form_field.options[result_data.options_index].disabled) {
- result_data.selected = false;
- this.form_field.options[result_data.options_index].selected = false;
- this.selected_option_count = null;
- this.result_clear_highlight();
- if (this.results_showing) {
- this.winnow_results();
- }
- this.trigger_form_field_change({
- deselected: this.form_field.options[result_data.options_index].value
- });
- this.search_field_scale();
- return true;
- } else {
- return false;
- }
- };
-
- Chosen.prototype.single_deselect_control_build = function() {
- if (!this.allow_single_deselect) {
- return;
- }
- if (!this.selected_item.find("abbr").length) {
- this.selected_item.find("span").first().after("");
- }
- return this.selected_item.addClass("chosen-single-with-deselect");
- };
-
- Chosen.prototype.get_search_field_value = function() {
- return this.search_field.val();
- };
-
- Chosen.prototype.get_search_text = function() {
- return $.trim(this.get_search_field_value());
- };
-
- Chosen.prototype.escape_html = function(text) {
- return $('').text(text).html();
- };
-
- Chosen.prototype.winnow_results_set_highlight = function() {
- var do_high, selected_results;
- selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
- do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
- if (do_high != null) {
- return this.result_do_highlight(do_high);
- }
- };
-
- Chosen.prototype.no_results = function(terms) {
- var no_results_html;
- no_results_html = this.get_no_results_html(terms);
- this.search_results.append(no_results_html);
- return this.form_field_jq.trigger("chosen:no_results", {
- chosen: this
- });
- };
-
- Chosen.prototype.no_results_clear = function() {
- return this.search_results.find(".no-results").remove();
- };
-
- Chosen.prototype.keydown_arrow = function() {
- var next_sib;
- if (this.results_showing && this.result_highlight) {
- next_sib = this.result_highlight.nextAll("li.active-result").first();
- if (next_sib) {
- return this.result_do_highlight(next_sib);
- }
- } else {
- return this.results_show();
- }
- };
-
- Chosen.prototype.keyup_arrow = function() {
- var prev_sibs;
- if (!this.results_showing && !this.is_multiple) {
- return this.results_show();
- } else if (this.result_highlight) {
- prev_sibs = this.result_highlight.prevAll("li.active-result");
- if (prev_sibs.length) {
- return this.result_do_highlight(prev_sibs.first());
- } else {
- if (this.choices_count() > 0) {
- this.results_hide();
- }
- return this.result_clear_highlight();
- }
- }
- };
-
- Chosen.prototype.keydown_backstroke = function() {
- var next_available_destroy;
- if (this.pending_backstroke) {
- this.choice_destroy(this.pending_backstroke.find("a").first());
- return this.clear_backstroke();
- } else {
- next_available_destroy = this.search_container.siblings("li.search-choice").last();
- if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
- this.pending_backstroke = next_available_destroy;
- if (this.single_backstroke_delete) {
- return this.keydown_backstroke();
- } else {
- return this.pending_backstroke.addClass("search-choice-focus");
- }
- }
- }
- };
-
- Chosen.prototype.clear_backstroke = function() {
- if (this.pending_backstroke) {
- this.pending_backstroke.removeClass("search-choice-focus");
- }
- return this.pending_backstroke = null;
- };
-
- Chosen.prototype.search_field_scale = function() {
- var div, i, len, style, style_block, styles, width;
- if (!this.is_multiple) {
- return;
- }
- style_block = {
- position: 'absolute',
- left: '-1000px',
- top: '-1000px',
- display: 'none',
- whiteSpace: 'pre'
- };
- styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];
- for (i = 0, len = styles.length; i < len; i++) {
- style = styles[i];
- style_block[style] = this.search_field.css(style);
- }
- div = $('').css(style_block);
- div.text(this.get_search_field_value());
- $('body').append(div);
- width = div.width() + 25;
- div.remove();
- if (this.container.is(':visible')) {
- width = Math.min(this.container.outerWidth() - 10, width);
- }
- return this.search_field.width(width);
- };
-
- Chosen.prototype.trigger_form_field_change = function(extra) {
- this.form_field_jq.trigger("input", extra);
- return this.form_field_jq.trigger("change", extra);
- };
-
- return Chosen;
-
- })(AbstractChosen);
-
-}).call(this);
diff --git a/GanjooRazor/wwwroot/lib/chosen/chosen.jquery.min.js b/GanjooRazor/wwwroot/lib/chosen/chosen.jquery.min.js
deleted file mode 100644
index 4ad16475..00000000
--- a/GanjooRazor/wwwroot/lib/chosen/chosen.jquery.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Chosen v1.8.7 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
-
-(function(){var t,e,s,i,n=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function s(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},o={}.hasOwnProperty;(i=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,r,o;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),o=[],s=0,i=(r=t.childNodes).length;s"+this.escape_html(t.group_label)+""+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e="",h=0,n=0,r=(o=this.results_data).length;n=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t"+this.escape_html(s)+""+this.escape_html(p)),null!=a&&(a.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'\n '+this.default_text+'\n
\n\n'},t.prototype.get_multi_html=function(){return'\n'},t.prototype.get_no_results_html=function(t){return'\n '+this.results_none_found+" "+this.escape_html(t)+"\n"},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,r;r=(n=t(this)).data("chosen"),"destroy"!==i?r instanceof s||n.data("chosen",new s(this,i)):r instanceof s&&r.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return r(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),s={"class":e.join(" "),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},n.prototype.register_observers=function(){return this.container.on("touchstart.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("touchend.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mousedown.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("mouseup.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mouseenter.chosen",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on("mouseleave.chosen",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on("mouseup.chosen",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on("mouseover.chosen",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on("mouseout.chosen",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on("touchstart.chosen",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on("touchmove.chosen",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on("touchend.chosen",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on("chosen:updated.chosen",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on("chosen:activate.chosen",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on("chosen:open.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on("chosen:close.chosen",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on("keyup.chosen",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on("keydown.chosen",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on("cut.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on("paste.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on("click.chosen",function(t){return function(e){t.choices_click(e)}}(this)):this.container.on("click.chosen",function(t){t.preventDefault()})},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||"mousedown"!==(s=e.type)&&"touchstart"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(".chosen-container")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,r;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),i=parseInt(this.search_results.css("maxHeight"),10),r=this.search_results.scrollTop(),n=i+r,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s0)return this.form_field_label.on("click.chosen",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result")||t(e.target).parents(".active-result").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t("",{"class":"search-choice"}).html(""+this.choice_label(e)+""),e.disabled?s.addClass("search-choice-disabled"):((i=t("",{"class":"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t("").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),null!=(t=e.length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},n.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,r,o,h;if(this.is_multiple){for(r={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(o=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s").css(r)).text(this.get_search_field_value()),t("body").append(e),h=e.width()+25,e.remove(),this.container.is(":visible")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},n}()}).call(this);
\ No newline at end of file
diff --git a/GanjooRazor/wwwroot/lib/chosen/chosen.min.css b/GanjooRazor/wwwroot/lib/chosen/chosen.min.css
deleted file mode 100644
index 1c68ebb1..00000000
--- a/GanjooRazor/wwwroot/lib/chosen/chosen.min.css
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
-Chosen, a Select Box Enhancer for jQuery and Prototype
-by Patrick Filler for Harvest, http://getharvest.com
-
-Version 1.8.7
-Full source at https://github.com/harvesthq/chosen
-Copyright (c) 2011-2018 Harvest http://getharvest.com
-
-MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
-This file is generated by `grunt build`, do not edit it by hand.
-*/.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15);clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}.chosen-container.chosen-with-drop .chosen-drop{clip:auto;-webkit-clip-path:none;clip-path:none}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),to(#f4f4f4));background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;-webkit-box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(1%,#eee),color-stop(15%,#fff));background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:0 0!important;-webkit-box-shadow:none;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#eee),color-stop(80%,#fff));background-image:linear-gradient(#eee 20%,#fff 80%);-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
\ No newline at end of file
diff --git a/GanjooRazor/wwwroot/lib/diff.js b/GanjooRazor/wwwroot/lib/diff.js
new file mode 100644
index 00000000..132213cf
--- /dev/null
+++ b/GanjooRazor/wwwroot/lib/diff.js
@@ -0,0 +1,1055 @@
+/*!
+
+ diff v2.0.1
+
+Software License Agreement (BSD License)
+
+Copyright (c) 2009-2015, Kevin Decker
+
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+* Neither the name of Kevin Decker nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+@license
+*/
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define(factory);
+ else if(typeof exports === 'object')
+ exports["JsDiff"] = factory();
+ else
+ root["JsDiff"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* See LICENSE file for terms of use */
+
+ /*
+ * Text diff implementation.
+ *
+ * This library supports the following APIS:
+ * JsDiff.diffChars: Character by character diff
+ * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
+ * JsDiff.diffLines: Line based diff
+ *
+ * JsDiff.diffCss: Diff targeted at CSS content
+ *
+ * These methods are based on the implementation proposed in
+ * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
+ * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
+ */
+ 'use strict';
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _diffBase = __webpack_require__(1);
+
+ var _diffBase2 = _interopRequireDefault(_diffBase);
+
+ var _diffCharacter = __webpack_require__(3);
+
+ var _diffWord = __webpack_require__(4);
+
+ var _diffLine = __webpack_require__(5);
+
+ var _diffSentence = __webpack_require__(6);
+
+ var _diffCss = __webpack_require__(7);
+
+ var _diffJson = __webpack_require__(8);
+
+ var _patchApply = __webpack_require__(9);
+
+ var _patchCreate = __webpack_require__(10);
+
+ var _convertDmp = __webpack_require__(12);
+
+ var _convertXml = __webpack_require__(13);
+
+ exports.Diff = _diffBase2['default'];
+ exports.diffChars = _diffCharacter.diffChars;
+ exports.diffWords = _diffWord.diffWords;
+ exports.diffWordsWithSpace = _diffWord.diffWordsWithSpace;
+ exports.diffLines = _diffLine.diffLines;
+ exports.diffTrimmedLines = _diffLine.diffTrimmedLines;
+ exports.diffSentences = _diffSentence.diffSentences;
+ exports.diffCss = _diffCss.diffCss;
+ exports.diffJson = _diffJson.diffJson;
+ exports.structuredPatch = _patchCreate.structuredPatch;
+ exports.createTwoFilesPatch = _patchCreate.createTwoFilesPatch;
+ exports.createPatch = _patchCreate.createPatch;
+ exports.applyPatch = _patchApply.applyPatch;
+ exports.convertChangesToDMP = _convertDmp.convertChangesToDMP;
+ exports.convertChangesToXML = _convertXml.convertChangesToXML;
+ exports.canonicalize = _diffJson.canonicalize;
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports['default'] = Diff;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _utilMap = __webpack_require__(2);
+
+ var _utilMap2 = _interopRequireDefault(_utilMap);
+
+ function Diff(ignoreWhitespace) {
+ this.ignoreWhitespace = ignoreWhitespace;
+ }
+
+ Diff.prototype = {
+ diff: function diff(oldString, newString, callback) {
+ var self = this;
+
+ function done(value) {
+ if (callback) {
+ setTimeout(function () {
+ callback(undefined, value);
+ }, 0);
+ return true;
+ } else {
+ return value;
+ }
+ }
+
+ // Allow subclasses to massage the input prior to running
+ oldString = this.castInput(oldString);
+ newString = this.castInput(newString);
+
+ // Handle the identity case (this is due to unrolling editLength == 0
+ if (newString === oldString) {
+ return done([{ value: newString }]);
+ }
+ if (!newString) {
+ return done([{ value: oldString, removed: true }]);
+ }
+ if (!oldString) {
+ return done([{ value: newString, added: true }]);
+ }
+
+ newString = this.removeEmpty(this.tokenize(newString));
+ oldString = this.removeEmpty(this.tokenize(oldString));
+
+ var newLen = newString.length,
+ oldLen = oldString.length;
+ var editLength = 1;
+ var maxEditLength = newLen + oldLen;
+ var bestPath = [{ newPos: -1, components: [] }];
+
+ // Seed editLength = 0, i.e. the content starts with the same values
+ var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+ if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+ // Identity per the equality and tokenizer
+ return done([{ value: newString.join('') }]);
+ }
+
+ // Main worker method. checks all permutations of a given edit length for acceptance.
+ function execEditLength() {
+ for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+ var basePath = undefined;
+ var addPath = bestPath[diagonalPath - 1],
+ removePath = bestPath[diagonalPath + 1],
+ _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+ if (addPath) {
+ // No one else is going to attempt to use this value, clear it
+ bestPath[diagonalPath - 1] = undefined;
+ }
+
+ var canAdd = addPath && addPath.newPos + 1 < newLen,
+ canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+ if (!canAdd && !canRemove) {
+ // If this path is a terminal then prune
+ bestPath[diagonalPath] = undefined;
+ continue;
+ }
+
+ // Select the diagonal that we want to branch from. We select the prior
+ // path whose position in the new string is the farthest from the origin
+ // and does not pass the bounds of the diff graph
+ if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+ basePath = clonePath(removePath);
+ self.pushComponent(basePath.components, undefined, true);
+ } else {
+ basePath = addPath; // No need to clone, we've pulled it from the list
+ basePath.newPos++;
+ self.pushComponent(basePath.components, true, undefined);
+ }
+
+ _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
+
+ // If we have hit the end of both strings, then we are done
+ if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+ return done(buildValues(basePath.components, newString, oldString, self.useLongestToken));
+ } else {
+ // Otherwise track this path as a potential candidate and continue.
+ bestPath[diagonalPath] = basePath;
+ }
+ }
+
+ editLength++;
+ }
+
+ // Performs the length of edit iteration. Is a bit fugly as this has to support the
+ // sync and async mode which is never fun. Loops over execEditLength until a value
+ // is produced.
+ if (callback) {
+ (function exec() {
+ setTimeout(function () {
+ // This should not happen, but we want to be safe.
+ /* istanbul ignore next */
+ if (editLength > maxEditLength) {
+ return callback();
+ }
+
+ if (!execEditLength()) {
+ exec();
+ }
+ }, 0);
+ })();
+ } else {
+ while (editLength <= maxEditLength) {
+ var ret = execEditLength();
+ if (ret) {
+ return ret;
+ }
+ }
+ }
+ },
+
+ pushComponent: function pushComponent(components, added, removed) {
+ var last = components[components.length - 1];
+ if (last && last.added === added && last.removed === removed) {
+ // We need to clone here as the component clone operation is just
+ // as shallow array clone
+ components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };
+ } else {
+ components.push({ count: 1, added: added, removed: removed });
+ }
+ },
+ extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+ var newLen = newString.length,
+ oldLen = oldString.length,
+ newPos = basePath.newPos,
+ oldPos = newPos - diagonalPath,
+ commonCount = 0;
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+ newPos++;
+ oldPos++;
+ commonCount++;
+ }
+
+ if (commonCount) {
+ basePath.components.push({ count: commonCount });
+ }
+
+ basePath.newPos = newPos;
+ return oldPos;
+ },
+
+ equals: function equals(left, right) {
+ var reWhitespace = /\S/;
+ return left === right || this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+ },
+ removeEmpty: function removeEmpty(array) {
+ var ret = [];
+ for (var i = 0; i < array.length; i++) {
+ if (array[i]) {
+ ret.push(array[i]);
+ }
+ }
+ return ret;
+ },
+ castInput: function castInput(value) {
+ return value;
+ },
+ tokenize: function tokenize(value) {
+ return value.split('');
+ }
+ };
+
+ function buildValues(components, newString, oldString, useLongestToken) {
+ var componentPos = 0,
+ componentLen = components.length,
+ newPos = 0,
+ oldPos = 0;
+
+ for (; componentPos < componentLen; componentPos++) {
+ var component = components[componentPos];
+ if (!component.removed) {
+ if (!component.added && useLongestToken) {
+ var value = newString.slice(newPos, newPos + component.count);
+ value = _utilMap2['default'](value, function (value, i) {
+ var oldValue = oldString[oldPos + i];
+ return oldValue.length > value.length ? oldValue : value;
+ });
+
+ component.value = value.join('');
+ } else {
+ component.value = newString.slice(newPos, newPos + component.count).join('');
+ }
+ newPos += component.count;
+
+ // Common case
+ if (!component.added) {
+ oldPos += component.count;
+ }
+ } else {
+ component.value = oldString.slice(oldPos, oldPos + component.count).join('');
+ oldPos += component.count;
+
+ // Reverse add and remove so removes are output first to match common convention
+ // The diffing algorithm is tied to add then remove output and this is the simplest
+ // route to get the desired output with minimal overhead.
+ if (componentPos && components[componentPos - 1].added) {
+ var tmp = components[componentPos - 1];
+ components[componentPos - 1] = components[componentPos];
+ components[componentPos] = tmp;
+ }
+ }
+ }
+
+ return components;
+ }
+
+ function clonePath(path) {
+ return { newPos: path.newPos, components: path.components.slice(0) };
+ }
+ module.exports = exports['default'];
+
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+ // Following this pattern to make sure the ignore next is in the correct place after babel builds
+ "use strict";
+
+ exports.__esModule = true;
+ exports["default"] = map;
+
+ /* istanbul ignore next */
+ function map(arr, mapper, that) {
+ if (Array.prototype.map) {
+ return Array.prototype.map.call(arr, mapper, that);
+ }
+
+ var other = new Array(arr.length);
+
+ for (var i = 0, n = arr.length; i < n; i++) {
+ other[i] = mapper.call(that, arr[i], i, arr);
+ }
+ return other;
+ }
+ module.exports = exports["default"];
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.diffChars = diffChars;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var characterDiff = new _base2['default']();
+ exports.characterDiff = characterDiff;
+
+ function diffChars(oldStr, newStr, callback) {
+ return characterDiff.diff(oldStr, newStr, callback);
+ }
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.diffWords = diffWords;
+ exports.diffWordsWithSpace = diffWordsWithSpace;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
+ //
+ // Ranges and exceptions:
+ // Latin-1 Supplement, 0080–00FF
+ // - U+00D7 × Multiplication sign
+ // - U+00F7 ÷ Division sign
+ // Latin Extended-A, 0100–017F
+ // Latin Extended-B, 0180–024F
+ // IPA Extensions, 0250–02AF
+ // Spacing Modifier Letters, 02B0–02FF
+ // - U+02C7 ˇ ˇ Caron
+ // - U+02D8 ˘ ˘ Breve
+ // - U+02D9 ˙ ˙ Dot Above
+ // - U+02DA ˚ ˚ Ring Above
+ // - U+02DB ˛ ˛ Ogonek
+ // - U+02DC ˜ ˜ Small Tilde
+ // - U+02DD ˝ ˝ Double Acute Accent
+ // Latin Extended Additional, 1E00–1EFF
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+
+ var wordDiff = new _base2['default'](true);
+ exports.wordDiff = wordDiff;
+ var wordWithSpaceDiff = new _base2['default']();
+ exports.wordWithSpaceDiff = wordWithSpaceDiff;
+ wordDiff.tokenize = wordWithSpaceDiff.tokenize = function (value) {
+ var tokens = value.split(/(\s+|\b)/);
+
+ // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+ for (var i = 0; i < tokens.length - 1; i++) {
+ // If we have an empty string in the next field and we have only word chars before and after, merge
+ if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+ tokens[i] += tokens[i + 2];
+ tokens.splice(i + 1, 2);
+ i--;
+ }
+ }
+
+ return tokens;
+ };
+
+ function diffWords(oldStr, newStr, callback) {
+ return wordDiff.diff(oldStr, newStr, callback);
+ }
+
+ function diffWordsWithSpace(oldStr, newStr, callback) {
+ return wordWithSpaceDiff.diff(oldStr, newStr, callback);
+ }
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.diffLines = diffLines;
+ exports.diffTrimmedLines = diffTrimmedLines;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var lineDiff = new _base2['default']();
+ exports.lineDiff = lineDiff;
+ var trimmedLineDiff = new _base2['default']();
+ exports.trimmedLineDiff = trimmedLineDiff;
+ trimmedLineDiff.ignoreTrim = true;
+
+ lineDiff.tokenize = trimmedLineDiff.tokenize = function (value) {
+ var retLines = [],
+ lines = value.split(/^/m);
+ for (var i = 0; i < lines.length; i++) {
+ var line = lines[i],
+ lastLine = lines[i - 1],
+ lastLineLastChar = lastLine && lastLine[lastLine.length - 1];
+
+ // Merge lines that may contain windows new lines
+ if (line === '\n' && lastLineLastChar === '\r') {
+ retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n';
+ } else {
+ if (this.ignoreTrim) {
+ line = line.trim();
+ // add a newline unless this is the last line.
+ if (i < lines.length - 1) {
+ line += '\n';
+ }
+ }
+ retLines.push(line);
+ }
+ }
+
+ return retLines;
+ };
+
+ function diffLines(oldStr, newStr, callback) {
+ return lineDiff.diff(oldStr, newStr, callback);
+ }
+
+ function diffTrimmedLines(oldStr, newStr, callback) {
+ return trimmedLineDiff.diff(oldStr, newStr, callback);
+ }
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.diffSentences = diffSentences;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var sentenceDiff = new _base2['default']();
+ exports.sentenceDiff = sentenceDiff;
+ sentenceDiff.tokenize = function (value) {
+ return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+ };
+
+ function diffSentences(oldStr, newStr, callback) {
+ return sentenceDiff.diff(oldStr, newStr, callback);
+ }
+
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.diffCss = diffCss;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var cssDiff = new _base2['default']();
+ exports.cssDiff = cssDiff;
+ cssDiff.tokenize = function (value) {
+ return value.split(/([{}:;,]|\s+)/);
+ };
+
+ function diffCss(oldStr, newStr, callback) {
+ return cssDiff.diff(oldStr, newStr, callback);
+ }
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.diffJson = diffJson;
+ exports.canonicalize = canonicalize;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var _line = __webpack_require__(5);
+
+ var objectPrototypeToString = Object.prototype.toString;
+
+ var jsonDiff = new _base2['default']();
+ // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+ // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+ exports.jsonDiff = jsonDiff;
+ jsonDiff.useLongestToken = true;
+
+ jsonDiff.tokenize = _line.lineDiff.tokenize;
+ jsonDiff.castInput = function (value) {
+ return typeof value === 'string' ? value : JSON.stringify(canonicalize(value), undefined, ' ');
+ };
+ jsonDiff.equals = function (left, right) {
+ return _base2['default'].prototype.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+ };
+
+ function diffJson(oldObj, newObj, callback) {
+ return jsonDiff.diff(oldObj, newObj, callback);
+ }
+
+ // This function handles the presence of circular references by bailing out when encountering an
+ // object that is already on the "stack" of items being processed.
+
+ function canonicalize(obj, stack, replacementStack) {
+ stack = stack || [];
+ replacementStack = replacementStack || [];
+
+ var i = undefined;
+
+ for (i = 0; i < stack.length; i += 1) {
+ if (stack[i] === obj) {
+ return replacementStack[i];
+ }
+ }
+
+ var canonicalizedObj = undefined;
+
+ if ('[object Array]' === objectPrototypeToString.call(obj)) {
+ stack.push(obj);
+ canonicalizedObj = new Array(obj.length);
+ replacementStack.push(canonicalizedObj);
+ for (i = 0; i < obj.length; i += 1) {
+ canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);
+ }
+ stack.pop();
+ replacementStack.pop();
+ } else if (typeof obj === 'object' && obj !== null) {
+ stack.push(obj);
+ canonicalizedObj = {};
+ replacementStack.push(canonicalizedObj);
+ var sortedKeys = [],
+ key = undefined;
+ for (key in obj) {
+ /* istanbul ignore else */
+ if (obj.hasOwnProperty(key)) {
+ sortedKeys.push(key);
+ }
+ }
+ sortedKeys.sort();
+ for (i = 0; i < sortedKeys.length; i += 1) {
+ key = sortedKeys[i];
+ canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);
+ }
+ stack.pop();
+ replacementStack.pop();
+ } else {
+ canonicalizedObj = obj;
+ }
+ return canonicalizedObj;
+ }
+
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.applyPatch = applyPatch;
+
+ function applyPatch(oldStr, uniDiff) {
+ var diffstr = uniDiff.split('\n'),
+ hunks = [],
+ i = 0,
+ remEOFNL = false,
+ addEOFNL = false;
+
+ // Skip to the first change hunk
+ while (i < diffstr.length && !/^@@/.test(diffstr[i])) {
+ i++;
+ }
+
+ // Parse the unified diff
+ for (; i < diffstr.length; i++) {
+ if (diffstr[i][0] === '@') {
+ var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/);
+ hunks.unshift({
+ start: chnukHeader[3],
+ oldlength: +chnukHeader[2],
+ removed: [],
+ newlength: chnukHeader[4],
+ added: []
+ });
+ } else if (diffstr[i][0] === '+') {
+ hunks[0].added.push(diffstr[i].substr(1));
+ } else if (diffstr[i][0] === '-') {
+ hunks[0].removed.push(diffstr[i].substr(1));
+ } else if (diffstr[i][0] === ' ') {
+ hunks[0].added.push(diffstr[i].substr(1));
+ hunks[0].removed.push(diffstr[i].substr(1));
+ } else if (diffstr[i][0] === '\\') {
+ if (diffstr[i - 1][0] === '+') {
+ remEOFNL = true;
+ } else if (diffstr[i - 1][0] === '-') {
+ addEOFNL = true;
+ }
+ }
+ }
+
+ // Apply the diff to the input
+ var lines = oldStr.split('\n');
+ for (i = hunks.length - 1; i >= 0; i--) {
+ var hunk = hunks[i];
+ // Sanity check the input string. Bail if we don't match.
+ for (var j = 0; j < hunk.oldlength; j++) {
+ if (lines[hunk.start - 1 + j] !== hunk.removed[j]) {
+ return false;
+ }
+ }
+ Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added));
+ }
+
+ // Handle EOFNL insertion/removal
+ if (remEOFNL) {
+ while (!lines[lines.length - 1]) {
+ lines.pop();
+ }
+ } else if (addEOFNL) {
+ lines.push('');
+ }
+ return lines.join('\n');
+ }
+
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.structuredPatch = structuredPatch;
+ exports.createTwoFilesPatch = createTwoFilesPatch;
+ exports.createPatch = createPatch;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _diffPatch = __webpack_require__(11);
+
+ var _utilMap = __webpack_require__(2);
+
+ var _utilMap2 = _interopRequireDefault(_utilMap);
+
+ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ if (!options) {
+ options = { context: 4 };
+ }
+
+ var diff = _diffPatch.patchDiff.diff(oldStr, newStr);
+ diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier
+
+ function contextLines(lines) {
+ return _utilMap2['default'](lines, function (entry) {
+ return ' ' + entry;
+ });
+ }
+
+ var hunks = [];
+ var oldRangeStart = 0,
+ newRangeStart = 0,
+ curRange = [],
+ oldLine = 1,
+ newLine = 1;
+
+ var _loop = function (i) {
+ var current = diff[i],
+ lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+ current.lines = lines;
+
+ if (current.added || current.removed) {
+ // If we have previous context, start with that
+ if (!oldRangeStart) {
+ var prev = diff[i - 1];
+ oldRangeStart = oldLine;
+ newRangeStart = newLine;
+
+ if (prev) {
+ curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+ oldRangeStart -= curRange.length;
+ newRangeStart -= curRange.length;
+ }
+ }
+
+ // Output our changes
+ curRange.push.apply(curRange, _utilMap2['default'](lines, function (entry) {
+ return (current.added ? '+' : '-') + entry;
+ }));
+
+ // Track the updated file position
+ if (current.added) {
+ newLine += lines.length;
+ } else {
+ oldLine += lines.length;
+ }
+ } else {
+ // Identical context lines. Track line changes
+ if (oldRangeStart) {
+ // Close out any changes that have been output (or join overlapping)
+ if (lines.length <= options.context * 2 && i < diff.length - 2) {
+ // Overlapping
+ curRange.push.apply(curRange, contextLines(lines));
+ } else {
+ // end the range and output
+ var contextSize = Math.min(lines.length, options.context);
+ curRange.push.apply(curRange, contextLines(lines.slice(0, contextSize)));
+
+ var hunk = {
+ oldStart: oldRangeStart,
+ oldLines: oldLine - oldRangeStart + contextSize,
+ newStart: newRangeStart,
+ newLines: newLine - newRangeStart + contextSize,
+ lines: curRange
+ };
+ if (i >= diff.length - 2 && lines.length <= options.context) {
+ // EOF is inside this hunk
+ var oldEOFNewline = /\n$/.test(oldStr);
+ var newEOFNewline = /\n$/.test(newStr);
+ if (lines.length == 0 && !oldEOFNewline) {
+ // special case: old has no eol and no trailing context; no-nl can end up before adds
+ curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+ } else if (!oldEOFNewline || !newEOFNewline) {
+ curRange.push('\\ No newline at end of file');
+ }
+ }
+ hunks.push(hunk);
+
+ oldRangeStart = 0;
+ newRangeStart = 0;
+ curRange = [];
+ }
+ }
+ oldLine += lines.length;
+ newLine += lines.length;
+ }
+ };
+
+ for (var i = 0; i < diff.length; i++) {
+ _loop(i);
+ }
+
+ return {
+ oldFileName: oldFileName, newFileName: newFileName,
+ oldHeader: oldHeader, newHeader: newHeader,
+ hunks: hunks
+ };
+ }
+
+ function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
+
+ var ret = [];
+ if (oldFileName == newFileName) {
+ ret.push('Index: ' + oldFileName);
+ }
+ ret.push('===================================================================');
+ ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+ ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+ for (var i = 0; i < diff.hunks.length; i++) {
+ var hunk = diff.hunks[i];
+ ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+ ret.push.apply(ret, hunk.lines);
+ }
+
+ return ret.join('\n') + '\n';
+ }
+
+ function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+ return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+ }
+
+
+/***/ },
+/* 11 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = __webpack_require__(1);
+
+ var _base2 = _interopRequireDefault(_base);
+
+ var patchDiff = new _base2['default']();
+ exports.patchDiff = patchDiff;
+ patchDiff.tokenize = function (value) {
+ var ret = [],
+ linesAndNewlines = value.split(/(\n|\r\n)/);
+
+ // Ignore the final empty token that occurs if the string ends with a new line
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+ linesAndNewlines.pop();
+ }
+
+ // Merge the content and line separators into single tokens
+ for (var i = 0; i < linesAndNewlines.length; i++) {
+ var line = linesAndNewlines[i];
+
+ if (i % 2) {
+ ret[ret.length - 1] += line;
+ } else {
+ ret.push(line);
+ }
+ }
+ return ret;
+ };
+
+
+/***/ },
+/* 12 */
+/***/ function(module, exports) {
+
+ // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+ "use strict";
+
+ exports.__esModule = true;
+ exports.convertChangesToDMP = convertChangesToDMP;
+
+ function convertChangesToDMP(changes) {
+ var ret = [],
+ change = undefined,
+ operation = undefined;
+ for (var i = 0; i < changes.length; i++) {
+ change = changes[i];
+ if (change.added) {
+ operation = 1;
+ } else if (change.removed) {
+ operation = -1;
+ } else {
+ operation = 0;
+ }
+
+ ret.push([operation, change.value]);
+ }
+ return ret;
+ }
+
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+ 'use strict';
+
+ exports.__esModule = true;
+ exports.convertChangesToXML = convertChangesToXML;
+
+ function convertChangesToXML(changes) {
+ var ret = [];
+ for (var i = 0; i < changes.length; i++) {
+ var change = changes[i];
+ if (change.added) {
+ ret.push('');
+ } else if (change.removed) {
+ ret.push('');
+ }
+
+ ret.push(escapeHTML(change.value));
+
+ if (change.added) {
+ ret.push('');
+ } else if (change.removed) {
+ ret.push('');
+ }
+ }
+ return ret.join('');
+ }
+
+ function escapeHTML(s) {
+ var n = s;
+ n = n.replace(/&/g, '&');
+ n = n.replace(//g, '>');
+ n = n.replace(/"/g, '"');
+
+ return n;
+ }
+
+
+/***/ }
+/******/ ])
+});
+;
\ No newline at end of file