- {{ log.message|e|md(inlineOnly=true)|raw }} |
+ {{ log.message|md(inlineOnly=true, encode=true)|raw }} |
{{- log.file|e|replace('/', '/')|raw }}
{%- if log.line -%}
diff --git a/src/templates/_components/widgets/CraftSupport/body.twig b/src/templates/_components/widgets/CraftSupport/body.twig
index 1b7bd0d51b2..82397301b82 100644
--- a/src/templates/_components/widgets/CraftSupport/body.twig
+++ b/src/templates/_components/widgets/CraftSupport/body.twig
@@ -16,6 +16,7 @@
{{ tag('h2', {
text: submitText,
+ class: 'cs-heading'
}) }}
{{ forms.textareaField({
first: true,
diff --git a/src/templates/_elements/sources.twig b/src/templates/_elements/sources.twig
index 576eb3208b1..7b5c964c994 100644
--- a/src/templates/_elements/sources.twig
+++ b/src/templates/_elements/sources.twig
@@ -61,7 +61,13 @@
{{ (svg(source.iconMask, sanitize=true, namespace=true) ?: "")|raw }}
{% endif %}
- {{ source.label|trim is not same as('') ? source.label : '(blank)'|t('app') }}
+
+ {% if source.label|trim is not same as('') %}
+ {{ (source.type ?? null) == 'custom' ? source.label|t('site') : source.label }}
+ {% else %}
+ {{ '(blank)'|t('app') }}
+ {% endif %}
+
{% if source.badgeCount is defined %}
{{ source.badgeCount|number(decimals=0) }}
{{ tag('span', {
diff --git a/src/templates/_elements/toolbar.twig b/src/templates/_elements/toolbar.twig
index 9f819e2b5b0..f2d5eff7bb0 100644
--- a/src/templates/_elements/toolbar.twig
+++ b/src/templates/_elements/toolbar.twig
@@ -68,5 +68,5 @@
label: 'Clear search'|t('app'),
},
}) }}
-
+
diff --git a/src/templates/_includes/forms/autosuggest.twig b/src/templates/_includes/forms/autosuggest.twig
index 8c28152ed0b..e8fbb1beec7 100644
--- a/src/templates/_includes/forms/autosuggest.twig
+++ b/src/templates/_includes/forms/autosuggest.twig
@@ -30,8 +30,6 @@
@focus="updateFilteredOptions"
@blur="onBlur"
@input="onInputChange"
- @opened="onOpened"
- @closed="onClosed"
v-model="inputProps.initialValue"
>
@@ -81,26 +79,6 @@ new Vue({
this.query = (q || '').toLowerCase();
this.updateFilteredOptions();
},
- onOpened() {
- let $element = $(this.$el);
-
- // clicking on autosuggestion value won't work if the element's parent has any sort of tabindex set
- // (it's not vue-autosuggest issue as on its own it works fine with tabindex)
- // so we have to temporary remove that tabindex when opening the suggestions list
- // and then add it back in when closing the list
- // see https://github.com/craftcms/cms/issues/13553 for more details
- let $tabindexParent = $element.parents('[tabindex="-1"]');
- if ($tabindexParent.length > 0) {
- this.$refs.tabindexParent = $tabindexParent;
- $tabindexParent.removeAttr('tabindex');
- }
- },
- onClosed() {
- if (this.$refs.tabindexParent !== undefined) {
- this.$refs.tabindexParent.attr('tabindex', '-1');
- this.$refs.tabindexParent = null;
- }
- },
updateFilteredOptions() {
if (this.query === '') {
this.filteredOptions = this.suggestions;
diff --git a/src/templates/_includes/forms/booleanMenu.twig b/src/templates/_includes/forms/booleanMenu.twig
index 53f0d4ae1de..24b9a67c38d 100644
--- a/src/templates/_includes/forms/booleanMenu.twig
+++ b/src/templates/_includes/forms/booleanMenu.twig
@@ -34,4 +34,5 @@
{% include '_includes/forms/selectize' with {
includeEnvVars: false,
+ value: value ?? '0',
}%}
diff --git a/src/templates/_includes/forms/date.twig b/src/templates/_includes/forms/date.twig
index 4b9a1afc81e..6b1026a57c4 100644
--- a/src/templates/_includes/forms/date.twig
+++ b/src/templates/_includes/forms/date.twig
@@ -2,6 +2,8 @@
{% set id = (id ?? "date#{random()}") ~ '-date' -%}
{% set name = name ?? null -%}
{% set value = (value ?? false) ? date(value, false) : null -%}
+{% set locale = craft.app.getFormattingLocale() %}
+{% set outputLocaleParam = outputLocaleParam ?? true %}
{% set timeZone = timeZone ?? null %}
{% set outputTzParam = outputTzParam ?? true %}
{% set isMobile = craft.app.request.isMobileBrowser %}
@@ -22,7 +24,7 @@
{% set formatRefId = "#{id}-format" %}
{% set describedBy = [formatRefId, describedBy ?? null]|filter|join(' ') %}
- {{ craft.app.getFormattingLocale().getDateFormat('short', 'human') }}
+ {{ locale.getDateFormat('short', 'human') }}
{% endif %}
{%- include "_includes/forms/text" with {
@@ -40,6 +42,9 @@
},
} -%}
+ {%- if name and outputLocaleParam -%}
+ {{- hiddenInput("#{name}[locale]", locale.id) -}}
+ {%- endif -%}
{%- if name and outputTzParam -%}
{{- hiddenInput("#{name}[timezone]", craft.app.getTimeZone()) -}}
{%- endif -%}
diff --git a/src/templates/_includes/forms/datetime.twig b/src/templates/_includes/forms/datetime.twig
index 86fcaba3009..19a49e4f11f 100644
--- a/src/templates/_includes/forms/datetime.twig
+++ b/src/templates/_includes/forms/datetime.twig
@@ -6,6 +6,7 @@
{% include '_includes/forms/time' with {
hasOuterContainer: true,
isDateTime: true,
+ outputLocaleParam: false,
outputTzParam: false,
} %}
diff --git a/src/templates/_includes/forms/editableTable.twig b/src/templates/_includes/forms/editableTable.twig
index c4ad984258f..b5159d923e2 100644
--- a/src/templates/_includes/forms/editableTable.twig
+++ b/src/templates/_includes/forms/editableTable.twig
@@ -193,9 +193,21 @@
} only %}
{%- default -%}
{% if static %}
- {{ value }}
+ {{ value }}
{% else %}
-
+ {% if value %}
+ {{ value }}
+ {% endif %}
+ {{ tag('textarea', {
+ name: cellName,
+ rows: col.rows ?? 1,
+ placeholder: col.placeholder ?? false,
+ aria: {
+ labelledby: headingId,
+ describedby: describedBy,
+ },
+ html: value,
+ }) }}
{% endif %}
{%- endswitch -%}
{% endblock %}
diff --git a/src/templates/_includes/forms/errorList.twig b/src/templates/_includes/forms/errorList.twig
index 3a22fc2b66e..571ed390996 100644
--- a/src/templates/_includes/forms/errorList.twig
+++ b/src/templates/_includes/forms/errorList.twig
@@ -9,7 +9,7 @@
class: 'visually-hidden',
text: 'Error:'|t('app'),
}) }}
- {{ error|e|md(inlineOnly=true)|replace('/&(\\w+);/', '&$1;')|raw }}
+ {{ error|md(inlineOnly=true, encode=true)|raw }}
{% endfor %}
{% endtag %}
diff --git a/src/templates/_includes/forms/fs.twig b/src/templates/_includes/forms/fs.twig
index f1d44715125..1343f20ff63 100644
--- a/src/templates/_includes/forms/fs.twig
+++ b/src/templates/_includes/forms/fs.twig
@@ -10,6 +10,9 @@
});
});
slideout.on('close', () => {
+ if (selectize.lastValidValue === '__add__') {
+ selectize.lastValidValue = '';
+ }
selectize.focus();
});
}
diff --git a/src/templates/_includes/forms/lightswitch.twig b/src/templates/_includes/forms/lightswitch.twig
index aef54f2d3c1..7906a93074a 100644
--- a/src/templates/_includes/forms/lightswitch.twig
+++ b/src/templates/_includes/forms/lightswitch.twig
@@ -23,7 +23,7 @@
indeterminate ? 'indeterminate' : null,
small ? 'small' : null,
toggle or reverseToggle ? 'fieldtoggle' : null,
- disabled ? 'disabled' : null,
+ disabled ? 'noteditable' : null,
]|filter,
data: {
value: value != '1' ? value : false,
diff --git a/src/templates/_includes/forms/select.twig b/src/templates/_includes/forms/select.twig
index 00026f19ef7..3fe25e0ca47 100644
--- a/src/templates/_includes/forms/select.twig
+++ b/src/templates/_includes/forms/select.twig
@@ -1,6 +1,5 @@
{%- set class = (class ?? [])|explodeClass|merge([
'select',
- (disabled ?? false) ? 'disabled' : null,
]|filter) %}
{%- set options = options ?? [] %}
@@ -22,6 +21,7 @@
(toggle ?? false) ? 'fieldtoggle' : null,
]|filter,
name: name ?? false,
+ autocomplete: (autocomplete ?? false),
autofocus: (autofocus ?? false) and not craft.app.request.isMobileBrowser(true),
disabled: disabled ?? false,
aria: {
diff --git a/src/templates/_includes/forms/selectize.twig b/src/templates/_includes/forms/selectize.twig
index 0b84c208161..164d5ec547f 100644
--- a/src/templates/_includes/forms/selectize.twig
+++ b/src/templates/_includes/forms/selectize.twig
@@ -1,6 +1,7 @@
{% set id = id ?? "selectize#{random()}" %}
{% set selectizeOptions = {
dropdownParent: 'body',
+ plugins: ['auto_position'],
}|merge(selectizeOptions ?? []) %}
{% set multi = multi ?? false %}
@@ -60,7 +61,8 @@
class: (class ?? [])|explodeClass|push('selectize')|unique,
inputAttributes: {
style: {display: 'none'},
- },
+ autocomplete: (not multi and autocomplete is defined) ? autocomplete : false
+ }|merge(inputAttributes ?? [], recursive=true),
} %}
{% js %}
@@ -159,30 +161,6 @@
}
};
- const positionDropdown = () => {
- const selectize = $select.data('selectize');
-
- // adjust dropdown position - if there's not enough space to display it below the field
- // display it above the field
- const bodyHeight = $('body').height();
- const windowInnerHeight = window.innerHeight;
- let offsetAdjustment = 0;
- if (bodyHeight > windowInnerHeight) {
- offsetAdjustment = bodyHeight - windowInnerHeight;
- }
-
- const controlOffset = selectize.settings.dropdownParent === 'body' ? selectize.$control.offset() : selectize.$control.position();
- const controlHeight = selectize.$control.outerHeight();
- const dropdownHeight = selectize.$dropdown.outerHeight();
- const exceededWindowHeight = (controlOffset.top - offsetAdjustment + controlHeight + dropdownHeight) > windowInnerHeight;
-
- if (exceededWindowHeight) {
- selectize.$dropdown.css({
- top: controlOffset.top - dropdownHeight - 4,
- });
- }
- };
-
{% if not multi %}
const selectizeDropdownOpenEvent = new Event("selectizedropdownopen");
const selectizeDropdownCloseEvent = new Event("selectizedropdownclose");
@@ -217,9 +195,20 @@
.forEach((attr) => {
this.$control_input.attr(attr.name, attr.value);
});
+
+ // allow autocomplete;
+ // despite what the documentation says, the "autofill_disable" seems to be ON by default,
+ // and there's no "proper" way to disable it
+ // more info: https://github.com/selectize/selectize.js/issues/1535
+ const autocomplete = $select.attr('autocomplete');
+ if (autocomplete) {
+ const selectize = $select.data('selectize');
+ selectize.$control_input
+ .removeAttr('autofill')
+ .attr('autocomplete', autocomplete);
+ }
},
onDropdownOpen: function() {
- positionDropdown();
{% if not multi %}
$select[0].dispatchEvent(selectizeDropdownOpenEvent);
{% endif %}
@@ -229,7 +218,6 @@
$select[0].dispatchEvent(selectizeDropdownCloseEvent);
{% endif %}
},
- onItemAdd: positionDropdown,
}, {{ selectizeOptions|json_encode|raw }}));
onChange();
diff --git a/src/templates/_includes/forms/text.twig b/src/templates/_includes/forms/text.twig
index 919e4c26ec8..687392e9d18 100644
--- a/src/templates/_includes/forms/text.twig
+++ b/src/templates/_includes/forms/text.twig
@@ -3,7 +3,6 @@
{%- set class = (class ?? [])|explodeClass|merge([
'text',
- (disabled ?? false) ? 'disabled' : null,
not (size ?? false) ? 'fullwidth' : null,
]|filter) %}
diff --git a/src/templates/_includes/forms/time.twig b/src/templates/_includes/forms/time.twig
index 698ff4a5582..81f3e6b7528 100644
--- a/src/templates/_includes/forms/time.twig
+++ b/src/templates/_includes/forms/time.twig
@@ -2,6 +2,8 @@
{% set id = (id ?? "time#{random()}") ~ '-time' -%}
{% set name = name ?? null -%}
{% set value = value ?? null -%}
+{% set locale = craft.app.getFormattingLocale() %}
+{% set outputLocaleParam = outputLocaleParam ?? true %}
{% set timeZone = timeZone ?? null %}
{% set outputTzParam = outputTzParam ?? true %}
{% set isMobile = craft.app.request.isMobileBrowser %}
@@ -24,7 +26,7 @@
{% set formatRefId = "#{id}-format" %}
{% set describedBy = [formatRefId, describedBy ?? null]|filter|join(' ') %}
- {{ craft.app.getFormattingLocale().getTimeFormat('short', 'human') }}
+ {{ locale.getTimeFormat('short', 'human') }}
{% endif %}
{%- include "_includes/forms/text" with {
@@ -42,6 +44,9 @@
},
} -%}
+ {%- if name and outputLocaleParam -%}
+ {{- hiddenInput("#{name}[locale]", locale.id) -}}
+ {%- endif -%}
{%- if name and outputTzParam -%}
{{- hiddenInput("#{name}[timezone]", craft.app.getTimeZone()) -}}
{%- endif -%}
diff --git a/src/templates/_includes/forms/volume.twig b/src/templates/_includes/forms/volume.twig
index 077504c2050..ce3004f25a1 100644
--- a/src/templates/_includes/forms/volume.twig
+++ b/src/templates/_includes/forms/volume.twig
@@ -10,6 +10,9 @@
});
});
slideout.on('close', () => {
+ if (selectize.lastValidValue === '__add__') {
+ selectize.lastValidValue = '';
+ }
selectize.focus();
});
}
diff --git a/src/templates/_includes/revisionmenu.twig b/src/templates/_includes/revisionmenu.twig
index 5e13d69b5de..1a6997ee7c6 100644
--- a/src/templates/_includes/revisionmenu.twig
+++ b/src/templates/_includes/revisionmenu.twig
@@ -7,33 +7,37 @@
{% import '_includes/forms.twig' as forms %}
{% set showDrafts = showDrafts ?? false %}
-{% set drafts = element.id and showDrafts ? element.find()
- .draftOf(element)
- .siteId(element.siteId)
- .status(null)
- .orderBy({dateUpdated: SORT_DESC})
- .with(['draftCreator'])
- .all()|filter(d => canView(d)) : [] %}
-
-{% set maxRevisions = craft.app.config.general.maxRevisions %}
-{% set hasMoreRevisions = false %}
-{% set revisionsPageUrl = null %}
-{% if element.id and (not maxRevisions or maxRevisions > 1) %}
- {% set revisionsQuery = element.find()
- .revisionOf(element.getCanonicalId())
+{% if drafts is not defined %}
+ {% set drafts = element.id and showDrafts ? element.find()
+ .draftOf(element)
.siteId(element.siteId)
.status(null)
- .offset(1)
- .limit(maxRevisions ? min(maxRevisions - 1, 10) : 10)
- .orderBy({dateCreated: SORT_DESC})
- .with(['revisionCreator']) %}
- {% set revisions = revisionsQuery.all() %}
- {% set revisionsPageUrl = element.getCpRevisionsUrl() %}
- {% if revisionsPageUrl %}
- {% set hasMoreRevisions = (revisionsQuery.count() - 1) > revisions|length %}
+ .orderBy({dateUpdated: SORT_DESC})
+ .with(['draftCreator'])
+ .all()|filter(d => canView(d)) : [] %}
+{% endif %}
+
+{% if revisions is not defined %}
+ {% set maxRevisions = craft.app.config.general.maxRevisions %}
+ {% set hasMoreRevisions = false %}
+ {% set revisionsPageUrl = null %}
+ {% if element.id and (not maxRevisions or maxRevisions > 1) %}
+ {% set revisionsQuery = element.find()
+ .revisionOf(element.getCanonicalId())
+ .siteId(element.siteId)
+ .status(null)
+ .offset(1)
+ .limit(maxRevisions ? min(maxRevisions - 1, 10) : 10)
+ .orderBy({dateCreated: SORT_DESC})
+ .with(['revisionCreator']) %}
+ {% set revisions = revisionsQuery.all() %}
+ {% set revisionsPageUrl = element.getCpRevisionsUrl() %}
+ {% if revisionsPageUrl %}
+ {% set hasMoreRevisions = (revisionsQuery.count() - 1) > revisions|length %}
+ {% endif %}
+ {% else %}
+ {% set revisions = [] %}
{% endif %}
-{% else %}
- {% set revisions = [] %}
{% endif %}
{% set baseParams = craft.app.request.queryParams|withoutKey('draftId')|withoutKey('revisionId')|withoutKey('siteId')|withoutKey('fresh') %}
diff --git a/src/templates/settings/assets/settings.twig b/src/templates/settings/assets/settings.twig
index 17f6b2a94e6..c98c5a064d8 100644
--- a/src/templates/settings/assets/settings.twig
+++ b/src/templates/settings/assets/settings.twig
@@ -54,7 +54,7 @@
id: 'tempUploadLocation',
label: 'Temp Uploads Location'|t('app'),
instructions: 'Where do you want to store temporary asset uploads?'|t('app'),
- warning: allVolumes is empty ? 'No volumes exist yet.'|t('app')
+ warning: allVolumes is empty ? 'No volumes exist yet.'|t('app') : 'Don’t select a volume that’s used by any Assets fields.',
}, tempVolumeInput) }}
diff --git a/src/templates/settings/assets/transforms/_settings.twig b/src/templates/settings/assets/transforms/_settings.twig
index 4eeb7eff7ae..e1b4b012b65 100644
--- a/src/templates/settings/assets/transforms/_settings.twig
+++ b/src/templates/settings/assets/transforms/_settings.twig
@@ -1,6 +1,6 @@
{% extends '_layouts/cp.twig' %}
-{% import '_includes/forms.twig' as forms %}
+{% set fullPageForm = true %}
{% set crumbs = [
{ label: "Settings"|t('app'), url: url('settings') },
@@ -8,7 +8,16 @@
{ label: "Image Transforms"|t('app'), url: url('settings/assets/transforms') }
] %}
-{% set fullPageForm = true %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/assets/transforms/{handle}'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
+{% import '_includes/forms.twig' as forms %}
{% block content %}
diff --git a/src/templates/settings/assets/volumes/_edit.twig b/src/templates/settings/assets/volumes/_edit.twig
index 9c1e35467ed..4df25bf9678 100644
--- a/src/templates/settings/assets/volumes/_edit.twig
+++ b/src/templates/settings/assets/volumes/_edit.twig
@@ -35,7 +35,8 @@
name: 'fsHandle',
includeEnvVars: true,
value: volume.getFsHandle(false),
- options: fsOptions
+ options: fsOptions,
+ errors: volume.getErrors('fsHandle'),
}) }}
{{ forms.fsField({
@@ -45,7 +46,8 @@
name: 'transformFsHandle',
includeEnvVars: true,
value: volume.transformFsHandle(false),
- options: [{label: 'Same as asset filesystem'|t('app'), value: null}]|merge(craft.cp.getFsOptions())
+ options: [{label: 'Same as asset filesystem'|t('app'), value: null}]|merge(craft.cp.getFsOptions()),
+ errors: volume.getErrors('transformFsHandle'),
}) }}
{{ forms.textField({
diff --git a/src/templates/settings/categories/_edit.twig b/src/templates/settings/categories/_edit.twig
index dc804d1a1e6..11ccaed85db 100644
--- a/src/templates/settings/categories/_edit.twig
+++ b/src/templates/settings/categories/_edit.twig
@@ -2,6 +2,15 @@
{% set fullPageForm = true %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/categories/{id}'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
{% import '_includes/forms.twig' as forms %}
{% set headlessMode = craft.app.config.general.headlessMode %}
diff --git a/src/templates/settings/email/_index.twig b/src/templates/settings/email/_index.twig
index a7cc6b0c3d0..df51e98b5cf 100644
--- a/src/templates/settings/email/_index.twig
+++ b/src/templates/settings/email/_index.twig
@@ -2,12 +2,21 @@
{% extends '_layouts/cp.twig' %}
+{% set title = 'Email Settings'|t('app') %}
+{% set fullPageForm = true %}
+
{% set crumbs = [
{ label: "Settings"|t('app'), url: url('settings') }
] %}
-{% set fullPageForm = true %}
-{% set title = "Email Settings"|t('app') %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/email'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
{% import '_includes/forms.twig' as forms %}
diff --git a/src/templates/settings/fields/_edit.twig b/src/templates/settings/fields/_edit.twig
index 3dcaff3d485..cc61ae84976 100644
--- a/src/templates/settings/fields/_edit.twig
+++ b/src/templates/settings/fields/_edit.twig
@@ -7,6 +7,12 @@
shortcut: true,
retainScroll: true,
},
+ {
+ label: 'Save and add another'|t('app'),
+ shortcut: true,
+ shift: true,
+ params: {addAnother: 1},
+ },
fieldId ?? false ? {
label: 'Delete'|t('app'),
action: 'fields/delete-field',
@@ -147,7 +153,7 @@
{% endblock %}
-{% if field is empty or field.handle is empty %}
+{% if not (field.handle ?? false) %}
{% js %}
new Craft.HandleGenerator('#name', '#handle');
{% endjs %}
diff --git a/src/templates/settings/filesystems/_edit.twig b/src/templates/settings/filesystems/_edit.twig
index d9d6ad2af8c..5d99e44ea78 100644
--- a/src/templates/settings/filesystems/_edit.twig
+++ b/src/templates/settings/filesystems/_edit.twig
@@ -69,13 +69,14 @@
{{ forms.lightswitchField({
label: 'Files in this filesystem have public URLs'|t('app'),
name: 'hasUrls',
+ id: 'has-urls',
on: filesystem.hasUrls,
- toggle: filesystem.getShowUrlSetting() ? "url-field" : null
+ toggle: filesystem.getShowUrlSetting() ? "url-field-container" : null
}) }}
{% endif %}
{% if filesystem.getShowUrlSetting() %}
-
+
{{ forms.autosuggestField({
label: "Base URL"|t('app'),
instructions: "The base URL to the files in this filesystem."|t('app'),
diff --git a/src/templates/settings/general/_index.twig b/src/templates/settings/general/_index.twig
index e289e65f32e..754c7ddb759 100644
--- a/src/templates/settings/general/_index.twig
+++ b/src/templates/settings/general/_index.twig
@@ -7,6 +7,15 @@
{ label: "Settings"|t('app'), url: url('settings') }
] %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/general'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
{# set defaults #}
{% set system = {
name: null,
diff --git a/src/templates/settings/globals/_edit.twig b/src/templates/settings/globals/_edit.twig
index adf0fa395da..2bac59cc584 100644
--- a/src/templates/settings/globals/_edit.twig
+++ b/src/templates/settings/globals/_edit.twig
@@ -1,6 +1,15 @@
{% extends '_layouts/cp.twig' %}
{% set fullPageForm = true %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/globals/{id}'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
{% import '_includes/forms.twig' as forms %}
diff --git a/src/templates/settings/plugins/_settings.twig b/src/templates/settings/plugins/_settings.twig
index e6cd7aa54ad..867c9550b4b 100644
--- a/src/templates/settings/plugins/_settings.twig
+++ b/src/templates/settings/plugins/_settings.twig
@@ -1,16 +1,23 @@
{% requireAdmin %}
+{% extends "_layouts/cp" %}
+{% set title = plugin.name %}
+{% set docTitle = title ~ ' - ' ~ "Plugins"|t('app') %}
+{% set fullPageForm = true %}
+
{% set crumbs = [
{ label: "Settings"|t('app'), url: url('settings') },
{ label: "Plugins"|t('app'), url: url('settings/plugins') }
] %}
-{% set fullPageForm = true %}
-
-
-{% extends "_layouts/cp" %}
-{% set title = plugin.name %}
-{% set docTitle = title ~ ' - ' ~ "Plugins"|t('app') %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: "settings/plugins/#{plugin.handle}"|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
{% block content %}
diff --git a/src/templates/settings/sites/_edit.twig b/src/templates/settings/sites/_edit.twig
index bcf07701a54..1f12b240c53 100644
--- a/src/templates/settings/sites/_edit.twig
+++ b/src/templates/settings/sites/_edit.twig
@@ -2,6 +2,15 @@
{% set fullPageForm = true %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/sites/{id}'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
{% import '_includes/forms.twig' as forms %}
diff --git a/src/templates/settings/tags/_edit.twig b/src/templates/settings/tags/_edit.twig
index 27d3895e4a8..eabd214c038 100644
--- a/src/templates/settings/tags/_edit.twig
+++ b/src/templates/settings/tags/_edit.twig
@@ -2,6 +2,15 @@
{% set fullPageForm = true %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/tags/{id}'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
{% import '_includes/forms.twig' as forms %}
{% block content %}
diff --git a/src/templates/settings/users/groups/_edit.twig b/src/templates/settings/users/groups/_edit.twig
index 27cae880f81..97e6dec2d3c 100644
--- a/src/templates/settings/users/groups/_edit.twig
+++ b/src/templates/settings/users/groups/_edit.twig
@@ -11,6 +11,15 @@
{ label: "User Groups"|t('app'), url: url('settings/users') }
] %}
+{% set formActions = [
+ {
+ label: 'Save and continue editing'|t('app'),
+ redirect: 'settings/users/groups/{id}'|hash,
+ shortcut: true,
+ retainScroll: true,
+ },
+] %}
+
{% if group is not defined and groupId is defined %}
{% set group = craft.app.userGroups.getGroupById(groupId) %}
diff --git a/src/templates/users/_accountfields.twig b/src/templates/users/_accountfields.twig
index 3e0de828129..1f81c3327d4 100644
--- a/src/templates/users/_accountfields.twig
+++ b/src/templates/users/_accountfields.twig
@@ -1,5 +1,7 @@
{% import '_includes/forms.twig' as forms %}
+{% set isCurrentUser = isCurrentUser ?? (user is defined and user.getIsCurrent()) %}
{% set static = static ?? false %}
+{% set meta = meta ?? false %}
{% if not craft.app.config.general.useEmailAsUsername %}
{{ forms.textField({
@@ -9,9 +11,9 @@
name: 'username',
value: (user is defined ? user.username : null),
autofocus: true,
- autocomplete: false,
+ autocomplete: isCurrentUser ? 'username' : false,
autocapitalize: false,
- disabled: static or (isNewUser or (currentUser.admin or user.getIsCurrent()) ? false : true),
+ disabled: static or (isNewUser or (currentUser.admin or isCurrentUser) ? false : true),
errors: (user is defined ? user.getErrors('username') : null),
inputAttributes: {
data: {lpignore: 'true'},
@@ -19,16 +21,52 @@
}) }}
{% endif %}
-{{ forms.textField({
- label: "Full Name"|t('app'),
- id: 'fullName',
- name: 'fullName',
- value: user.fullName,
- autocomplete: false,
- errors: user.getErrors('fullName'),
- autofocus: craft.app.config.general.useEmailAsUsername,
- inputAttributes: {
- data: {lpignore: 'true'},
- },
- disabled: static,
-}) }}
+{% if craft.app.config.general.showFirstAndLastNameFields %}
+ {% if not meta %}
+
+ {% endif %}
+ {{ forms.textField({
+ fieldClass: not meta ? 'flex-grow',
+ label: 'First Name'|t('app'),
+ id: 'firstName',
+ name: 'firstName',
+ value: user.firstName,
+ autocomplete: isCurrentUser ? 'given-name' : false,
+ errors: user.getErrors('firstName'),
+ autofocus: craft.app.config.general.useEmailAsUsername,
+ inputAttributes: {
+ data: {lpignore: 'true'},
+ },
+ disabled: static,
+ }) }}
+ {{ forms.textField({
+ fieldClass: not meta ? 'flex-grow',
+ label: 'Last Name'|t('app'),
+ id: 'lastName',
+ name: 'lastName',
+ value: user.lastName,
+ autocomplete: isCurrentUser ? 'family-name' : false,
+ errors: user.getErrors('lastName'),
+ inputAttributes: {
+ data: {lpignore: 'true'},
+ },
+ disabled: static,
+ }) }}
+ {% if not meta %}
+
+ {% endif %}
+{% else %}
+ {{ forms.textField({
+ label: "Full Name"|t('app'),
+ id: 'fullName',
+ name: 'fullName',
+ value: user.fullName,
+ autocomplete: isCurrentUser ? 'name' : false,
+ errors: user.getErrors('fullName'),
+ autofocus: craft.app.config.general.useEmailAsUsername,
+ inputAttributes: {
+ data: {lpignore: 'true'},
+ },
+ disabled: static,
+ }) }}
+{% endif %}
diff --git a/src/templates/users/_edit.twig b/src/templates/users/_edit.twig
index dab5ea68eee..42825de8c1f 100644
--- a/src/templates/users/_edit.twig
+++ b/src/templates/users/_edit.twig
@@ -112,6 +112,7 @@
name: 'email',
value: user.email,
type: 'email',
+ autocomplete: isCurrentUser ? 'email' : false,
errors: user.getErrors('email')|merge(user.getErrors('unverifiedEmail')),
inputAttributes: {
data: {lpignore: 'true'},
diff --git a/src/translations/ar/app.php b/src/translations/ar/app.php
index d4e21e4789b..64ef732c789 100644
--- a/src/translations/ar/app.php
+++ b/src/translations/ar/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'السداد مع الخروج',
'Choose a currency…' => 'اختر عملة…',
'Choose a new password' => 'اختر كلمة مرور جديدة',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'اختر كلمة مرور',
'Choose a site' => 'اختر موقع',
'Choose a user group that publicly-registered members will be added to by default.' => 'اختر مجموعة مستخدمين بحيث يتم افتراضياً إضافة من سجل عبر التسجيل العام من المستخدمين إليها.',
@@ -309,6 +310,7 @@
'Connect the database' => 'الاتصال بقاعدة البيانات',
'Connecting to CraftCMS.com…' => 'جاري الاتصال بـ CraftCMS.com...',
'Constraints' => 'القيود',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'المحتوى',
'Contents of {path}' => 'محتوى {path}',
'Context' => 'السياق',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'تعذر تثبيت الملحق.',
'Couldn’t load CMS editions.' => 'تعذر تحميل إصدارات CMS.',
'Couldn’t load active trials.' => 'لا يمكن تحميل النسخ التجريبية النشطة.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'تعذرت استعادة قاعدة البيانات. كيف ترغب في المتابعة؟',
'Couldn’t save address fields.' => 'تعذر حفظ حقول العنوان.',
'Couldn’t save email settings.' => 'تعذر حفظ إعدادات البريد.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'يبدو أن هذه الإعدادات يتم تجاوزها بواسطة {paths}.',
'Item' => 'عنصر',
'Items in your cart' => 'العناصر الموجودة في السلة الخاصة بك',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'لا يمكن إعادة تسمية المجلد العلوي لوحدة التخزين.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'يجب تمكين JavaScript للوصول إلى لوحة تحكم Craft.',
'Job Data' => 'بيانات المهمة',
@@ -851,7 +855,8 @@
'Loading' => 'جار التحميل',
'Local Folder' => 'المجلد المحلي',
'Local copies of remote images, generated thumbnails' => 'نسخ محلية من الصور عن بعد، والصور المصغرة التي تم إنشاؤها',
- 'Local volumes cannot be located within system directories.' => 'لا يمكن وضع وحدات التخزين المحلية داخل أدلة النظام.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'إضفاء الطابع اللغوي على العلاقات',
'Location' => 'الموقع',
'Locations that should be available for previewing entries in this section.' => 'المواقع التي يجب أن تكون متاحة لمعاينة الإدخالات في هذا القسم.',
@@ -1294,6 +1299,7 @@
'See all' => 'عرض الكل',
'See logs' => 'عرض السجلات',
'Select All' => 'تحديد الكل',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'تحديد وحدة تخزين',
'Select all' => 'تحديد الكل',
'Select element' => 'تحديد العنصر',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'لم يتم إعداد النظام لديك على حفظ المحتوى للموقع "{site}".',
'Your {folder} folder isn’t writable.' => 'مجلد {folder} الخاص بك غير قابل للكتابة فوقه.',
'You’re all up to date!' => 'لديك آخر تحديث!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'الرمز البريدي',
'account_activation_body' => "مرحبا {{user.friendlyName|e}}،\n\nشكراً لإنشائك حساباً في {{siteName}}! لتفعيل حسابك، انقر على الرابط التالي:\n\n<{{link}}>\n\nإذا لم تكن تتوقع هذه الرسالة، ما عليك سوى تجاهلها.",
'account_activation_heading' => 'عندما ينشئ أحدهم حساباً:',
diff --git a/src/translations/cs/app.php b/src/translations/cs/app.php
index 12f9a288920..960572af5ae 100644
--- a/src/translations/cs/app.php
+++ b/src/translations/cs/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Odhlášení',
'Choose a currency…' => 'Vyberte měnu…',
'Choose a new password' => 'Vyberte nové heslo',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Zvolte heslo',
'Choose a site' => 'Vyberte stránku',
'Choose a user group that publicly-registered members will be added to by default.' => 'Vyberte uživatelskou skupinu, do které budou automaticky přidávání všichni nově zaregistrovaní uživatelé.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Připojit databázi',
'Connecting to CraftCMS.com…' => 'Připojování k CraftCMS.com…',
'Constraints' => 'Překážky',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Obsah',
'Contents of {path}' => 'Obsah {path}',
'Context' => 'Kontext',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Nepodařilo se nainstalovat plugin.',
'Couldn’t load CMS editions.' => 'Nepodařilo se nahrát edice CMS.',
'Couldn’t load active trials.' => 'Nelze načíst aktivní testy.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Databázi nelze obnovit. Jak chcete pokračovat?',
'Couldn’t save address fields.' => 'Nepodařilo se uložit pole adresy.',
'Couldn’t save email settings.' => 'Nepodařilo se uložit nastavení emailu.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Vypadá to, že je toto nastavení přepisováno {paths}.',
'Item' => 'Položka',
'Items in your cart' => 'Položky v košíku',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Nelze přejmenovat složku na nejvyšší úrovni svazku.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'Pro přístup do ovládacího panelu Craft CMS musíte zapnout JavaScript.',
'Job Data' => 'Data úlohy',
@@ -851,7 +855,8 @@
'Loading' => 'Nahrává se',
'Local Folder' => 'Lokální adresář',
'Local copies of remote images, generated thumbnails' => 'Lokální kopie vzdálených obrázků, generované miniatury',
- 'Local volumes cannot be located within system directories.' => 'Místní svazky nelze umístit do systémových adresářů.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Lokalizuji vazby',
'Location' => 'Lokace',
'Locations that should be available for previewing entries in this section.' => 'Místa, která by měla být k dispozici pro náhled záznamů v této části.',
@@ -1294,6 +1299,7 @@
'See all' => 'Zobrazit vše',
'See logs' => 'Zobrazit záznamy',
'Select All' => 'Vybrat všechny',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Vybrat svazek',
'Select all' => 'Vybrat všechny',
'Select element' => 'Vybrat prvek',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Váš systém není u webu „{site}“ nastaven na ukládání obsahu.',
'Your {folder} folder isn’t writable.' => 'Do vaší složky {folder} nelze zapisovat.',
'You’re all up to date!' => 'Vše je aktuální!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'PSČ',
'account_activation_body' => "Ahoj {{user.friendlyName|e}},\n\nděkujeme za vytvoření uživatelského účtu na webu {{siteName}}! Pro aktivaci svého účtu prosím otevři následující odkaz:\n\n<{{link}}>\n\nPokud nevíte, o co se jedná, klidně tuto zprávu ignorujte.",
'account_activation_heading' => 'Když někdo vytvoří účet:',
diff --git a/src/translations/da/app.php b/src/translations/da/app.php
index 3e8ca208be4..e657b45b39b 100644
--- a/src/translations/da/app.php
+++ b/src/translations/da/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Betaling',
'Choose a currency…' => 'Vælg en valuta…',
'Choose a new password' => 'Vælg et nyt kodeord.',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Vælg en adgangskode',
'Choose a site' => 'Vælg et site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Vælg en brugergruppe som offentligt-registrerede brugere vil blive tilføjet til som standard.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Tilslut databasen',
'Connecting to CraftCMS.com…' => 'Opretter forbindelse til CraftCMS.com…',
'Constraints' => 'Begrænsninger',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Indhold',
'Contents of {path}' => 'Indhold af {path}',
'Context' => 'Kontekst',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Kunne ikke installere plugin.',
'Couldn’t load CMS editions.' => 'Kunne ikke indlæse CMS-udgaver.',
'Couldn’t load active trials.' => 'Kunne ikke indlæse aktive prøver.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Kan ikke gendanne databasen. Hvordan vil du fortsætte?',
'Couldn’t save address fields.' => 'Kunne ikke gemme adressefelter.',
'Couldn’t save email settings.' => 'Kunne ikke gemme email indstillinger.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Det ser ud til, at disse indstillinger overskrives af {paths}.',
'Item' => 'Element',
'Items in your cart' => 'Elementer i din kurv',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Den øverste mappe på en diskenhed kan ikke omdøbes.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript skal være slået til for at kunne tilgå Craft CMS- kontrolpanelet.',
'Job Data' => 'Jobdata',
@@ -851,7 +855,8 @@
'Loading' => 'Indlæser',
'Local Folder' => 'Lokal mappe',
'Local copies of remote images, generated thumbnails' => 'Lokale kopier af fjernbilleder, genererede miniaturer',
- 'Local volumes cannot be located within system directories.' => 'Lokale diskenheder kan ikke befinde sig indeni systemmapper.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Oversættelses relationer',
'Location' => 'Placering',
'Locations that should be available for previewing entries in this section.' => 'Placeringer, som skal være tilgængelige til forhåndsvisning af poster i denne sektion.',
@@ -1294,6 +1299,7 @@
'See all' => 'Se alle',
'See logs' => 'Se logfiler',
'Select All' => 'Vælg alle',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Vælg en diskenhed',
'Select all' => 'Vælg alle',
'Select element' => 'Vælg element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Dit system er ikke konfigureret til at gemme indhold for sitet “{site}”.',
'Your {folder} folder isn’t writable.' => 'Din {folder}- mappe er ikke skrivbar.',
'You’re all up to date!' => 'Du er helt up-to-date!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Postnummer',
'account_activation_body' => "Hej {{user.friendlyName|e}}. Tak fordi du opretter en konto med {{siteName}}! Aktiver din konto ved at klikke på følgende link:
diff --git a/src/translations/de-CH/app.php b/src/translations/de-CH/app.php
index ae6007977c1..7259350eb1d 100644
--- a/src/translations/de-CH/app.php
+++ b/src/translations/de-CH/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Zur Kasse',
'Choose a currency…' => 'Währung auswählen…',
'Choose a new password' => 'Ein neues Passwort wählen',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Ein Passwort wählen',
'Choose a site' => 'Wähle eine Seite',
'Choose a user group that publicly-registered members will be added to by default.' => 'Wählen Sie eine Benutzergruppe, der öffentlich registrierte Mitglieder standardmässig hinzugefügt werden.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Die Datenbank verbinden',
'Connecting to CraftCMS.com…' => 'Verbindung mit CraftCMS.com wird hergestellt…',
'Constraints' => 'Einschränkungen',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Inhalt',
'Contents of {path}' => 'Inhalt von {path}',
'Context' => 'Kontext',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Plug-ins konnten nicht installiert werden.',
'Couldn’t load CMS editions.' => 'CMS-Versionen konnten nicht geladen werden.',
'Couldn’t load active trials.' => 'Aktive Testversion konnte nicht geladen werden.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Datenbank konnte nicht wiederhergestellt werden. Wie möchten Sie fortfahren?',
'Couldn’t save address fields.' => 'Addressfelder konnten nicht gespeichert werden.',
'Couldn’t save email settings.' => 'E-Mail-Einstellungen konnten nicht gespeichert werden.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Es scheint, als wurden diese Einstellungen von {paths} überschrieben.',
'Item' => 'Element',
'Items in your cart' => 'Artikel in Ihrem Warenkorb',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Der oberste Ordner eines Volumen kann nicht umbenannt werden.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript muss aktiviert sein, um auf das Craft CMS Control Panel zugreifen zu können.',
'Job Data' => 'Aufgabendaten',
@@ -851,7 +855,8 @@
'Loading' => 'Wird geladen',
'Local Folder' => 'Lokaler Ordner',
'Local copies of remote images, generated thumbnails' => 'Lokale Kopien von externen Bildern, generierte Vorschaubilder',
- 'Local volumes cannot be located within system directories.' => 'Lokale Volumen können sich nicht innerhalb von Systemverzeichnissen befinden.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Relationen lokalisieren',
'Location' => 'Standort',
'Locations that should be available for previewing entries in this section.' => 'Orte, die für die Vorschau der Einträge in dieser Sektion verfügbar sein sollen.',
@@ -1294,6 +1299,7 @@
'See all' => 'Alle ansehen',
'See logs' => 'Protokolle einsehen',
'Select All' => 'Alle auswählen',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Volume auswählen',
'Select all' => 'Alle auswählen',
'Select element' => 'Element auswählen',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Ihr System ist für das Speichern von Inhalten der Website «{site}» nicht eingerichtet.',
'Your {folder} folder isn’t writable.' => 'Ihr Ordner {folder} ist nicht beschreibbar.',
'You’re all up to date!' => 'Sie sind auf dem aktuellsten Stand!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Postleitzahl',
'account_activation_body' => "Hallo {{user.friendlyName|e}},\n\ndanke für das Einrichten eines Benutzerkontos auf {{siteName}}. Um Ihr Konto zu aktivieren, klicken Sie bitte auf den folgenden Link:\n\n<{{link}}>\n\nWenn Sie diese E-Mail nicht erwartet haben, ignorieren Sie sie bitte einfach.",
'account_activation_heading' => 'Wenn jemand ein Benutzerkonto anlegt:',
diff --git a/src/translations/de/app.php b/src/translations/de/app.php
index eb971e17070..fef65f5fd3f 100644
--- a/src/translations/de/app.php
+++ b/src/translations/de/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Zur Kasse',
'Choose a currency…' => 'Wähle eine Währung…',
'Choose a new password' => 'Ein neues Passwort wählen',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Ein Passwort wählen',
'Choose a site' => 'Wähle eine Seite',
'Choose a user group that publicly-registered members will be added to by default.' => 'Wählen Sie eine Benutzergruppe, der öffentlich registrierte Mitglieder standardmäßig hinzugefügt werden.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Die Datenbank verbinden',
'Connecting to CraftCMS.com…' => 'Verbindung mit CraftCMS.com wird hergestellt…',
'Constraints' => 'Einschränkungen',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Inhalt',
'Contents of {path}' => 'Inhalt von {path}',
'Context' => 'Kontext',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Plug-ins konnten nicht installiert werden.',
'Couldn’t load CMS editions.' => 'CMS Editionen konnten nicht geladen werden.',
'Couldn’t load active trials.' => 'Aktive Testversion konnte nicht geladen werden.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Datenbank konnte nicht wiederhergestellt werden. Wie möchten Sie fortfahren?',
'Couldn’t save address fields.' => 'Adressfelder konnten nicht gespeichert werden.',
'Couldn’t save email settings.' => 'E-Mail-Einstellungen konnten nicht gespeichert werden.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Es scheint, als wurden diese Einstellungen von {paths} überschrieben.',
'Item' => 'Element',
'Items in your cart' => 'Artikel in Ihrem Warenkorb',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Der oberste Ordner eines Volumen kann nicht umbenannt werden.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript muss aktiviert sein, um auf das Craft CMS Control Panel zugreifen zu können.',
'Job Data' => 'Aufgabendaten',
@@ -851,7 +855,8 @@
'Loading' => 'Wird geladen',
'Local Folder' => 'Lokaler Ordner',
'Local copies of remote images, generated thumbnails' => 'Lokale Kopien von externen Bildern, generierte Vorschaubilder',
- 'Local volumes cannot be located within system directories.' => 'Lokale Volumen können sich nicht innerhalb von Systemverzeichnissen befinden.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Relationen lokalisieren',
'Location' => 'Standort',
'Locations that should be available for previewing entries in this section.' => 'Orte, die für die Vorschau der Einträge in dieser Sektion verfügbar sein sollen.',
@@ -1044,8 +1049,8 @@
'Only one source is allowed when relating ancestors.' => 'Es ist nur eine Quelle beim Verknüpfen von Vorfahren erlaubt.',
'Only save blocks to the site they were created in' => 'Speichere Blöcke nur auf der Seite, auf welcher sie erstellt wurden',
'Only save entries to the site they were created in' => 'Speichere Einträge nur auf der Seite, auf welcher sie erstellt wurden',
- 'Only show for users who match the following rules:' => 'Zeige nur Benutzer an, die die folgenden Bedingungen erfüllen:',
- 'Only show when editing {type} that match the following rules:' => 'Nur anzeigen, wenn {type} bearbeitet wird und die folgenden Bedingungen erfüllt sind:',
+ 'Only show for users who match the following rules:' => 'Nur für Benutzer anzeigen, die die folgenden Bedingungen erfüllen:',
+ 'Only show when editing {type} that match the following rules:' => 'Nur anzeigen, wenn {type} bearbeitet werden, die die folgenden Bedingungen erfüllen:',
'Only up to {version} is compatible with your version of Craft.' => 'Nur bis Version {version} mit Ihrer Version von Craft kompatibel.',
'Oops!' => 'Huch!',
'Open PRs' => 'Offene PRs',
@@ -1294,6 +1299,7 @@
'See all' => 'Alle ansehen',
'See logs' => 'Protokolle einsehen',
'Select All' => 'Alle auswählen',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Volumen auswählen',
'Select all' => 'Alle auswählen',
'Select element' => 'Element auswählen',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Ihr System ist für das Speichern von Inhalten der Website „{site}“ nicht eingerichtet.',
'Your {folder} folder isn’t writable.' => 'Ihr Ordner {folder} ist nicht schreibbar.',
'You’re all up to date!' => 'Sie sind auf dem aktuellen Stand!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Postleitzahl',
'account_activation_body' => "Hallo {{user.friendlyName|e}},\n\ndanke für das Einrichten eines Benutzerkontos auf {{siteName}}. Um Ihr Konto zu aktivieren, klicken Sie bitte auf den folgenden Link:\n\n<{{link}}>\n\nWenn Sie diese E-Mail nicht erwartet haben, ignorieren Sie sie bitte einfach.",
'account_activation_heading' => 'Wenn jemand ein Benutzerkonto anlegt:',
diff --git a/src/translations/en-GB/app.php b/src/translations/en-GB/app.php
index 45833e87e94..124f348443e 100644
--- a/src/translations/en-GB/app.php
+++ b/src/translations/en-GB/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Checkout',
'Choose a currency…' => 'Choose a currency…',
'Choose a new password' => 'Choose a new password',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Choose a password',
'Choose a site' => 'Choose a site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Choose a user group that publicly-registered members will be added to by default.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Connect the database',
'Connecting to CraftCMS.com…' => 'Connecting to CraftCMS.com…',
'Constraints' => 'Constraints',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Content',
'Contents of {path}' => 'Contents of {path}',
'Context' => 'Context',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Couldn’t install plugin.',
'Couldn’t load CMS editions.' => 'Couldn’t load CMS editions.',
'Couldn’t load active trials.' => 'Couldn’t load active trials.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Couldn’t restore the database. How would you like to proceed?',
'Couldn’t save address fields.' => 'Couldn’t save address fields.',
'Couldn’t save email settings.' => 'Couldn’t save email settings.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'It looks like these settings are being overridden by {paths}.',
'Item' => 'Item',
'Items in your cart' => 'Items in your cart',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'It’s not possible to rename the top folder of a Volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript must be enabled to access the Craft CMS control panel.',
'Job Data' => 'Job Data',
@@ -851,7 +855,8 @@
'Loading' => 'Loading',
'Local Folder' => 'Local Folder',
'Local copies of remote images, generated thumbnails' => 'Local copies of remote images, generated thumbnails',
- 'Local volumes cannot be located within system directories.' => 'Local volumes cannot be located within system directories.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Localising relations',
'Location' => 'Location',
'Locations that should be available for previewing entries in this section.' => 'Locations that should be available for previewing entries in this section.',
@@ -1294,6 +1299,7 @@
'See all' => 'See all',
'See logs' => 'See logs',
'Select All' => 'Select All',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Select a volume',
'Select all' => 'Select all',
'Select element' => 'Select element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Your system isn’t set up to save content for the site “{site}”.',
'Your {folder} folder isn’t writable.' => 'Your {folder} folder isn’t writable.',
'You’re all up to date!' => 'You’re all up to date!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Zip Code',
'account_activation_body' => "Hey {{user.friendlyName|e}},\n\nThanks for creating an account with {{siteName}}! To activate your account, click the following link:\n\n<{{link}}>\n\nIf you weren’t expecting this email, just ignore it.",
'account_activation_heading' => 'When someone creates an account:',
diff --git a/src/translations/en/app.php b/src/translations/en/app.php
index dbd360f302e..376822af7fb 100644
--- a/src/translations/en/app.php
+++ b/src/translations/en/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Checkout',
'Choose a currency…' => 'Choose a currency…',
'Choose a new password' => 'Choose a new password',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Choose a password',
'Choose a site' => 'Choose a site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Choose a user group that publicly-registered members will be added to by default.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Connect the database',
'Connecting to CraftCMS.com…' => 'Connecting to CraftCMS.com…',
'Constraints' => 'Constraints',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Content',
'Contents of {path}' => 'Contents of {path}',
'Context' => 'Context',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Couldn’t install plugin.',
'Couldn’t load CMS editions.' => 'Couldn’t load CMS editions.',
'Couldn’t load active trials.' => 'Couldn’t load active trials.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Couldn’t restore the database. How would you like to proceed?',
'Couldn’t save address fields.' => 'Couldn’t save address fields.',
'Couldn’t save email settings.' => 'Couldn’t save email settings.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'It looks like these settings are being overridden by {paths}.',
'Item' => 'Item',
'Items in your cart' => 'Items in your cart',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'It’s not possible to rename the top folder of a Volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript must be enabled to access the Craft CMS control panel.',
'Job Data' => 'Job Data',
@@ -851,7 +855,8 @@
'Loading' => 'Loading',
'Local Folder' => 'Local Folder',
'Local copies of remote images, generated thumbnails' => 'Local copies of remote images, generated thumbnails',
- 'Local volumes cannot be located within system directories.' => 'Local volumes cannot be located within system directories.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Localizing relations',
'Location' => 'Location',
'Locations that should be available for previewing entries in this section.' => 'Locations that should be available for previewing entries in this section.',
@@ -1294,6 +1299,7 @@
'See all' => 'See all',
'See logs' => 'See logs',
'Select All' => 'Select All',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Select a volume',
'Select all' => 'Select all',
'Select element' => 'Select element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Your system isn’t set up to save content for the site “{site}”.',
'Your {folder} folder isn’t writable.' => 'Your {folder} folder isn’t writable.',
'You’re all up to date!' => 'You’re all up to date!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Zip Code',
'account_activation_body' => "Hey {{user.friendlyName|e}},\n\nThanks for creating an account with {{systemName}}! To activate your account, click the following link:\n\n<{{link}}>\n\nIf you were not expecting this email, just ignore it.",
'account_activation_heading' => 'When someone creates an account:',
diff --git a/src/translations/es/app.php b/src/translations/es/app.php
index a6e855a1de7..e10ec0a4b30 100644
--- a/src/translations/es/app.php
+++ b/src/translations/es/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Pagar',
'Choose a currency…' => 'Elegir una moneda…',
'Choose a new password' => 'Elije una contraseña nueva',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Elije una contraseña',
'Choose a site' => 'Seleccionar un sitio',
'Choose a user group that publicly-registered members will be added to by default.' => 'Selecciona un grupo de usuarios al cual pertenecerán los miembros registrados en el área pública.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Conectarse a la base de datos',
'Connecting to CraftCMS.com…' => 'Conectándose a CraftCMS.com…',
'Constraints' => 'Limitaciones',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Contenido',
'Contents of {path}' => 'Contenido de {path}',
'Context' => 'Contexto',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'No se puede instalar el plugin.',
'Couldn’t load CMS editions.' => 'No se pudieron cargar las ediciones de CMS.',
'Couldn’t load active trials.' => 'No se han podido cargar pruebas activas.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'No se pudo restaurar la base de datos. ¿Cómo desea proceder?',
'Couldn’t save address fields.' => 'No se han podido guardar los campos de dirección.',
'Couldn’t save email settings.' => 'No se puede guardar la configuración de email.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Parece que estas configuraciones están siendo reemplazadas por {paths}.',
'Item' => 'Elemento',
'Items in your cart' => 'Elementos en tu carrito',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'No se puede cambiar el nombre de la carpeta superior de un volumen.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript debe estar activado para acceder al panel de control de Craft CMS.',
'Job Data' => 'Datos del trabajo',
@@ -851,7 +855,8 @@
'Loading' => 'Cargando',
'Local Folder' => 'Carpeta local',
'Local copies of remote images, generated thumbnails' => 'Copias locales de imágenes remotas, miniaturas generadas',
- 'Local volumes cannot be located within system directories.' => 'No se pueden ubicar los volúmenes locales en los directorios del sistema.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Localizando relaciones',
'Location' => 'Ubicación',
'Locations that should be available for previewing entries in this section.' => 'Ubicaciones que deberían estar disponibles para previsualizar entradas en esta sección.',
@@ -1294,6 +1299,7 @@
'See all' => 'Ver todo',
'See logs' => 'Ver registros',
'Select All' => 'Seleccionar todo',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Seleccionar un volumen',
'Select all' => 'Seleccionar todo',
'Select element' => 'Seleccionar elemento',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Tu sistema no está configurado para guardar contenido para el sitio “{site}”.',
'Your {folder} folder isn’t writable.' => 'Su carpeta {folder} no se puede escribir.',
'You’re all up to date!' => '¡Estás al día!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Código postal',
'account_activation_body' => "Hola, {{user.friendlyName|e}}:\n\n¡Gracias por crear una cuenta con {{siteName}}! Para activar tu cuenta, pulsa en el siguiente enlace:\n\n<{{link}}>\n\nSi no estabas esperando este correo electrónico, ignóralo.",
'account_activation_heading' => 'Cuando alguien crea una cuenta:',
diff --git a/src/translations/fa/app.php b/src/translations/fa/app.php
index d1ef1b411f3..6caed711636 100644
--- a/src/translations/fa/app.php
+++ b/src/translations/fa/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'پرداخت',
'Choose a currency…' => 'انتخاب یک واحد پول…',
'Choose a new password' => 'انتخاب کردن یک رمز عبور جدید',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'انتخاب یک رمز عبور',
'Choose a site' => 'انتخاب یک سایت',
'Choose a user group that publicly-registered members will be added to by default.' => 'گروه کاربری را که اعضای به شکل عمومی ثبت شده به طور پیش فرض به آن اضافه می شوند را انتخاب نمایید.',
@@ -309,6 +310,7 @@
'Connect the database' => 'اتصال پایگاه داده',
'Connecting to CraftCMS.com…' => 'در حال اتصال به CraftCMS.com…',
'Constraints' => 'محدودیتها',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'محتوا',
'Contents of {path}' => 'محتوای {path}',
'Context' => 'بافت',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'نتوانست پلاگین را نصب کند.',
'Couldn’t load CMS editions.' => 'قادر به بارگذاری ویرایشهای CMS نیست.',
'Couldn’t load active trials.' => 'دورههای آزمایشی فعال بارگذاری نشدند.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'نتوانست پایگاه داده را برگرداند. چطور تمایل به ادامه دارید؟',
'Couldn’t save address fields.' => 'نتوانست فیلدهای نشانی را ذخیره نماید.',
'Couldn’t save email settings.' => 'نتوانست تنظیمات پست الکترونیکی را ذخیره نماید.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'به نظر می رسد این تنظیمات بوسیله {paths} دوباره نویسی شده اند.',
'Item' => 'آیتم',
'Items in your cart' => 'آیتم های سبد خرید شما',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'تغییر نام پوشه بالایی یک مخزن امکان پذیر نیست.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'برای دسترسی به صفحه کنترل Craft CMS، جاوااسکریپت باید فعال باشد.',
'Job Data' => 'اطلاعات کار',
@@ -851,7 +855,8 @@
'Loading' => 'بارگیری',
'Local Folder' => 'پوشه محلی',
'Local copies of remote images, generated thumbnails' => 'نسخههای محلی تصاویر راه دور، تصاویر کوچک تولیدشده',
- 'Local volumes cannot be located within system directories.' => 'مخزنهای محلی نمیتوانند در شاخههای سیستمی قرار بگیرند.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'محلی سازی رابطه ها',
'Location' => 'محل',
'Locations that should be available for previewing entries in this section.' => 'مکان هایی که برای پیش نمایش محتواها در این بخش باید در دسترس باشند.',
@@ -1294,6 +1299,7 @@
'See all' => 'مشاهده همه',
'See logs' => 'مشاهده لاگ ها',
'Select All' => 'انتخاب همه',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'انتخاب یک مخزن',
'Select all' => 'انتخاب همه',
'Select element' => 'انتخاب مؤلفه',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'سیستم شما برای ذخیره محتوا برای سایت "{site}" تنظیم نیست.',
'Your {folder} folder isn’t writable.' => 'پوشه {folder} شما قابل نوشتن نیست.',
'You’re all up to date!' => 'تمامی موارد شما بروز است!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'کد پستی',
'account_activation_body' => "سلام {{user.friendlyName|e}},\n\nاز ایجاد حساب کاربری در {{siteName}} ممنونیم! برای فعالسازی حساب کاربری خود لینک زیر را کلیک نمایید:\n\n<{{link}}>\n\nدر صورتی که انتظار این پیام را نداشتید آن را نادیده بگیرید.",
'account_activation_heading' => 'وقتی که فردی یک حساب کاربری می سازد:',
diff --git a/src/translations/fr-CA/app.php b/src/translations/fr-CA/app.php
index 117c66d7a58..d7b75c9c039 100644
--- a/src/translations/fr-CA/app.php
+++ b/src/translations/fr-CA/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Paiement',
'Choose a currency…' => 'Choisissez une devise…',
'Choose a new password' => 'Choisir un nouveau mot de passe',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Choisir un mot de passe',
'Choose a site' => 'Choisir un site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Choisir un groupe d’utilisateurs auquel les membres inscrits publiquement seront rattachés par défaut.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Connecter la base de données',
'Connecting to CraftCMS.com…' => 'Connexion à CraftCMS.com…',
'Constraints' => 'Contraintes',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Contenu',
'Contents of {path}' => 'Contenu de {path}',
'Context' => 'Contexte',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Impossible d’installer le plugiciel.',
'Couldn’t load CMS editions.' => 'Impossible de charger les éditions du CMS.',
'Couldn’t load active trials.' => 'Impossible de charger les essais en cours.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Impossible de restaurer la base de données. Que souhaitez-vous faire?',
'Couldn’t save address fields.' => 'Impossible d’enregistrer les champs d\'adresse.',
'Couldn’t save email settings.' => 'Impossible d’enregistrer les paramètres de courriel.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Il semble que ces paramètres ont été annulés par {paths}.',
'Item' => 'Élément',
'Items in your cart' => 'Articles dans votre panier',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Il est impossible de renommer le dossier supérieur dans la hiérarchie du volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript doit être activé pour accéder au panneau de configuration de Craft CMS.',
'Job Data' => 'Données de la tâche',
@@ -851,7 +855,8 @@
'Loading' => 'Chargement',
'Local Folder' => 'Dossier local',
'Local copies of remote images, generated thumbnails' => 'Copies locales des images distantes, vignettes générées',
- 'Local volumes cannot be located within system directories.' => 'Local volumes cannot be located within system directories.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Traduction des relations',
'Location' => 'Localisation',
'Locations that should be available for previewing entries in this section.' => 'Emplacements à proposer pour la prévisualisation des entrées de cette section.',
@@ -1294,6 +1299,7 @@
'See all' => 'Tout voir',
'See logs' => 'Voir les journaux',
'Select All' => 'Tout Sélectionner',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Sélectionner un volume',
'Select all' => 'Sélectionner tout',
'Select element' => 'Sélectionner l\'élément',
@@ -1845,6 +1851,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Votre système n’est pas paramétré pour enregistrer le contenu du site “{site}”.',
'Your {folder} folder isn’t writable.' => 'Votre dossier {folder} n’est pas accessible en écriture.',
'You’re all up to date!' => 'Vous être à jour!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Code postal',
'account_activation_body' => "Bonjour {{user.friendlyName|e}},\n\nMerci d’avoir créé un compte sur {{siteName}}! Pour activer ce compte, merci de cliquer sur le lien suivant :\n\n<{{link}}>\n\nSi vous n’attendiez aucun courriel de ce type, ignorez-le, tout simplement.",
'account_activation_heading' => 'Lorsqu\'un compte est créé :',
diff --git a/src/translations/fr/app.php b/src/translations/fr/app.php
index 53a4f4a23e1..bf6cd1d1cc0 100644
--- a/src/translations/fr/app.php
+++ b/src/translations/fr/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Paiement',
'Choose a currency…' => 'Choisissez une devise…',
'Choose a new password' => 'Choisir un nouveau mot de passe',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Choisir un mot de passe',
'Choose a site' => 'Choisir un site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Choisir un groupe d’utilisateurs auquel les membres inscrits publiquement seront rattachés par défaut.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Connectez la base de données',
'Connecting to CraftCMS.com…' => 'Connexion à CraftCMS.com…',
'Constraints' => 'Contraintes',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Contenu',
'Contents of {path}' => 'Contenu de {path}',
'Context' => 'Contexte',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Impossible d’installer le plugin.',
'Couldn’t load CMS editions.' => 'Impossible de charger les éditions du CMS.',
'Couldn’t load active trials.' => 'Impossible de charger les essais en cours.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Impossible de restaurer la base de données. Comment souhaitez-vous procéder ?',
'Couldn’t save address fields.' => 'Impossible d’enregistrer les champs d’adresse.',
'Couldn’t save email settings.' => 'Impossible d’enregistrer les paramètres de messagerie.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Il semble que ces paramètres sont remplacés par {paths}.',
'Item' => 'Article',
'Items in your cart' => 'Articles dans votre panier',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Il n’est pas possible de renommer le dossier de niveau supérieur d’un volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript doit être activé pour accéder au panneau de contrôle Craft CMS.',
'Job Data' => 'Données de la tâche',
@@ -851,7 +855,8 @@
'Loading' => 'Chargement',
'Local Folder' => 'Dossier local',
'Local copies of remote images, generated thumbnails' => 'Copies locales des images distantes, miniatures générées',
- 'Local volumes cannot be located within system directories.' => 'Les volumes locaux ne peuvent pas être situés dans des répertoires système.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Traduction des relations',
'Location' => 'Localisation',
'Locations that should be available for previewing entries in this section.' => 'Emplacements à proposer pour la prévisualisation des entrées de cette section.',
@@ -1294,6 +1299,7 @@
'See all' => 'Tout voir',
'See logs' => 'Voir les journaux',
'Select All' => 'Tout Sélectionner',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Sélectionner un volume',
'Select all' => 'Tout sélectionner',
'Select element' => 'Sélectionner un élément',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Votre système n’est pas paramétré pour enregistrer le contenu du site « {site} ».',
'Your {folder} folder isn’t writable.' => 'Votre dossier {folder} n’est pas accessible en écriture.',
'You’re all up to date!' => 'Vous êtes totalement à jour !',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Code postal',
'account_activation_body' => "Bonjour {{user.friendlyName|e}},\n\nMerci d’avoir créé un compte sur {{siteName}} ! Afin d’activer ce compte, merci de cliquer sur le lien suivant :\n\n<{{link}}>\n\nSi vous n’attendiez aucun email de ce type, ignorez-le, tout simplement.",
'account_activation_heading' => 'Quand quelqu’un crée un compte :',
diff --git a/src/translations/he/app.php b/src/translations/he/app.php
index b9edcb4e893..21145908938 100644
--- a/src/translations/he/app.php
+++ b/src/translations/he/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'יציאה',
'Choose a currency…' => 'בחר מטבע…',
'Choose a new password' => 'בחר סיסמה חדשה',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'בחר סיסמה',
'Choose a site' => 'בחר אתר',
'Choose a user group that publicly-registered members will be added to by default.' => 'בחר קבוצת משתמשים שתשמש כקבוצת ברירת מחדל לה יתווספו חברים חדשים שנרשמו בצורה פומבית.',
@@ -309,6 +310,7 @@
'Connect the database' => 'התחבר למסד הנתונים',
'Connecting to CraftCMS.com…' => 'מתחבר ל-CraftCMS.com…',
'Constraints' => 'אילוצים',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'תוכן',
'Contents of {path}' => 'התוכן של {path}',
'Context' => 'הקשר',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'לא ניתן להתקין את התוסף.',
'Couldn’t load CMS editions.' => 'לא ניתן לטעון מהדורות CMS.',
'Couldn’t load active trials.' => 'לא ניתן לטעון ניסיונות פעילים.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'לא ניתן לשחזר את מסד הנתונים. כיצד ברצונך להמשיך?',
'Couldn’t save address fields.' => 'לא ניתן לשמור את שדות הכתובת.',
'Couldn’t save email settings.' => 'לא ניתן לשמור את הגדרות האימייל.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'נראה שהגדרות אלה נמחקות ומוחלפות על-ידי {paths}.',
'Item' => 'פריט',
'Items in your cart' => 'פריטים בעגלה שלך',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'לא ניתן לשנות את שם התיקייה העליונה של אמצעי אחסון.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'כדי לקבל גישה ללוח הבקרה של Craft CMS יש לאפשר את JavaScript.',
'Job Data' => 'נתוני העבודה',
@@ -851,7 +855,8 @@
'Loading' => 'בטעינה',
'Local Folder' => 'תיקייה מקומית',
'Local copies of remote images, generated thumbnails' => 'עותקים מקומיים של תמונות מרוחקות, תמונות ממוזערות שנוצרו',
- 'Local volumes cannot be located within system directories.' => 'אמצעי אחסון מקומיים לא יכולים להימצא בתוך ספריות המערכת.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'לוקליזציה של קשרים',
'Location' => 'מיקום',
'Locations that should be available for previewing entries in this section.' => 'מיקומים שצריכים להיות זמינים לתצוגה מקדימה של רשומות בסקשן הזה.',
@@ -1294,6 +1299,7 @@
'See all' => 'הצג הכול',
'See logs' => 'עיין ביומנים',
'Select All' => 'בחר הכל',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'בחר אמצעי אחסון',
'Select all' => 'בחר הכל',
'Select element' => 'בחר פריט',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'המערכת שלך אינה מוגדרת לשמירת תוכן עבור האתר "{site}".',
'Your {folder} folder isn’t writable.' => 'התיקייה {folder} שלך אינה מורשית לכתיבה.',
'You’re all up to date!' => 'אתה משתמש בגרסה העדכנית ביותר!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'מיקוד',
'account_activation_body' => "שלום {{user.friendlyName|e}},\n\nתודה שיצרת חשבון ב{{siteName}}! להפעל החשבון שלך, לחץ על הלינק הבא:\n\n<{{link}}>\n\nאם לא ציפית לקבל את האימייל הזה, פשוט התעלם ממנו.",
'account_activation_heading' => 'כאשר מישהו יוצר חשבון:',
diff --git a/src/translations/hu/app.php b/src/translations/hu/app.php
index 06aa7ea8d8d..6c00b7de48a 100644
--- a/src/translations/hu/app.php
+++ b/src/translations/hu/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Fizetés',
'Choose a currency…' => 'Válasszon pénznemet…',
'Choose a new password' => 'Válasszon új jelszavat',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Válassz jelszót',
'Choose a site' => 'Válasszon webhelyet',
'Choose a user group that publicly-registered members will be added to by default.' => 'Válasszon csoportot, amelyikhez a nyilvánosan regisztrált felhasználók alapértelmezettként hozzá lesznek adva.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Az adatbázis csatlakoztatása',
'Connecting to CraftCMS.com…' => 'Kapcsolódás a CraftCMS.com webhelyhez…',
'Constraints' => 'Korlátozások',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Tartalom',
'Contents of {path}' => '{path} tartalma',
'Context' => 'Környezet',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Beépülő modul telepítése sikertelen.',
'Couldn’t load CMS editions.' => 'A CMS változatok betöltése sikertelen volt.',
'Couldn’t load active trials.' => 'Az aktív próbaverziók betöltése sikertelen volt.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Az adatbázis visszaállítása nem sikerült. Hogyan szeretné folytatni?',
'Couldn’t save address fields.' => 'A címmezők mentése sikertelen volt.',
'Couldn’t save email settings.' => 'Nem sikerült elmenteni az e-mail beállításokat.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Úgy tűnik, ezeket a beállításokat felülírja {paths}.',
'Item' => 'Elem',
'Items in your cart' => 'Bevásárlókosarad tartalma',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'A kötet legfelső szintű mappáját nem lehet átnevezni.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'A Craft vezérlőpult eléréséhez engedélyezni kell a JavaSriptet.',
'Job Data' => 'Feladat adatai',
@@ -851,7 +855,8 @@
'Loading' => 'Betöltés',
'Local Folder' => 'Helyi Mappa',
'Local copies of remote images, generated thumbnails' => 'Távoli képek helyi másolatai, létrehozott miniatűrök',
- 'Local volumes cannot be located within system directories.' => 'Helyi kötetek nem helyezhetők el a rendszerkönyvtárakban.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Viszonyok lokalizálása',
'Location' => 'Hely',
'Locations that should be available for previewing entries in this section.' => 'Helyek, amelyeknek elérhetőknek kell lenniük a szekcióban lévő bejegyzések előnézetéhez.',
@@ -1294,6 +1299,7 @@
'See all' => 'Az összes megjelenítése',
'See logs' => 'Naplók megtekintése',
'Select All' => 'Összes kiválasztása',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Kötet kiválasztása',
'Select all' => 'Összes kiválasztása',
'Select element' => 'Elem kiválasztása',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'A rendszere úgy van beállítva, hogy ne mentse a(z) {site} webhely tartalmát.',
'Your {folder} folder isn’t writable.' => 'A {folder} mappa nem írható.',
'You’re all up to date!' => 'Ön teljesen naprakész!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Zip-kód',
'account_activation_body' => "Hello {{user.friendlyName|e}},
diff --git a/src/translations/it/app.php b/src/translations/it/app.php
index 7d9ab6a9211..537fcea9abf 100644
--- a/src/translations/it/app.php
+++ b/src/translations/it/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Pagamento',
'Choose a currency…' => 'Scegli una valuta…',
'Choose a new password' => 'Scegli una nuova password',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Scegli una password',
'Choose a site' => 'Scegli un sito',
'Choose a user group that publicly-registered members will be added to by default.' => 'Seleziona un gruppo di utenti al quale i membri registrati pubblicamente saranno aggiunti per impostazione predefinita.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Connetti il database',
'Connecting to CraftCMS.com…' => 'Connessione a craftcms.com…',
'Constraints' => 'Limitazioni',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Contenuto',
'Contents of {path}' => 'Contenuti di {path}',
'Context' => 'Contesto',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Impossibile installare il plugin.',
'Couldn’t load CMS editions.' => 'Impossibile caricare edizioni CMS.',
'Couldn’t load active trials.' => 'Impossibile caricare prove attive.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Impossibile ripristinare il database. Come desideri procedere?',
'Couldn’t save address fields.' => 'Impossibile salvare i campi dell\'indirizzo.',
'Couldn’t save email settings.' => 'Impossibile salvare le impostazioni email.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Sembra che queste impostazioni saranno escluse da {paths}.',
'Item' => 'Elemento',
'Items in your cart' => 'Articoli nel carrello',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Impossibile rinominare la cartella principale di un volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript deve essere abilitato per accedere al pannello di controllo di Craft CMS.',
'Job Data' => 'Dati attività',
@@ -851,7 +855,8 @@
'Loading' => 'Caricamento',
'Local Folder' => 'Cartella locale',
'Local copies of remote images, generated thumbnails' => 'Copie locali di immagini remote, anteprime generate',
- 'Local volumes cannot be located within system directories.' => 'I volumi locali non possono trovarsi nelle directory di sistema.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Localizzazione delle relazioni',
'Location' => 'Directory',
'Locations that should be available for previewing entries in this section.' => 'Posizioni che dovrebbero essere disponibili per l\'anteprima degli articoli in questa sezione.',
@@ -1294,6 +1299,7 @@
'See all' => 'Vedi tutto',
'See logs' => 'Visualizza log',
'Select All' => 'Seleziona Tutte',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Scegli un volume',
'Select all' => 'Seleziona tutto',
'Select element' => 'Scegli elemento',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Il sistema non è stato configurato per salvare i contenuti per il sito "{site}".',
'Your {folder} folder isn’t writable.' => 'Non è possibile scrivere nella cartella {folder}.',
'You’re all up to date!' => 'Sei aggiornato!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'CAP',
'account_activation_body' => "Ciao {{user.friendlyName|e}},\n\nGrazie per aver creato un account con {{siteName}}! Per attivare il tuo account, clicca sul seguente link:\n\n<{{link}}>\n\nSe non aspettavi questa email, ignorala semplicemente.",
'account_activation_heading' => 'Quando qualcuno crea un account:',
diff --git a/src/translations/ja/app.php b/src/translations/ja/app.php
index d5292b60681..d278fe1c11f 100644
--- a/src/translations/ja/app.php
+++ b/src/translations/ja/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'チェックアウト',
'Choose a currency…' => '通貨を選択...',
'Choose a new password' => '新しいパスワードを選択',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'パスワードを選択',
'Choose a site' => 'サイトを選択',
'Choose a user group that publicly-registered members will be added to by default.' => 'パブリック登録されたユーザーを追加するデフォルトのユーザーグループを選択してください。',
@@ -309,6 +310,7 @@
'Connect the database' => 'データベースに接続',
'Connecting to CraftCMS.com…' => 'CraftCMS.com に接続しています…',
'Constraints' => '制約',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'コンテンツ',
'Contents of {path}' => '{path}のコンテンツ',
'Context' => 'コンテキスト',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'プラグインをインストールできませんでした。',
'Couldn’t load CMS editions.' => 'CMLエディションを読み込めませんでした。',
'Couldn’t load active trials.' => '有効なトライアルを読み込めませんでした。',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'データベースを回復できませんでした。どのように進めますか?',
'Couldn’t save address fields.' => '住所フィールドを保存できませんでした。',
'Couldn’t save email settings.' => 'メールの設定を保存できませんでした。',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'この設定は {paths} で上書きされているようです。',
'Item' => 'アイテム',
'Items in your cart' => 'カート内の商品',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'ボリュームのトップフォルダーの名前は変更できません。',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'CraftのコントロールパネルにアクセスするにはJavaScriptを有効してください。',
'Job Data' => 'ジョブデータ',
@@ -851,7 +855,8 @@
'Loading' => 'ロードしています',
'Local Folder' => 'ローカルのフォルダ',
'Local copies of remote images, generated thumbnails' => 'リモート画像のローカルコピー、生成されたサムネイル',
- 'Local volumes cannot be located within system directories.' => 'ローカルボリュームがシステムディレクトリ内に見つかりません。',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => '関連をローカライズ',
'Location' => '場所',
'Locations that should be available for previewing entries in this section.' => 'このセクションでエントリのプレビューに使用できる場所。',
@@ -1294,6 +1299,7 @@
'See all' => 'すべて表示',
'See logs' => 'ログを表示',
'Select All' => 'すべてを選択',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'ボリュームを選択',
'Select all' => 'すべてを選択',
'Select element' => 'エレメントを選択',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'システムは、サイト「{site}」のコンテンツを保存するようには設定されていません。',
'Your {folder} folder isn’t writable.' => 'フォルダ「{folder}」は書き込み不可能です。',
'You’re all up to date!' => '最新の状態に更新されています!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => '郵便番号',
'account_activation_body' => "こんにちは {{user.friendlyName|e}} さん、\n\n {{siteName}}のアカウントを作成してくださりありがとうございます!アカウントを有効にするには、以下のリンクをクリックしてください:\n\n<{{link}}>\n\nこのメールに心当たりがない場合は無視してください。",
'account_activation_heading' => '誰かがアカウントを作成する時:',
diff --git a/src/translations/ko/app.php b/src/translations/ko/app.php
index d1225a9373b..177834cf656 100644
--- a/src/translations/ko/app.php
+++ b/src/translations/ko/app.php
@@ -259,6 +259,7 @@
'Checkout' => '결제',
'Choose a currency…' => '통화 선택…',
'Choose a new password' => '새 비밀번호 선택',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => '비밀번호 선택',
'Choose a site' => '사이트 선택',
'Choose a user group that publicly-registered members will be added to by default.' => '공개 등록된 회원들이 기본값으로 추가될 사용자 그룹을 선택하세요.',
@@ -309,6 +310,7 @@
'Connect the database' => '데이터베이스 연결',
'Connecting to CraftCMS.com…' => 'CraftCMS.com에 연결 중…',
'Constraints' => '제약 조건',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => '콘텐츠',
'Contents of {path}' => '{path}의 콘텐츠',
'Context' => '컨텍스트',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => '플러그인을 설치할 수 없습니다.',
'Couldn’t load CMS editions.' => 'CMS 버전을 로드할 수 없습니다.',
'Couldn’t load active trials.' => '활성 평가판을 로드할 수 없습니다.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => '데이터베이스를 복원할 수 없습니다. 계속 진행하시겠습니까?',
'Couldn’t save address fields.' => '주소 필드를 저장할 수 없습니다.',
'Couldn’t save email settings.' => '이메일 설정을 저장할 수 없습니다.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => '이 설정이 {paths} 에 의해 재지정된 것 같습니다.',
'Item' => '항목',
'Items in your cart' => '장바구니의 항목',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => '볼륨의 최상위 폴더 이름은 바꿀 수 없습니다.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'Craft CMS 제어판에 액세스하려면, JavaScript가 활성화되어 있어야 합니다.',
'Job Data' => '작업 데이터',
@@ -851,7 +855,8 @@
'Loading' => '로드 중',
'Local Folder' => '로컬 폴더',
'Local copies of remote images, generated thumbnails' => '원격 이미지, 생성된 썸네일의 로컬 복사본',
- 'Local volumes cannot be located within system directories.' => '로컬 볼륨을 시스템 디렉터리에서 찾을 수 없습니다.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => '관계 로컬라이징',
'Location' => '위치',
'Locations that should be available for previewing entries in this section.' => '이 섹션에서 항목을 미리보기할 수 있는 추가 위치',
@@ -1294,6 +1299,7 @@
'See all' => '모두 보기',
'See logs' => '로그 보기',
'Select All' => '전체 선택',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => '볼륨 선택',
'Select all' => '모두 선택',
'Select element' => '요소 선택',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => '시스템이 “{site}” 사이트의 콘텐츠를 저장하도록 설정되지 않았습니다.',
'Your {folder} folder isn’t writable.' => '{folder} 폴더에는 쓸 수 없습니다.',
'You’re all up to date!' => '모두 업데이트되었습니다!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => '우편번호',
'account_activation_body' => "안녕하세요 {{user.friendlyName|e}}님,\n\n{{siteName}}에서 계정을 생성해 주셔서 감사합니다! 계정을 활성화시키려면, 다음 링크를 클릭해 주세요:\n\n<{{link}}>\n\n본 이메일에 관해서 모르신다면, 그냥 무시해 주세요.",
'account_activation_heading' => '누군가 계정을 생성했을 때:',
diff --git a/src/translations/nb/app.php b/src/translations/nb/app.php
index 0182a482b03..95874aae5a1 100644
--- a/src/translations/nb/app.php
+++ b/src/translations/nb/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Betale',
'Choose a currency…' => 'Velg en valuta …',
'Choose a new password' => 'Velg et nytt passord',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Velg et passord',
'Choose a site' => 'Velg en side',
'Choose a user group that publicly-registered members will be added to by default.' => 'Velg en brukergruppe som offentlig registrerte medlemmer skal legges i som standard.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Koble til databasen',
'Connecting to CraftCMS.com…' => 'Kobler til craftcms.com…',
'Constraints' => 'Begrensninger',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Innhold',
'Contents of {path}' => 'Innhold i {path}',
'Context' => 'Kontekst',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Kunne ikke installere programtillegget.',
'Couldn’t load CMS editions.' => 'Kunne ikke laste inn CMS-utgaver.',
'Couldn’t load active trials.' => 'Kunne ikke laste inn aktive prøveversjoner.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Kunne ikke gjenopprette databasen. Hvordan vil du fortsette?',
'Couldn’t save address fields.' => 'Kunne ikke lagre adressefelter.',
'Couldn’t save email settings.' => 'Kunne ikke lagre e-postinnstillingene.',
@@ -514,7 +517,7 @@
'Development' => 'Utvikling',
'Device type' => 'Enhetstype',
'Dimensions' => 'Dimensjoner',
- 'Directories cannot be deleted while moving assets.' => 'Kataloger kan ikke slettes mens du flytter filer.',
+ 'Directories cannot be deleted while moving assets.' => 'Mapper kan ikke slettes mens du flytter filer.',
'Disable focal point' => 'Deaktiver fokuspunkt',
'Disable' => 'Deaktiver',
'Disabled' => 'Deaktivert',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Det ser ut til at disse innstillingene overskrives av {paths}.',
'Item' => 'Element',
'Items in your cart' => 'Varer i handlekurven',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Den øverste mappen i et volum kan ikke gis nytt navn.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'For å få tilgang til Craft CMS-kontrollpanelet, må JavaScript være aktivert.',
'Job Data' => 'Jobbdata',
@@ -851,7 +855,8 @@
'Loading' => 'Laster',
'Local Folder' => 'Lokal mappe',
'Local copies of remote images, generated thumbnails' => 'Lokale kopier av eksterne bilder, genererte miniatyrbilder',
- 'Local volumes cannot be located within system directories.' => 'Local volumes cannot be located within system directories.',
+ 'Local filesystems cannot be located above system directories.' => 'Lokale filsystemer kan ikke ligge over systemmapper.',
+ 'Local filesystems cannot be located within system directories.' => 'Lokale filsystemer kan ikke ligge inne i systemmapper.',
'Localizing relations' => 'Relasjoner mellom oversettelser',
'Location' => 'Plassering',
'Locations that should be available for previewing entries in this section.' => 'Plasseringer som bør være tilgjengelig for forhåndsvisning av oppføringer i denne seksjonen.',
@@ -1294,6 +1299,7 @@
'See all' => 'Se alle',
'See logs' => 'Se logger',
'Select All' => 'Velg alle',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Velg et volum',
'Select all' => 'Velg alle',
'Select element' => 'Velg element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Systemet ditt er ikke konfigurert til å lagre innhold for nettstedet «{site}».',
'Your {folder} folder isn’t writable.' => 'Mappen {folder} er ikke skrivbar.',
'You’re all up to date!' => 'Du er oppdatert!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Postnummer',
'account_activation_body' => "Hei, {{user.friendlyName|e}}\n\nTakk for at du opprettet en konto hos {{siteName}}! For å aktivere kontoen din, trykk på lenken:\n\n<{{link}}>\n\nHar du ikke bedt om denne e-posten, vennligst se bort fra den.",
'account_activation_heading' => 'Når noen oppretter en konto:',
@@ -1944,9 +1951,9 @@
'{attribute} must be no less than {min}.' => '{attribute} må ikke være mindre enn {min}.',
'{attribute} must be set to a new password.' => 'Et nytt passord må angis for {attribute}.',
'{attribute} must contain “{slug}”' => '{attribute} må inneholde «{slug}»',
- '{attribute} should contain at least {min, number} {min, plural, one{block} other{blocks}}.' => '{attribute} kan inneholde minst {min, number} {min, plural, one{blokk} other{blokker}}.',
- '{attribute} should contain at least {min, number} {min, plural, one{item} other{items}}.' => '{attribute} må inneholde minst {min, number} {min, plural, one{element} other{elementer}}.',
- '{attribute} should contain at least {min, number} {min, plural, one{selection} other{selections}}.' => '{attribute} slal inneholde minst {min, number} {min, plural, one{valg} other{valg}}.',
+ '{attribute} should contain at least {min, number} {min, plural, one{block} other{blocks}}.' => '{attribute} skal inneholde minst {min, number} {min, plural, one{blokk} other{blokker}}.',
+ '{attribute} should contain at least {min, number} {min, plural, one{item} other{items}}.' => '{attribute} skal inneholde minst {min, number} {min, plural, one{element} other{elementer}}.',
+ '{attribute} should contain at least {min, number} {min, plural, one{selection} other{selections}}.' => '{attribute} skal inneholde minst {min, number} {min, plural, one{valg} other{valg}}.',
'{attribute} should contain at most {max, number} {max, plural, one{block} other{blocks}}.' => '{attribute} kan inneholde maks {max, number} {max, plural, one{blokk} other{blokker}}.',
'{attribute} should contain at most {max, number} {max, plural, one{item} other{items}}.' => '{attribute} kan inneholde maks {max, number} {max, plural, one{element} other{elementer}}.',
'{attribute} should contain at most {max, number} {max, plural, one{selection} other{selections}}.' => '{attribute} kan inneholde maks {max, number} {max, plural, one{valg} other{valg}}.',
diff --git a/src/translations/nl/app.php b/src/translations/nl/app.php
index efc236c1f61..0c73d590dd0 100644
--- a/src/translations/nl/app.php
+++ b/src/translations/nl/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Afrekenen',
'Choose a currency…' => 'Kies een valuta ...',
'Choose a new password' => 'Kies een nieuw wachtwoord',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Kies een wachtwoord',
'Choose a site' => 'Kies een site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Kies een gebruikersgroep waar openbaar geregistreerde leden standaard aan toe zullen worden gevoegd.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Verbind de database',
'Connecting to CraftCMS.com…' => 'Verbinden met CraftCMS.com…',
'Constraints' => 'Beperkingen',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Inhoud',
'Contents of {path}' => 'Inhoud van {path}',
'Context' => 'Context',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Kan de invoegtoepassing niet installeren.',
'Couldn’t load CMS editions.' => 'CMS-edities konden niet worden geladen.',
'Couldn’t load active trials.' => 'Kon actieve proefperioden niet laden.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Kan de database niet herstellen. Hoe wilt u verdergaan?',
'Couldn’t save address fields.' => 'Kon adresvelden niet opslaan.',
'Couldn’t save email settings.' => 'Kon e-mail instellingen niet opslaan.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Het lijkt erop dat deze instellingen worden overschreven door {paths}.',
'Item' => 'Item',
'Items in your cart' => 'Items in uw winkelwagen',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'U kunt de naam van de hoogste map van een volume niet wijzigen.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript moet zijn ingeschakeld voor toegang tot het configuratiescherm van Craft CMS.',
'Job Data' => 'Taakgegevens',
@@ -851,7 +855,8 @@
'Loading' => 'Laden',
'Local Folder' => 'Lokale Map',
'Local copies of remote images, generated thumbnails' => 'Lokale kopieën van externe afbeeldingen, gegenereerde miniaturen',
- 'Local volumes cannot be located within system directories.' => 'Lokale volumes mogen zich niet in systeemmappen bevinden.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Lokaliseren van relaties',
'Location' => 'Locatie',
'Locations that should be available for previewing entries in this section.' => 'Locaties die beschikbaar moeten zijn voor het bekijken van items in deze sectie.',
@@ -1294,6 +1299,7 @@
'See all' => 'Toon alles',
'See logs' => 'Logbestanden bekijken',
'Select All' => 'Selecteer alles',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Selecteer een volume',
'Select all' => 'Alles selecteren',
'Select element' => 'Selecteer element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Uw systeem is niet geconfigureerd om content op te slaan voor de website \'{site}\'.',
'Your {folder} folder isn’t writable.' => 'Uw map {folder} is niet schrijfbaar.',
'You’re all up to date!' => 'U bent helemaal up-to-date!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Postcode',
'account_activation_body' => "Hallo {{user.friendlyName|e}},\n\nBedankt voor het maken van een account op {{siteName}}! Klik op de volgende link om je account te activeren:\n\n<{{link}}>\n\nAls je deze e-mail niet verwachtte, kun je hem gewoon negeren.",
'account_activation_heading' => 'Als iemand een account aanmaakt:',
diff --git a/src/translations/pl/app.php b/src/translations/pl/app.php
index 2e7905d3424..787ce5e48c3 100644
--- a/src/translations/pl/app.php
+++ b/src/translations/pl/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Płatność',
'Choose a currency…' => 'Wybierz walutę…',
'Choose a new password' => 'Wybierz nowe hasło',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Wybierz hasło',
'Choose a site' => 'Wybierz witrynę',
'Choose a user group that publicly-registered members will be added to by default.' => 'Wybierz grupę do której publicznie-zarejestrowani użytkownicy zostaną domyślnie dodani.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Połącz bazę danych',
'Connecting to CraftCMS.com…' => 'Trwa łączenie z witryną CraftCMS.com…',
'Constraints' => 'Ograniczenia',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Zawartość',
'Contents of {path}' => 'Zawartość lokalizacji {path}',
'Context' => 'Kontekst',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Nie można zainstalować wtyczki.',
'Couldn’t load CMS editions.' => 'Nie można załadować wersji CMS.',
'Couldn’t load active trials.' => 'Nie można załadować aktywnych wersji próbnych.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Nie można przywrócić bazy danych. Jak chcesz kontynuować?',
'Couldn’t save address fields.' => 'Nie można zapisać pól adresu.',
'Couldn’t save email settings.' => 'Nie można zapisać ustawień e-mail.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Wygląda na to, że te ustawienia zostały zastąpione przez {paths}.',
'Item' => 'Element',
'Items in your cart' => 'Pozycje w koszyku',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Zmiana nazwy głównego folderu woluminu jest niemożliwa.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript musi być włączony, aby można było uzyskać dostęp do panelu sterowania Craft CMS.',
'Job Data' => 'Dane zadania',
@@ -851,7 +855,8 @@
'Loading' => 'Ładowanie',
'Local Folder' => 'Katalog lokalny',
'Local copies of remote images, generated thumbnails' => 'Kopie lokalne obrazów zdalnych, wygenerowane miniatury',
- 'Local volumes cannot be located within system directories.' => 'Woluminy lokalne nie mogą znajdować się w katalogach systemowych.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Lokalizacja relacji',
'Location' => 'Lokalizacja',
'Locations that should be available for previewing entries in this section.' => 'Lokalizacje, które powinny być dostępne do podglądu wpisów w tej sekcji.',
@@ -1294,6 +1299,7 @@
'See all' => 'Zobacz wszystko',
'See logs' => 'Sprawdź dzienniki',
'Select All' => 'Zaznacz wszystko',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Wybierz wolumin',
'Select all' => 'Zaznacz wszystko',
'Select element' => 'Wybierz element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'System nie został skonfigurowany do zapisywania zawartości z witryny {site}.',
'Your {folder} folder isn’t writable.' => 'W folderze {folder} nie można zapisywać.',
'You’re all up to date!' => 'Wszystko aktualne!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Kod pocztowy',
'account_activation_body' => "Cześć {{user.friendlyName|e}},\n\nDziękujemy za utworzenie konta na {{siteName}}! Aby je aktywować, kliknij poniższy link:\n\n<{{link}}>\n\nJeżeli nie spodziewałeś/aś się tego e-maila, po prostu zignoruj go.",
'account_activation_heading' => 'Kiedy ktoś zakłada konto:',
diff --git a/src/translations/pt/app.php b/src/translations/pt/app.php
index da3c52d131c..809d3f39f4f 100644
--- a/src/translations/pt/app.php
+++ b/src/translations/pt/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Pagamento',
'Choose a currency…' => 'Escolha uma moeda…',
'Choose a new password' => 'Escolha uma nova senha',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Escolha uma palavra-passe',
'Choose a site' => 'Escolher um site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Escolha um grupo de usuários ao qual pertencerão os membros registrados na área pública do site.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Ligar à base de dados',
'Connecting to CraftCMS.com…' => 'Ligando a CraftCMS.com…',
'Constraints' => 'Restrições',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Conteúdo',
'Contents of {path}' => 'Conteúdos de {path}',
'Context' => 'Contexto',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Não foi possível instalar o plugin.',
'Couldn’t load CMS editions.' => 'Não foi possível carregar as edições CMS.',
'Couldn’t load active trials.' => 'Não foi possível testes ativos.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Não foi possível restaurar a base de dados. Como gostaria de resolver a situação?',
'Couldn’t save address fields.' => 'Não foi possível guardar os campos de endereço.',
'Couldn’t save email settings.' => 'Não foi possível salvar as configurações de e-mail.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Parece que estas definições estão a ser substituídas por {paths}.',
'Item' => 'Item',
'Items in your cart' => 'Itens no carrinho',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Nã\o é possível mudar o nome da pasta de topo de um volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'O JavaScript deve estar habilitado para aceder ao painel de controlo Craft CMS.',
'Job Data' => 'Dados do trabalho',
@@ -851,7 +855,8 @@
'Loading' => 'A carregar',
'Local Folder' => 'Pasta local',
'Local copies of remote images, generated thumbnails' => 'Copias locais de imagens remotas, miniaturas criadas',
- 'Local volumes cannot be located within system directories.' => 'Os volumes locais não podem ser localizados nos diretórios do sistema.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Localizando relações',
'Location' => 'Localização',
'Locations that should be available for previewing entries in this section.' => 'Localizações que deveriam estar disponíveis para pré-visualizar entradas nesta secção.',
@@ -1294,6 +1299,7 @@
'See all' => 'Ver tudo',
'See logs' => 'Ver registos',
'Select All' => 'Selecionar todos',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Selecione um volume',
'Select all' => 'Selecionar tudo',
'Select element' => 'Selecionar elemento',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'O seu sistema não está configurado para guardar conteúdo para o site “{site}”.',
'Your {folder} folder isn’t writable.' => 'A sua pasta {folder} não é gravável.',
'You’re all up to date!' => 'Tudo está atualizado!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Código Postal',
'account_activation_body' => "Oi {{user.friendlyName|e}},\n\nObrigado por criar uma conta em {{siteName}}! Para ativar sua conta, clique no link a seguir:\n\n<{{link}}>\n\nSe você não estava esperando esse e-mail, ignore-o.",
'account_activation_heading' => 'Quando alguém cria uma conta:',
diff --git a/src/translations/ru/app.php b/src/translations/ru/app.php
index 2c266ffc5c6..4a7a0a1497f 100644
--- a/src/translations/ru/app.php
+++ b/src/translations/ru/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Проверка',
'Choose a currency…' => 'Выберите валюту…',
'Choose a new password' => 'Введите новый пароль',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Введите пароль',
'Choose a site' => 'Выбрать сайт',
'Choose a user group that publicly-registered members will be added to by default.' => 'Выберите группу по умолчанию, в которую будут добавляться все публично-регистрирующиеся пользователи.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Подключиться к базе данных',
'Connecting to CraftCMS.com…' => 'Выполняется подключение к CraftCMS.com…',
'Constraints' => 'Ограничения',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Контент',
'Contents of {path}' => 'Содержимое {path}',
'Context' => 'Контекст',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Не удалось установить плагин.',
'Couldn’t load CMS editions.' => 'Не удалось загрузить редакции CMS.',
'Couldn’t load active trials.' => 'Не удалось загрузить активные пробные версии.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Не удалось восстановить базу данных. Что следует сделать дальше?',
'Couldn’t save address fields.' => 'Не удалось сохранить поля адреса.',
'Couldn’t save email settings.' => 'Не удалось сохранить настройки почты.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Вероятно, {paths} переопределяет эти настройки.',
'Item' => 'Объект',
'Items in your cart' => 'Объекты в корзине',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Невозможно переименовать верхнюю папку тома.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'Для доступа к панели управления Craft необходимо включить поддержку JavaScript.',
'Job Data' => 'Данные по заданию',
@@ -851,7 +855,8 @@
'Loading' => 'Загрузка',
'Local Folder' => 'Локальная папка',
'Local copies of remote images, generated thumbnails' => 'Локальные копии изображений, расположенных удаленно, сгенерированные эскизы',
- 'Local volumes cannot be located within system directories.' => 'Не удалось найти локальные тома в системных каталогах.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Локализация отношений',
'Location' => 'Местоположение',
'Locations that should be available for previewing entries in this section.' => 'Местоположения, в которых должен быть доступен предпросмотр записей из этого раздела.',
@@ -1294,6 +1299,7 @@
'See all' => 'Просмотреть все',
'See logs' => 'См. журналы',
'Select All' => 'Выбрать все',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Выберите том',
'Select all' => 'Выбрать все',
'Select element' => 'Выберите элемент',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Ваша система не настроена для сохранения контента для данного сайта: {site}.',
'Your {folder} folder isn’t writable.' => 'Запись в папку {folder} невозможна.',
'You’re all up to date!' => 'У вас актуальная версия!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Zip-код',
'account_activation_body' => "Привет, {{user.friendlyName|e}}!\n\nБлагодарим за регистрацию на сайте {{siteName}}! Для того, чтобы завершить регистрацию и активировать свою учетную запись, перейдите по следующей ссылке:\n\n<{{link}}>\n\nЕсли вы считаете, что получили это письмо по ошибке, просто проигнорируйте его.",
'account_activation_heading' => 'Когда кто-то создает учетную запись:',
diff --git a/src/translations/sk/app.php b/src/translations/sk/app.php
index 5854a34a80b..2322482e29f 100644
--- a/src/translations/sk/app.php
+++ b/src/translations/sk/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Platba',
'Choose a currency…' => 'Vyberte menu…',
'Choose a new password' => 'Vybrať nové heslo',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Zvoľte heslo',
'Choose a site' => 'Vyberte web',
'Choose a user group that publicly-registered members will be added to by default.' => 'Vybrať skupinu používateľov, do ktorej budú predvolene pridaný verejne registrovaný používatelia.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Pripojiť databázu',
'Connecting to CraftCMS.com…' => 'Pripája sa k webu CraftSMS.com…',
'Constraints' => 'Obmedzenia',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Obsah',
'Contents of {path}' => 'Obsah {path}',
'Context' => 'Kontext',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Nemožno nainštalovať plugin.',
'Couldn’t load CMS editions.' => 'Nemožno načítať edície CMS.',
'Couldn’t load active trials.' => 'Nemožno načítať aktívne testy.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Databázu sa nepodarilo obnoviť. Ako chcete pokračovať?',
'Couldn’t save address fields.' => 'Nepodarilo sa uložiť polia s adresou.',
'Couldn’t save email settings.' => 'Nemožno uložiť nastavenia emailu.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Tieto nastavenia sú pravdepodobne prepísané položkou {paths}.',
'Item' => 'Položka',
'Items in your cart' => 'Položky v košíku',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Najvyšší priečinok zväzku sa nedá premenovať.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'Na prístup k ovládaciemu panelu Craft musí byť povolený JavaScript.',
'Job Data' => 'Údaje úlohy',
@@ -851,7 +855,8 @@
'Loading' => 'Nahrávanie',
'Local Folder' => 'Lokálny Adresár',
'Local copies of remote images, generated thumbnails' => 'Miestne kópie vzdialených obrazov, vygenerované miniatúry',
- 'Local volumes cannot be located within system directories.' => 'Miestne zväzky nemôžu byť umiestnené v systémových adresároch.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Vzťahy spojené s lokalizáciou',
'Location' => 'Poloha',
'Locations that should be available for previewing entries in this section.' => 'Umiestnenia, ktoré majú byť dostupné pre náhľad záznamov v tejto sekcii.',
@@ -1294,6 +1299,7 @@
'See all' => 'Zobraziť všetko',
'See logs' => 'Zobraziť záznamy',
'Select All' => 'Vybrať všetko',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Vyberte zväzok',
'Select all' => 'Vybrať všetko',
'Select element' => 'Vybrať prvok',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Váš systém nie je nastavený na ukladanie obsahu pre web {site}.',
'Your {folder} folder isn’t writable.' => 'Do vášho priečinku {folder} nie je možné zapisovať.',
'You’re all up to date!' => 'Všetko je aktuálne!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'PSČ',
'account_activation_body' => "Ahoj {{user.friendlyName|e}},\n\nVďaka za vytvorenie účtu na {{siteName}}! Pre jeho aktiváciu prosím klikni na nasledujúci odkaz:\n\n<{{link}}>\n\nAk si tento email neočakával, jednoducho ho ignoruj.",
'account_activation_heading' => 'Keď niekto vytvorí účet:',
diff --git a/src/translations/sv/app.php b/src/translations/sv/app.php
index 24b1843222f..93f11541063 100644
--- a/src/translations/sv/app.php
+++ b/src/translations/sv/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Till kassan',
'Choose a currency…' => 'Välj en valuta…',
'Choose a new password' => 'Välj ett nytt lösenord',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Välj ett lösenord',
'Choose a site' => 'Välj en webbplats',
'Choose a user group that publicly-registered members will be added to by default.' => 'Välj en användargrupp som allmänt registrerade medlemmar läggs till i som standard.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Anslut databasen',
'Connecting to CraftCMS.com…' => 'Ansluter till CraftCMS.com…',
'Constraints' => 'Begränsningar',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Innehåll',
'Contents of {path}' => 'Innehåll för {path}',
'Context' => 'Kontext',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Det gick inte att installera plugin.',
'Couldn’t load CMS editions.' => 'Det gick inte att läsa in CMS-utgåvorna.',
'Couldn’t load active trials.' => 'Det gick inte att ladda aktiva testversioner.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Det gick inte att återskapa databasen. Hur vill du fortsätta?',
'Couldn’t save address fields.' => 'Kunde inta spara adressfälten.',
'Couldn’t save email settings.' => 'E-postinställningarna kunde inte sparas.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Det verkar som om dessa inställningar åsidosätts av {paths}.',
'Item' => 'Artikel',
'Items in your cart' => 'Artiklar i din kundvagn',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Det går inte att ändra namn på den översta mappen i en volym.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript måste aktiveras för att få åtkomst till Crafts kontrollpanel.',
'Job Data' => 'Jobbdata',
@@ -851,7 +855,8 @@
'Loading' => 'Läser in',
'Local Folder' => 'Lokal mapp',
'Local copies of remote images, generated thumbnails' => 'Lokala kopior av fjärrbilder, genererade miniatyrer',
- 'Local volumes cannot be located within system directories.' => 'Lokala volymer kan inte placeras inne i systemmappar.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Lokaliserar förbindelser',
'Location' => 'Plats',
'Locations that should be available for previewing entries in this section.' => 'Platser som ska vara tillgängliga för att förhandsvisa inlägg i denna sektion.',
@@ -1294,6 +1299,7 @@
'See all' => 'Se alla',
'See logs' => 'Se loggar',
'Select All' => 'Markera alla',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Välj en volym',
'Select all' => 'Markera alla',
'Select element' => 'Välj element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Systemet är inte inställt på att spara innehåll för webbplatsen ”{site}”.',
'Your {folder} folder isn’t writable.' => 'Din {folder}-mapp är inte skrivbar.',
'You’re all up to date!' => 'Du har den senaste uppdateringen!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Postnummer',
'account_activation_body' => "Hej {{user.friendlyName|e}},\n\nTack för att du skapar ett konto hos {{siteName}}! Klicka på följande länk för att aktivera ditt konto:\n\n<{{link}}>\n\nOm du inte förväntade dig det här e-postmeddelandet kan du bara ignorera det.",
'account_activation_heading' => 'När någon skapar ett konto:',
diff --git a/src/translations/th/app.php b/src/translations/th/app.php
index 88c4471919a..8b5ef311f0b 100644
--- a/src/translations/th/app.php
+++ b/src/translations/th/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Checkout',
'Choose a currency…' => 'Choose a currency…',
'Choose a new password' => 'Choose a new password',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Choose a password',
'Choose a site' => 'Choose a site',
'Choose a user group that publicly-registered members will be added to by default.' => 'Choose a user group that publicly-registered members will be added to by default.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Connect the database',
'Connecting to CraftCMS.com…' => 'Connecting to CraftCMS.com…',
'Constraints' => 'ข้อจำกัด',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Content',
'Contents of {path}' => 'Contents of {path}',
'Context' => 'บริบท',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Couldn’t install plugin.',
'Couldn’t load CMS editions.' => 'Couldn’t load CMS editions.',
'Couldn’t load active trials.' => 'Couldn’t load active trials.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Couldn’t restore the database. How would you like to proceed?',
'Couldn’t save address fields.' => 'ไม่สามารถบันทึกฟิลด์ที่อยู่ได้',
'Couldn’t save email settings.' => 'Couldn’t save email settings.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'It looks like these settings are being overridden by {paths}.',
'Item' => 'Item',
'Items in your cart' => 'Items in your cart',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'It’s not possible to rename the top folder of a Volume.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'JavaScript must be enabled to access the Craft CMS control panel.',
'Job Data' => 'Job Data',
@@ -851,7 +855,8 @@
'Loading' => 'Loading',
'Local Folder' => 'Local Folder',
'Local copies of remote images, generated thumbnails' => 'Local copies of remote images, generated thumbnails',
- 'Local volumes cannot be located within system directories.' => 'Local volumes cannot be located within system directories.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Localizing relations',
'Location' => 'Location',
'Locations that should be available for previewing entries in this section.' => 'Locations that should be available for previewing entries in this section.',
@@ -1294,6 +1299,7 @@
'See all' => 'See all',
'See logs' => 'See logs',
'Select All' => 'Select All',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'เลือกไดรฟ์ข้อมูล',
'Select all' => 'Select all',
'Select element' => 'Select element',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Your system isn’t set up to save content for the site “{site}”.',
'Your {folder} folder isn’t writable.' => 'Your {folder} folder isn’t writable.',
'You’re all up to date!' => 'คุณได้รับข้อมูลล่าสุดแล้ว!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Zip Code',
'account_activation_body' => "สวัสดี {{user.friendlyName|e}}\n\nขอขอบคุณที่สร้างบัญชีด้วย {{systemName}}! โปรดคลิกลิงก์ต่อไปนี้เพื่อเปิดใช้บัญชีของคุณ:\n\n<{{link}}>\n\nหากคุณได้รับอีเมลนี้โดยไม่คาดคิด โปรดไม่ต้องสนใจอีเมลนี้",
'account_activation_heading' => 'When someone creates an account:',
diff --git a/src/translations/tr/app.php b/src/translations/tr/app.php
index 4eae54d7626..3083e3bcc4a 100644
--- a/src/translations/tr/app.php
+++ b/src/translations/tr/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Ödeme',
'Choose a currency…' => 'Bir değer seçin…',
'Choose a new password' => 'Yeni şifrenizi seçin',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Parola seçin',
'Choose a site' => 'Bir site seçin',
'Choose a user group that publicly-registered members will be added to by default.' => 'Umumi kayıt oluşturan kullanıcıların ekleneceği kullanıcı grubunu seçiniz.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Veritabanını bağlayın',
'Connecting to CraftCMS.com…' => 'CraftCMS.com ile bağlantı kuruluyor…',
'Constraints' => 'Kısıtlamalar',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'İçerik',
'Contents of {path}' => '{path} içerikleri',
'Context' => 'İçerik',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Eklenti yüklenemedi.',
'Couldn’t load CMS editions.' => 'CMS sürümleri yüklenemedi.',
'Couldn’t load active trials.' => 'Aktif denemeler yüklenemedi.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Veritabanı geri yüklenemedi. Nasıl devam etmek istiyorsunuz?',
'Couldn’t save address fields.' => 'Adres alanları kaydedilemedi.',
'Couldn’t save email settings.' => 'Eposta ayarları kaydedilemedi.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Bu ayarların {paths} ile geçersiz kılındığı anlaşılıyor.',
'Item' => 'Öğe',
'Items in your cart' => 'Sepetinizdeki öğeler',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Birimin en üst klasörü yeniden adlandırılamaz.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'Craft CMS kontrol paneline erişebilmek için JavaScript etkinleştirilmiş olmalıdır.',
'Job Data' => 'İş Bilgileri',
@@ -851,7 +855,8 @@
'Loading' => 'Yükleniyor',
'Local Folder' => 'Yerel Klasör',
'Local copies of remote images, generated thumbnails' => 'Uzak görüntülerin yerel kopyaları, oluşturulan küçük resimler',
- 'Local volumes cannot be located within system directories.' => 'Yerel birimler sistem dizinleri içinde bulunamaz.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'İlişkilerin lokallenmesi',
'Location' => 'Konum',
'Locations that should be available for previewing entries in this section.' => 'Bu bölümdeki kayıtları önizlemek için kullanılabilecek konumlar.',
@@ -1294,6 +1299,7 @@
'See all' => 'Tümünü görüntüle',
'See logs' => 'Günlüklere bak',
'Select All' => 'Tümünü Seç',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Bir birim seçin',
'Select all' => 'Tümünü seç',
'Select element' => 'Öğe seç',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Sisteminiz "{site}" sitesi için içerik kaydedecek şekilde ayarlanmadı.',
'Your {folder} folder isn’t writable.' => '{folder} klasörünüz yazılabilir değil.',
'You’re all up to date!' => 'Tamamen güncelsiniz!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Posta Kodu',
'account_activation_body' => "Merhaba {{user.friendlyName|e}},\n\n{{siteName}} ile bir hesap oluşturduğunuz için teşekkürler! Hesabınızı etkinleştirmek için şu bağlantıya tıklayınız:\n\n<{{link}}>\n\nBu epostayı neden aldığınızı bilmiyorsanız, kaale almayınız.",
'account_activation_heading' => 'Biri hesap oluşturduğunda:',
diff --git a/src/translations/uk/app.php b/src/translations/uk/app.php
index 89d65437c99..34a58fcb5ca 100644
--- a/src/translations/uk/app.php
+++ b/src/translations/uk/app.php
@@ -259,6 +259,7 @@
'Checkout' => 'Оформити замовлення',
'Choose a currency…' => 'Виберіть валюту…',
'Choose a new password' => 'Уведіть новий пароль',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => 'Уведіть пароль',
'Choose a site' => 'Виберіть сайт',
'Choose a user group that publicly-registered members will be added to by default.' => 'Виберіть групу користувачів, до якої за замовчуванням додаватимуться публічно зареєстровані учасники.',
@@ -309,6 +310,7 @@
'Connect the database' => 'Під\'єднатися до бази даних',
'Connecting to CraftCMS.com…' => 'Триває під\'єднання до CraftCMS.com…',
'Constraints' => 'Обмеження',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => 'Вміст',
'Contents of {path}' => 'Вміст {path}',
'Context' => 'Контекст',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => 'Не вдалося встановити плагін.',
'Couldn’t load CMS editions.' => 'Не вдалося завантажити версії CMS.',
'Couldn’t load active trials.' => 'Не вдалося завантажити активні пробні версії.',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => 'Не вдалося відновити базу даних. Що робити далі?',
'Couldn’t save address fields.' => 'Не вдалося зберегти поля адреси.',
'Couldn’t save email settings.' => 'Не вдалося зберегти налаштування пошти.',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => 'Імовірно, {paths} перевизначає ці налаштування.',
'Item' => 'Об\'єкт',
'Items in your cart' => 'Об\'єкти в кошику',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => 'Неможливо перейменувати верхню папку тому.',
'JavaScript must be enabled to access the Craft CMS control panel.' => 'Для доступу до панелі керування Craft необхідно ввімкнути підтримку JavaScript.',
'Job Data' => 'Дані завдання',
@@ -851,7 +855,8 @@
'Loading' => 'Завантаження',
'Local Folder' => 'Локальна папка',
'Local copies of remote images, generated thumbnails' => 'Локальні копії віддалених зображень, створені ескізи',
- 'Local volumes cannot be located within system directories.' => 'Не вдалося знайти локальні томи в системних каталогах.',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => 'Локалізація взаємозв\'язків',
'Location' => 'Розташування',
'Locations that should be available for previewing entries in this section.' => 'Розташування, в яких має бути доступний перегляд записів із цього розділу.',
@@ -1294,6 +1299,7 @@
'See all' => 'Переглянути все',
'See logs' => 'Див. журнали',
'Select All' => 'Вибрати все',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => 'Виберіть том',
'Select all' => 'Вибрати все',
'Select element' => 'Виберіть елемент',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => 'Ваша система не налаштована для збереження вмісту для цього сайту: {site}.',
'Your {folder} folder isn’t writable.' => 'Запис у папку {folder} неможливий.',
'You’re all up to date!' => 'У вас актуальна версія!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => 'Поштовий індекс',
'account_activation_body' => "Привіт, {{user.friendlyName|e}}!\n\nДякуємо за реєстрацію на сайті {{systemName}}! Щоб завершити реєстрацію та активувати обліковий запис, перейдіть за наступним посиланням:\n\n<{{link}}>\n\nЯкщо ви вважаєте, що отримали цей лист помилково, просто проігноруйте його.",
'account_activation_heading' => 'Коли хтось створює обліковий запис:',
diff --git a/src/translations/zh/app.php b/src/translations/zh/app.php
index d7a134ff53f..c9b60bce7ea 100644
--- a/src/translations/zh/app.php
+++ b/src/translations/zh/app.php
@@ -259,6 +259,7 @@
'Checkout' => '检查',
'Choose a currency…' => '选择货币…',
'Choose a new password' => '设置新密码',
+ 'Choose a page' => 'Choose a page',
'Choose a password' => '选择密码',
'Choose a site' => '选择站点',
'Choose a user group that publicly-registered members will be added to by default.' => '默认选取公开注册成员将加入的用户组。',
@@ -309,6 +310,7 @@
'Connect the database' => '连接数据库',
'Connecting to CraftCMS.com…' => '正在连接 craftcms.com…',
'Constraints' => '约束',
+ 'Contact Developer Support' => 'Contact Developer Support',
'Content' => '内容',
'Contents of {path}' => '{path} 的内容',
'Context' => '上下文',
@@ -357,6 +359,7 @@
'Couldn’t install plugin.' => '无法安装插件。',
'Couldn’t load CMS editions.' => '无法加载 CMS 版本。',
'Couldn’t load active trials.' => '无法加载活动试用。',
+ 'Couldn’t reorder items.' => 'Couldn’t reorder items.',
'Couldn’t restore the database. How would you like to proceed?' => '无法恢复数据库。您想如何继续?',
'Couldn’t save address fields.' => '无法保存地址字段。',
'Couldn’t save email settings.' => '无法保存电子邮件设置。',
@@ -787,6 +790,7 @@
'It looks like these settings are being overridden by {paths}.' => '好像这些设置正在被 {paths} 覆盖。',
'Item' => '商品',
'Items in your cart' => '购物车中的商品',
+ 'Items reordered.' => 'Items reordered.',
'It’s not possible to rename the top folder of a Volume.' => '无法重命名存储卷的顶部文件夹。',
'JavaScript must be enabled to access the Craft CMS control panel.' => '必须启用 JavaScript 才能访问 Craft CMS 控制面板。',
'Job Data' => '作业数据',
@@ -851,7 +855,8 @@
'Loading' => '正在加载',
'Local Folder' => '本地文件夹',
'Local copies of remote images, generated thumbnails' => '远程图像、生成的缩略图的本地副本',
- 'Local volumes cannot be located within system directories.' => '本地存储卷不能位于系统目录中。',
+ 'Local filesystems cannot be located above system directories.' => 'Local filesystems cannot be located above system directories.',
+ 'Local filesystems cannot be located within system directories.' => 'Local filesystems cannot be located within system directories.',
'Localizing relations' => '正在确定关系',
'Location' => '位置',
'Locations that should be available for previewing entries in this section.' => '应当可以用于预览此版块中条目的地点。',
@@ -1294,6 +1299,7 @@
'See all' => '查看全部',
'See logs' => '查看日志',
'Select All' => '全选',
+ 'Select a filesystem' => 'Select a filesystem',
'Select a volume' => '选择存储卷',
'Select all' => '全选',
'Select element' => '选择元素',
@@ -1710,7 +1716,7 @@
'Validate custom fields on public registration' => '在公开注册期间验证自定义字段',
'Validate related {type}' => '验证相关{type}',
'Validation errors for site: “{siteName}“' => '站点验证错误:“{siteName}”',
- 'Validation errors found in {attribute} {type}; please fix them.' => '在 {attribute} {type}中发现验证错误;请修正。',
+ 'Validation errors found in {attribute} {type}; please fix them.' => '在{attribute}{type}中发现验证错误;请修正。',
'Value prefixed by “{prefix}”.' => '值以“{prefix}”为前缀。',
'Value suffixed by “{suffix}”.' => '值以“{suffix}”为后缀。',
'Value' => '值',
@@ -1844,6 +1850,7 @@
'Your system isn’t set up to save content for the site “{site}”.' => '站点“{site}”的系统设定尚未设置完毕,暂不能保存内容。',
'Your {folder} folder isn’t writable.' => '您的 {folder} 文件夹不可写。',
'You’re all up to date!' => '您已经更新到最新版本!',
+ 'You’re viewing a revision. None of the {type}’s fields are editable.' => 'You’re viewing a revision. None of the {type}’s fields are editable.',
'Zip Code' => '邮政编码',
'account_activation_body' => "您好,{{user.friendlyName|e}},\n\n感谢您创建 {{siteName}} 帐户!要激活帐户,请单击下面的链接:\n\n<{{link}}>\n\n如果不希望收到这封电子邮件,请予以忽略。",
'account_activation_heading' => '有人创建帐户时:',
diff --git a/src/validators/ElementUriValidator.php b/src/validators/ElementUriValidator.php
index 7d1f8dd1014..2661e3ea6ce 100644
--- a/src/validators/ElementUriValidator.php
+++ b/src/validators/ElementUriValidator.php
@@ -10,7 +10,6 @@
use Craft;
use craft\base\ElementInterface;
use craft\errors\OperationAbortedException;
-use craft\helpers\ElementHelper;
use yii\base\InvalidConfigException;
/**
@@ -53,7 +52,7 @@ public function validateAttribute($model, $attribute): void
}
try {
- ElementHelper::setUniqueUri($model);
+ Craft::$app->getElements()->setElementUri($model);
} catch (OperationAbortedException) {
// Not a big deal if the element isn't enabled yet
if (
diff --git a/src/validators/UriValidator.php b/src/validators/UriValidator.php
index 2a532200175..8ec28a7f9d9 100644
--- a/src/validators/UriValidator.php
+++ b/src/validators/UriValidator.php
@@ -28,7 +28,7 @@ class UriValidator extends Validator
*/
protected function validateValue($value): ?array
{
- if (!preg_match($this->pattern, $value)) {
+ if ($value === null || !preg_match($this->pattern, $value)) {
return [Craft::t('app', '{attribute} is not a valid URI'), []];
}
diff --git a/src/validators/UsernameValidator.php b/src/validators/UsernameValidator.php
index 836d9d0e07d..944738fe0f5 100644
--- a/src/validators/UsernameValidator.php
+++ b/src/validators/UsernameValidator.php
@@ -24,7 +24,7 @@ class UsernameValidator extends Validator
public function validateValue($value): ?array
{
// Don't allow whitespace in the username
- if (preg_match('/\s+/', $value)) {
+ if ($value !== null && preg_match('/\s+/', $value)) {
return [Craft::t('app', '{attribute} cannot contain spaces.'), []];
}
diff --git a/src/web/Application.php b/src/web/Application.php
index bc5eb170a74..3fa72bf9169 100644
--- a/src/web/Application.php
+++ b/src/web/Application.php
@@ -16,6 +16,7 @@
use craft\debug\Module as DebugModule;
use craft\debug\RequestPanel;
use craft\debug\UserPanel;
+use craft\errors\ExitException;
use craft\helpers\App;
use craft\helpers\ArrayHelper;
use craft\helpers\Db;
@@ -30,7 +31,7 @@
use yii\base\Component;
use yii\base\ErrorException;
use yii\base\Exception;
-use yii\base\ExitException;
+use yii\base\ExitException as YiiExitException;
use yii\base\InvalidArgumentException;
use yii\base\InvalidConfigException;
use yii\base\InvalidRouteException;
@@ -481,25 +482,9 @@ private function _processResourceRequest(Request $request): void
$resourceUri = substr($requestPath, strlen($resourceBaseUri));
$slash = strpos($resourceUri, '/');
$hash = substr($resourceUri, 0, $slash);
+ $sourcePath = $this->resourceSourcePathByHash($hash);
- $sourcePath = Craft::$app->getCache()->getOrSet(
- Craft::$app->getAssetManager()->getCacheKeyForPathHash($hash),
- function() use ($hash) {
- try {
- return (new Query())
- ->select(['path'])
- ->from(Table::RESOURCEPATHS)
- ->where(['hash' => $hash])
- ->scalar();
- } catch (DbException) {
- // Craft isn't installed yet
- }
-
- return false;
- }
- );
-
- if (empty($sourcePath)) {
+ if (!$sourcePath) {
return;
}
@@ -530,6 +515,20 @@ function() use ($hash) {
$this->end();
}
+ private function resourceSourcePathByHash(string $hash): string|false
+ {
+ try {
+ return (new Query())
+ ->select(['path'])
+ ->from(Table::RESOURCEPATHS)
+ ->where(['hash' => $hash])
+ ->scalar();
+ } catch (DbException) {
+ // Craft isn't installed yet. See if it's cached as a fallback.
+ return Craft::$app->getCache()->get(Craft::$app->getAssetManager()->getCacheKeyForPathHash($hash));
+ }
+ }
+
/**
* Processes install requests.
*
@@ -537,7 +536,7 @@ function() use ($hash) {
* @return null|Response
* @throws NotFoundHttpException
* @throws ServiceUnavailableHttpException
- * @throws ExitException
+ * @throws YiiExitException
*/
private function _processInstallRequest(Request $request): ?Response
{
@@ -710,7 +709,7 @@ public function end($status = 0, $response = null)
$this->state === self::STATE_SENDING_RESPONSE &&
$this->getResponse()->format === TemplateResponseFormatter::FORMAT
) {
- throw new ExitException();
+ throw new ExitException(output: ob_get_contents() ?: null);
}
parent::end($status, $response);
diff --git a/src/web/AssetManager.php b/src/web/AssetManager.php
index 60ad5ab8bec..9c5a12d421c 100644
--- a/src/web/AssetManager.php
+++ b/src/web/AssetManager.php
@@ -24,6 +24,13 @@
*/
class AssetManager extends \yii\web\AssetManager
{
+ /**
+ * @var bool Whether asset source paths should be cached for subsequent requests.
+ * @see hash()
+ * @since 4.5.10
+ */
+ public bool $cacheSourcePaths = true;
+
private const CACHE_TAG = 'assetmanager';
/**
@@ -84,23 +91,25 @@ protected function hash($path): string
$alias = Craft::alias($dir);
$hash = sprintf('%x', crc32($alias . '|' . FileHelper::lastModifiedTime($path) . '|' . $this->linkAssets));
- // Store the hash for later
- Craft::$app->on(Application::EVENT_AFTER_REQUEST, function() use ($hash, $alias) {
- try {
- Db::upsert(Table::RESOURCEPATHS, [
- 'hash' => $hash,
- 'path' => $alias,
- ]);
- } catch (DbException|DbConnectException) {
- // Craft is either not installed or not updated to 3.0.3+ yet
- }
- });
-
- Craft::$app->getCache()->set(
- $this->getCacheKeyForPathHash($hash),
- $alias,
- dependency: new TagDependency(['tags' => [self::CACHE_TAG]]),
- );
+ if ($this->cacheSourcePaths) {
+ // Store the hash for later
+ Craft::$app->onAfterRequest(function() use ($hash, $alias) {
+ try {
+ Db::upsert(Table::RESOURCEPATHS, [
+ 'hash' => $hash,
+ 'path' => $alias,
+ ]);
+ } catch (DbException|DbConnectException) {
+ // Craft is either not installed or not updated to 3.0.3+ yet,
+ // so cache the source path instead
+ Craft::$app->getCache()->set(
+ $this->getCacheKeyForPathHash($hash),
+ $alias,
+ dependency: new TagDependency(['tags' => [self::CACHE_TAG]]),
+ );
+ }
+ });
+ }
return $hash;
}
diff --git a/src/web/CpScreenResponseFormatter.php b/src/web/CpScreenResponseFormatter.php
index d24803efa49..78f103e0483 100644
--- a/src/web/CpScreenResponseFormatter.php
+++ b/src/web/CpScreenResponseFormatter.php
@@ -91,7 +91,7 @@ private function _formatJson(\yii\web\Request $request, YiiResponse $response, C
$errorSummary = $behavior->errorSummary ? $view->namespaceInputs($behavior->errorSummary, $namespace) : null;
$response->data = [
- 'editUrl' => $behavior->editUrl,
+ 'editUrl' => $behavior->editUrl ? UrlHelper::cpUrl($behavior->editUrl) : null,
'namespace' => $namespace,
'title' => $behavior->title,
'notice' => $notice,
diff --git a/src/web/Request.php b/src/web/Request.php
index 83f79993bfe..7ecf672b05b 100644
--- a/src/web/Request.php
+++ b/src/web/Request.php
@@ -697,7 +697,11 @@ public function getActionSegments(): ?array
*/
public function getIsPreview(): bool
{
- return $this->getQueryParam('x-craft-preview') !== null || $this->getQueryParam('x-craft-live-preview') !== null;
+ return (
+ ($this->getQueryParam('x-craft-preview') ?? $this->getQueryParam('x-craft-live-preview')) !== null &&
+ // If there's a token but it expired, they're looking at the live site
+ (!$this->getHadToken() || $this->getToken() !== null)
+ );
}
/**
@@ -1286,7 +1290,21 @@ public function regenCsrfToken(): void
*/
public function accepts(string $contentType): bool
{
- return array_key_exists($contentType, $this->getAcceptableContentTypes());
+ $acceptableContentTypes = $this->getAcceptableContentTypes();
+
+ // then check if the actual key exists
+ if (array_key_exists($contentType, $acceptableContentTypes)) {
+ return true;
+ }
+
+ // check for cases where acceptable content type contains mimeType/*
+ foreach (array_keys($acceptableContentTypes) as $mime) {
+ if (str_ends_with($mime, '/*') && str_starts_with($contentType, substr($mime, 0, -1))) {
+ return true;
+ }
+ }
+
+ return false;
}
/**
diff --git a/src/web/Response.php b/src/web/Response.php
index d5b7a7ee4b8..7e7c7702cf3 100644
--- a/src/web/Response.php
+++ b/src/web/Response.php
@@ -121,18 +121,9 @@ public function setCacheHeaders(int $duration = 31536000, bool $overwrite = true
return $this;
}
- if ($overwrite) {
- $this->getHeaders()
- ->set('Expires', sprintf('%s GMT', gmdate('D, d M Y H:i:s', time() + $duration)))
- ->set('Pragma', 'cache')
- ->set('Cache-Control', "max-age=$duration");
- } else {
- $this->getHeaders()
- ->setDefault('Expires', sprintf('%s GMT', gmdate('D, d M Y H:i:s', time() + $duration)))
- ->setDefault('Pragma', 'cache')
- ->setDefault('Cache-Control', "public, max-age=$duration");
- }
-
+ $this->setHeader('Expires', sprintf('%s GMT', gmdate('D, d M Y H:i:s', time() + $duration)), $overwrite);
+ $this->setHeader('Pragma', 'cache', $overwrite);
+ $this->setHeader('Cache-Control', "public, max-age=$duration", $overwrite);
return $this;
}
@@ -144,20 +135,20 @@ public function setCacheHeaders(int $duration = 31536000, bool $overwrite = true
* @since 3.5.0
*/
public function setNoCacheHeaders(bool $overwrite = true): self
+ {
+ $this->setHeader('Expires', '0', $overwrite);
+ $this->setHeader('Pragma', 'no-cache', $overwrite);
+ $this->setHeader('Cache-Control', 'no-cache, no-store, must-revalidate', $overwrite);
+ return $this;
+ }
+
+ private function setHeader(string $name, string $value, bool $overwrite): void
{
if ($overwrite) {
- $this->getHeaders()
- ->set('Expires', '0')
- ->set('Pragma', 'no-cache')
- ->set('Cache-Control', 'no-cache, no-store, must-revalidate');
+ $this->getHeaders()->set($name, $value);
} else {
- $this->getHeaders()
- ->setDefault('Expires', '0')
- ->setDefault('Pragma', 'no-cache')
- ->setDefault('Cache-Control', 'no-cache, no-store, must-revalidate');
+ $this->getHeaders()->setDefault($name, $value);
}
-
- return $this;
}
/**
diff --git a/src/web/TemplateResponseFormatter.php b/src/web/TemplateResponseFormatter.php
index 0aa4e652bad..2c706a51eb3 100644
--- a/src/web/TemplateResponseFormatter.php
+++ b/src/web/TemplateResponseFormatter.php
@@ -8,12 +8,13 @@
namespace craft\web;
use Craft;
+use craft\errors\ExitException;
use craft\helpers\FileHelper;
use craft\helpers\StringHelper;
use craft\web\assets\iframeresizer\ContentWindowAsset;
use Throwable;
use yii\base\Component;
-use yii\base\ExitException;
+use yii\base\ExitException as YiiExitException;
use yii\base\InvalidConfigException;
use yii\web\ResponseFormatterInterface;
@@ -55,14 +56,18 @@ public function format($response)
try {
$response->content = $view->renderPageTemplate($behavior->template, $behavior->variables, $behavior->templateMode);
} catch (Throwable $e) {
- if (!$e->getPrevious() instanceof ExitException) {
- // Bail on the template response
- $response->format = Response::FORMAT_HTML;
- throw $e;
+ $previous = $e->getPrevious();
+ if ($previous instanceof YiiExitException) {
+ // Something called Craft::$app->end()
+ if ($previous instanceof ExitException && $previous->output !== null) {
+ echo $previous->output;
+ }
+ return;
}
- // Something called Craft::$app->end()
- return;
+ // Bail on the template response
+ $response->format = Response::FORMAT_HTML;
+ throw $e;
}
$headers = $response->getHeaders();
diff --git a/src/web/View.php b/src/web/View.php
index b1ea1a27b13..bdd0c85af62 100644
--- a/src/web/View.php
+++ b/src/web/View.php
@@ -276,6 +276,14 @@ class View extends \yii\web\View
*/
private array $_htmlBuffers = [];
+ /**
+ * @var array
+ * @see startMetaTagBuffer()
+ * @see clearMetaTagBuffer()
+ * @since 4.5.8
+ */
+ private array $_metaTagBuffers = [];
+
/**
* @var array|null the registered generic `\r\n\r\n\r\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./Vuetable.vue?vue&type=template&id=5bfa05b0&scoped=true&\"\nimport script from \"./Vuetable.vue?vue&type=script&lang=js&\"\nexport * from \"./Vuetable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vuetable.vue?vue&type=style&index=0&id=5bfa05b0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bfa05b0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isFixedHeader)?_c('div',[_c('div',{staticClass:\"vuetable-head-wrapper\"},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableHeaderClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]}),_vm._v(\" \"),(_vm.scrollVisible)?_c('th',{staticClass:\"vuetable-gutter-col\",style:({width: _vm.scrollBarWidth})}):_vm._e()],2)])])]),_vm._v(\" \"),_c('div',{staticClass:\"vuetable-body-wrapper\",style:({height: _vm.tableHeight})},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableBodyClass]},[_c('colgroup',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[_c('col',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass],style:({width: field.width}),attrs:{\"id\":'_col_' + field.name}})]:_vm._e()]})],2),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"click\":function($event){return _vm.onRowClicked(item, $event)},\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.renderNormalField(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])])]):_c('table',{class:['vuetable', _vm.css.tableClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]})],2)]),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)},\"click\":function($event){return _vm.onRowClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[(_vm.hasCallback(field))?_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.callCallback(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}}):_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.getObjectValue(item, field.name, ''))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTablePagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTablePagination.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.tablePagination)?_c('div',{staticClass:\"vue-admin-table-pagination flex pagination\"},[_c('div',{staticClass:\"page-link prev-page\",class:[_vm.isOnFirstPage ? 'disabled' : ''],attrs:{\"title\":\"Previous Page\"},on:{\"click\":function($event){return _vm.loadPage('prev')}}}),_vm._v(\" \"),_c('div',{staticClass:\"page-link next-page\",class:[_vm.isOnLastPage ? 'disabled' : ''],attrs:{\"title\":\"Next Page\"},on:{\"click\":function($event){return _vm.loadPage('next')}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tablePagination),expression:\"tablePagination\"}],staticClass:\"page-info\"},[_vm._v(_vm._s(_vm.paginationLabel))])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n","import { render, staticRenderFns } from \"./AdminTablePagination.vue?vue&type=template&id=53f2bb54&\"\nimport script from \"./AdminTablePagination.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTablePagination.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTablePagination.vue?vue&type=style&index=0&id=53f2bb54&prod&land=scss&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./AdminTableDeleteButton.vue?vue&type=template&id=dd219432&scoped=true&\"\nimport script from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd219432\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"delete icon\",class:{disabled: _vm.disabled},attrs:{\"title\":_vm.deleteTitle,\"role\":\"button\",\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkbox\",class:{\n checked: _vm.isChecked,\n 'table-disabled-checkbox': !_vm.status,\n },attrs:{\"title\":_vm.title},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableCheckbox.vue?vue&type=template&id=1bbfb992&scoped=true&\"\nimport script from \"./AdminTableCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableCheckbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTableCheckbox.vue?vue&type=style&index=0&id=1bbfb992&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1bbfb992\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./AdminTableActionButton.vue?vue&type=template&id=48f15ca4&scoped=true&\"\nimport script from \"./AdminTableActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableActionButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48f15ca4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"form\",attrs:{\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.tokenName},domProps:{\"value\":_vm.tokenValue}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"action\"},domProps:{\"value\":_vm.action}}),_vm._v(\" \"),(_vm.param)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.param},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.ids),function(id,index){return _c('input',{key:index,attrs:{\"type\":\"hidden\",\"name\":\"ids[]\"},domProps:{\"value\":id}})}),_vm._v(\" \"),_c(_vm.isMenuButton ? 'div' : 'button',_vm._g({ref:\"button\",tag:\"component\",staticClass:\"btn\",class:{\n menubtn: _vm.isMenuButton,\n error: _vm.error,\n disabled: !_vm.enabled || _vm.buttonDisabled,\n },attrs:{\"data-icon\":_vm.icon,\"disabled\":_vm.buttonDisabled,\"type\":_vm.enabled && !_vm.isMenuButton && !_vm.ajax ? 'submit' : null}},\n _vm.enabled && !_vm.isMenuButton && _vm.ajax\n ? {click: _vm.handleClick(_vm.param, _vm.value, _vm.action, _vm.ajax)}\n : {}\n ),[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),(_vm.isMenuButton)?_c('div',{staticClass:\"menu\"},[_vm._l((_vm.actionsList),function(actList,ind){return [_c('ul',{key:ind,staticClass:\"padded\"},_vm._l((actList),function(act,index){return _c('li',{key:index},[_c('a',{class:{\n error: act.error !== undefined && act.error,\n disabled:\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected,\n },attrs:{\"href\":\"#\",\"data-param\":act.param,\"data-value\":act.value,\"data-ajax\":act.ajax},on:{\"click\":function($event){$event.preventDefault();!(\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected\n )\n ? _vm.handleClick(act.param, act.value, act.action, act.ajax)\n : null}}},[(act.status)?_c('span',{class:'status ' + act.status}):_vm._e(),_vm._v(_vm._s(act.label)+\"\\n \")])])}),0),_vm._v(\" \"),(\n _vm.actionsList.length > 1 && ind != _vm.actionsList.length - 1 && ind != 0\n )?_c('hr',{key:ind}):_vm._e()]})],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(\n _vm.rowData.detail.content &&\n (!_vm.rowData.detail.showAsList || _vm.rowData.detail.showAsList === undefined)\n )?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.rowData.detail.content)}}):_vm._e(),_vm._v(\" \"),(_vm.rowData.detail.content && _vm.rowData.detail.showAsList)?_c('div',_vm._l((_vm.listKeys),function(key){return _c('div',{key:key,staticClass:\"order-flex detail-list\",class:{'detail-list-bg': _vm.index % 2}},[_c('div',{staticClass:\"detail-list-key\"},[_vm._v(_vm._s(key)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-list-value\"},[_vm._v(_vm._s(_vm.list[key]))])])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AdminTableDetailRow.vue?vue&type=template&id=759b1d62&\"\nimport script from \"./AdminTableDetailRow.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableDetailRow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTableDetailRow.vue?vue&type=style&index=0&id=759b1d62&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./AdminTableButton.vue?vue&type=template&id=0235bfad&scoped=true&\"\nimport script from \"./AdminTableButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0235bfad\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{ref:\"button\",staticClass:\"btn\",class:_vm.buttonClass,attrs:{\"href\":_vm.linkHref,\"data-icon\":_vm.icon},on:{\"click\":_vm.handleClick}},[_vm._v(_vm._s(_vm.label))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableCopyTextButton.vue?vue&type=template&id=b82d2fda&scoped=true&\"\nimport script from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b82d2fda\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vue-admin-table\",class:{'vue-admin-table-padded': _vm.padded},attrs:{\"id\":_vm.tableId}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showToolbar),expression:\"showToolbar\"}],staticClass:\"toolbar\"},[_c('div',{staticClass:\"flex flex-nowrap\"},[_vm._l((_vm.actions),function(action,index){return _c('div',{key:index},[_c('admin-table-action-button',{attrs:{\"label\":action.label,\"icon\":action.icon,\"action\":action.action,\"actions\":action.actions,\"allow-multiple\":action.allowMultiple,\"ids\":_vm.checks,\"enabled\":_vm.checks.length ? true : false,\"error\":action.error,\"ajax\":action.ajax},on:{\"reload\":_vm.reload}})],1)}),_vm._v(\" \"),(_vm.search && !_vm.tableData.length)?_c('div',{staticClass:\"flex-grow texticon search icon clearable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],staticClass:\"text fullwidth\",attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":_vm.searchPlaceholderText},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.searchTerm=$event.target.value},_vm.handleSearch]}}),_vm._v(\" \"),_c('div',{staticClass:\"clear hidden\",attrs:{\"title\":_vm.searchClearTitle}})]):_vm._e(),_vm._v(\" \"),(_vm.buttons && _vm.buttons.length)?_c('div',{staticClass:\"vue-admin-table-buttons\"},[_c('div',{staticClass:\"flex flex-nowrap\"},_vm._l((_vm.buttons),function(button,index){return _c('div',{key:index},[_c('admin-table-button',{attrs:{\"label\":button.label,\"icon\":button.icon,\"href\":button.href,\"btn-class\":button.class,\"enabled\":_vm.isLoading\n ? false\n : button.enabled != undefined\n ? button.enabled\n : true}})],1)}),0)]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{class:{'content-pane': _vm.fullPage}},[(this.isEmpty)?_c('div',{staticClass:\"zilch\"},[_c('p',[_vm._v(_vm._s(_vm.emptyMessage))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tableview\",class:{loading: _vm.isLoading, hidden: this.isEmpty}},[_c('div',{class:{'vue-admin-tablepane': true, tablepane: _vm.fullPane}},[_c('vuetable',{ref:\"vuetable\",attrs:{\"append-params\":_vm.appendParams,\"api-mode\":_vm.apiUrl ? true : false,\"api-url\":_vm.apiUrl,\"css\":_vm.tableCss,\"data\":_vm.tableData,\"detail-row-component\":_vm.detailRowComponent,\"fields\":_vm.fields,\"per-page\":_vm.perPage,\"no-data-template\":_vm.noDataTemplate,\"query-params\":_vm.queryParams,\"pagination-path\":\"pagination\"},on:{\"vuetable:loaded\":_vm.init,\"vuetable:loading\":_vm.loading,\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.onLoadSuccess},scopedSlots:_vm._u([{key:\"checkbox\",fn:function(props){return [_c('admin-table-checkbox',{attrs:{\"id\":props.rowData.id,\"checks\":_vm.checks,\"status\":_vm.checkboxStatus(props.rowData)},on:{\"addCheck\":_vm.addCheck,\"removeCheck\":_vm.removeCheck}})]}},{key:\"title\",fn:function(props){return [(props.rowData.status !== undefined)?_c('span',{staticClass:\"status\",class:{enabled: props.rowData.status}}):_vm._e(),_vm._v(\" \"),(props.rowData.url)?_c('a',{class:{'cell-bold': props.rowData.status === undefined},attrs:{\"href\":props.rowData.url}},[_vm._v(_vm._s(props.rowData.title))]):_c('span',{class:{'cell-bold': props.rowData.status === undefined}},[_vm._v(_vm._s(props.rowData.title))])]}},{key:\"handle\",fn:function(props){return [_c('admin-table-copy-text-button',{key:props.rowData.id,attrs:{\"value\":props.rowData.handle}})]}},{key:\"menu\",fn:function(props){return [(props.rowData.menu.showItems)?[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label)+\" (\"+_vm._s(props.rowData.menu.items.length)+\")\")]),_vm._v(\" \"),_c('a',{staticClass:\"menubtn\",attrs:{\"title\":props.rowData.menu.label}}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((props.rowData.menu.items),function(item,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":item.url}},[_vm._v(_vm._s(item.label))])])}),0)])]:[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label))])]]}},{key:\"detail\",fn:function(props){return [(\n props.rowData.detail.content && props.rowData.detail.handle\n )?_c('div',{staticClass:\"detail-cursor-pointer\",domProps:{\"innerHTML\":_vm._s(props.rowData.detail.handle)},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e(),_vm._v(\" \"),(\n props.rowData.detail.content &&\n (!props.rowData.detail.handle ||\n props.rowData.detail.handle == undefined) &&\n (Object.keys(props.rowData.detail.content).length ||\n props.rowData.detail.content.length)\n )?_c('div',{staticClass:\"detail-cursor-pointer\",attrs:{\"data-icon\":\"info\",\"title\":props.rowData.detail.title},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e()]}},{key:\"reorder\",fn:function(props){return [_c('i',{staticClass:\"move icon vue-table-move-handle\",class:{disabled: !_vm.canReorder},attrs:{\"data-id\":props.rowData.id}})]}},{key:\"delete\",fn:function(props){return [(\n props.rowData._showDelete == undefined ||\n props.rowData._showDelete == true\n )?_c('admin-table-delete-button',{attrs:{\"id\":props.rowData.id,\"name\":props.rowData.title,\"before\":_vm.beforeDelete,\"success-message\":_vm.deleteSuccessMessage,\"confirmation-message\":_vm.deleteConfirmationMessage,\"fail-message\":_vm.deleteFailMessage,\"action-url\":_vm.deleteAction,\"disabled\":!_vm.canDelete},on:{\"loading\":function($event){return _vm.loading()},\"finishloading\":function($event){return _vm.loading(false)},\"reload\":function($event){return _vm.remove(props.rowIndex, props.rowData.id)}}}):_vm._e()]}}])})],1),_vm._v(\" \"),_c('admin-table-pagination',{ref:\"pagination\",attrs:{\"itemLabels\":_vm.itemLabels},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0573d132&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=0573d132&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* jshint esversion: 6, strict: false */\n/* global Craft */\n/* global Garnish */\n/* global $ */\n\nimport Vue from 'vue';\nimport AdminTable from '@craftcms/vue/admintable/App';\n\nCraft.VueAdminTable = Garnish.Base.extend(\n {\n instance: null,\n $table: null,\n\n init: function (settings) {\n this.setSettings(settings, Craft.VueAdminTable.defaults);\n\n const _this = this;\n\n this.instance = new Vue({\n components: {\n AdminTable,\n },\n data() {\n return {\n props: _this.settings,\n };\n },\n render(h) {\n return h(AdminTable, {\n ref: 'admin-table',\n props: this.props,\n });\n },\n });\n\n this.instance.$mount(this.settings.container);\n this.$table = this.instance.$refs['admin-table'];\n\n return this.instance;\n },\n reload() {\n this.$table.reload();\n },\n },\n {\n defaults: {\n actions: [],\n checkboxes: false,\n checkboxStatus: function () {\n return true;\n },\n columns: [],\n container: null,\n deleteAction: null,\n reorderAction: null,\n reorderSuccessMessage: Craft.t('app', 'Items reordered.'),\n reorderFailMessage: Craft.t('app', 'Couldn’t reorder items.'),\n search: false,\n searchPlaceholder: Craft.t('app', 'Search'),\n buttons: [],\n tableData: [],\n tableDataEndpoint: null,\n onLoaded: $.noop,\n onLoading: $.noop,\n onData: $.noop,\n onPagination: $.noop,\n onSelect: $.noop,\n onQueryParams: $.noop,\n },\n }\n);\n"],"names":["undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsCombo","rsDigits","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","require","types","binding","e","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","length","call","arrayAggregator","array","setter","iteratee","accumulator","index","value","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","key","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","slice","trimmedEndIndex","replace","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","charAt","unescapeHtmlChar","_","runInContext","context","uid","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","idCounter","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","defineProperty","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","this","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","push","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","get","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","symbol","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","name","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","arguments","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","fn","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","type","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","target","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","global","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","content","__esModule","default","locals","listToStyles","parentId","list","styles","newStyles","i","item","part","css","media","sourceMap","parts","hasDocument","document","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","navigator","userAgent","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","btoa","encodeURIComponent","JSON","stringify","firstChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","d","a","definition","o","enumerable","globalThis","window","nmd","children","Vue","axios","fields","required","loadOnStart","apiUrl","httpMethod","validator","reactiveApiUrl","apiMode","dataTotal","Number","dataManager","dataPath","paginationPath","queryParams","page","perPage","appendParams","httpOptions","httpFetch","initialPage","sortOrder","multiSort","tableHeight","multiSortKey","rowClassCallback","rowClass","detailRowComponent","detailRowTransition","trackBy","tableClass","loadingClass","ascendingIcon","descendingIcon","ascendingClass","descendingClass","sortableIcon","detailRowClass","handleIcon","tableBodyClass","tableHeaderClass","minRows","silent","noDataTemplate","showSortIcons","eventPrefix","tableFields","tableData","tablePagination","currentPage","selectedTo","visibleDetailRows","lastScrollPosition","scrollBarWidth","scrollVisible","mounted","normalizeFields","normalizeSortOrder","isFixedHeader","getScrollBarWidth","$nextTick","fireEvent","loadData","elem","$el","getElementsByClassName","addEventListener","handleScroll","destroyed","removeEventListener","version","useDetailRow","warn","countVisibleFields","field","visible","countTableData","displayEmptyDataRow","lessThanMinRows","blankRows","isApiMode","isDataMode","methods","inner","style","visibility","width","body","widthWithoutScrollbar","offsetWidth","overflow","widthWithScrollbar","horizontal","currentTarget","scrollLeft","header","title","setTitle","titleClass","dataClass","sortField","getObjectValue","fixHeader","str","isSpecialField","titleCase","getTitle","renderTitle","isInCurrentSortGroup","hasSortableIcon","sortIconOpacity","renderIconTag","sortIcon","renderSequence","from","renderNormalField","hasCallback","callCallback","fieldName","txt","substr","delimiter","notIn","arr","success","loadSuccess","failed","loadFailed","getAppendParams","getAllQueryParams","fetch","then","catch","callDataManager","response","scrollHeight","clientHeight","console","error","parentFunctionExists","$parent","callParentFunction","eventName","$emit","msg","params","getSortParam","getDefaultSortParam","direction","x","extractName","extractArgs","isSortable","currentSortOrderPosition","fieldIsInSortOrderPosition","event","multiColumnSort","singleColumnSort","clearSortOrder","sortClass","cls","shift","toggleCheckbox","dataItem","isChecked","checked","idColumn","selectId","unselectId","isSelectedRow","rowSelected","checkCheckboxesState","selector","els","querySelectorAll","cb","selected","el","indeterminate","toggleAllCheckboxes","gotoPreviousPage","gotoNextPage","last_page","gotoPage","isVisibleDetailRow","rowId","showDetailRow","hideDetailRow","toggleDetailRow","showField","hideField","toggleField","classes","renderIcon","makePagination","total","onRowClass","onRowChanged","onRowClicked","onRowDoubleClicked","onDetailRowClick","onCellClicked","onCellDoubleClicked","onCellRightClicked","changePage","reload","refresh","resetData","watch","newVal","oldVal","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","_vm","_c","_self","staticClass","class","_l","fieldIndex","attrs","domProps","on","$event","_e","_v","_s","height","itemIndex","_t","mixins","wrapperClass","activeClass","disabledClass","pageClass","linkClass","paginationClass","paginationInfoClass","dropdownClass","icons","prev","onEachSide","totalPage","isOnFirstPage","current_page","isOnLastPage","notEnoughPages","windowSize","windowStart","loadPage","isCurrentPage","setPaginationData","itemLabels","singular","plural","paginationLabel","items","directives","rawName","expression","actionUrl","confirmationMessage","deleteTitle","disabled","failMessage","successMessage","Craft","confirm","confirmDelete","handleClick","_this","preventDefault","selectAll","checks","status","ajax","allowMultiple","enabled","ids","label","icon","button","buttonDisabled","tokenName","tokenValue","param","enableButton","disableButton","actionsList","_tmpActionsList","hasMultipleSelected","isMenuButtonInitialised","isMenuButton","ref","_g","menubtn","click","actList","ind","act","rowData","rowIndex","addDelimiter","listKeys","created","detail","showAsList","btnClass","href","buttonClass","isEnabled","linkHref","$","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","off","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","val","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","innerHeight","innerWidth","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","display","Sortable","ghost","dragged","draggable","lastChild","lastElementChild","previousElementSibling","nodeName","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollTop","includeSelf","gotSelf","clientWidth","scrollWidth","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","ms","scrollBy","y","Polymer","jQuery","Zepto","dom","cloneNode","expando","getTime","plugins","initializeByDefault","PluginManager","mount","plugin","option","p","pluginName","pluginEvent","sortable","evt","eventCanceled","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_excluded","_ref","originalEvent","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","rect","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","animationCallbackId","animationStates","store","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","child","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","src","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","composedPath","inputs","idx","_saveInputCheckedState","isContentEditable","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","removeAttribute","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","_ghostIsFirst","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","dropEffect","_globalDragOver","order","getAttribute","useAnimation","destroy","utils","is","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","components","AdminTableCopyTextButton","AdminTableActionButton","AdminTableCheckbox","AdminTableDeleteButton","AdminTablePagination","AdminTableButton","Vuetable","allowMultipleSelections","beforeDelete","buttons","checkboxes","checkboxStatus","columns","deleteAction","deleteCallback","deleteConfirmationMessage","deleteFailMessage","deleteSuccessMessage","emptyMessage","fullPage","fullPane","minItems","padded","reorderAction","reorderSuccessMessage","reorderFailMessage","searchPlaceholder","tableDataEndpoint","onLoaded","onLoading","onData","onPagination","onSelect","onQueryParams","detailRow","dragging","isLoading","searchClearTitle","searchTerm","tableBodySelector","init","onSort","onStart","onEnd","loading","startReorder","endReorder","handleReorder","ev","startPosition","addCheck","removeCheck","handleSearch","handleSelectAll","handleDetailRow","deselectAll","onLoadSuccess","onPaginationData","onChangePage","handleOnSelectCallback","per_page","tableId","canDelete","canReorder","disabledCheckboxesCount","checkboxCount","searchPlaceholderText","showToolbar","tableCss","checkbox","$contentHeader","composing","hidden","tablepane","scopedSlots","_u","url","menu","showItems","_showDelete","VueAdminTable","Garnish","Base","instance","$table","setSettings","AdminTable","$mount","$refs","t"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"js/app.js","mappings":"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","sources":["webpack:///../../../../../node_modules/lodash/lodash.js","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?0d13","webpack:///../../../../../packages/craftcms-vue/admintable/App.vue?11f5","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCheckbox.vue?99c2","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDetailRow.vue?eb04","webpack:///../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/node module decorator","webpack:///external var \"Vue\"","webpack:///external var \"axios\"","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?51b0","webpack:///../node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?2c18","webpack:///../../../../../node_modules/vuetable-2/src/components/Vuetable.vue?36b4","webpack:///../../../../../node_modules/vuetable-2/src/components/VuetablePaginationMixin.vue?f45d","webpack:///../../../../../node_modules/vuetable-2/src/components/VuetablePaginationMixin.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTablePagination.vue?40c9","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTablePagination.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTablePagination.vue?a80f","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDeleteButton.vue?a480","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDeleteButton.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDeleteButton.vue?9e93","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCheckbox.vue?a6d1","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCheckbox.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCheckbox.vue?e83c","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCheckbox.vue?d8db","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableActionButton.vue?d3cd","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableActionButton.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableActionButton.vue?f4cf","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDetailRow.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDetailRow.vue?520b","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDetailRow.vue?41cf","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableDetailRow.vue?ad1a","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableButton.vue?2253","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableButton.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableButton.vue?b159","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCopyTextButton.vue?4b3d","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCopyTextButton.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableCopyTextButton.vue?cb99","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableMoveToPageHud.vue?ac1d","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableMoveToPageHud.vue","webpack:///../../../../../packages/craftcms-vue/admintable/components/AdminTableMoveToPageHud.vue?fe6b","webpack:///../../../../../node_modules/sortablejs/modular/sortable.esm.js","webpack:///../../../../../packages/craftcms-vue/admintable/App.vue","webpack:///../../../../../packages/craftcms-vue/admintable/App.vue?5f58","webpack:///../../../../../packages/craftcms-vue/admintable/App.vue?dfaa","webpack:///../../../../../packages/craftcms-vue/admintable/App.vue?7aa7","webpack:///./main.js"],"sourcesContent":["/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '' + func(text) + ' ';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\r\n\r\n\r\n","import mod from \"-!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuetable.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./Vuetable.vue?vue&type=template&id=5bfa05b0&scoped=true&\"\nimport script from \"./Vuetable.vue?vue&type=script&lang=js&\"\nexport * from \"./Vuetable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Vuetable.vue?vue&type=style&index=0&id=5bfa05b0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bfa05b0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isFixedHeader)?_c('div',[_c('div',{staticClass:\"vuetable-head-wrapper\"},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableHeaderClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || ''],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]}),_vm._v(\" \"),(_vm.scrollVisible)?_c('th',{staticClass:\"vuetable-gutter-col\",style:({width: _vm.scrollBarWidth})}):_vm._e()],2)])])]),_vm._v(\" \"),_c('div',{staticClass:\"vuetable-body-wrapper\",style:({height: _vm.tableHeight})},[_c('table',{class:['vuetable', _vm.css.tableClass, _vm.css.tableBodyClass]},[_c('colgroup',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[_c('col',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass],style:({width: field.width}),attrs:{\"id\":'_col_' + field.name}})]:_vm._e()]})],2),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"click\":function($event){return _vm.onRowClicked(item, $event)},\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.renderNormalField(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])])]):_c('table',{class:['vuetable', _vm.css.tableClass]},[_c('thead',[_c('tr',[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__checkbox')?_c('th',{key:fieldIndex,class:['vuetable-th-checkbox-'+_vm.trackBy, field.titleClass],style:({width: field.width})},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checkCheckboxesState(field.name)},on:{\"change\":function($event){return _vm.toggleAllCheckboxes(field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__component')?_c('th',{key:fieldIndex,class:['vuetable-th-component-'+_vm.trackBy, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__slot')?_c('th',{key:fieldIndex,class:['vuetable-th-slot-'+_vm.extractArgs(field.name), field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__sequence')?_c('th',{key:fieldIndex,class:['vuetable-th-sequence', field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e(),_vm._v(\" \"),(_vm.notIn(_vm.extractName(field.name), ['__sequence', '__checkbox', '__component', '__slot']))?_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass || '', _vm.sortClass(field)],style:({width: field.width}),domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))}}):_vm._e()]:[_c('th',{key:fieldIndex,class:['vuetable-th-'+field.name, field.titleClass, _vm.sortClass(field), {'sortable': _vm.isSortable(field)}],style:({width: field.width}),attrs:{\"id\":'_' + field.name},domProps:{\"innerHTML\":_vm._s(_vm.renderTitle(field))},on:{\"click\":function($event){return _vm.orderBy(field, $event)}}})]]:_vm._e()]})],2)]),_vm._v(\" \"),_c('tbody',{staticClass:\"vuetable-body\"},[_vm._l((_vm.tableData),function(item,itemIndex){return [_c('tr',{key:itemIndex,class:_vm.onRowClass(item, itemIndex),attrs:{\"item-index\":itemIndex,\"render\":_vm.onRowChanged(item)},on:{\"dblclick\":function($event){return _vm.onRowDoubleClicked(item, $event)},\"click\":function($event){return _vm.onRowClicked(item, $event)}}},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?[(_vm.isSpecialField(field.name))?[(_vm.extractName(field.name) == '__sequence')?_c('td',{key:fieldIndex,class:['vuetable-sequence', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderSequence(itemIndex))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__handle')?_c('td',{key:fieldIndex,class:['vuetable-handle', field.dataClass],domProps:{\"innerHTML\":_vm._s(_vm.renderIconTag(['handle-icon', _vm.css.handleIcon]))}}):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) == '__checkbox')?_c('td',{key:fieldIndex,class:['vuetable-checkboxes', field.dataClass]},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.rowSelected(item, field.name)},on:{\"change\":function($event){return _vm.toggleCheckbox(item, field.name, $event)}}})]):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__component')?_c('td',{key:fieldIndex,class:['vuetable-component', field.dataClass]},[_c(_vm.extractArgs(field.name),{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex,\"row-field\":field.sortField}})],1):_vm._e(),_vm._v(\" \"),(_vm.extractName(field.name) === '__slot')?_c('td',{key:fieldIndex,class:['vuetable-slot', field.dataClass]},[_vm._t(_vm.extractArgs(field.name),null,{\"rowData\":item,\"rowIndex\":itemIndex,\"rowField\":field.sortField})],2):_vm._e()]:[(_vm.hasCallback(field))?_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.callCallback(field, item))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}}):_c('td',{key:fieldIndex,class:field.dataClass,domProps:{\"innerHTML\":_vm._s(_vm.getObjectValue(item, field.name, ''))},on:{\"click\":function($event){return _vm.onCellClicked(item, field, $event)},\"dblclick\":function($event){return _vm.onCellDoubleClicked(item, field, $event)},\"contextmenu\":function($event){return _vm.onCellRightClicked(item, field, $event)}}})]]:_vm._e()]})],2),_vm._v(\" \"),(_vm.useDetailRow)?[_c('transition',{key:itemIndex,attrs:{\"name\":_vm.detailRowTransition}},[(_vm.isVisibleDetailRow(item[_vm.trackBy]))?_c('tr',{class:[_vm.css.detailRowClass],on:{\"click\":function($event){return _vm.onDetailRowClick(item, $event)}}},[_c('td',{attrs:{\"colspan\":_vm.countVisibleFields}},[_c(_vm.detailRowComponent,{tag:\"component\",attrs:{\"row-data\":item,\"row-index\":itemIndex}})],1)]):_vm._e()])]:_vm._e()]}),_vm._v(\" \"),(_vm.displayEmptyDataRow)?[_c('tr',[_c('td',{staticClass:\"vuetable-empty-result\",attrs:{\"colspan\":_vm.countVisibleFields},domProps:{\"innerHTML\":_vm._s(_vm.noDataTemplate)}})])]:_vm._e(),_vm._v(\" \"),(_vm.lessThanMinRows)?_vm._l((_vm.blankRows),function(i){return _c('tr',{key:i,staticClass:\"blank-row\"},[_vm._l((_vm.tableFields),function(field,fieldIndex){return [(field.visible)?_c('td',{key:fieldIndex},[_vm._v(\" \")]):_vm._e()]})],2)}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./VuetablePaginationMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n","import { render, staticRenderFns } from \"./AdminTablePagination.vue?vue&type=template&id=0db42f96&\"\nimport script from \"./AdminTablePagination.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTablePagination.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n \n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.tablePagination)?_c('div',{staticClass:\"vue-admin-table-pagination flex pagination\"},[_c('div',{staticClass:\"page-link prev-page\",class:[_vm.isOnFirstPage ? 'disabled' : ''],attrs:{\"title\":\"Previous Page\"},on:{\"click\":function($event){return _vm.loadPage('prev')}}}),_vm._v(\" \"),_c('div',{staticClass:\"page-link next-page\",class:[_vm.isOnLastPage ? 'disabled' : ''],attrs:{\"title\":\"Next Page\"},on:{\"click\":function($event){return _vm.loadPage('next')}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tablePagination),expression:\"tablePagination\"}],staticClass:\"page-info\"},[_vm._v(_vm._s(_vm.paginationLabel))])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableDeleteButton.vue?vue&type=template&id=dd219432&scoped=true&\"\nimport script from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableDeleteButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd219432\",\n null\n \n)\n\nexport default component.exports","\n \n\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"delete icon\",class:{disabled: _vm.disabled},attrs:{\"title\":_vm.deleteTitle,\"role\":\"button\",\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../src/web/assets/admintable/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../src/web/assets/admintable/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableCheckbox.vue?vue&type=script&lang=js&\"","\n \n\n\n\n\n\n","import { render, staticRenderFns } from \"./AdminTableCheckbox.vue?vue&type=template&id=1bbfb992&scoped=true&\"\nimport script from \"./AdminTableCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableCheckbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTableCheckbox.vue?vue&type=style&index=0&id=1bbfb992&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1bbfb992\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"checkbox\",class:{\n checked: _vm.isChecked,\n 'table-disabled-checkbox': !_vm.status,\n },attrs:{\"title\":_vm.title},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableActionButton.vue?vue&type=template&id=0f3a4a92&scoped=true&\"\nimport script from \"./AdminTableActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableActionButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f3a4a92\",\n null\n \n)\n\nexport default component.exports","\n \n\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"form\",attrs:{\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.tokenName},domProps:{\"value\":_vm.tokenValue}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"action\"},domProps:{\"value\":_vm.action}}),_vm._v(\" \"),(_vm.param)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.param},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.ids),function(id,index){return _c('input',{key:index,attrs:{\"type\":\"hidden\",\"name\":\"ids[]\"},domProps:{\"value\":id}})}),_vm._v(\" \"),_c(_vm.isMenuButton ? 'div' : 'button',_vm._g({ref:\"button\",tag:\"component\",staticClass:\"btn\",class:_vm.menuBtnClasses,attrs:{\"data-icon\":_vm.icon,\"disabled\":_vm.buttonDisabled,\"type\":_vm.enabled && !_vm.isMenuButton && !_vm.ajax ? 'submit' : null}},\n _vm.enabled && !_vm.isMenuButton && _vm.ajax\n ? {click: _vm.handleClick(_vm.param, _vm.value, _vm.action, _vm.ajax, _vm.handleClick)}\n : {}\n ),[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),(_vm.isMenuButton)?_c('div',{staticClass:\"menu\"},[_vm._l((_vm.actionsList),function(actList,ind){return [(\n _vm.actionsList.length > 1 && ind === _vm.actionsList.length - 1 && ind != 0\n )?_c('hr',{key:ind}):_vm._e(),_vm._v(\" \"),_c('ul',{key:ind,staticClass:\"padded\"},_vm._l((actList),function(act,index){return _c('li',{key:index},[_c('a',{class:Object.assign({}, (act.class ? act.class : {}),\n {\n error: act.error !== undefined && act.error,\n disabled:\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected,\n }),attrs:{\"href\":\"#\",\"data-param\":act.param,\"data-value\":act.value,\"data-ajax\":act.ajax},on:{\"click\":function($event){$event.preventDefault();!(\n act.allowMultiple !== undefined &&\n !act.allowMultiple &&\n _vm.hasMultipleSelected\n )\n ? _vm.handleClick(\n act.param,\n act.value,\n act.action,\n act.ajax,\n act.handleClick\n )\n : null}}},[(act.status)?_c('span',{class:'status ' + act.status}):_vm._e(),_vm._v(_vm._s(act.label)+\"\\n \")])])}),0),_vm._v(\" \"),(\n _vm.actionsList.length > 1 && ind != _vm.actionsList.length - 1 && ind != 0\n )?_c('hr',{key:ind}):_vm._e()]})],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n {{ key }}: \n {{ list[key] }} \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../src/web/assets/admintable/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../src/web/assets/admintable/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTableDetailRow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AdminTableDetailRow.vue?vue&type=template&id=759b1d62&\"\nimport script from \"./AdminTableDetailRow.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableDetailRow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTableDetailRow.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(\n _vm.rowData.detail.content &&\n (!_vm.rowData.detail.showAsList || _vm.rowData.detail.showAsList === undefined)\n )?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.rowData.detail.content)}}):_vm._e(),_vm._v(\" \"),(_vm.rowData.detail.content && _vm.rowData.detail.showAsList)?_c('div',_vm._l((_vm.listKeys),function(key){return _c('div',{key:key,staticClass:\"order-flex detail-list\",class:{'detail-list-bg': _vm.index % 2}},[_c('div',{staticClass:\"detail-list-key\"},[_vm._v(_vm._s(key)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-list-value\"},[_vm._v(_vm._s(_vm.list[key]))])])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableButton.vue?vue&type=template&id=0235bfad&scoped=true&\"\nimport script from \"./AdminTableButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0235bfad\",\n null\n \n)\n\nexport default component.exports","\n {{ label }}\n\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{ref:\"button\",staticClass:\"btn\",class:_vm.buttonClass,attrs:{\"href\":_vm.linkHref,\"data-icon\":_vm.icon},on:{\"click\":_vm.handleClick}},[_vm._v(_vm._s(_vm.label))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableCopyTextButton.vue?vue&type=template&id=b82d2fda&scoped=true&\"\nimport script from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableCopyTextButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b82d2fda\",\n null\n \n)\n\nexport default component.exports","\n \n\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AdminTableMoveToPageHud.vue?vue&type=template&id=743d1544&scoped=true&\"\nimport script from \"./AdminTableMoveToPageHud.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTableMoveToPageHud.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"743d1544\",\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"move-to-page-modal\"},[_c('div',{staticClass:\"last\"},[_c('div',{staticClass:\"field\"},[_c('div',{staticClass:\"heading\"},[_c('label',[_vm._v(_vm._s(_vm.heading))])]),_vm._v(\" \"),_c('div',{staticClass:\"input\"},[_c('div',{staticClass:\"flex flex-nowrap\"},[_c('div',{staticClass:\"select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.page),expression:\"page\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.page=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.selectPages),function(p,key){return _c('option',{key:key,domProps:{\"value\":p}},[_vm._v(\"\\n \"+_vm._s(p)+\"\\n \")])}),0)]),_vm._v(\" \"),_c('button',{staticClass:\"btn submit\",attrs:{\"type\":\"submit\",\"tabindex\":\"0\"}},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.moveButtonText))]),_vm._v(\" \"),_c('div',{staticClass:\"spinner spinner-absolute\"})])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","\n \n\n\n\n\n","import mod from \"-!../../../src/web/assets/admintable/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../src/web/assets/admintable/node_modules/babel-loader/lib/index.js??clonedRuleSet-2.use!../../../src/web/assets/admintable/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3f3af803&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../src/web/assets/admintable/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vue-admin-table\",class:{'vue-admin-table-padded': _vm.padded},attrs:{\"id\":_vm.tableId}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showToolbar),expression:\"showToolbar\"}],staticClass:\"toolbar\"},[_c('div',{staticClass:\"flex flex-nowrap\"},[_vm._l((_vm.actions),function(action,index){return _c('div',{key:index},[_c('admin-table-action-button',{attrs:{\"label\":action.label,\"icon\":action.icon,\"action\":action.action,\"actions\":action.actions,\"allow-multiple\":action.allowMultiple,\"ids\":_vm.checks,\"enabled\":_vm.checks.length ? true : false,\"error\":action.error,\"ajax\":action.ajax},on:{\"reload\":_vm.reload,\"click\":_vm.handleActionClick}})],1)}),_vm._v(\" \"),(_vm.search && !_vm.tableData.length)?_c('div',{staticClass:\"flex-grow texticon search icon clearable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],staticClass:\"text fullwidth\",attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":_vm.searchPlaceholderText},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value},_vm.handleSearch]}}),_vm._v(\" \"),_c('div',{staticClass:\"clear hidden\",attrs:{\"title\":_vm.searchClearTitle}})]):_vm._e(),_vm._v(\" \"),(_vm.buttons && _vm.buttons.length)?_c('div',{staticClass:\"vue-admin-table-buttons\"},[_c('div',{staticClass:\"flex flex-nowrap\"},_vm._l((_vm.buttons),function(button,index){return _c('div',{key:index},[_c('admin-table-button',{attrs:{\"label\":button.label,\"icon\":button.icon,\"href\":button.href,\"btn-class\":button.class,\"enabled\":_vm.isLoading\n ? false\n : button.enabled != undefined\n ? button.enabled\n : true}})],1)}),0)]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{class:{'content-pane': _vm.fullPage}},[(this.isEmpty)?_c('div',{staticClass:\"zilch\"},[_c('p',[_vm._v(_vm._s(_vm.emptyMessage))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tableview\",class:{loading: _vm.isLoading, hidden: this.isEmpty}},[_c('div',{class:{'vue-admin-tablepane': true, tablepane: _vm.fullPane}},[_c('vuetable',{ref:\"vuetable\",attrs:{\"append-params\":_vm.appendParams,\"api-mode\":_vm.apiUrl ? true : false,\"api-url\":_vm.apiUrl,\"css\":_vm.tableCss,\"data\":_vm.tableData,\"detail-row-component\":_vm.detailRowComponent,\"fields\":_vm.fields,\"per-page\":_vm.perPage,\"no-data-template\":_vm.noDataTemplate,\"query-params\":_vm.queryParams,\"row-class\":_vm.rowClass,\"pagination-path\":\"pagination\"},on:{\"vuetable:loaded\":_vm.init,\"vuetable:loading\":_vm.loading,\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.onLoadSuccess,\"vuetable:cell-clicked\":_vm.handleCellClicked,\"vuetable:cell-dblclicked\":_vm.handleCellDoubleClicked,\"vuetable:row-clicked\":_vm.handleRowClicked,\"vuetable:row-dblclicked\":_vm.handleRowDoubleClicked},scopedSlots:_vm._u([{key:\"checkbox\",fn:function(props){return [_c('admin-table-checkbox',{attrs:{\"id\":props.rowData.id,\"checks\":_vm.checks,\"status\":_vm.checkboxStatus(props.rowData)},on:{\"addCheck\":_vm.addCheck,\"removeCheck\":_vm.removeCheck}})]}},{key:\"title\",fn:function(props){return [(props.rowData.status !== undefined)?_c('span',{staticClass:\"status\",class:{enabled: props.rowData.status}}):_vm._e(),_vm._v(\" \"),(props.rowData.url)?_c('a',{class:{'cell-bold': props.rowData.status === undefined},attrs:{\"href\":props.rowData.url}},[_vm._v(_vm._s(props.rowData.title))]):_c('span',{class:{'cell-bold': props.rowData.status === undefined}},[_vm._v(_vm._s(props.rowData.title))])]}},{key:\"handle\",fn:function(props){return [_c('admin-table-copy-text-button',{key:props.rowData.id,attrs:{\"value\":props.rowData.handle}})]}},{key:\"menu\",fn:function(props){return [(props.rowData.menu.showItems)?[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label)),(\n props.rowData.menu.showCount ||\n props.rowData.menu.showCount === undefined\n )?[_vm._v(\"\\n (\"+_vm._s(props.rowData.menu.items.length)+\")\")]:_vm._e()],2),_vm._v(\" \"),_c('a',{staticClass:\"menubtn\",attrs:{\"title\":props.rowData.menu.label}}),_vm._v(\" \"),_c('div',{staticClass:\"menu\"},[_c('ul',_vm._l((props.rowData.menu.items),function(item,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":item.url}},[_vm._v(_vm._s(item.label))])])}),0)])]:[_c('a',{attrs:{\"href\":props.rowData.menu.url}},[_vm._v(_vm._s(props.rowData.menu.label))])]]}},{key:\"detail\",fn:function(props){return [(\n props.rowData.detail.content && props.rowData.detail.handle\n )?_c('div',{staticClass:\"detail-cursor-pointer\",domProps:{\"innerHTML\":_vm._s(props.rowData.detail.handle)},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e(),_vm._v(\" \"),(\n props.rowData.detail.content &&\n (!props.rowData.detail.handle ||\n props.rowData.detail.handle == undefined) &&\n (Object.keys(props.rowData.detail.content).length ||\n props.rowData.detail.content.length)\n )?_c('div',{staticClass:\"detail-cursor-pointer\",attrs:{\"data-icon\":\"info\",\"title\":props.rowData.detail.title},on:{\"click\":function($event){return _vm.handleDetailRow(props.rowData.id)}}}):_vm._e()]}},{key:\"reorder\",fn:function(props){return [_c('i',{staticClass:\"move icon vue-table-move-handle\",class:{disabled: !_vm.canReorder},attrs:{\"data-id\":props.rowData.id}})]}},{key:\"delete\",fn:function(props){return [(\n props.rowData._showDelete == undefined ||\n props.rowData._showDelete == true\n )?_c('admin-table-delete-button',{attrs:{\"id\":props.rowData.id,\"name\":props.rowData.title,\"before\":_vm.beforeDelete,\"success-message\":_vm.deleteSuccessMessage,\"confirmation-message\":_vm.deleteConfirmationMessage,\"fail-message\":_vm.deleteFailMessage,\"action-url\":_vm.deleteAction,\"disabled\":!_vm.canDelete},on:{\"loading\":function($event){return _vm.loading()},\"finishloading\":function($event){return _vm.loading(false)},\"reload\":function($event){return _vm.remove(props.rowIndex, props.rowData.id)}}}):_vm._e()]}}])})],1),_vm._v(\" \"),(_vm.showFooter)?_c('div',{staticClass:\"flex flex-justify vue-admin-table-footer\"},[_c('admin-table-pagination',{ref:\"pagination\",attrs:{\"itemLabels\":_vm.itemLabels},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}}),_vm._v(\" \"),(_vm.checkboxes && _vm.itemActions.length)?_c('div',{class:{hidden: !_vm.checks.length}},[_c('admin-table-action-button',{staticClass:\"vue-admin-table-footer-actions\",attrs:{\"label\":\"\",\"icon\":'settings',\"actions\":_vm.itemActions,\"allow-multiple\":true,\"menu-btn-class\":\"secondary\",\"ids\":_vm.checks,\"enabled\":_vm.checks.length ? true : false},on:{\"reload\":_vm.reload,\"click\":_vm.handleActionClick}})],1):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),(_vm.moveToPageAction && _vm.lastPage !== 1)?_c('div',{staticClass:\"hidden\"},[_c('admin-table-move-to-page-hud',{ref:\"move-to-page-hud\",attrs:{\"trigger\":\".vue-admin-table-footer-actions\",\"action\":_vm.moveToPageAction,\"current-page\":_vm.currentPage,\"per-page\":_vm.perPage,\"pages\":_vm.lastPage,\"move-to-page-action\":_vm.moveToPageAction,\"reorder-success-message\":_vm.reorderSuccessMessage,\"ids\":_vm.checks},on:{\"reload\":_vm.reload,\"submit\":function($event){return _vm.loading()},\"error\":function($event){return _vm.loading(false)}}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* jshint esversion: 6, strict: false */\n/* global Craft */\n/* global Garnish */\n/* global $ */\n\nimport Vue from 'vue';\nimport AdminTable from '@craftcms/vue/admintable/App';\n\nCraft.VueAdminTable = Garnish.Base.extend(\n {\n instance: null,\n $table: null,\n\n init: function (settings) {\n this.setSettings(settings, Craft.VueAdminTable.defaults);\n\n const _this = this;\n\n this.instance = new Vue({\n components: {\n AdminTable,\n },\n data() {\n return {\n props: _this.settings,\n };\n },\n render(h) {\n return h(AdminTable, {\n ref: 'admin-table',\n props: this.props,\n });\n },\n });\n\n this.instance.$mount(this.settings.container);\n this.$table = this.instance.$refs['admin-table'];\n\n return this.instance;\n },\n reload() {\n this.$table.reload();\n },\n },\n {\n defaults: {\n actions: [],\n allowMultipleDeletions: false,\n checkboxes: false,\n checkboxStatus: function () {\n return true;\n },\n columns: [],\n container: null,\n deleteAction: null,\n footerActions: [],\n reorderAction: null,\n paginatedReorderAction: null,\n moveToPageAction: null,\n reorderSuccessMessage: Craft.t('app', 'Items reordered.'),\n reorderFailMessage: Craft.t('app', 'Couldn’t reorder items.'),\n search: false,\n searchPlaceholder: Craft.t('app', 'Search'),\n buttons: [],\n tableData: [],\n tableDataEndpoint: null,\n onLoaded: $.noop,\n onLoading: $.noop,\n onData: $.noop,\n onCellClicked: $.noop,\n onCellDoubleClicked: $.noop,\n onRowClicked: $.noop,\n onRowDoubleClicked: $.noop,\n onPagination: $.noop,\n onSelect: $.noop,\n onQueryParams: $.noop,\n },\n }\n);\n"],"names":["undefined","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsCombo","rsDigits","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","require","types","binding","e","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","length","call","arrayAggregator","array","setter","iteratee","accumulator","index","value","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","result","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","key","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","string","slice","trimmedEndIndex","replace","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","test","mapToArray","map","size","forEach","overArg","transform","arg","replaceHolders","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","charAt","unescapeHtmlChar","_","runInContext","context","uid","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","idCounter","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","toStringTag","defineProperty","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","isArray","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","this","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","push","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","get","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","symbol","Ctor","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","name","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","sort","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","createCtor","arguments","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","fn","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","type","getValue","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bind","bindKey","WRAP_BIND_FLAG","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","target","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","omission","search","substring","global","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","content","locals","listToStyles","parentId","list","styles","newStyles","i","item","part","css","media","sourceMap","parts","hasDocument","document","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","navigator","userAgent","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","createElement","appendChild","obj","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","btoa","encodeURIComponent","JSON","stringify","firstChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","d","a","definition","o","enumerable","globalThis","window","nmd","children","Vue","axios","fields","required","loadOnStart","default","apiUrl","httpMethod","validator","reactiveApiUrl","apiMode","dataTotal","Number","dataManager","dataPath","paginationPath","queryParams","page","perPage","appendParams","httpOptions","httpFetch","initialPage","sortOrder","multiSort","tableHeight","multiSortKey","rowClassCallback","rowClass","detailRowComponent","detailRowTransition","trackBy","tableClass","loadingClass","ascendingIcon","descendingIcon","ascendingClass","descendingClass","sortableIcon","detailRowClass","handleIcon","tableBodyClass","tableHeaderClass","minRows","silent","noDataTemplate","showSortIcons","eventPrefix","tableFields","tableData","tablePagination","currentPage","selectedTo","visibleDetailRows","lastScrollPosition","scrollBarWidth","scrollVisible","mounted","normalizeFields","normalizeSortOrder","isFixedHeader","getScrollBarWidth","$nextTick","fireEvent","loadData","elem","$el","getElementsByClassName","addEventListener","handleScroll","destroyed","removeEventListener","version","useDetailRow","warn","countVisibleFields","field","visible","countTableData","displayEmptyDataRow","lessThanMinRows","blankRows","isApiMode","isDataMode","methods","inner","style","visibility","width","body","widthWithoutScrollbar","offsetWidth","overflow","widthWithScrollbar","horizontal","currentTarget","scrollLeft","header","title","setTitle","titleClass","dataClass","sortField","getObjectValue","fixHeader","str","isSpecialField","titleCase","getTitle","renderTitle","isInCurrentSortGroup","hasSortableIcon","sortIconOpacity","renderIconTag","sortIcon","renderSequence","from","renderNormalField","hasCallback","callCallback","fieldName","txt","substr","delimiter","notIn","arr","success","loadSuccess","failed","loadFailed","getAppendParams","getAllQueryParams","fetch","then","catch","callDataManager","response","scrollHeight","clientHeight","console","error","parentFunctionExists","$parent","callParentFunction","eventName","$emit","msg","params","getSortParam","getDefaultSortParam","direction","x","extractName","extractArgs","isSortable","currentSortOrderPosition","fieldIsInSortOrderPosition","event","multiColumnSort","singleColumnSort","clearSortOrder","sortClass","cls","shift","toggleCheckbox","dataItem","isChecked","checked","idColumn","selectId","unselectId","isSelectedRow","rowSelected","checkCheckboxesState","selector","els","querySelectorAll","cb","selected","el","indeterminate","toggleAllCheckboxes","gotoPreviousPage","gotoNextPage","last_page","gotoPage","isVisibleDetailRow","rowId","showDetailRow","hideDetailRow","toggleDetailRow","showField","hideField","toggleField","classes","renderIcon","makePagination","total","onRowClass","onRowChanged","onRowClicked","onRowDoubleClicked","onDetailRowClick","onCellClicked","onCellDoubleClicked","onCellRightClicked","changePage","reload","refresh","resetData","watch","newVal","oldVal","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","_vm","_h","$createElement","_c","_self","staticClass","class","_l","fieldIndex","attrs","domProps","on","$event","_e","_v","_s","height","itemIndex","_t","wrapperClass","activeClass","disabledClass","pageClass","linkClass","paginationClass","paginationInfoClass","dropdownClass","icons","prev","onEachSide","totalPage","isOnFirstPage","current_page","isOnLastPage","notEnoughPages","windowSize","windowStart","loadPage","isCurrentPage","setPaginationData","directives","rawName","expression","paginationLabel","disabled","deleteTitle","preventDefault","handleClick","status","ref","tokenName","tokenValue","param","isMenuButton","_g","menuBtnClasses","icon","buttonDisabled","enabled","ajax","click","label","actList","ind","actionsList","act","allowMultiple","hasMultipleSelected","rowData","detail","showAsList","buttonClass","linkHref","heading","$$selectedVal","_value","multiple","p","moveButtonText","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","off","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","val","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","innerHeight","innerWidth","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","display","Sortable","ghost","dragged","draggable","lastChild","lastElementChild","previousElementSibling","nodeName","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollTop","includeSelf","gotSelf","clientWidth","scrollWidth","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","ms","_this","scrollBy","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","getTime","plugins","initializeByDefault","PluginManager","mount","plugin","option","pluginName","pluginEvent","sortable","evt","eventCanceled","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_excluded","_ref","originalEvent","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","rect","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","animationCallbackId","animationStates","store","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","child","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","src","href","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","composedPath","inputs","idx","_saveInputCheckedState","button","isContentEditable","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","removeAttribute","_hideClone","cloneId","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","_ghostIsFirst","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","dropEffect","_globalDragOver","order","getAttribute","useAnimation","items","destroy","utils","is","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","padded","tableId","checks","handleActionClick","searchPlaceholderText","composing","searchTerm","handleSearch","searchClearTitle","buttons","isLoading","fullPage","emptyMessage","loading","hidden","tablepane","fullPane","tableCss","init","onPaginationData","onLoadSuccess","handleCellClicked","handleCellDoubleClicked","handleRowClicked","handleRowDoubleClicked","scopedSlots","_u","checkboxStatus","addCheck","removeCheck","url","menu","showCount","handleDetailRow","canReorder","_showDelete","beforeDelete","deleteSuccessMessage","deleteConfirmationMessage","deleteFailMessage","deleteAction","canDelete","rowIndex","itemLabels","onChangePage","checkboxes","itemActions","moveToPageAction","lastPage","reorderSuccessMessage","Craft","VueAdminTable","Garnish","Base","instance","$table","setSettings","components","AdminTable","$mount","$refs","allowMultipleDeletions","columns","footerActions","reorderAction","paginatedReorderAction","t","reorderFailMessage","searchPlaceholder","tableDataEndpoint","onLoaded","onLoading","onData","onPagination","onSelect","onQueryParams"],"sourceRoot":""}
\ No newline at end of file
diff --git a/src/web/assets/admintable/dist/manifest.json b/src/web/assets/admintable/dist/manifest.json
index 376b8245b53..c8682b87b29 100644
--- a/src/web/assets/admintable/dist/manifest.json
+++ b/src/web/assets/admintable/dist/manifest.json
@@ -1 +1 @@
-{"app.css":"/css/app.css","app.js":"/js/app.js","app.css.map":"/css/app.css.map","app.js.map":"/js/app.js.map"}
\ No newline at end of file
+{"app.css":"/css/app.css","app.js":"/js/app.js","app.js.map":"/js/app.js.map"}
\ No newline at end of file
diff --git a/src/web/assets/admintable/src/main.js b/src/web/assets/admintable/src/main.js
index 1af3e6c9e68..b0b5551c3d4 100644
--- a/src/web/assets/admintable/src/main.js
+++ b/src/web/assets/admintable/src/main.js
@@ -45,6 +45,7 @@ Craft.VueAdminTable = Garnish.Base.extend(
{
defaults: {
actions: [],
+ allowMultipleDeletions: false,
checkboxes: false,
checkboxStatus: function () {
return true;
@@ -52,7 +53,10 @@ Craft.VueAdminTable = Garnish.Base.extend(
columns: [],
container: null,
deleteAction: null,
+ footerActions: [],
reorderAction: null,
+ paginatedReorderAction: null,
+ moveToPageAction: null,
reorderSuccessMessage: Craft.t('app', 'Items reordered.'),
reorderFailMessage: Craft.t('app', 'Couldn’t reorder items.'),
search: false,
@@ -63,6 +67,10 @@ Craft.VueAdminTable = Garnish.Base.extend(
onLoaded: $.noop,
onLoading: $.noop,
onData: $.noop,
+ onCellClicked: $.noop,
+ onCellDoubleClicked: $.noop,
+ onRowClicked: $.noop,
+ onRowDoubleClicked: $.noop,
onPagination: $.noop,
onSelect: $.noop,
onQueryParams: $.noop,
diff --git a/src/web/assets/cp/CpAsset.php b/src/web/assets/cp/CpAsset.php
index aa36f4f84a5..fe357832327 100644
--- a/src/web/assets/cp/CpAsset.php
+++ b/src/web/assets/cp/CpAsset.php
@@ -136,6 +136,7 @@ private function _registerTranslations(View $view): void
'Breadcrumbs',
'Buy {name}',
'Cancel',
+ 'Choose a page',
'Choose a user',
'Choose which sites this source should be visible for.',
'Choose which table columns should be visible for this source by default.',
@@ -151,6 +152,7 @@ private function _registerTranslations(View $view): void
'Copy the reference tag',
'Copy to clipboard',
'Couldn’t delete “{name}”.',
+ 'Couldn’t reorder items.',
'Couldn’t save new order.',
'Create',
'Customize sources',
@@ -210,6 +212,7 @@ private function _registerTranslations(View $view): void
'Incorrect password.',
'Information',
'Instructions',
+ 'Items reordered.',
'Keep both',
'Keep me signed in',
'Keep them',
@@ -434,6 +437,7 @@ private function _craftData(): array
'Pro' => Craft::Pro,
'registeredAssetBundles' => [], // force encode as JS object
'registeredJsFiles' => [], // force encode as JS object
+ 'resourceBaseUrl' => Craft::$app->getAssetManager()->baseUrl,
'right' => $orientation === 'ltr' ? 'right' : 'left',
'scriptName' => basename($request->getScriptFile()),
'Solo' => Craft::Solo,
diff --git a/src/web/assets/cp/Ttf2Woff2Plugin.js b/src/web/assets/cp/Ttf2Woff2Plugin.js
new file mode 100644
index 00000000000..afdfd0efff1
--- /dev/null
+++ b/src/web/assets/cp/Ttf2Woff2Plugin.js
@@ -0,0 +1,36 @@
+const path = require('path');
+const fs = require('fs');
+const tff2woff2 = require('ttf2woff2');
+
+class Ttf2Woff2Plugin {
+ static defaultOptions = {
+ src: './src/fonts',
+ };
+
+ constructor(options = {}) {
+ this.options = {
+ ...Ttf2Woff2Plugin.defaultOptions,
+ ...options,
+ };
+
+ this.src = path.resolve(__dirname, this.options.src);
+ }
+
+ apply(compiler) {
+ compiler.hooks.beforeRun.tap('Ttf2Woff2Plugin', () => {
+ const files = fs.readdirSync(this.src);
+
+ files.forEach((file) => {
+ if (path.extname(file) === '.ttf') {
+ const input = fs.readFileSync(path.resolve(this.src, file));
+ fs.writeFileSync(
+ path.resolve(this.src, file.replace('.ttf', '.woff2')),
+ tff2woff2(input)
+ );
+ }
+ });
+ });
+ }
+}
+
+module.exports = Ttf2Woff2Plugin;
diff --git a/src/web/assets/cp/dist/cp.js b/src/web/assets/cp/dist/cp.js
index f3d21226cd5..eaa501a299e 100644
--- a/src/web/assets/cp/dist/cp.js
+++ b/src/web/assets/cp/dist/cp.js
@@ -1,2 +1,3 @@
-(function(){var __webpack_modules__={463:function(){Craft.Accordion=Garnish.Base.extend({$trigger:null,targetSelector:null,_$target:null,init:function(t){var e=this;this.$trigger=$(t),this.$trigger.data("accordion")&&(console.warn("Double-instantiating an accordion trigger on an element"),this.$trigger.data("accordion").destroy()),this.$trigger.data("accordion",this),this.targetSelector=this.$trigger.attr("aria-controls")?"#".concat(this.$trigger.attr("aria-controls")):null,this.targetSelector&&(this._$target=$(this.targetSelector)),this.addListener(this.$trigger,"click","onTriggerClick"),this.addListener(this.$trigger,"keypress",(function(t){var i=t.keyCode;i!==Garnish.SPACE_KEY&&i!==Garnish.RETURN_KEY||(t.preventDefault(),e.onTriggerClick())}))},onTriggerClick:function(){"true"===this.$trigger.attr("aria-expanded")?this.hideTarget(this._$target):this.showTarget(this._$target)},showTarget:function(t){var e=this;if(t&&t.length){this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),this.$trigger.removeClass("collapsed").addClass("expanded").attr("aria-expanded","true");for(var i=0;i .address-card");for(var s=0;s=this.settings.maxItems)){var e=$(t).appendTo(this.$tbody),i=e.find(".delete");this.settings.sortable&&this.sorter.addItems(e),this.$deleteBtns=this.$deleteBtns.add(i),this.addListener(i,"click","handleDeleteBtnClick"),this.totalItems++,this.updateUI()}},reorderItems:function(){var t=this;if(this.settings.sortable){for(var e=[],i=0;i=this.settings.maxItems?$(this.settings.newItemBtnSelector).addClass("hidden"):$(this.settings.newItemBtnSelector).removeClass("hidden"))}},{defaults:{tableSelector:null,noItemsSelector:null,newItemBtnSelector:null,idAttribute:"data-id",nameAttribute:"data-name",sortable:!1,allowDeleteAll:!0,minItems:0,maxItems:null,reorderAction:null,deleteAction:null,reorderSuccessMessage:Craft.t("app","New order saved."),reorderFailMessage:Craft.t("app","Couldn’t save new order."),confirmDeleteMessage:Craft.t("app","Are you sure you want to delete “{name}”?"),deleteSuccessMessage:Craft.t("app","“{name}” deleted."),deleteFailMessage:Craft.t("app","Couldn’t delete “{name}”."),onReorderItems:$.noop,onDeleteItem:$.noop}})},6872:function(){Craft.AssetImageEditor=Garnish.Modal.extend({$body:null,$footer:null,$imageTools:null,$buttons:null,$cancelBtn:null,$replaceBtn:null,$saveBtn:null,$focalPointBtn:null,$editorContainer:null,$straighten:null,$croppingCanvas:null,$spinner:null,$constraintContainer:null,$constraintRadioInputs:null,$customConstraints:null,canvas:null,image:null,viewport:null,focalPoint:null,grid:null,croppingCanvas:null,clipper:null,croppingRectangle:null,cropperHandles:null,cropperGrid:null,croppingShade:null,imageStraightenAngle:0,viewportRotation:0,originalWidth:0,originalHeight:0,imageVerticeCoords:null,zoomRatio:1,animationInProgress:!1,currentView:"",assetId:null,cacheBust:null,draggingCropper:!1,scalingCropper:!1,draggingFocal:!1,previousMouseX:0,previousMouseY:0,shiftKeyHeld:!1,editorHeight:0,editorWidth:0,cropperState:!1,scaleFactor:1,flipData:{},focalPointState:!1,maxImageSize:null,lastLoadedDimensions:null,imageIsLoading:!1,mouseMoveEvent:null,croppingConstraint:!1,constraintOrientation:"landscape",showingCustomConstraint:!1,saving:!1,renderImage:null,renderCropper:null,_queue:null,init:function(t,e){var i=this;this._queue=new Craft.Queue,this.cacheBust=Date.now(),this.setSettings(e,Craft.AssetImageEditor.defaults),null===this.settings.allowDegreeFractions&&(this.settings.allowDegreeFractions=Craft.isImagick),Garnish.prefersReducedMotion()&&(this.settings.animationDuration=1),this.assetId=t,this.flipData={x:0,y:0},this.$container=$('').appendTo(Garnish.$bod),this.$body=$('').appendTo(this.$container),this.$footer=$('').appendTo(this.$container),this.base(this.$container,this.settings),this.$buttons=$('').appendTo(this.$footer),this.$cancelBtn=$("",{type:"button",class:"btn cancel",text:Craft.t("app","Cancel")}).appendTo(this.$buttons),this.settings.allowSavingAsNew&&(this.$saveBtn=Craft.ui.createButton({class:"save copy",label:Craft.t("app","Save as a new asset"),spinner:!0}).appendTo(this.$buttons),this.addListener(this.$saveBtn,"activate",this.saveImage)),this.$replaceBtn=Craft.ui.createSubmitButton({class:"save replace",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$buttons),this.addListener(this.$replaceBtn,"activate",this.saveImage),this.addListener(this.$cancelBtn,"activate",this.hide),this.removeListener(this.$shade,"click"),this.maxImageSize=this.getMaxImageSize(),Craft.sendActionRequest("POST","assets/image-editor",{data:{assetId:t}}).then((function(t){return i.loadEditor(t.data)}))},getMaxImageSize:function(){var t=Garnish.$doc.get(0).documentElement.clientWidth,e=Garnish.$doc.get(0).documentElement.clientHeight;return Math.max(e,t)*(window.devicePixelRatio>1?2:1)},loadEditor:function(t){var e=this;t.html||Craft.cp.displayError(Craft.t("app","Could not load the image editor.")),this.$body.html(t.html),this.$tabs=$(".tabs li",this.$body),this.$viewsContainer=$(".views",this.$body),this.$views=$("> div",this.$viewsContainer),this.$imageTools=$(".image-container .image-tools",this.$body),this.$editorContainer=$(".image-container .image",this.$body),this.$constraintContainer=$(".constraint-group",this.$body),this.$constraintRadioInputs=$('[name="constraint"]',this.$constraintContainer),this.$focalPointBtn=$(".focal-point",this.$body),this.editorHeight=this.$editorContainer.innerHeight(),this.editorWidth=this.$editorContainer.innerWidth(),this._showSpinner(),this.updateSizeAndPosition(),$customConstraintWrapper=this.$constraintRadioInputs.filter('[value="custom"]').parent(),this.$customConstraints=$("",{class:"constraint custom hidden","data-constraint":"custom"}).append($("",{type:"text",class:"custom-constraint-w",size:3,value:1,"aria-label":Craft.t("app","Width unit")})).append($("",{class:"custom-constraint-spacer",text:"x","aria-hidden":"true"})).append($("",{type:"text",class:"custom-constraint-h",size:3,value:1,"aria-label":Craft.t("app","Height unit")})).appendTo($customConstraintWrapper),this.$constraintRadioInputs.filter((function(){var t=$(this).val();return/^\d*\.\d+$/.test(t)})).addClass("flip"),this.canvas=new fabric.StaticCanvas("image-canvas"),this.$croppingCanvas=$("#cropping-canvas",this.$editorContainer),this.$croppingCanvas.width(this.editorWidth),this.$croppingCanvas.height(this.editorHeight),this.canvas.enableRetinaScaling=!0,this.renderImage=function(){Garnish.requestAnimationFrame(e.canvas.renderAll.bind(e.canvas))};var i=Craft.getActionUrl("assets/edit-image",{assetId:this.assetId,size:this.maxImageSize,cacheBust:this.cacheBust});fabric.Image.fromURL(i,(function(i){e.image=i,e.image.set({originX:"center",originY:"center",left:e.editorWidth/2,top:e.editorHeight/2}),e.canvas.add(e.image),e.originalHeight=e.image.getHeight(),e.originalWidth=e.image.getWidth(),e.zoomRatio=1,e.lastLoadedDimensions=e.getScaledImageDimensions(),e._setFittedImageVerticeCoordinates(),e._repositionEditorElements();var s={imageDimensions:e.getScaledImageDimensions(),offsetX:0,offsetY:0},n=!1;if(t.focalPoint){var a=t.focalPoint,r=s.imageDimensions.width*a.x,o=s.imageDimensions.height*a.y;s.offsetX=r-s.imageDimensions.width/2,s.offsetY=o-s.imageDimensions.height/2,n=!0}e.storeFocalPointState(s),n&&e._createFocalPoint(),e._createViewport(),e.storeCropperState(),e._addControlListeners(),e.addListener(e.$croppingCanvas,"mousemove,touchmove",e._handleMouseMove),e.addListener(e.$croppingCanvas,"mousedown,touchstart",e._handleMouseDown),e.addListener(e.$croppingCanvas,"mouseup,touchend",e._handleMouseUp),e.addListener(e.$croppingCanvas,"mouseout,touchcancel",e._handleMouseOut),e._hideSpinner(),e.renderImage(),e.$tabs.first().trigger("click")}))},_reloadImage:function(){var t=this;if(!this.imageIsLoading){this.imageIsLoading=!0,this.maxImageSize=this.getMaxImageSize();var e=Craft.getActionUrl("assets/edit-image",{assetId:this.assetId,size:this.maxImageSize,cacheBust:this.cacheBust});this.image.setSrc(e,(function(e){t.originalHeight=e.getHeight(),t.originalWidth=e.getWidth(),t.lastLoadedDimensions={width:t.originalHeight,height:t.originalWidth},t.updateSizeAndPosition(),t.renderImage(),t.imageIsLoading=!1}))}},updateSizeAndPosition:function(){if(this.$container){var t=window.innerWidth,e=window.innerHeight;this.$container.css({width:t,"min-width":t,left:0,height:e,"min-height":e,top:0}),this.$body.css({height:e-(this.$footer.outerHeight()-1)}),t1.5||e.height/this.lastLoadedDimensions.height>1.5)&&this._reloadImage()},_repositionImage:function(t){this.image.set({left:this.image.left-(t.width-this.editorWidth)/2,top:this.image.top-(t.height-this.editorHeight)/2})},_createViewport:function(){this.viewport=new fabric.Rect({width:this.image.width,height:this.image.height,fill:"rgba(127,0,0,1)",originX:"center",originY:"center",globalCompositeOperation:"destination-in",left:this.image.left,top:this.image.top}),this.canvas.add(this.viewport),this.renderImage()},_createFocalPoint:function(){var t=this.focalPointState,e=this.getScaledImageDimensions().width/t.imageDimensions.width,i=t.offsetX*e*this.zoomRatio*this.scaleFactor,s=t.offsetY*e*this.zoomRatio*this.scaleFactor;i+=this.image.left,s+=this.image.top;var n=0,a=0;this.viewport&&0===t.offsetX&&0===t.offsetY&&("crop"!==this.currentView?(n=this.viewport.left-this.image.left,a=this.viewport.top-this.image.top):(n=this.clipper.left-this.image.left,a=this.clipper.top-this.image.top),i+=n,s+=a,t.offsetX+=n/(e*this.zoomRatio*this.scaleFactor),t.offsetY+=a/(e*this.zoomRatio*this.scaleFactor)),this.focalPoint=new fabric.Group([new fabric.Circle({radius:8,fill:"rgba(0,0,0,0.5)",strokeWidth:2,stroke:"rgba(255,255,255,0.8)",left:0,top:0,originX:"center",originY:"center"}),new fabric.Circle({radius:1,fill:"rgba(255,255,255,0)",strokeWidth:2,stroke:"rgba(255,255,255,0.8)",left:0,top:0,originX:"center",originY:"center"})],{originX:"center",originY:"center",left:i,top:s}),this.storeFocalPointState(t),this.canvas.add(this.focalPoint)},toggleFocalPoint:function(){this.focalPoint?(this.canvas.remove(this.focalPoint),this.focalPoint=null,this.$focalPointBtn.attr("aria-pressed","false")):(this._createFocalPoint(),this.$focalPointBtn.attr("aria-pressed","true")),this.renderImage()},_repositionViewport:function(){if(this.viewport){var t={left:this.editorWidth/2,top:this.editorHeight/2};if("crop"===this.currentView)t.width=this.editorWidth,t.height=this.editorHeight;else if(this.cropperState){var e=this.cropperState,i=this.getScaledImageDimensions().width/e.imageDimensions.width;t.width=e.width*i*this.zoomRatio,t.height=e.height*i*this.zoomRatio,this.image.set({left:this.editorWidth/2-e.offsetX*i,top:this.editorHeight/2-e.offsetY*i})}else $.extend(t,this.getScaledImageDimensions());this.viewport.set(t)}},_repositionFocalPoint:function(t){if(this.focalPoint){var e=this.focalPoint.left-this.editorWidth/2,i=this.focalPoint.top-this.editorHeight/2,s=this.image.width,n=this.getScaledImageDimensions().width*this.zoomRatio/s/this.scaleFactor;e-=(t.width-this.editorWidth)/2,i-=(t.height-this.editorHeight)/2,e*=n,i*=n,this.focalPoint.set({left:this.editorWidth/2+e,top:this.editorHeight/2+i})}},hasOrientationChanged:function(){return this.viewportRotation%180!=0},getScaledImageDimensions:function(){return void 0===this.getScaledImageDimensions._&&(this.getScaledImageDimensions._={}),this.getScaledImageDimensions._.imageRatio=this.originalHeight/this.originalWidth,this.getScaledImageDimensions._.editorRatio=this.editorHeight/this.editorWidth,this.getScaledImageDimensions._.dimensions={},this.getScaledImageDimensions._.imageRatio>this.getScaledImageDimensions._.editorRatio?(this.getScaledImageDimensions._.dimensions.height=Math.min(this.editorHeight,this.originalHeight),this.getScaledImageDimensions._.dimensions.width=Math.round(this.originalWidth/(this.originalHeight/this.getScaledImageDimensions._.dimensions.height))):(this.getScaledImageDimensions._.dimensions.width=Math.min(this.editorWidth,this.originalWidth),this.getScaledImageDimensions._.dimensions.height=Math.round(this.originalHeight*(this.getScaledImageDimensions._.dimensions.width/this.originalWidth))),this.getScaledImageDimensions._.dimensions},_zoomImage:function(){void 0===this._zoomImage._&&(this._zoomImage._={}),this._zoomImage._.imageDimensions=this.getScaledImageDimensions(),this.image.set({width:this._zoomImage._.imageDimensions.width*this.zoomRatio,height:this._zoomImage._.imageDimensions.height*this.zoomRatio})},_getPrevTab:function(){var t,e=this._getActiveTabIndex();if(!(e<0))return t=e>0?e-1:this.$tabs.length-1,this.$tabs.eq(t)},_getNextTab:function(){var t,e=this._getActiveTabIndex();if(!(e<0))return t=e0&&t.h>0&&(this.setCroppingConstraint(t.w/t.h),this.enforceCroppingConstraint())},_getCustomConstraint:function(){var t=parseFloat($(".custom-constraint-w").val()),e=parseFloat($(".custom-constraint-h").val());return{w:isNaN(t)?0:t,h:isNaN(e)?0:e}},_setCustomConstraint:function(t,e){$(".custom-constraint-w").val(parseFloat(t)),$(".custom-constraint-h").val(parseFloat(e))},_hideCustomConstraint:function(){this.showingCustomConstraint=!1,this.$customConstraints.addClass("hidden"),$(".orientation",this.$container).removeClass("hidden")},_showCustomConstraint:function(){this.showingCustomConstraint||(this.showingCustomConstraint=!0,this.$customConstraints.removeClass("hidden"),$(".orientation",this.$container).addClass("hidden"))},_handleTabClick:function(t){if(!this.animationInProgress){var e=$(t.currentTarget);this.activateTab(e)}},activateTab:function(t){var e=$(t).data("view");this.$tabs.removeClass("selected").attr({"aria-selected":"false",tabindex:"-1"}),$(t).addClass("selected").attr({"aria-selected":"true",tabindex:"0"}).trigger("focus"),this.showView(e)},showView:function(t){var e=this;this.currentView!==t&&(this.$views.addClass("hidden"),this.$views.filter('[data-view="'+t+'"]').removeClass("hidden"),"rotate"===t?this.enableSlider():this.disableSlider(),this.updateSizeAndPosition(),"crop"===this.currentView&&"crop"!==t?this._queue.push((function(){return new Promise((function(t,i){e.disableCropMode(),t()}))})):"crop"!==this.currentView&&"crop"===t&&this._queue.push((function(){return new Promise((function(t,i){e.enableCropMode(),t()}))})),this.currentView=t)},storeCropperState:function(t){void 0===this.storeCropperState._&&(this.storeCropperState._={}),t?this.cropperState=t:this.clipper?(this.storeCropperState._.zoomFactor=1/this.zoomRatio,this.cropperState={offsetX:(this.clipper.left-this.image.left)*this.storeCropperState._.zoomFactor,offsetY:(this.clipper.top-this.image.top)*this.storeCropperState._.zoomFactor,height:this.clipper.height*this.storeCropperState._.zoomFactor,width:this.clipper.width*this.storeCropperState._.zoomFactor,imageDimensions:this.getScaledImageDimensions()}):(this.storeCropperState._.dimensions=this.getScaledImageDimensions(),this.cropperState={offsetX:0,offsetY:0,height:this.storeCropperState._.dimensions.height,width:this.storeCropperState._.dimensions.width,imageDimensions:this.storeCropperState._.dimensions})},storeFocalPointState:function(t){void 0===this.storeFocalPointState._&&(this.storeFocalPointState._={}),t?this.focalPointState=t:this.focalPoint&&(this.storeFocalPointState._.zoomFactor=1/this.zoomRatio,this.focalPointState={offsetX:(this.focalPoint.left-this.image.left)*this.storeFocalPointState._.zoomFactor/this.scaleFactor,offsetY:(this.focalPoint.top-this.image.top)*this.storeFocalPointState._.zoomFactor/this.scaleFactor,imageDimensions:this.getScaledImageDimensions()})},rotateImage:function(t){var e=this;if(!this.animationInProgress){if(90!==t&&-90!==t)return!1;this.animationInProgress=!0,this.viewportRotation+=t,this.viewportRotation=parseInt((this.viewportRotation+360)%360,10);var i,s=this.image.angle+t,n=this.getScaledImageDimensions();i=this.hasOrientationChanged()?this.getZoomToCoverRatio({height:n.width,width:n.height}):this.getZoomToCoverRatio(n),this.zoomRatio>i&&(i=this.zoomRatio);var a={angle:90===t?"+=90":"-=90"},r={angle:s,width:n.width*i,height:n.height*i},o=1;this.scaleFactor<1?(o=1/this.scaleFactor,this.scaleFactor=1):(this.viewport.width>this.editorHeight?o=this.editorHeight/this.viewport.width:this.viewport.height>this.editorWidth&&(o=this.editorWidth/this.viewport.height),this.scaleFactor=o),o<1&&(r.width*=o,r.height*=o);var l=this.cropperState,h=l.offsetX,d=l.offsetY,c=t*(Math.PI/180),u=h*Math.cos(c)-d*Math.sin(c),p=h*Math.sin(c)+d*Math.cos(c),f=n.width/l.imageDimensions.width,g=u*f*this.zoomRatio*this.scaleFactor,m=p*f*this.zoomRatio*this.scaleFactor;r.left=this.editorWidth/2-g,r.top=this.editorHeight/2-m,l.offsetX=u,l.offsetY=p;var v=l.width;l.width=l.height,l.height=v,this.storeCropperState(l),this.focalPoint&&this.canvas.remove(this.focalPoint),this.viewport.animate(a,{duration:this.settings.animationDuration,onComplete:function(){var t=e.viewport.height*o;e.viewport.height=e.viewport.width*o,e.viewport.width=t,e.viewport.set({angle:0})}}),this.image.animate(r,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){var i=parseFloat((e.image.angle+360)%360);e.image.set({angle:i}),e.animationInProgress=!1,e.focalPoint?(e._adjustFocalPointByAngle(t),e.straighten(e.straighteningInput),e.canvas.add(e.focalPoint)):e._resetFocalPointPosition()}})}},flipImage:function(t){var e=this;if(!this.animationInProgress){this.animationInProgress=!0,this.hasOrientationChanged()&&(t="y"===t?"x":"y"),this.focalPoint?this.canvas.remove(this.focalPoint):this._resetFocalPointPosition();var i={x:this.editorWidth/2,y:this.editorHeight/2};this.straighteningInput.setValue(-this.imageStraightenAngle),this.imageStraightenAngle=-this.imageStraightenAngle;var s,n,a={angle:this.viewportRotation+this.imageStraightenAngle},r=this.cropperState,o=this.focalPointState;"y"===t&&this.hasOrientationChanged()||"y"!==t&&!this.hasOrientationChanged()?(r.offsetX=-r.offsetX,o.offsetX=-o.offsetX,n=this.image.left-i.x,a.left=i.x-n):(r.offsetY=-r.offsetY,o.offsetY=-o.offsetY,s=this.image.top-i.y,a.top=i.y-s),"y"===t?(a.scaleY=-1*this.image.scaleY,this.flipData.y=1-this.flipData.y):(a.scaleX=-1*this.image.scaleX,this.flipData.x=1-this.flipData.x),this.storeCropperState(r),this.storeFocalPointState(o),this.image.animate(a,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){e.animationInProgress=!1,e.focalPoint&&(e._adjustFocalPointByAngle(0),e.canvas.add(e.focalPoint))}})}},straighten:function(t){if(!this.animationInProgress){this.animationInProgress=!0;var e=this.image.angle;this.imageStraightenAngle=(this.settings.allowDegreeFractions?parseFloat(t.value):Math.round(parseFloat(t.value)))%360,this.image.set({angle:this.viewportRotation+this.imageStraightenAngle}),this.zoomRatio=this.getZoomToCoverRatio(this.getScaledImageDimensions())*this.scaleFactor,this._zoomImage(),this.cropperState&&this._adjustEditorElementsOnStraighten(e),this.renderImage(),this.animationInProgress=!1}},_adjustEditorElementsOnStraighten:function(t){var e,i,s,n,a,r=this.getScaledImageDimensions(),o=this.image.angle-t,l=this.cropperState,h=this.zoomRatio,d=1;do{var c=l.offsetX,u=l.offsetY,p=o*(Math.PI/180);s=c*Math.cos(p)-u*Math.sin(p),n=c*Math.sin(p)+u*Math.cos(p),e=s*h*(a=r.width/l.imageDimensions.width),i=n*h*a;var f=this.getImageVerticeCoords(h),g={width:this.viewport.width,height:this.viewport.height,left:this.editorWidth/2-this.viewport.width/2+e,top:this.editorHeight/2-this.viewport.height/2+i};h*=d=this._getZoomRatioToFitRectangle(g,f)}while(1!==d);this.image.set({left:this.editorWidth/2-e,top:this.editorHeight/2-i}),l.offsetX=s,l.offsetY=n,l.width=this.viewport.width/h/a,l.height=this.viewport.height/h/a,this.storeCropperState(l),this.zoomRatio=h,this.focalPoint?(this._adjustFocalPointByAngle(o),this._isCenterInside(this.focalPoint,this.viewport)?this.focalPoint.set({opacity:1}):this.focalPoint.set({opacity:0})):0!==o&&this._resetFocalPointPosition(),this._zoomImage()},_cleanupFocalPointAfterStraighten:function(){if(this.focalPoint&&!this._isCenterInside(this.focalPoint,this.viewport)){this.focalPoint.set({opacity:1});var t=this.focalPointState;t.offsetX=0,t.offsetY=0,this.storeFocalPointState(t),this.toggleFocalPoint()}},_resetFocalPointPosition:function(){var t=this.focalPointState;t.offsetX=0,t.offsetY=0,this.storeFocalPointState(t)},_isCenterInside:function(t,e){return t.left>e.left-e.width/2&&t.top>e.top-e.height/2&&t.leftthis.editorHeight||e.width>this.editorWidth){var s=this.editorHeight/e.height,n=this.editorWidth/e.width;i=Math.min(n,s)}return i},getCombinedZoomRatio:function(t){return this.getZoomToCoverRatio(t)/this.getZoomToFitRatio(t)},_showGrid:function(){if(!this.grid){var t,e={strokeWidth:1,stroke:"rgba(255,255,255,0.5)"},i=this.viewport.width,s=this.viewport.height,n=i/9,a=s/9,r=[new fabric.Rect({strokeWidth:2,stroke:"rgba(255,255,255,1)",originX:"center",originY:"center",width:i,height:s,left:i/2,top:s/2,fill:"rgba(255,255,255,0)"})];for(t=1;t<=8;t++)r.push(new fabric.Line([t*n,0,t*n,s],e));for(t=1;t<=8;t++)r.push(new fabric.Line([0,t*a,i,t*a],e));this.grid=new fabric.Group(r,{left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",angle:this.viewport.angle}),this.canvas.add(this.grid),this.renderImage()}},_hideGrid:function(){this.canvas.remove(this.grid),this.grid=null,this.renderImage()},onFadeOut:function(){this.destroy()},show:function(){this.base(),Garnish.$bod.addClass("no-scroll")},hide:function(){this.removeAllListeners(),this.straighteningInput.removeAllListeners(),Garnish.$bod.removeClass("no-scroll"),this.base()},onSave:function(t){this.settings.onSave(t),this.trigger("save")},enableSlider:function(){this.$imageTools.removeClass("hidden")},disableSlider:function(){this.$imageTools.addClass("hidden")},enableCropMode:function(){var t=this,e=this.getScaledImageDimensions();this.zoomRatio=this.getZoomToFitRatio(e);var i={width:this.editorWidth,height:this.editorHeight},s={width:e.width*this.zoomRatio,height:e.height*this.zoomRatio,left:this.editorWidth/2,top:this.editorHeight/2};this._editorModeTransition((function(){t._setFittedImageVerticeCoordinates();var e=t.cropperState,i=t.getScaledImageDimensions(),s=i.width/e.imageDimensions.width,n={left:t.image.left+e.offsetX*s*t.zoomRatio,top:t.image.top+e.offsetY*s*t.zoomRatio,width:e.width*s*t.zoomRatio,height:e.height*s*t.zoomRatio};t._showCropper(n),t.focalPoint&&(s=i.width/t.focalPointState.imageDimensions.width,t.focalPoint.left=t.image.left+t.focalPointState.offsetX*s*t.zoomRatio,t.focalPoint.top=t.image.top+t.focalPointState.offsetY*s*t.zoomRatio,t.canvas.add(t.focalPoint))}),s,i)},disableCropMode:function(){var t=this,e={};this._hideCropper();var i=this.getScaledImageDimensions(),s=this.getZoomToCoverRatio(i)*this.scaleFactor,n=s/this.zoomRatio;this.zoomRatio=s;var a={width:i.width*this.zoomRatio,height:i.height*this.zoomRatio,left:this.editorWidth/2,top:this.editorHeight/2},r=(this.clipper.left-this.image.left)*n,o=(this.clipper.top-this.image.top)*n;a.left=this.editorWidth/2-r,a.top=this.editorHeight/2-o,e.height=this.clipper.height*n,e.width=this.clipper.width*n,(!this.focalPoint||this.focalPoint&&!this._isCenterInside(this.focalPoint,this.clipper))&&(this.focalPoint&&this.toggleFocalPoint(),this._resetFocalPointPosition()),this._editorModeTransition((function(){if(t.focalPoint){var e=t.getScaledImageDimensions().width/t.focalPointState.imageDimensions.width;t.focalPoint.left=t.image.left+t.focalPointState.offsetX*e*t.zoomRatio,t.focalPoint.top=t.image.top+t.focalPointState.offsetY*e*t.zoomRatio,t.canvas.add(t.focalPoint)}}),a,e)},_editorModeTransition:function(t,e,i){var s=this;this._queue.pause(),this.animationInProgress||(this.animationInProgress=!0,this.focalPoint&&(this.canvas.remove(this.focalPoint),this.renderImage()),this.image.animate(e,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){t(),s.animationInProgress=!1,s.renderImage(),s._queue.resume()}}),this.viewport.animate(i,{duration:this.settings.animationDuration}))},_showSpinner:function(){this.$spinner||(this.$spinner=$('')),this.$spinner.appendTo(this.$container.find(".image"))},_hideSpinner:function(){this.$spinner.remove()},_showCropper:function(t){this._setupCropperLayer(t),this._redrawCropperElements(),this.renderCropper()},_hideCropper:function(){this.clipper&&(this.croppingCanvas.remove(this.clipper),this.croppingCanvas.remove(this.croppingShade),this.croppingCanvas.remove(this.cropperHandles),this.croppingCanvas.remove(this.cropperGrid),this.croppingCanvas.remove(this.croppingRectangle),this.croppingCanvas=null,this.renderCropper=null)},_setupCropperLayer:function(t){var e=this;this.croppingCanvas=new fabric.StaticCanvas("cropping-canvas",{backgroundColor:"rgba(0,0,0,0)",hoverCursor:"default",selection:!1}),this.croppingCanvas.setDimensions({width:this.editorWidth,height:this.editorHeight}),this.renderCropper=function(){return Garnish.requestAnimationFrame(e.croppingCanvas.renderAll.bind(e.croppingCanvas))},$("#cropping-canvas",this.$editorContainer).css({position:"absolute",top:0,left:0}),this.croppingShade=new fabric.Rect({left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",width:this.editorWidth,height:this.editorHeight,fill:"rgba(0,0,0,0.7)"});var i=this.getScaledImageDimensions(),s=0===this.imageStraightenAngle?1:1.2*this.getCombinedZoomRatio(i),n=i.width/s,a=i.height/s;if(this.hasOrientationChanged()){var r=a;a=n,n=r}this.clipper=new fabric.Rect({left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",width:n,height:a,stroke:"black",fill:"rgba(128,0,0,1)",strokeWidth:0}),t&&this.clipper.set(t),this.clipper.globalCompositeOperation="destination-out",this.croppingCanvas.add(this.croppingShade),this.croppingCanvas.add(this.clipper)},_redrawCropperElements:function(){void 0===this._redrawCropperElements._&&(this._redrawCropperElements._={}),this.cropperHandles&&(this.croppingCanvas.remove(this.cropperHandles),this.croppingCanvas.remove(this.cropperGrid),this.croppingCanvas.remove(this.croppingRectangle)),this._redrawCropperElements._.lineOptions={strokeWidth:4,stroke:"rgb(255,255,255)",fill:!1},this._redrawCropperElements._.gridOptions={strokeWidth:2,stroke:"rgba(255,255,255,0.5)"},this._redrawCropperElements._.pathGroup=[new fabric.Path("M 0,10 L 0,0 L 10,0",this._redrawCropperElements._.lineOptions),new fabric.Path("M "+(this.clipper.width-8)+",0 L "+(this.clipper.width+4)+",0 L "+(this.clipper.width+4)+",10",this._redrawCropperElements._.lineOptions),new fabric.Path("M "+(this.clipper.width+4)+","+(this.clipper.height-8)+" L"+(this.clipper.width+4)+","+(this.clipper.height+4)+" L "+(this.clipper.width-8)+","+(this.clipper.height+4),this._redrawCropperElements._.lineOptions),new fabric.Path("M 10,"+(this.clipper.height+4)+" L 0,"+(this.clipper.height+4)+" L 0,"+(this.clipper.height-8),this._redrawCropperElements._.lineOptions)],this.cropperHandles=new fabric.Group(this._redrawCropperElements._.pathGroup,{left:this.clipper.left,top:this.clipper.top,originX:"center",originY:"center"}),this.croppingRectangle=new fabric.Rect({left:this.clipper.left,top:this.clipper.top,width:this.clipper.width,height:this.clipper.height,fill:"rgba(0,0,0,0)",stroke:"rgba(255,255,255,0.8)",strokeWidth:2,originX:"center",originY:"center"}),this.cropperGrid=new fabric.Group([new fabric.Line([.33*this.clipper.width,0,.33*this.clipper.width,this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([.66*this.clipper.width,0,.66*this.clipper.width,this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([0,.33*this.clipper.height,this.clipper.width,.33*this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([0,.66*this.clipper.height,this.clipper.width,.66*this.clipper.height],this._redrawCropperElements._.gridOptions)],{left:this.clipper.left,top:this.clipper.top,originX:"center",originY:"center"}),this._redrawCropperElements._.cropTextTop=this.croppingRectangle.top+this.clipper.height/2+12,this._redrawCropperElements._.cropTextBackgroundColor="rgba(0,0,0,0)",this._redrawCropperElements._.cropTextTop+12>this.editorHeight-2&&(this._redrawCropperElements._.cropTextTop-=24,this._redrawCropperElements._.cropTextBackgroundColor="rgba(0,0,0,0.5)"),this.croppingCanvas.add(this.cropperHandles),this.croppingCanvas.add(this.cropperGrid),this.croppingCanvas.add(this.croppingRectangle)},_repositionCropper:function(t){if(this.croppingCanvas){var e=this.clipper.left-this.croppingCanvas.width/2,i=this.clipper.top-this.croppingCanvas.height/2;this.croppingCanvas.setDimensions({width:this.editorWidth,height:this.editorHeight});var s=this._getBoundingRectangle(this.imageVerticeCoords).width/t.width;this.clipper.width=Math.round(this.clipper.width*s),this.clipper.height=Math.round(this.clipper.height*s),this.clipper.left=this.editorWidth/2+e*s,this.clipper.top=this.editorHeight/2+i*s,this.croppingShade.set({width:this.editorWidth,height:this.editorHeight,left:this.editorWidth/2,top:this.editorHeight/2}),this._redrawCropperElements(),this.renderCropper()}},_getBoundingRectangle:function(t){return{width:Math.max(t.a.x,t.b.x,t.c.x,t.d.x)-Math.min(t.a.x,t.b.x,t.c.x,t.d.x),height:Math.max(t.a.y,t.b.y,t.c.y,t.d.y)-Math.min(t.a.y,t.b.y,t.c.y,t.d.y)}},_handleMouseDown:function(t){var e=this.focalPoint&&this._isMouseOver(t,this.focalPoint),i=this.croppingCanvas&&this._isMouseOver(t,this.clipper),s=this.croppingCanvas&&this._cropperHandleHitTest(t);(s||i||e)&&(this.previousMouseX=t.pageX,this.previousMouseY=t.pageY,e?this.draggingFocal=!0:s?this.scalingCropper=s:i&&(this.draggingCropper=!0))},_handleMouseMove:function(t){null!==this.mouseMoveEvent&&Garnish.requestAnimationFrame(this._handleMouseMoveInternal.bind(this)),this.mouseMoveEvent=t},_handleMouseMoveInternal:function(){null!==this.mouseMoveEvent&&(this.focalPoint&&this.draggingFocal?(this._handleFocalDrag(this.mouseMoveEvent),this.storeFocalPointState(),this.renderImage()):this.draggingCropper||this.scalingCropper?(this.draggingCropper?this._handleCropperDrag(this.mouseMoveEvent):this._handleCropperResize(this.mouseMoveEvent),this._redrawCropperElements(),this.storeCropperState(),this.renderCropper()):this._setMouseCursor(this.mouseMoveEvent),this.previousMouseX=this.mouseMoveEvent.pageX,this.previousMouseY=this.mouseMoveEvent.pageY,this.mouseMoveEvent=null)},_handleMouseUp:function(){this.draggingCropper=!1,this.scalingCropper=!1,this.draggingFocal=!1},_handleMouseOut:function(t){this._handleMouseUp(t),this.mouseMoveEvent=t,this._handleMouseMoveInternal()},_handleCropperDrag:function(t){if(void 0===this._handleCropperDrag._&&(this._handleCropperDrag._={}),this._handleCropperDrag._.deltaX=t.pageX-this.previousMouseX,this._handleCropperDrag._.deltaY=t.pageY-this.previousMouseY,0===this._handleCropperDrag._.deltaX&&0===this._handleCropperDrag._.deltaY)return!1;if(this._handleCropperDrag._.rectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this._handleCropperDrag._.vertices=this._getRectangleVertices(this._handleCropperDrag._.rectangle,this._handleCropperDrag._.deltaX,this._handleCropperDrag._.deltaY),!this.arePointsInsideRectangle(this._handleCropperDrag._.vertices,this.imageVerticeCoords)){for(this._handleCropperDrag._.dxi=0,this._handleCropperDrag._.dyi=0,this._handleCropperDrag._.xStep=this._handleCropperDrag._.deltaX>0?-1:1,this._handleCropperDrag._.yStep=this._handleCropperDrag._.deltaY>0?-1:1,this._handleCropperDrag._.furthest=0,this._handleCropperDrag._.furthestDeltas={},this._handleCropperDrag._.dxi=Math.min(Math.abs(this._handleCropperDrag._.deltaX),10);this._handleCropperDrag._.dxi>=0;this._handleCropperDrag._.dxi--)for(this._handleCropperDrag._.dyi=Math.min(Math.abs(this._handleCropperDrag._.deltaY),10);this._handleCropperDrag._.dyi>=0;this._handleCropperDrag._.dyi--)this._handleCropperDrag._.vertices=this._getRectangleVertices(this._handleCropperDrag._.rectangle,this._handleCropperDrag._.dxi*(this._handleCropperDrag._.deltaX>0?1:-1),this._handleCropperDrag._.dyi*(this._handleCropperDrag._.deltaY>0?1:-1)),this.arePointsInsideRectangle(this._handleCropperDrag._.vertices,this.imageVerticeCoords)&&this._handleCropperDrag._.dxi+this._handleCropperDrag._.dyi>this._handleCropperDrag._.furthest&&(this._handleCropperDrag._.furthest=this._handleCropperDrag._.dxi+this._handleCropperDrag._.dyi,this._handleCropperDrag._.furthestDeltas={x:this._handleCropperDrag._.dxi*(this._handleCropperDrag._.deltaX>0?1:-1),y:this._handleCropperDrag._.dyi*(this._handleCropperDrag._.deltaY>0?1:-1)});if(0==this._handleCropperDrag._.furthest)return;this._handleCropperDrag._.deltaX=this._handleCropperDrag._.furthestDeltas.x,this._handleCropperDrag._.deltaY=this._handleCropperDrag._.furthestDeltas.y}this.clipper.set({left:this.clipper.left+this._handleCropperDrag._.deltaX,top:this.clipper.top+this._handleCropperDrag._.deltaY})},_handleFocalDrag:function(t){if(void 0===this._handleFocalDrag._&&(this._handleFocalDrag._={}),this.focalPoint){if(this._handleFocalDrag._.deltaX=t.pageX-this.previousMouseX,this._handleFocalDrag._.deltaY=t.pageY-this.previousMouseY,0===this._handleFocalDrag._.deltaX&&0===this._handleFocalDrag._.deltaY)return;if(this._handleFocalDrag._.newX=this.focalPoint.left+this._handleFocalDrag._.deltaX,this._handleFocalDrag._.newY=this.focalPoint.top+this._handleFocalDrag._.deltaY,"crop"===this.currentView){if(!this.arePointsInsideRectangle([{x:this._handleFocalDrag._.newX,y:this._handleFocalDrag._.newY}],this.imageVerticeCoords))return}else if(!(this.viewport.left-this.viewport.width/2-this._handleFocalDrag._.newX<0&&this.viewport.left+this.viewport.width/2-this._handleFocalDrag._.newX>0&&this.viewport.top-this.viewport.height/2-this._handleFocalDrag._.newY<0&&this.viewport.top+this.viewport.height/2-this._handleFocalDrag._.newY>0))return;this.focalPoint.set({left:this.focalPoint.left+this._handleFocalDrag._.deltaX,top:this.focalPoint.top+this._handleFocalDrag._.deltaY})}},setCroppingConstraint:function(t){switch(this.updateSizeAndPosition(),t){case"none":this.croppingConstraint=!1;break;case"original":this.croppingConstraint=this.originalWidth/this.originalHeight;break;case"current":this.croppingConstraint=this.clipper.width/this.clipper.height;break;case"custom":break;default:this.croppingConstraint=parseFloat(t)}},enforceCroppingConstraint:function(){var t=this;void 0===this.enforceCroppingConstraint._&&(this.enforceCroppingConstraint._={}),!this.animationInProgress&&this.croppingConstraint&&(this.animationInProgress=!0,this.enforceCroppingConstraint._.rectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this.clipper.width>this.clipper.height*this.croppingConstraint?(this.enforceCroppingConstraint._.previousHeight=this.enforceCroppingConstraint._.rectangle.height,this.enforceCroppingConstraint._.rectangle.height=this.clipper.width/this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.top-=(this.enforceCroppingConstraint._.rectangle.height-this.enforceCroppingConstraint._.previousHeight)/2,this.arePointsInsideRectangle(this._getRectangleVertices(this.enforceCroppingConstraint._.rectangle),this.imageVerticeCoords)||(this.enforceCroppingConstraint._.rectangle.width=this.clipper.height*this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.height=this.enforceCroppingConstraint._.rectangle.width/this.croppingConstraint)):(this.enforceCroppingConstraint._.previousWidth=this.enforceCroppingConstraint._.rectangle.width,this.enforceCroppingConstraint._.rectangle.width=this.clipper.height*this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.left-=(this.enforceCroppingConstraint._.rectangle.width-this.enforceCroppingConstraint._.previousWidth)/2,this.arePointsInsideRectangle(this._getRectangleVertices(this.enforceCroppingConstraint._.rectangle),this.imageVerticeCoords)||(this.enforceCroppingConstraint._.rectangle.height=this.clipper.width/this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.width=this.enforceCroppingConstraint._.rectangle.height*this.croppingConstraint)),this.enforceCroppingConstraint._.properties={height:this.enforceCroppingConstraint._.rectangle.height,width:this.enforceCroppingConstraint._.rectangle.width},this.clipper.animate(this.enforceCroppingConstraint._.properties,{onChange:function(){t._redrawCropperElements(),t.croppingCanvas.renderAll()},duration:this.settings.animationDuration,onComplete:function(){t._redrawCropperElements(),t.animationInProgress=!1,t.renderCropper(),t.storeCropperState()}}))},_handleCropperResize:function(t){void 0===this._handleCropperResize._&&(this._handleCropperResize._={}),this._handleCropperResize._.deltaX=t.pageX-this.previousMouseX,this._handleCropperResize._.deltaY=t.pageY-this.previousMouseY,"b"!==this.scalingCropper&&"t"!==this.scalingCropper||(this._handleCropperResize._.deltaX=0),"l"!==this.scalingCropper&&"r"!==this.scalingCropper||(this._handleCropperResize._.deltaY=0),0===this._handleCropperResize._.deltaX&&0===this._handleCropperResize._.deltaY||(this._handleCropperResize._.startingRectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this._handleCropperResize._.rectangle=this._calculateNewCropperSizeByDeltas(this._handleCropperResize._.startingRectangle,this._handleCropperResize._.deltaX,this._handleCropperResize._.deltaY,this.scalingCropper),this._handleCropperResize._.rectangle.height<30||this._handleCropperResize._.rectangle.width<30||this.arePointsInsideRectangle(this._getRectangleVertices(this._handleCropperResize._.rectangle),this.imageVerticeCoords)&&(this.clipper.set({top:this._handleCropperResize._.rectangle.top+this._handleCropperResize._.rectangle.height/2,left:this._handleCropperResize._.rectangle.left+this._handleCropperResize._.rectangle.width/2,width:this._handleCropperResize._.rectangle.width,height:this._handleCropperResize._.rectangle.height}),this._redrawCropperElements()))},_calculateNewCropperSizeByDeltas:function(t,e,i,s){if(void 0===this._calculateNewCropperSizeByDeltas._&&(this._calculateNewCropperSizeByDeltas._={}),this._calculateNewCropperSizeByDeltas._.topDelta=0,this._calculateNewCropperSizeByDeltas._.leftDelta=0,this._calculateNewCropperSizeByDeltas._.rectangle=t,this._calculateNewCropperSizeByDeltas._.deltaX=e,this._calculateNewCropperSizeByDeltas._.deltaY=i,this.croppingConstraint){switch(this._calculateNewCropperSizeByDeltas._.change=0,s){case"t":this._calculateNewCropperSizeByDeltas._.change=-this._calculateNewCropperSizeByDeltas._.deltaY;break;case"b":this._calculateNewCropperSizeByDeltas._.change=this._calculateNewCropperSizeByDeltas._.deltaY;break;case"r":this._calculateNewCropperSizeByDeltas._.change=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"l":this._calculateNewCropperSizeByDeltas._.change=-this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tr":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?-this._calculateNewCropperSizeByDeltas._.deltaY:this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tl":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?-this._calculateNewCropperSizeByDeltas._.deltaY:-this._calculateNewCropperSizeByDeltas._.deltaX;break;case"br":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?this._calculateNewCropperSizeByDeltas._.deltaY:this._calculateNewCropperSizeByDeltas._.deltaX;break;case"bl":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?this._calculateNewCropperSizeByDeltas._.deltaY:-this._calculateNewCropperSizeByDeltas._.deltaX}switch(this.croppingConstraint>1?(this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.change,this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.deltaX/this.croppingConstraint):(this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.change,this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.deltaY*this.croppingConstraint),this._calculateNewCropperSizeByDeltas._.rectangle.height+=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.width+=this._calculateNewCropperSizeByDeltas._.deltaX,s){case"t":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX/2;break;case"b":this._calculateNewCropperSizeByDeltas._.rectangle.left+=-this._calculateNewCropperSizeByDeltas._.deltaX/2;break;case"r":this._calculateNewCropperSizeByDeltas._.rectangle.top+=-this._calculateNewCropperSizeByDeltas._.deltaY/2;break;case"l":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY/2,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tr":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY;break;case"tl":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"bl":this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX}}else!this.shiftKeyHeld||"tl"!==s&&"tr"!==s&&"bl"!==s&&"br"!==s||(this._calculateNewCropperSizeByDeltas._.ratio,Math.abs(e)>Math.abs(i)?(this._calculateNewCropperSizeByDeltas._.ratio=t.width/t.height,this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.deltaX/this._calculateNewCropperSizeByDeltas._.ratio,this._calculateNewCropperSizeByDeltas._.deltaY*="tr"===s||"bl"===s?-1:1):(this._calculateNewCropperSizeByDeltas._.ratio=t.width/t.height,this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.deltaY*this._calculateNewCropperSizeByDeltas._.ratio,this._calculateNewCropperSizeByDeltas._.deltaX*="tr"===s||"bl"===s?-1:1)),s.match(/t/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.top+=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.height-=this._calculateNewCropperSizeByDeltas._.deltaY),s.match(/b/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.height+=this._calculateNewCropperSizeByDeltas._.deltaY),s.match(/r/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.width+=this._calculateNewCropperSizeByDeltas._.deltaX),s.match(/l/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.left+=this._calculateNewCropperSizeByDeltas._.deltaX,this._calculateNewCropperSizeByDeltas._.rectangle.width-=this._calculateNewCropperSizeByDeltas._.deltaX);return this._calculateNewCropperSizeByDeltas._.rectangle.top=this._calculateNewCropperSizeByDeltas._.rectangle.top,this._calculateNewCropperSizeByDeltas._.rectangle.left=this._calculateNewCropperSizeByDeltas._.rectangle.left,this._calculateNewCropperSizeByDeltas._.rectangle.width=this._calculateNewCropperSizeByDeltas._.rectangle.width,this._calculateNewCropperSizeByDeltas._.rectangle.height=this._calculateNewCropperSizeByDeltas._.rectangle.height,this._calculateNewCropperSizeByDeltas._.rectangle},_setMouseCursor:function(t){void 0===this._setMouseCursor._&&(this._setMouseCursor._={}),Garnish.isMobileBrowser(!0)||(this._setMouseCursor._.cursor="default",this._setMouseCursor._.handle=this.croppingCanvas&&this._cropperHandleHitTest(t),this.focalPoint&&this._isMouseOver(t,this.focalPoint)?this._setMouseCursor._.cursor="pointer":this._setMouseCursor._.handle?"t"===this._setMouseCursor._.handle||"b"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="ns-resize":"l"===this._setMouseCursor._.handle||"r"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="ew-resize":"tl"===this._setMouseCursor._.handle||"br"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="nwse-resize":"bl"!==this._setMouseCursor._.handle&&"tr"!==this._setMouseCursor._.handle||(this._setMouseCursor._.cursor="nesw-resize"):this.croppingCanvas&&this._isMouseOver(t,this.clipper)&&(this._setMouseCursor._.cursor="move"),$(".body").css("cursor",this._setMouseCursor._.cursor))},_cropperHandleHitTest:function(t){if(void 0===this._cropperHandleHitTest._&&(this._cropperHandleHitTest._={}),this._cropperHandleHitTest._.parentOffset=this.$croppingCanvas.offset(),this._cropperHandleHitTest._.mouseX=t.pageX-this._cropperHandleHitTest._.parentOffset.left,this._cropperHandleHitTest._.mouseY=t.pageY-this._cropperHandleHitTest._.parentOffset.top,this._cropperHandleHitTest._.lb=this.clipper.left-this.clipper.width/2,this._cropperHandleHitTest._.rb=this._cropperHandleHitTest._.lb+this.clipper.width,this._cropperHandleHitTest._.tb=this.clipper.top-this.clipper.height/2,this._cropperHandleHitTest._.bb=this._cropperHandleHitTest._.tb+this.clipper.height,this._cropperHandleHitTest._.mouseXthis._cropperHandleHitTest._.lb-3){if(this._cropperHandleHitTest._.mouseYthis._cropperHandleHitTest._.tb-3)return"tl";if(this._cropperHandleHitTest._.mouseYthis._cropperHandleHitTest._.bb-10)return"bl"}if(this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.rb-13&&this._cropperHandleHitTest._.mouseXthis._cropperHandleHitTest._.tb-3)return"tr";if(this._cropperHandleHitTest._.mouseYthis._cropperHandleHitTest._.bb-10)return"br"}return this._cropperHandleHitTest._.mouseXthis._cropperHandleHitTest._.lb-3&&this._cropperHandleHitTest._.mouseYthis._cropperHandleHitTest._.tb+10?"l":this._cropperHandleHitTest._.mouseXthis._cropperHandleHitTest._.rb-5&&this._cropperHandleHitTest._.mouseYthis._cropperHandleHitTest._.tb+10?"r":this._cropperHandleHitTest._.mouseYthis._cropperHandleHitTest._.tb-2&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseXthis._cropperHandleHitTest._.bb-4&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX=this._isMouseOver._.lb&&this._isMouseOver._.mouseX<=this._isMouseOver._.rb&&this._isMouseOver._.mouseY>=this._isMouseOver._.tb&&this._isMouseOver._.mouseY<=this._isMouseOver._.bb},_getRectangleVertices:function(t,e,i){return void 0===this._getRectangleVertices._&&(this._getRectangleVertices._={}),void 0===e&&(e=0),void 0===i&&(i=0),this._getRectangleVertices._.topLeft={x:t.left+e,y:t.top+i},this._getRectangleVertices._.topRight={x:this._getRectangleVertices._.topLeft.x+t.width,y:this._getRectangleVertices._.topLeft.y},this._getRectangleVertices._.bottomRight={x:this._getRectangleVertices._.topRight.x,y:this._getRectangleVertices._.topRight.y+t.height},this._getRectangleVertices._.bottomLeft={x:this._getRectangleVertices._.topLeft.x,y:this._getRectangleVertices._.bottomRight.y},[this._getRectangleVertices._.topLeft,this._getRectangleVertices._.topRight,this._getRectangleVertices._.bottomRight,this._getRectangleVertices._.bottomLeft]},_setFittedImageVerticeCoordinates:function(){this.imageVerticeCoords=this.getImageVerticeCoords("fit")},getImageVerticeCoords:function(t){var e,i=-1*((this.hasOrientationChanged()?90:0)+this.imageStraightenAngle)*(Math.PI/180),s=this.getScaledImageDimensions();e="number"==typeof t?t:"cover"===t?this.getZoomToCoverRatio(s):this.getZoomToFitRatio(s);var n=s.height*e,a=s.width*e,r=Math.cos(i)*n,o=Math.sin(i)*a,l=Math.cos(i)*a,h=Math.sin(i)*n,d=(this.editorHeight-(r+o))/2,c=(this.editorWidth-(h+l))/2;return{a:{x:c+l,y:d},b:{x:this.editorWidth-c,y:d+r},c:{x:c+h,y:this.editorHeight-d},d:{x:c,y:d+o}}},_debug:function(t){this.canvas.remove(this.debugger),this.debugger=t,this.canvas.add(this.debugger)},arePointsInsideRectangle:function(t,e){for(void 0===this.arePointsInsideRectangle._&&(this.arePointsInsideRectangle._={}),this.arePointsInsideRectangle._.ab=this._getVector(e.a,e.b),this.arePointsInsideRectangle._.bc=this._getVector(e.b,e.c),this.arePointsInsideRectangle._.scalarAbAb=this._getScalarProduct(this.arePointsInsideRectangle._.ab,this.arePointsInsideRectangle._.ab),this.arePointsInsideRectangle._.scalarBcBc=this._getScalarProduct(this.arePointsInsideRectangle._.bc,this.arePointsInsideRectangle._.bc),this.arePointsInsideRectangle._.i=0;this.arePointsInsideRectangle._.it.length)&&(e=t.length);for(var i=0,s=new Array(e);i').append(t).css({opacity:Math.max(.9-.05*e,0),width:"",height:""})})),e(n,"dropTargets",(function(){var t=$(a.$visibleSources.toArray().filter((function(t){return Garnish.hasAttr(t,"data-folder-id")&&Garnish.hasAttr(t,"data-can-move-peer-files-to")})));if(a.sourcePath.length<=1)t=t.not(a.$source);else for(var e=0;e",{type:"button",class:"btn submit","data-icon":"upload",style:"position: relative; overflow: hidden;",text:Craft.t("app","Upload files")}),this.addButton(this.$uploadButton),this.$uploadInput=$('').hide().insertBefore(this.$uploadButton),this.$uploadButton.on("click",(function(){i.$uploadButton.hasClass("disabled")||i.isIndexBusy||i.$uploadButton.parent().find("input[name=assets-upload]").trigger("click")}))},onSelectSource:function(){if(!this.settings.foldersOnly){this.currentFolderId=this.currentFolderId||this.$source.data("folder-id");var t=this.$source.data("fs-type");if(this.createUploadInputs(),this.currentFolderId&&Garnish.hasAttr(this.$source,"data-can-upload")){var e,i,s;null===(e=this.uploader)||void 0===e||e.destroy(),this.$uploadInput.insertBefore(this.$uploadButton),this.$uploadButton.removeClass("disabled");var n={fileInput:this.$uploadInput,dropZone:this.$container,events:{fileuploadstart:this._onUploadStart.bind(this),fileuploadprogressall:this._onUploadProgress.bind(this),fileuploaddone:this._onUploadSuccess.bind(this),fileuploadalways:this._onUploadAlways.bind(this),fileuploadfail:this._onUploadFailure.bind(this)}};null!==(i=this.settings)&&void 0!==i&&null!==(s=i.criteria)&&void 0!==s&&s.kind&&(n.allowedKinds=this.settings.criteria.kind),this._currentUploaderSettings=n,this.uploader=Craft.createUploader(t,this.$uploadButton,n),this.uploader.setParams({folderId:this.currentFolderId})}else this.$uploadButton.addClass("disabled")}this.base()},onSourcePathChange:function(){var t=this.sourcePath.length?this.sourcePath[this.sourcePath.length-1]:null;if(this.currentFolderId=null==t?void 0:t.folderId,!this.settings.foldersOnly&&this.currentFolderId){var e;null===(e=this.uploader)||void 0===e||e.setParams({folderId:this.currentFolderId});var i=!!t.canMoveSubItems;this.settings.selectable=this.settings.selectable||i,this.settings.multiSelect=this.settings.multiSelect||i}this.base()},startSearching:function(){if(!this.settings.hideSidebar&&this.sourcePath.length&&this.sourcePath[this.sourcePath.length-1].hasChildren){if(null===this.$includeSubfoldersContainer){var t="includeSubfolders-"+Math.floor(1e9*Math.random());this.$includeSubfoldersContainer=$('').insertAfter(this.$search);var e=$('').appendTo(this.$includeSubfoldersContainer);this.$includeSubfoldersCheckbox=$('').appendTo(e),$('').text(" "+Craft.t("app","Search in subfolders")).appendTo(e),this.addListener(this.$includeSubfoldersCheckbox,"change",(function(){this.setSelecetedSourceState("includeSubfolders",this.$includeSubfoldersCheckbox.prop("checked")),this.updateElements()}))}else this.$includeSubfoldersContainer.velocity("stop").removeClass("hidden");var i=this.getSelectedSourceState("includeSubfolders",!1);this.$includeSubfoldersCheckbox.prop("checked",i),this.$includeSubfoldersContainer.velocity({marginBottom:0,opacity:1},"fast"),this.showingIncludeSubfoldersCheckbox=!0}this.base()},stopSearching:function(){var t=this;this.showingIncludeSubfoldersCheckbox&&(this.$includeSubfoldersContainer.velocity("stop"),this.$includeSubfoldersContainer.velocity({marginBottom:-25,opacity:0},{duration:"fast",complete:function(){t.$includeSubfoldersContainer.addClass("hidden")}}),this.showingIncludeSubfoldersCheckbox=!1),this.base()},getViewSettings:function(){var t={};return"index"===this.settings.context&&(t.canSelectElement=function(){return!0}),t},getViewParams:function(){var t=Object.assign(this.base(),{showFolders:this.settings.showFolders&&!this.trashed,foldersOnly:this.settings.foldersOnly});return this.showingIncludeSubfoldersCheckbox&&this.$includeSubfoldersCheckbox.prop("checked")&&(t.criteria.includeSubfolders=!0),t},_onUploadStart:function(){this.setIndexBusy(),this._positionProgressBar(),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar(),this.promptHandler.resetPrompts()},_onUploadProgress:function(t,e){e=t instanceof CustomEvent?t.detail:e;var i=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(i)},_onUploadSuccess:function(t,e){var i=t instanceof CustomEvent?t.detail:e.result;this.selectElementAfterUpdate(i.assetId),i.conflict&&(i.prompt={message:Craft.t("app",i.conflict,{file:i.filename}),choices:[{value:"keepBoth",title:Craft.t("app","Keep both")},{value:"replace",title:Craft.t("app","Replace it")}]},this.promptHandler.addPrompt(i)),Craft.cp.runQueue()},_onUploadAlways:function(){this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.setIndexAvailable(),this.promptHandler.getPromptCount()?this.promptHandler.showBatchPrompts(this._uploadFollowup.bind(this)):this._updateAfterUpload())},_onUploadFailure:function(t,e){var i,s=(t instanceof CustomEvent?t.detail:null==e||null===(i=e.jqXHR)||void 0===i?void 0:i.responseJSON)||{},n=s.message,a=s.filename;n||(n=a?Craft.t("app","Upload failed for “{filename}”.",{filename:a}):Craft.t("app","Upload failed.")),Craft.cp.displayError(n)},_updateAfterUpload:function(){"index"!==this.settings.context&&(this.clearSearch(),this.setSelectedSortAttribute("dateCreated","desc")),this.updateElements()},_uploadFollowup:function(t){var e=this;this.setIndexBusy(),this.progressBar.resetProgressBar(),this.promptHandler.resetPrompts(),this.progressBar.setItemCount(t.length),this.progressBar.showProgressBar(),function t(i,s,n){var a={},r=null,o=e.uploader.settings,l=o.replaceAction,h=o.deleteAction,d=function(){s++,e.progressBar.incrementProcessedItemCount(1),e.progressBar.updateProgressBar(),s===i.length?n():t(i,s,n)},c=function(t){t.assetId&&e.selectElementAfterUpdate(t.assetId),d()};"replace"===i[s].choice?(r=l,a.sourceAssetId=i[s].assetId,i[s].conflictingAssetId?a.assetId=i[s].conflictingAssetId:a.targetFilename=i[s].filename):"cancel"===i[s].choice&&(r=h,a.assetId=i[s].assetId),r?Craft.sendActionRequest("POST",r,{data:a}).then((function(t){return c(t.data)})).catch((function(t){return function(t){Craft.cp.displayError(t.message),d()}(t.response.data)})):c({assetId:i[s].assetId})}(t,0,(function(){e.progressBar.hideProgressBar(),e.setIndexAvailable(),e._updateAfterUpload()}))},onUpdateElements:function(){var t=this;this._onUpdateElements(!1,this.view.getAllElements()),this.view.on("appendElements",(function(e){t._onUpdateElements(!0,e.newElements)})),this.base()},_onUpdateElements:function(t,e){var i=this;this.removeListener(this.$elements,"keydown"),this.addListener(this.$elements,"keydown",this._onKeyDown.bind(this)),this.view.elementSelect.on("focusItem",this._onElementFocus.bind(this)),this.$listedFolders=e.find(".element[data-is-folder][data-folder-name]");for(var s=function(t){var s=i.$listedFolders.eq(t),n=s.find(".label"),a=n.find(".title"),r=parseInt(s.data("folder-id")),o=s.data("folder-name"),l=Craft.t("app","{name} folder",{name:o});if(i.settings.disabledFolderIds.includes(r))return n.attr("aria-label",l),e.has(s).addClass("disabled"),"continue";var h=s.data("source-path");if(h){var d=$("",{href:Craft.getCpUrl(h[h.length-1].uri),html:a.html(),role:"button","aria-label":l});n.empty().append(d),i.addListener(d,"activate",(function(t){i.sourcePath=h,i.clearSearch(!1),i.updateElements().then((function(){var t=i.$elements.find(":focusable:not(.selectallcontainer)")[0];t&&t.focus()}))}))}},n=0;nn?n/2-6+s:t.height()/2-6,"index"!==this.settings.context&&(i=e+(t.height()/2-6)),this.progressBar.$progressBar.css({top:i})}},{defaults:{showFolders:!0,foldersOnly:!1,disabledFolderIds:[]}}),Craft.registerElementIndexClass("craft\\elements\\Asset",Craft.AssetIndex)},1016:function(){function t(t,i){var s="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!s){if(Array.isArray(t)||(s=e(t))||i&&t&&"number"==typeof t.length){s&&(t=s);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(t)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}function e(t,e){if(t){if("string"==typeof t)return i(t,e);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?i(t,e):void 0}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i').appendTo(this.$container)),this.$addElementBtn&&(this.$uploadBtn=$(" ",{type:"button",class:"btn dashed","data-icon":"upload","aria-label":1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files"),"aria-describedby":this.settings.describedBy,text:1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files")}).insertAfter(this.$addElementBtn),this.$fileInput=$(" ",{type:"file",class:"hidden",multiple:1!=this.settings.limit}).insertAfter(this.$uploadBtn),Garnish.$win.trigger("resize"));var e={dropZone:this.$container,fileInput:this.$fileInput};void 0!==this.settings.criteria.kind&&(e.allowedKinds=this.settings.criteria.kind),e.canAddMoreFiles=this.canAddMoreFiles.bind(this),e.events={},e.events.fileuploadstart=this._onUploadStart.bind(this),e.events.fileuploadprogressall=this._onUploadProgress.bind(this),e.events.fileuploaddone=this._onUploadComplete.bind(this),e.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(this.settings.fsType,this.$container,e);var i={fieldId:this.settings.fieldId};this.settings.sourceElementId&&(i.elementId=this.settings.sourceElementId),this.settings.criteria.siteId&&(i.siteId=this.settings.criteria.siteId),this.uploader.setParams(i),this.$uploadBtn&&this.$uploadBtn.on("click",(function(e){t.$uploadBtn.next("input[type=file]").trigger("click")}))},enableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.removeClass("hidden"),this.base()},disableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.addClass("hidden"),this.base()},selectUploadedFile:function(t){if(this.canAddMoreElements()){var e=t.$element;e.addClass("removable"),e.prepend(' '),e.appendTo(this.$elementsContainer);var i=-(e.outerWidth()+10);this.$addElementBtn.css("margin-"+Craft.left,i+"px");var s={};s["margin-"+Craft.left]=0,this.$addElementBtn.velocity(s,"fast"),this.addElements(e),delete this.modal}},_onUploadStart:function(){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t,e){e=t instanceof CustomEvent?t.detail:e;var i=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(i)},_onUploadComplete:function(t,e){var i=this,s={elementId:(t instanceof CustomEvent?t.detail:e.result).assetId,siteId:this.settings.criteria.siteId,thumbSize:this.settings.viewMode};Craft.sendActionRequest("POST","elements/get-element-html",{data:s}).then((function(t){var e=$(t.data.html);Craft.appendHeadHtml(t.data.headHtml),i.selectUploadedFile(Craft.getElementInfo(e)),i.uploader.isLastUpload()&&(i.progressBar.hideProgressBar(),i.$container.removeClass("uploading"),i.$container.trigger("change"))})).catch((function(t){var e=t.response;Craft.cp.displayError(e.data.message)})),Craft.cp.runQueue()},_onUploadFailure:function(t,e){var i,s=(t instanceof CustomEvent?t.detail:null==e||null===(i=e.jqXHR)||void 0===i?void 0:i.responseJSON)||{},n=s.message,a=s.filename;n||(n=a?Craft.t("app","Upload failed for “{filename}”.",{filename:a}):Craft.t("app","Upload failed.")),Craft.cp.displayError(n),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")},canAddMoreFiles:function(t){return!this.settings.limit||this.$elements.length+t ').appendTo(this.$primaryButtons);this.$selectBtn.appendTo(e),this.$selectTransformBtn=$(" ",{type:"button",class:"btn menubtn disabled",text:Craft.t("app","Select transform")}).appendTo(e);for(var i=$('').insertAfter(this.$selectTransformBtn),s=$(" ").appendTo(i),n=0;n '+t[n].name+"").appendTo(s);var a=new Garnish.MenuBtn(this.$selectTransformBtn,{onOptionSelect:this.onSelectTransform.bind(this)});a.disable(),this.$selectTransformBtn.data("menuButton",a)}},onSelectionChange:function(t){var e=this.elementIndex.getSelectedElements(),i=!1;if(e.length&&this.settings.transforms.length){i=!0;for(var s=0;s'),i=$('').appendTo(e),s=$('').appendTo(i),n=$("",{type:"button",class:"btn",text:Craft.t("app","Sign out now")}).appendTo(s),a=$("",{type:"submit",class:"btn submit",text:Craft.t("app","Keep me signed in")}).appendTo(s);this.$logoutWarningPara=$("").prependTo(i),this.logoutWarningModal=new Garnish.Modal(e,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark logoutwarningmodalshade",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout((function(){a.trigger("focus")}),100)}}),this.addListener(n,"activate","logout"),this.addListener(e,"submit","renewSession")}t?this.logoutWarningModal.quickShow():this.logoutWarningModal.show(),this.updateLogoutWarningMessage(),this.decrementLogoutWarningInterval=setInterval(this.decrementLogoutWarning.bind(this),1e3)},updateLogoutWarningMessage:function(){this.$logoutWarningPara.text(Craft.t("app","Your session will expire in {time}.",{time:Craft.secondsToHumanTimeDuration(this.remainingSessionTime)})),this.logoutWarningModal.updateSizeAndPosition()},decrementLogoutWarning:function(){this.remainingSessionTime>0&&(this.remainingSessionTime--,this.updateLogoutWarningMessage()),0===this.remainingSessionTime&&clearInterval(this.decrementLogoutWarningInterval)},hideLogoutWarningModal:function(t){this.showingLogoutWarningModal=!1,this.logoutWarningModal&&(t?this.logoutWarningModal.quickHide():this.logoutWarningModal.hide(),this.decrementLogoutWarningInterval&&clearInterval(this.decrementLogoutWarningInterval))},showLoginModal:function(){var t,e=this;if(this.showingLogoutWarningModal?(this.hideLogoutWarningModal(!0),t=!0):t=!1,this.showingLoginModal=!0,!this.loginModal){var i=$(''),s=$(''+Craft.t("app","Your session has ended.")+""+Craft.t("app","Enter your password to log back in.")+" ").appendTo(i),n=$('').appendTo(s),a=$(' ').appendTo(n),r=$(' ').appendTo(a),o=$(" ").appendTo(a),l=$(' ').appendTo(r);this.$passwordInput=$(' ').appendTo(l),this.$loginBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Sign in"),spinner:!0}).attr("aria-disabled","true").appendTo(o),this.$loginErrorPara=$(' ').appendTo(s),this.loginModal=new Garnish.Modal(i,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark loginmodalshade",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout((function(){e.$passwordInput.trigger("focus")}),100)},onFadeOut:function(){e.$passwordInput.val("")}}),new Craft.PasswordInput(this.$passwordInput,{onToggleInput:function(t){e.$passwordInput=t}}),this.addListener(this.$passwordInput,"input","validatePassword"),this.addListener(i,"submit","login")}t?this.loginModal.quickShow():this.loginModal.show()},hideLoginModal:function(t){this.showingLoginModal=!1,this.loginModal&&(t?this.loginModal.quickHide():this.loginModal.hide())},logout:function(){$.get({url:Craft.getActionUrl("users/logout"),dataType:"json",success:function(){Craft.redirectTo("")}})},renewSession:function(t){t&&t.preventDefault(),this.hideLogoutWarningModal(),this.checkRemainingSessionTime(!0)},validatePassword:function(){return this.$passwordInput.val().length>=6?(this.$loginBtn.removeClass("disabled"),this.$loginBtn.removeAttr("aria-disabled"),!0):(this.$loginBtn.addClass("disabled"),this.$loginBtn.attr("aria-disabled","true"),!1)},login:function(t){t&&t.preventDefault(),this.validatePassword()&&(this.$loginBtn.addClass("loading"),this.clearLoginError(),void 0!==Craft.csrfTokenValue?(this.submitLoginIfLoggedOut=!0,this.checkRemainingSessionTime()):this.submitLogin())},submitLogin:function(){var t=this,e={loginName:Craft.username,password:this.$passwordInput.val()};Craft.sendActionRequest("POST","users/login",{data:e}).then((function(e){t.$loginBtn.removeClass("loading"),t.hideLoginModal(),t.checkRemainingSessionTime()})).catch((function(e){var i=e.response;t.$loginBtn.removeClass("loading"),t.showLoginError(i.data.message||null),Garnish.shake(t.loginModal.$container),Garnish.isMobileBrowser(!0)||t.$passwordInput.trigger("focus")}))},showLoginError:function(t){null==t&&(t=Craft.t("app","A server error occurred.")),this.$loginErrorPara.text(t),this.loginModal.updateSizeAndPosition()},clearLoginError:function(){this.showLoginError("")}},{checkInterval:60,minSafeSessionTime:120})},5774:function(){function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function e(e){for(var s=1;s =t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,a=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw a}}}}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{class:"update-spinner spinner spinner-absolute"}).appendTo(this.$elements)),this.$countSpinner=this.$container.find("#count-spinner"),this.$countContainer=this.$container.find("#count-container"),this.$actionsContainer=this.$container.find("#actions-container"),this.$exportBtn=this.$container.find("#export-btn"),this.settings.hideSidebar&&(this.$sidebar.hide(),$(".body, .content",this.$container).removeClass("has-sidebar")),this.initSources()){if(this.$statusMenuBtn.length&&(this.statusMenu=this.$statusMenuBtn.menubtn().data("menubtn").menu,this.statusMenu.on("optionselect",this._handleStatusChange.bind(this))),this.$siteMenuBtn.length){this.siteMenu=this.$siteMenuBtn.menubtn().data("menubtn").menu;var n=this.siteMenu.$options.filter(".sel:first");if(n.length||(n=this.siteMenu.$options.first()),n.length?this._setSite(n.data("site-id")):this.settings.criteria={id:"0"},this.siteMenu.on("optionselect",this._handleSiteChange.bind(this)),this.siteId){var a=this.settings.defaultSiteId||Craft.cp.getSiteId();if(a&&a!=this.siteId){var r=this.siteMenu.$options.filter('[data-site-id="'+a+'"]:first');r.length&&r.trigger("click")}}}else this.settings.criteria&&this.settings.criteria.siteId&&"*"!==this.settings.criteria.siteId?this._setSite(this.settings.criteria.siteId):this._setSite(Craft.siteId);this.settings.criteria&&this.settings.criteria.siteId&&delete this.settings.criteria.siteId,this.addListener(this.$search,"input",(function(){!s.searching&&s.$search.val()?s.startSearching():s.searching&&!s.$search.val()&&s.stopSearching(),s.searchTimeout&&clearTimeout(s.searchTimeout),s.searchTimeout=setTimeout(s.updateElementsIfSearchTextChanged.bind(s),500)})),this.addListener(this.$search,"keypress",(function(t){t.keyCode===Garnish.RETURN_KEY&&(t.preventDefault(),s.searchTimeout&&clearTimeout(s.searchTimeout),s.updateElementsIfSearchTextChanged())})),this.addListener(this.$clearSearchBtn,"click",(function(){s.clearSearch(!0),Garnish.isMobileBrowser(!0)||s.$search.trigger("focus")})),Garnish.isMobileBrowser(!0)||this.$search.trigger("focus"),this.viewMenus={},this.filterHuds={},this.addListener(this.$filterBtn,"click","showFilterHud");var o="index"===this.settings.context?Craft.getQueryParams():{};if(o.status){var l;switch(o.status){case"trashed":l="[data-trashed]";break;case"drafts":l="[data-drafts]";break;default:l='[data-status="'.concat(o.status,'"]')}var h=this.statusMenu.$options.filter(l);h.length?this.statusMenu.selectOption(h[0]):Craft.setQueryParam("status",null)}this.addListener(this.$exportBtn,"click","_showExportHud"),this.initialized=!0,this.afterInit();var d=this.getSelectedSourceState("sourcePathStep");this.selectDefaultSource();var c=this.getDefaultSourcePath();!c&&d?this.loadSourcePathByKey(d).then((function(t){if(t){var e=s.sourceKey.split("/").slice(-1)[0],i=t.findIndex((function(t){return t.key===e}));-1!==i&&(s.sourcePath=t.slice(i))}s.afterSetInitialSource(o)})):(c&&(this.sourcePath=c),this.afterSetInitialSource(o))}},afterInit:function(){this.onAfterInit()},loadSourcePathByKey:function(t){var e=this;return new Promise((function(i,s){if(t!==e.sourceKey){var n=e.getViewParams();n.stepKey=t,Craft.sendActionRequest("POST","element-indexes/source-path",{data:n}).then((function(t){var e=t.data;i(e.sourcePath)})).catch(s)}else i([])}))},afterSetInitialSource:function(t){if("index"===this.settings.context&&this.addListener(Garnish.$win,"resize","handleResize"),this.handleResize(),t.search&&(this.startSearching(),this.searchText=t.search),t.filters&&this.createFilterHud({showOnInit:!1,serialized:t.filters}),t.sort){var e=t.sort.lastIndexOf("-");if(-1!==e){var i=t.sort.substring(0,e),s=t.sort.substring(e+1);this.setSelectedSortAttribute(i,s)}}this.setPage(Craft.pageNum),this.updateElements(!0)},handleResize:function(){this.sourcePath.length&&this.settings.showSourcePath&&this._updateSourcePathVisibility()},_createCancelToken:function(){return this._cancelToken=axios.CancelToken.source(),this._cancelToken.token},_cancelRequests:function(){this._cancelToken&&this._cancelToken.cancel()},getSourceContainer:function(){return this.$sidebar.find("nav > ul")},get $sources(){if(this.sourceSelect)return this.sourceSelect.$items},getSite:function(){var t=this;if(this.siteId)return Craft.sites.find((function(e){return e.id==t.siteId}))},initSources:function(){var t=this._getSourcesInList(this.getSourceContainer(),!0);if(0===t.length)return!1;this.sourceSelect||(this.sourceSelect=new Garnish.Select(this.$sidebar.find("nav"),{multi:!1,allowEmpty:!1,vertical:!0,onSelectionChange:this._handleSourceSelectionChange.bind(this)})),this.sourcesByKey={};for(var e=0;e",{class:"source-path"}).insertBefore(e.$elements),e.$sourcePathInnerContainer=$("",{class:"chevron-btns"}).appendTo(e.$sourcePathOuterContainer);var s,n,a,r=$("",{"aria-label":e.getSourcePathLabel()}).appendTo(e.$sourcePathInnerContainer),o=$(" ").appendTo(r);if(t.length>1){e.$sourcePathOverflowBtnContainer=$("",{class:"first-step hidden"}).appendTo(o),n="menu"+Math.floor(1e6*Math.random()),s=$("",{type:"button",class:"btn",title:Craft.t("app","More items"),"aria-label":Craft.t("app","More items"),"data-disclosure-trigger":!0,"aria-controls":n}).append($("",{class:"btn-body"}).append($("",{class:"label"}).append($("",{"data-icon":"ellipsis","aria-hidden":"true"})))).append($("",{class:"chevron-right"})).appendTo(e.$sourcePathOverflowBtnContainer);var l=$("",{id:n,class:"menu menu--disclosure"}).appendTo(e.$sourcePathOverflowBtnContainer);a=$("").appendTo(l),s.disclosureMenu()}for(var h=0;h",{class:"hidden"}).appendTo(a),$("",{class:"flex flex-nowrap",href:"#",type:"button",role:"button",html:r.icon?'').concat(r.label,""):r.label}).appendTo(r.$overflowLi).on("click",(function(t){t.preventDefault(),s.data("trigger").hide(),e.selectSourcePathStep(n)})));var l=0===n,h=n===t.length-1;r.$li=$("").appendTo(o),l&&r.$li.addClass("first-step"),r.$btn=$("",{href:r.uri?Craft.getCpUrl(r.uri):"#",class:"btn",role:"button"}),r.icon&&r.$btn.attr("aria-label",r.label);var d=$("",{class:"btn-body"}).appendTo(r.$btn);r.$label=$("",{class:"label",html:r.icon?''):r.label}).appendTo(d),r.$btn.append($('')),h&&i.length?r.$btn.addClass("has-action-menu"):r.$btn.append($('')),h&&r.$btn.addClass("current-step").attr("aria-current","page"),r.$btn.appendTo(r.$li),e.addListener(r.$btn,"activate",(function(){e.selectSourcePathStep(n)}))}(h);if(i&&i.length){var d=e.getSourcePathActionLabel(),c="menu"+Math.floor(1e6*Math.random());e.$sourcePathActionsBtn=$("",{type:"button",class:"btn current-step",title:d,"aria-label":d,"data-disclosure-trigger":!0,"aria-controls":c}).append($("",{class:"btn-body"}).append($("",{class:"label"}))).append($("",{class:"chevron-right"})).appendTo(e.$sourcePathInnerContainer);var u=[i.filter((function(t){return!t.destructive&&!t.administrative})),i.filter((function(t){return t.destructive&&!t.administrative})),i.filter((function(t){return t.administrative}))].filter((function(t){return t.length})),p=$("",{id:c,class:"menu menu--disclosure"}).appendTo(e.$sourcePathInnerContainer);u.forEach((function(t,i){0!==i&&$(" ").appendTo(p),e._buildSourcePathActionList(t).appendTo(p)})),e.$sourcePathActionsBtn.disclosureMenu(),e._updateSourcePathVisibility()}"index"===e.settings.context&&void 0!==t[t.length-1].uri&&"undefined"!=typeof history&&history.replaceState({},"",Craft.getCpUrl(t[t.length-1].uri))}(),this.setSelecetedSourceState("sourcePathStep",(this.sourcePaths[this.sourceKey]?this.sourcePaths[this.sourceKey][this.sourcePaths[this.sourceKey].length-1].key:null)||null),this.onSourcePathChange()},getSourcePathLabel:function(){return""},getSourcePathActions:function(){return[]},getSourcePathActionLabel:function(){return""},_updateSourcePathVisibility:function(){var t=this.sourcePath[0],e=this.sourcePath[this.sourcePath.length-1];this.$sourcePathOverflowBtnContainer&&(this.$sourcePathOverflowBtnContainer.addClass("hidden"),t.$li.addClass("first-step"));var i,s=a(this.sourcePath);try{for(s.s();!(i=s.n()).done;){var n=i.value;n.$overflowLi&&n.$overflowLi.addClass("hidden"),n.$li.removeClass("hidden")}}catch(t){s.e(t)}finally{s.f()}e.$label.css("width",""),e.$btn.removeAttr("title");var r=this._checkSourcePathOverage();if(r){if(this.$sourcePathOverflowBtnContainer){this.$sourcePathOverflowBtnContainer.removeClass("hidden"),t.$li.removeClass("first-step");for(var o=0;o");return t.forEach((function(t){var s=$("",{href:"#",type:"button",role:"button","aria-label":t.label,text:t.label}).on("click",(function(i){i.preventDefault(),e.$sourcePathActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&s.addClass("error"),$("").append(s).appendTo(i)})),i},onSourcePathChange:function(){this.settings.onSourcePathChange(),this.trigger("sourcePathChange")},selectSourcePathStep:function(t){this.sourcePath=this.sourcePath.slice(0,t+1),this.sourcePath[t].$btn.focus(),this.clearSearch(!1),this.updateElements()},startSearching:function(){this.$clearSearchBtn.removeClass("hidden"),this.searching=!0,this.sortByScore=!0,this.activeViewMenu&&this.activeViewMenu.updateSortField()},clearSearch:function(t){this.searching&&(this.$search.val(""),this.searchTimeout&&clearTimeout(this.searchTimeout),this.stopSearching(),t?this.updateElementsIfSearchTextChanged():this.searchText=null)},stopSearching:function(){this.$clearSearchBtn.addClass("hidden"),this.searching=!1,this.sortByScore=!1,this.activeViewMenu&&this.activeViewMenu.updateSortField()},setInstanceState:function(t,e){"object"===n(t)?$.extend(this.instanceState,t):this.instanceState[t]=e,this.storeInstanceState()},storeInstanceState:function(){this.settings.storageKey&&Craft.setLocalStorage(this.settings.storageKey,this.instanceState)},getSourceState:function(t,e,i){return null==t?null:(t=t.replace(/\/.*/,""),void 0===this.sourceStates[t]&&(this.sourceStates[t]={}),void 0===e?this.sourceStates[t]:void 0!==this.sourceStates[t][e]?this.sourceStates[t][e]:void 0!==i?i:null)},getSelectedSourceState:function(t,e){return this.getSourceState(this.instanceState.selectedSource,t,e)},setSelecetedSourceState:function(t,e){var i=this.getSelectedSourceState();if(null==i&&(i=[]),"object"===n(t))for(var s in t)t.hasOwnProperty(s)&&(null!==t[s]?i[s]=t[s]:delete i[s]);else null!==e?i[t]=e:delete i[t];var a="*";for(var r in null!=this.instanceState.selectedSource&&(a=this.instanceState.selectedSource.replace(/\/.*/,"")),this.sourceStates[a]=i,this.sourceStates)this.sourceStates.hasOwnProperty(r)&&r.includes("/")&&delete this.sourceStates[r];Craft.setLocalStorage(this.sourceStatesStorageKey,this.sourceStates)},storeSortAttributeAndDirection:function(){},setPage:function(t){if("index"===this.settings.context){t=Math.max(t,1),this.page=t;var e=Craft.getPageUrl(this.page);history.replaceState({},"",e)}},_resetCount:function(){this.resultSet=null,this.totalResults=null},updateSourceMenu:function(){var t=this;if(this.$sourceActionsContainer.length){this.$sourceActionsBtn&&(this.$sourceActionsBtn.data("trigger").destroy(),this.$sourceActionsContainer.empty(),$("#source-actions-menu").remove(),this.$sourceActionsBtn=null);var e=this.getSourceActions();if(e.length){var i=[e.filter((function(t){return!t.destructive&&!t.administrative})),e.filter((function(t){return t.destructive&&!t.administrative})),e.filter((function(t){return t.administrative}))].filter((function(t){return t.length}));this.$sourceActionsBtn=$("",{type:"button",class:"btn settings icon menubtn",title:Craft.t("app","Source settings"),"aria-label":Craft.t("app","Source settings"),"aria-controls":"source-actions-menu"}).appendTo(this.$sourceActionsContainer);var s=$("",{id:"source-actions-menu",class:"menu menu--disclosure"}).appendTo(this.$sourceActionsContainer);i.forEach((function(e,i){0!==i&&$(" ").appendTo(s),t._buildActionList(e).appendTo(s)})),this.$sourceActionsBtn.disclosureMenu()}}},_buildActionList:function(t){var e=this,i=$("");return t.forEach((function(t){var s=$("",{type:"button",class:"menu-option",text:t.label}).on("click",(function(){e.$sourceActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&s.addClass("error"),$("").append(s).appendTo(i)})),i},getSourceActions:function(){var t=this,e=[];return Craft.userIsAdmin&&Craft.allowAdminChanges&&e.push({label:Craft.t("app","Customize sources"),administrative:!0,onSelect:function(){t.createCustomizeSourcesModal()}}),e},updateViewMenu:function(){this.activeViewMenu&&this.activeViewMenu===this.viewMenus[this.rootSourceKey]||(this.activeViewMenu&&this.activeViewMenu.hideTrigger(),this.viewMenus[this.rootSourceKey]||(this.viewMenus[this.rootSourceKey]=new l(this,this.$rootSource)),this.activeViewMenu=this.viewMenus[this.rootSourceKey],this.activeViewMenu.showTrigger())},getViewSettings:function(){return{}},getViewParams:function(){var t={siteId:this.siteId,search:this.searchText,offset:this.settings.batchSize*(this.page-1),limit:this.settings.batchSize};if(this.settings.canHaveDrafts&&(this.drafts||"index"===this.settings.context&&!this.status)&&(t.drafts=this.drafts||null,t.savedDraftsOnly=!0,this.drafts||(t.draftOf=!1)),this.trashed&&(t.trashed=!0),Garnish.hasAttr(this.$source,"data-override-status")||(t.status=this.status),$.extend(t,this.settings.criteria),this.sourcePath.length){var e=this.sourcePath[this.sourcePath.length-1];void 0!==e.criteria&&$.extend(t,e.criteria)}var i={context:this.settings.context,elementType:this.elementType,source:this.instanceState.selectedSource,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:t,disabledElementIds:this.settings.disabledElementIds,viewState:$.extend({},this.getSelectedSourceState()),paginated:this._isViewPaginated()?1:0};if(i.viewState.mode=this.viewMode,"structure"===this.viewMode)i.viewState.mode="table",i.viewState.order="structure",i.viewState.sort="asc",void 0===this.instanceState.collapsedElementIds&&(this.instanceState.collapsedElementIds=[]),i.collapsedElementIds=this.instanceState.collapsedElementIds;else{var n=s(this.getSortAttributeAndDirection(),2),a=n[0],r=n[1];i.viewState.order=a,i.viewState.sort=r}return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]&&(this.filterHuds[this.siteId][this.sourceKey].conditionConfig||this.filterHuds[this.siteId][this.sourceKey].serialized)&&(i.filterConfig=this.filterHuds[this.siteId][this.sourceKey].conditionConfig,i.filters=this.filterHuds[this.siteId][this.sourceKey].serialized),this.trigger("registerViewParams",{params:i}),i},updateElements:function(t,e){var i=this;return new Promise((function(s,n){if(i.initialized){i._cancelRequests(),i.setIndexBusy(),i.view&&(i.view.destroy(),delete i.view),!0!==t&&(i.setPage(1),i._resetCount());var a=i.getViewParams();Craft.sendActionRequest("POST",i.settings.updateElementsAction,{data:a,cancelToken:i._createCancelToken()}).then((function(t){if(i.setIndexAvailable(),"index"===i.settings.context){if(Craft.cp.fixedHeader){var n=Craft.cp.$headerContainer.height(),r=i.$main.offset().top-n;r1){this.$viewModeBtnContainer=$('').attr("aria-label",Craft.t("app","View")).insertAfter(this.$searchContainer);for(var s=0;s",{type:"button",class:"btn"+(void 0!==n.className?" ".concat(n.className):""),"data-view":n.mode,"data-icon":n.icon,"aria-label":n.title,"aria-pressed":"false",title:n.title}).appendTo(this.$viewModeBtnContainer);this.viewModeBtns[n.mode]=a,this.addListener(a,"click",{mode:n.mode},(function(t){this.selectViewMode(t.data.mode),this.updateElements()}))}}var r=this.getSelectedSourceState("mode");if("table"===r&&"structure"===this.getSourceState(e.data("key"),"order")&&(r="structure"),r&&this.doesSourceHaveViewMode(r)||(r=this.viewMode&&this.doesSourceHaveViewMode(this.viewMode)?this.viewMode:this.sourceViewModes[0].mode),this.selectViewMode(r),this.updateSourceMenu(),this.updateViewMenu(),!this.filterHudExists()&&this.$source.data("default-filter")?this.createFilterHud({showOnInit:!1,conditionConfig:this.$source.data("default-filter")}):this.updateFilterBtn(),this.sourcePath=this.sourcePaths[this.sourceKey]||this.$source.data("default-source-path"),this.onSelectSource(),"index"===this.settings.context){var o=Craft.getQueryParams();o.source=this.sourceKey,Craft.setUrl(Craft.getUrl(Craft.path,o))}return!0},selectSourceByKey:function(t){var e=this.getSourceByKey(t);return!!e&&this.selectSource(e)},getSortOptions:function(t){var e=((t=t?this.getRootSource(t):this.$rootSource)?t.data("sort-opts"):null)||[];return e.length||e.push({label:Craft.t("app","Title"),attr:"title",defaultDir:"asc"}),e},getSortOption:function(t,e){return this.getSortOptions(e).find((function(e){return e.attr===t}))||null},getDefaultSort:function(t){if(t=t?this.getRootSource(t):this.$rootSource){var e=t.data("default-sort");if(e){"string"==typeof e&&(e=[e]);var i=this.getSortOption(e[0],t);if(i)return e[1]||(e[1]=i.defaultDir),e}}var s=this.getSortOptions(t);return[s[0].attr,s[0].defaultDir]},getTableColumnOptions:function(t){return((t=t?this.getRootSource(t):this.$rootSource)?t.data("table-col-opts"):null)||[]},getTableColumnOption:function(t,e){return this.getTableColumnOptions(e).find((function(e){return e.attr===t}))||null},getDefaultTableColumns:function(t){return((t=t?this.getRootSource(t):this.$rootSource)?t.data("default-table-cols"):null)||[]},getSelectedTableColumns:function(t){var e=this;if(t=t?this.getRootSource(t):this.$rootSource){var i=this.getSourceState(t.data("key"),"tableColumns");if(i)return i.filter((function(i){return!!e.getTableColumnOption(i,t)}))}return this.getDefaultTableColumns(t)},setSelectedTableColumns:function(t){this.setSelecetedSourceState({tableColumns:t}),this.activeViewMenu&&this.activeViewMenu.updateTableColumnField()},getViewModesForSource:function(){var t=[];return Garnish.hasAttr(this.$source,"data-has-structure")&&t.push({mode:"structure",title:Craft.t("app","Display in a structured table"),icon:"rtl"===Craft.orientation?"structurertl":"structure"}),t.push({mode:"table",title:Craft.t("app","Display in a table"),icon:"list"}),this.$source&&Garnish.hasAttr(this.$source,"data-has-thumbs")&&t.push({mode:"thumbs",title:Craft.t("app","Display as thumbnails"),icon:"grid"}),t},doesSourceHaveViewMode:function(t){for(var e=0;e').appendTo($("#header"))),t},setIndexBusy:function(){this.$elements.addClass("busy"),this.$updateSpinner.appendTo(this.$elements),this.isIndexBusy=!0,document.activeElement&&this.$elements[0].contains(document.activeElement)&&(this._activeElement=document.activeElement,document.activeElement.blur());var t=this.$elements.height(),e=window.innerHeight,i=$(document).scrollTop();if("modal"==this.settings.context&&(e=this.$elements.parents(".modal").height(),i=this.$elements.scrollParent().scrollTop()),t>e){var s=Math.floor(i+e/2)-100;s=Math.floor(s/t*100),document.documentElement.style.setProperty("--elements-busy-top-position",s+"%")}},setIndexAvailable:function(){this.$elements.removeClass("busy"),this.$updateSpinner.remove(),this.isIndexBusy=!1,this._activeElement&&(document.activeElement&&document.activeElement!==document.body||(document.body.contains(this._activeElement)?this._activeElement.focus():this._activeElement.id&&$("#".concat(this._activeElement.id)).focus()),this._activeElement=null)},createCustomizeSourcesModal:function(){var t=new Craft.CustomizeSourcesModal(this,{hideOnEsc:!1,hideOnShadeClick:!1,onHide:function(){t.destroy()}});return t},disable:function(){this.sourceSelect&&this.sourceSelect.disable(),this.view&&this.view.disable(),this.base()},enable:function(){this.sourceSelect&&this.sourceSelect.enable(),this.view&&this.view.enable(),this.base()},onAfterInit:function(){this.settings.onAfterInit(),this.trigger("afterInit")},onSelectSource:function(){this.settings.onSelectSource(this.sourceKey),this.trigger("selectSource",{sourceKey:this.sourceKey})},onSelectSite:function(){this.settings.onSelectSite(this.siteId),this.trigger("selectSite",{siteId:this.siteId})},onUpdateElements:function(){this.settings.onUpdateElements(),this.trigger("updateElements")},onSelectionChange:function(){this.settings.onSelectionChange(),this.trigger("selectionChange")},onEnableElements:function(t){this.settings.onEnableElements(t),this.trigger("enableElements",{elements:t})},onDisableElements:function(t){this.settings.onDisableElements(t),this.trigger("disableElements",{elements:t})},onAfterAction:function(t,e){this.settings.onAfterAction(t,e),this.trigger("afterAction",{action:t,params:e})},_handleSourceSelectionChange:function(){this.sourceSelect.totalSelected?this.selectSource(this.sourceSelect.$selectedItems)&&this.updateElements():this.sourceSelect.selectItem(this.$visibleSources.first())},_handleActionTriggerSubmit:function(t){t.preventDefault();var e=$(t.currentTarget);e.hasClass("disabled")||e.data("custom-handler")||this.submitAction(e.data("action"),Garnish.getPostData(e))},_handleMenuActionTriggerSubmit:function(t){var e=$(t.option);e.hasClass("disabled")||e.data("custom-handler")||this.submitAction(e.data("action"))},_handleStatusChange:function(t){this.statusMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$statusMenuBtn.html(e.html()),this.trashed=!1,this.drafts=!1,this.status=null;var i=null;Garnish.hasAttr(e,"data-trashed")?(this.trashed=!0,i="trashed"):Garnish.hasAttr(e,"data-drafts")?(this.drafts=!0,i="drafts"):this.status=i=e.data("status")||null,this.activeViewMenu&&this.activeViewMenu.updateSortField(),"index"===this.settings.context&&Craft.setQueryParam("status",i),this.updateElements()},_handleSiteChange:function(t){this.siteMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$siteMenuBtn.html(e.html()),this._setSite(e.data("site-id")),this.initialized&&this.updateElements(),this.onSelectSite()},_setSite:function(t){var e=null===this.siteId;this.siteId=t,this.updateSourceVisibility(),!this.initialized||e||this.$source&&this.$source.length||!this.$visibleSources.length||this.selectSource(this.$visibleSources[0]);for(var i,s=this.getSourceContainer().children(".heading"),n=0;n ul > li:not(.hidden)").length?i.removeClass("hidden"):i.addClass("hidden");this.initialized&&("index"===this.settings.context&&Craft.cp.setSiteId(t),this.updateFilterBtn())},updateSourceVisibility:function(){var t=this;this.$visibleSources=$();for(var e=0;e li:not(.heading) > a");return e&&(i=i.add(t.find("> li.heading > ul > li > a"))),i},_getChildSources:function(t){var e=t.siblings("ul");return this._getSourcesInList(e)},_getSourceToggle:function(t){return t.siblings(".toggle")},_toggleSource:function(t){t.parent("li").hasClass("expanded")?this._collapseSource(t):this._expandSource(t)},_expandSource:function(t){t.next(".toggle").attr({"aria-expanded":"true","aria-label":Craft.t("app","Hide nested sources")}),t.parent("li").addClass("expanded");for(var e=this._getChildSources(t),i=0;i').appendTo(i.$countContainer),l=Math.max(Math.ceil(t/i.settings.batchSize),1),h=$("",{class:"flex","aria-label":Craft.t("app","{element} pagination",{element:e})}).appendTo(o),d=$("",{role:"button",class:"page-link prev-page"+(i.page>1?"":" disabled"),disabled:1===i.page,title:Craft.t("app","Previous Page")}).appendTo(h),c=$("",{role:"button",class:"page-link next-page"+(i.page",{class:"page-info",text:r}).appendTo(o),i.page>1&&i.addListener(d,"click",(function(){this.removeListener(d,"click"),this.removeListener(c,"click"),this.setPage(this.page-1),this.updateElements(!0,!0)})),i.page').prependTo(this.$selectAllContainer).attr({role:"checkbox",tabindex:"0","aria-checked":"false","aria-label":Craft.t("app","Select all")}),this.addListener(this.$selectAllContainer,"click",(function(){0===this.view.getSelectedElements().length?this.view.selectAllElements():this.view.deselectAllElements()})),this.addListener(this.$selectAllCheckbox,"keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(t.preventDefault(),$(t.currentTarget).trigger("click"))}))):(this.$selectAllContainer.siblings().length||this.$selectAllContainer.parent(".header").remove(),this.$selectAllContainer.remove()),this.exporters=e.exporters,this.exportersByType=Craft.index(this.exporters||[],(function(t){return t.type})),this.exporters&&this.exporters.length?this.$exportBtn.removeClass("hidden"):this.$exportBtn.addClass("hidden");var s=this.actions||this.settings.selectable,n=Object.assign({context:this.settings.context,batchSize:"index"!==this.settings.context||"structure"===this.viewMode?this.settings.batchSize:null,params:t,selectable:s,multiSelect:this.actions||this.settings.multiSelect,canSelectElement:this.settings.canSelectElement,checkboxMode:!!this.actions,onSelectionChange:this._handleSelectionChange.bind(this)},this.getViewSettings());if(this.view=this.createView(this.getSelectedViewMode(),n),this._autoSelectElements){if(s)for(var a=0;a').appendTo(i)),s.text(t[e])):s&&s.remove()}}},_countResults:function(){var t=this;return new Promise((function(e,i){if(null!==t.totalResults)e(t.totalResults);else{var s=t.getViewParams();delete s.criteria.offset,delete s.criteria.limit,null===t.resultSet&&(t.resultSet=Math.floor(1e8*Math.random())),s.resultSet=t.resultSet,Craft.sendActionRequest("POST",t.settings.countElementsAction,{data:s,cancelToken:t._createCancelToken()}).then((function(s){s.data.resultSet==t.resultSet?(t.totalResults=s.data.count,e(s.data.count)):i()})).catch(i)}}))},_createTriggers:function(){var t,e,i=[],s=[],n=[];for(t=0;t').data("action",a).append(a.trigger);r.find(".btn").addClass("secondary"),this.addListener(r,"submit","_handleActionTriggerSubmit"),i.push(r)}else a.destructive?n.push(a):s.push(a)}if(s.length||n.length){var o=$("");e=$("",{type:"button",class:"btn secondary menubtn","data-icon":"settings",title:Craft.t("app","Actions")}).appendTo(o);var l=$('').appendTo(o),h=this._createMenuTriggerList(s,!1),d=this._createMenuTriggerList(n,!0);h&&h.appendTo(l),h&&d&&$(" ").appendTo(l),d&&d.appendTo(l),i.push(o)}for(this._$triggers=$(),t=0;t").append(i[t]);this._$triggers=this._$triggers.add(c)}this._$triggers.appendTo(this.$actionsContainer),Craft.appendHeadHtml(this.actionsHeadHtml),Craft.appendBodyHtml(this.actionsBodyHtml),Craft.initUiElements(this._$triggers),e&&e.data("menubtn").on("optionSelect",this._handleMenuActionTriggerSubmit.bind(this))},_showExportHud:function(){var t=this;this.$exportBtn.addClass("active"),this.$exportBtn.attr("aria-expanded","true");for(var e=$("",{class:"export-form"}),i=[],s=0;s"),s=0;s").append($("",{id:Craft.formatInputId(t[s].type)+"-actiontrigger",class:e?"error":null,data:{action:t[s]},text:t[s].name})).appendTo(i);return i}},filterHudExists:function(){return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]},showFilterHud:function(){this.filterHudExists()?this.filterHuds[this.siteId][this.sourceKey].show():this.createFilterHud()},createFilterHud:function(t){this.filterHuds[this.siteId]||(this.filterHuds[this.siteId]={}),this.filterHuds[this.siteId][this.sourceKey]=new h(this,this.sourceKey,this.siteId,t),this.updateFilterBtn()},updateFilterBtn:function(){this.$filterBtn.removeClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",null),this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]?(this.$filterBtn.attr("aria-controls",this.filterHuds[this.siteId][this.sourceKey].id).attr("aria-expanded",this.filterHuds[this.siteId][this.sourceKey].showing?"true":"false"),this.filterHuds[this.siteId][this.sourceKey].isActive&&(this.$filterBtn.addClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",this.filterHuds[this.siteId][this.sourceKey].serialized))):this.$filterBtn.attr("aria-controls",null)}},{defaults:{context:"index",modal:null,storageKey:null,condition:null,referenceElementId:null,referenceElementSiteId:null,criteria:null,batchSize:100,disabledElementIds:[],selectable:!1,multiSelect:!1,canSelectElement:null,buttonContainer:null,hideSidebar:!1,toolbarSelector:".toolbar:first",refreshSourcesAction:"element-indexes/get-source-tree-html",updateElementsAction:"element-indexes/get-elements",countElementsAction:"element-indexes/count-elements",submitActionsAction:"element-indexes/perform-action",defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,canHaveDrafts:!1,elementTypeName:Craft.t("app","Element"),elementTypePluralName:Craft.t("app","Elements"),onAfterInit:$.noop,onSelectSource:$.noop,onSelectSite:$.noop,onUpdateElements:$.noop,onSelectionChange:$.noop,onSourcePathChange:$.noop,onEnableElements:$.noop,onDisableElements:$.noop,onAfterAction:$.noop}});var l=Garnish.Base.extend({elementIndex:null,$source:null,sourceKey:null,menu:null,id:null,$trigger:null,$container:null,$sortField:null,$sortAttributeSelect:null,$sortDirectionPicker:null,sortDirectionListbox:null,$tableColumnsField:null,$tableColumnsContainer:null,$revertContainer:null,$revertBtn:null,$closeBtn:null,init:function(t,e){var i=this;this.elementIndex=t,this.$source=e,this.sourceKey=e.data("key"),this.id="view-menu-".concat(Math.floor(1e9*Math.random())),this.$trigger=$("",{type:"button",class:"btn menubtn hidden",text:Craft.t("app","View"),"aria-label":Craft.t("app","View settings"),"aria-controls":this.id,"data-icon":"sliders"}).appendTo(this.elementIndex.$toolbar),this.$container=$("",{id:this.id,class:"menu menu--disclosure element-index-view-menu","data-align":"right"}).appendTo(Garnish.$bod),this._buildMenu(),this.addListener(this.$container,"mousedown",(function(t){t.stopPropagation()})),this.menu=new Garnish.DisclosureMenu(this.$trigger),this.menu.on("show",(function(){i.$trigger.addClass("active")})),this.menu.on("hide",(function(){i.$trigger.removeClass("active"),setTimeout((function(){i.tidyTableColumnField()}),Garnish.FX_DURATION)}))},showTrigger:function(){this.$trigger.removeClass("hidden")},hideTrigger:function(){this.$trigger.data("trigger").hide(),this.$trigger.addClass("hidden"),this.menu.hide()},updateSortField:function(){this.$sortField&&("structure"===this.elementIndex.viewMode?(this.$sortField.addClass("hidden"),this.$tableColumnsField.addClass("first-child")):(this.$sortField.removeClass("hidden"),this.$tableColumnsField.removeClass("first-child")));var t=s(this.elementIndex.getSortAttributeAndDirection(),2),e=t[0],i=t[1],n=this.$sortAttributeSelect.children('option[value="score"]');this.elementIndex.searching?n.length||this.$sortAttributeSelect.prepend($("",{value:"score",text:Craft.t("app","Score")})):n.length&&n.remove(),this.$sortAttributeSelect.val(e),this.sortDirectionListbox.select("asc"===i?0:1),"score"===e?(this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled")):(this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled"))},updateTableColumnField:function(){var t,e,i=this,s=this.elementIndex.getSelectedTableColumns();s.forEach((function(s){var n=i.$tableColumnsContainer.find('input[value="'.concat(s,'"]'));n.prop("checked")||n.prop("checked",!0);var a=n.parent();t&&a.index()').appendTo(this.$container);this.$sortField=this._createSortField().appendTo(e),this.$tableColumnsField=this._createTableColumnsField().appendTo(e),this.updateSortField(),this.$sortAttributeSelect.focus();var i=$("",{class:"flex menu-footer"}).appendTo(this.$container);this.$revertContainer=$("",{class:"flex-grow"}).appendTo(i),(this.elementIndex.getSelectedSourceState("order")||this.elementIndex.getSelectedSourceState("sort")||this.elementIndex.getSelectedSourceState("tableColumns"))&&this._createRevertBtn(),this.$closeBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Close")}).appendTo(i).on("click",(function(){t.menu.hide()}))},_createSortField:function(){var t=this,e=$(''),i=Craft.ui.createSelect({options:this.elementIndex.getSortOptions(this.$source).map((function(t){return{label:Craft.escapeHtml(t.label),value:t.attr}}))}).addClass("fullwidth").appendTo($('').appendTo(e));this.$sortAttributeSelect=i.children("select").attr({"aria-label":Craft.t("app","Sort attribute")}),this.$sortDirectionPicker=$("",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(e),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(e){e.data("dir")!==t.elementIndex.getSelectedSortDirection()&&(t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),e.data("dir")),t.elementIndex.sortByScore||t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn())}}),this.$sortAttributeSelect.on("change",(function(){t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),null,!1),t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn()}));var s=Craft.ui.createField(e,{label:Craft.t("app","Sort by"),fieldset:!0});return s.addClass("sort-field"),s},_getTableColumnCheckboxes:function(){return this.$tableColumnsContainer.find('input[type="checkbox"]')},_createTableColumnsField:function(){var t=this,e=this.elementIndex.getTableColumnOptions(this.$source);if(!e.length)return $();this.$tableColumnsContainer=$(""),e.forEach((function(e){$('').append('').append(Craft.ui.createCheckbox({label:Craft.escapeHtml(e.label),value:e.attr})).appendTo(t.$tableColumnsContainer)})),this.updateTableColumnField(),this.tidyTableColumnField(),new Garnish.DragSort(this.$tableColumnsContainer.children(),{handle:".move",axis:"y",onSortChange:function(){t._onTableColumnChange()}}),this._getTableColumnCheckboxes().on("change",(function(e){t._onTableColumnChange()}));var i=Craft.ui.createField(this.$tableColumnsContainer,{label:Craft.t("app","Table Columns"),fieldset:!0});return i.addClass("table-columns-field"),i},_onTableColumnChange:function(){for(var t=[],e=this._getTableColumnCheckboxes().filter(":checked"),i=0;i",{type:"button",class:"light",text:Craft.t("app","Use defaults")}).appendTo(this.$revertContainer).on("click",(function(){t.revert()})))},destroy:function(){this.menu.destroy(),delete this.menu,this.base()}}),h=Garnish.HUD.extend({elementIndex:null,sourceKey:null,siteId:null,id:null,loading:!0,conditionConfig:null,serialized:null,$clearBtn:null,cleared:!1,get isActive(){return this.showing||this.conditionConfig||this.serialized},init:function(t,e,i,s){var n=this;this.elementIndex=t,this.sourceKey=e,this.siteId=i,this.id="filter-".concat(Math.floor(1e9*Math.random())),s&&(s.conditionConfig?(this.conditionConfig=s.conditionConfig,delete s.conditionConfig):s.serialized&&(this.serialized=s.serialized,delete s.serialized));var a=$("").append($("",{class:"spinner"})).append($("",{text:Craft.t("app","Loading"),class:"visually-hidden","aria-role":"alert"}));this.base(this.elementIndex.$filterBtn,a,Object.assign({hudClass:"hud element-filter-hud loading"},s)),this.$hud.attr({id:this.id,"aria-live":"polite","aria-busy":"false"}),this.$tip.remove(),this.$tip=null,this.$body.on("submit",(function(t){t.preventDefault(),n.hide()})),Craft.sendActionRequest("POST","element-indexes/filter-hud",{data:{elementType:this.elementIndex.elementType,source:this.sourceKey,condition:this.elementIndex.settings.condition,conditionConfig:this.conditionConfig,serialized:this.serialized,id:"".concat(this.id,"-filters")}}).then((function(t){n.loading=!1,n.$hud.removeClass("loading"),a.remove(),n.$main.append(t.data.hudHtml),Craft.appendHeadHtml(t.data.headHtml),Craft.appendBodyHtml(t.data.bodyHtml);var e=$("",{class:"flex flex-nowrap"}).appendTo(n.$main);$("",{class:"flex-grow"}).appendTo(e),n.$clearBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(e),$("",{type:"submit",class:"btn secondary",text:Craft.t("app","Apply")}).appendTo(e),n.$clearBtn.on("click",(function(){n.clear()})),n.$hud.find(".condition-container").on("htmx:beforeRequest",(function(){n.setBusy()})),n.$hud.find(".condition-container").on("htmx:load",(function(){n.setReady(),n.updateSizeAndPosition(!0)})),n.setFocus(),n.conditionConfig&&(n.conditionConfig=null,n.serialized=n.serialize())})).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})),this.$hud.css("position","fixed"),this.addListener(Garnish.$win,"scroll,resize",(function(){n.updateSizeAndPosition(!0)}))},addListener:function(t,e,i,s){t===this.$main&&"resize"===e||this.base(t,e,i,s)},setBusy:function(){this.$hud.attr("aria-busy","true"),$("",{class:"visually-hidden",text:Craft.t("app","Loading")}).insertAfter(this.$main.find(".htmx-indicator"))},setReady:function(){this.$hud.attr("aria-busy","false")},setFocus:function(){Garnish.setFocusWithin(this.$main)},clear:function(){this.cleared=!0,this.hide()},updateSizeAndPositionInternal:function(){var t,e=this.elementIndex.$searchContainer[0].getBoundingClientRect(),i=Garnish.$win.height(),s=i-e.bottom;this.$body.height()>s&&(t=i-e.bottom-10),this.$hud.css({width:this.elementIndex.$searchContainer.outerWidth()-2,top:e.top+this.elementIndex.$searchContainer.outerHeight(),left:e.left+1,height:t?"".concat(t,"px"):"unset",overflowY:t?"scroll":"unset"})},onShow:function(){this.base(),this.$clearBtn&&this.$clearBtn.text(Craft.t("app","Clear")),this.elementIndex.updateFilterBtn(),this.setFocus()},onHide:function(){this.base(),this.serialized!==(this.serialized=this.serialize())&&this.elementIndex.updateElements(),this.cleared?this.destroy():(this.$hud.detach(),this.$shade.detach()),this.elementIndex.updateFilterBtn(),this.elementIndex.$filterBtn.focus()},hasRules:function(){return 0!==this.$main.has(".condition-rule").length},serialize:function(){return!this.cleared&&this.hasRules()?this.$body.serialize():null},destroy:function(){this.base(),delete this.elementIndex.filterHuds[this.siteId][this.sourceKey]}})},8495:function(){Craft.BaseElementIndexView=Garnish.Base.extend({$container:null,$loadingMoreSpinner:null,$elementContainer:null,$scroller:null,elementIndex:null,elementSelect:null,loadingMore:!1,_totalVisible:null,_morePending:null,_handleEnableElements:null,_handleDisableElements:null,get thumbLoader(){return console.warn("Craft.BaseElementIndexView::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead."),Craft.cp.elementThumbLoader},init:function(t,e,i){var s=this;this.elementIndex=t,this.$container=$(e),this.setSettings(i,Craft.BaseElementIndexView.defaults),this.$loadingMoreSpinner=$('').insertAfter(this.$container),this.$elementContainer=this.getElementContainer();var n=this.$elementContainer.children();this.setTotalVisible(n.length),this.setMorePending(this.settings.batchSize&&n.length==this.settings.batchSize),Craft.cp.elementThumbLoader.load(n),this.settings.selectable&&(this.elementSelect=new Garnish.Select(this.$elementContainer,this.filterSelectableElements(n),{multi:this.settings.multiSelect,vertical:this.isVerticalList(),handle:"index"===this.settings.context?".checkbox, .element:first":null,filter:":not(a):not(.toggle)",checkboxMode:this.settings.checkboxMode,onSelectionChange:this.onSelectionChange.bind(this)}),this._handleEnableElements=function(t){s.elementSelect.addItems(s.filterSelectableElements($(t.elements)))},this._handleDisableElements=function(t){s.elementSelect.removeItems(t.elements)},this.elementIndex.on("enableElements",this._handleEnableElements),this.elementIndex.on("disableElements",this._handleDisableElements)),"index"===this.settings.context&&(this._handleElementEditing=function(t){var e=$(t.target);if("A"!==e.prop("nodeName")){var i;if(e.hasClass("element"))i=e;else if(!(i=e.closest(".element")).length)return;Garnish.hasAttr(i,"data-editable")&&Craft.createElementEditor(i.data("type"),i)}},this.elementIndex.trashed||this.addListener(this.$elementContainer,"dblclick,taphold",this._handleElementEditing)),this.afterInit(),this.settings.batchSize&&("index"===this.settings.context?this.$scroller=Garnish.$scrollContainer:this.$scroller=this.elementIndex.$main,this.$scroller.scrollTop(0),this.addListener(this.$scroller,"scroll","maybeLoadMore"),this.maybeLoadMore())},filterSelectableElements:function(t){var e=this;return $(t.toArray().filter((function(t){return e.canSelectElement($(t))})))},canSelectElement:function(t){return!t.hasClass("disabled")&&(this.settings.canSelectElement?this.settings.canSelectElement(t):!!t.data("id"))},getElementContainer:function(){throw"Classes that extend Craft.BaseElementIndexView must supply a getElementContainer() method."},afterInit:function(){},getAllElements:function(){return this.$elementContainer.children()},getEnabledElements:function(){return this.$elementContainer.children(":not(.disabled)")},getElementById:function(t){var e=this.$elementContainer.children('[data-id="'+t+'"]:first');return e.length?e:null},getSelectedElements:function(){if(!this.elementSelect)throw"This view is not selectable.";return this.elementSelect.$selectedItems},getSelectedElementIds:function(){var t;try{t=this.getSelectedElements()}catch(t){}var e=[];if(t)for(var i=0;i=this.$container.offset().top+this.$container.height():this.$scroller.prop("scrollHeight")-this.$scroller.scrollTop()<=this.$scroller.outerHeight()+15)},loadMore:function(){var t=this;this.getMorePending()&&!this.loadingMore&&this.settings.batchSize&&(this.loadingMore=!0,this.$loadingMoreSpinner.removeClass("hidden"),this.removeListener(this.$scroller,"scroll"),Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:this.getLoadMoreParams()}).then((function(e){t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden");var i=$(e.data.html);t.appendElements(i),Craft.appendHeadHtml(e.data.headHtml),Craft.appendBodyHtml(e.data.bodyHtml),t.elementSelect&&(t.elementSelect.addItems(t.filterSelectableElements(i)),t.elementIndex.updateActionTriggers()),t.setTotalVisible(t.getTotalVisible()+i.length),t.setMorePending(i.length==t.settings.batchSize),t.addListener(t.$scroller,"scroll","maybeLoadMore"),t.maybeLoadMore()})).catch((function(e){t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden")})))},getLoadMoreParams:function(){var t=$.extend(!0,{},this.settings.params);return t.criteria.offset=this.getTotalVisible(),t},appendElements:function(t){t.appendTo(this.$elementContainer),Craft.cp.elementThumbLoader.load(t),this.onAppendElements(t)},onAppendElements:function(t){this.settings.onAppendElements(t),this.trigger("appendElements",{newElements:t})},onSelectionChange:function(){var t=this;this.settings.onSelectionChange(),this.trigger("selectionChange"),this.settings.checkboxMode&&this.elementSelect.$items.each((function(e,i){t.elementSelect.isSelected(i)?t.getElementCheckbox(i).attr("aria-checked","true"):t.getElementCheckbox(i).attr("aria-checked","false")}))},disable:function(){this.elementSelect&&this.elementSelect.disable()},enable:function(){this.elementSelect&&this.elementSelect.enable()},destroy:function(){this.$loadingMoreSpinner.remove(),this.elementSelect&&(this.elementIndex.off("enableElements",this._handleEnableElements),this.elementIndex.off("disableElements",this._handleDisableElements),this.elementSelect.destroy(),delete this.elementSelect),this.base()}},{defaults:{context:"index",batchSize:null,params:null,selectable:!1,multiSelect:!1,canSelectElement:null,checkboxMode:!1,loadMoreElementsAction:"element-indexes/get-more-elements",onAppendElements:$.noop,onSelectionChange:$.noop}})},5970:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);ie&&(t=t.slice(0,e))}this.selectElements(t),this.updateDisabledElementsInModal()}},onModalHide:function(){var t=this;this.modal&&this.settings.condition&&this.settings.referenceElementId&&(this.modal.destroy(),this.modal=null),this.canAddMoreElements()||setTimeout((function(){t.focusNextLogicalElement()}),200)},selectElements:function(t){for(var e=0;e",{type:"hidden",name:this.settings.name+(this.settings.single?"":"[]"),value:t.id})).prepend($("",{type:"button",class:"delete icon",title:Craft.t("app","Remove"),"aria-label":i})),e},appendElement:function(t){t.appendTo(this.$elementsContainer)},animateElementIntoPlace:function(t,e){var i=t.offset(),s=e.offset(),n=e.clone().appendTo(Garnish.$bod);e.css("visibility","hidden"),n.css({position:"absolute",zIndex:1e4,top:i.top,left:i.left});var a={top:s.top,left:s.left};n.velocity(a,Craft.BaseElementSelectInput.ADD_FX_DURATION,(function(){n.remove(),e.css("visibility","visible")}))},updateDisabledElementsInModal:function(){this.modal.elementIndex&&this.modal.elementIndex.disableElementsById(this.getDisabledElementIds())},getElementById:function(t){for(var e=0;e",{class:"modal elementselectormodal","aria-labelledby":i}).appendTo(Garnish.$bod),n=$("",{class:this.settings.showTitle?"header":"visually-hidden"}).appendTo(s);$("",{id:i,text:this.settings.modalTitle}).appendTo(n);var a=$("",{class:"body"}).append($("",{class:"spinner big"})).appendTo(s);this.$footer=$("",{class:"footer"}).appendTo(s),this.settings.fullscreen&&(s.addClass("fullscreen"),this.settings.minGutter=0),this.base(s,this.settings),this.$secondaryButtons=$('').appendTo(this.$footer),this.$primaryButtons=$('').appendTo(this.$footer),this.$cancelBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$primaryButtons),this.$selectBtn=Craft.ui.createSubmitButton({class:"disabled",label:this.settings.selectBtnLabel,spinner:!0}).attr("aria-disabled","true").appendTo(this.$primaryButtons),this.$body=a,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},updateModalBottomPadding:function(){var t=this.$footer.outerHeight();t!==parseInt(this.$container.css("padding-bottom"))&&this.$container.css("padding-bottom",t)},updateSidebarView:function(){this.supportSidebarToggleView&&(this.sidebarShouldBeHidden()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView())},sidebarShouldBeHidden:function(){return this.$container.outerWidth()<550},resetView:function(){this.$mainHeader&&this.$mainHeader.remove(),this.$sidebarHeader&&this.$sidebarHeader.remove(),this.$sidebarToggleBtn=null,this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden")},buildSidebarToggleView:function(){var t=this;!this.$sidebarToggleBtn&&this.sidebarShouldBeHidden()&&(this.$sidebarHeader=$('').prependTo(this.$sidebar),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sidebarHeader),this.$mainHeader=$('').prependTo(this.$main),this.$mainHeading=$(''.concat(this.getActiveSourceName(),"")).appendTo(this.$mainHeader),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$mainHeader),this.$sidebar.attr("id","modal-sidebar"),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar()})))},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar();var e=Garnish.getFocusedElement();$.contains(t.$sidebar.get(0),e.get(0))&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$sidebarToggleBtn&&(this.sidebarIsOpen()&&(Garnish.uiLayerManager.removeLayer(),this.$sidebar.addClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","false")),this.$body.removeClass("has-sidebar"),this.$content.removeClass("has-sidebar"))},getActiveSourceName:function(){return this.$sidebar.find(".sel").text()},onFadeIn:function(){this.elementIndex?(this.updateModalBottomPadding(),Garnish.isMobileBrowser(!0)||this.elementIndex.$search.trigger("focus")):this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},onSelectSource:function(){this.updateHeading(),this.updateModalBottomPadding()},updateHeading:function(){this.$mainHeading&&this.$mainHeading.text(this.getActiveSourceName())},updateSelectBtnState:function(){this.$selectBtn&&(this.hasSelection()?this.enableSelectBtn():this.disableSelectBtn())},hasSelection:function(){return this.elementIndex&&this.elementIndex.getSelectedElements().length},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled").attr("aria-disabled","false")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled").attr("aria-disabled","true")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$selectBtn.addClass("loading")},hideFooterSpinner:function(){this.$selectBtn.removeClass("loading")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.hasSelection()){this.elementIndex.view&&this.elementIndex.view.elementSelect&&this.elementIndex.view.elementSelect.clearMouseUpTimeout();var t=this.elementIndex.getSelectedElements(),e=this.getElementInfo(t);this.onSelect(e),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(t){for(var e=[],i=0;i=e);return t.toFixed(1)+" "+["kB","MB","GB","TB","PB","EB","ZB","YB"][i]},_createExtensionList:function(){this._extensionList=[];for(var t=0;tt.length)&&(e=t.length);for(var i=0,s=new Array(e);i');var a="new-category-menu-"+Craft.randomString(10);if(n){var r="index"===e.settings.context?Craft.t("app","New category"):Craft.t("app","New {group} category",{group:n.name}),o="index"===e.settings.context?Craft.t("app","New category in the {group} category group",{group:n.name}):r,l="index"===e.settings.context?"link":null;e.$newCategoryBtn=Craft.ui.createButton({label:r,ariaLabel:o,spinner:!0,role:l}).addClass("submit add icon").appendTo(e.$newCategoryBtnGroup),e.addListener(e.$newCategoryBtn,"click mousedown",(function(t){"index"===e.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)?window.open(Craft.getUrl("categories/".concat(n.handle,"/new"))):"click"===t.type&&e._createCategory(n.id)})),e.editableGroups.length>1&&(s=$("",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":a,"data-disclosure-trigger":"","aria-label":Craft.t("app","New category, choose a category group")}).appendTo(e.$newCategoryBtnGroup))}else e.$newCategoryBtn=s=Craft.ui.createButton({label:Craft.t("app","New category"),ariaLabel:Craft.t("app","New category, choose a category group"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",a).attr("data-disclosure-trigger","").appendTo(e.$newCategoryBtnGroup);if(e.addButton(e.$newCategoryBtnGroup),s){var h,d=$("",{id:a,class:"menu menu--disclosure"}).appendTo(e.$newCategoryBtnGroup),c=$("").appendTo(d),u=function(e,i){var s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!s){if(Array.isArray(e)||(s=function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){s&&(e=s);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(e)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}(e.editableGroups);try{var p=function(){var t=h.value,i="index"===e.settings.context?"link":"button";if("index"===e.settings.context||t!==n){var a=$("").appendTo(c),r=$("",{role:"button"===i?"button":null,href:"#",type:"button"===i?"button":null,text:Craft.t("app","New {group} category",{group:t.name})}).appendTo(a);e.addListener(r,"click",(function(){s.data("trigger").hide(),e._createCategory(t.id)})),"button"===i&&e.addListener(r,"keydown",(function(i){i.keyCode===Garnish.SPACE_KEY&&(i.preventDefault(),s.data("trigger").hide(),e._createCategory(t.id))}))}};for(u.s();!(h=u.n()).done;)p()}catch(t){u.e(t)}finally{u.f()}new Garnish.DisclosureMenu(s)}}(),"index"===this.settings.context){var s="categories";i&&(s+="/"+i),Craft.setPath(s)}}},_createCategory:function(t){var e=this;if(this.$newCategoryBtn.hasClass("loading"))console.warn("New category creation already in progress.");else{var i=this.editableGroups.find((function(e){return e.id===t}));if(!i)throw"Invalid category group ID: ".concat(t);this.$newCategoryBtn.addClass("loading"),Craft.sendActionRequest("POST","elements/create",{data:{elementType:this.elementType,siteId:this.siteId,groupId:t}}).then((function(t){"index"===e.settings.context?document.location.href=Craft.getUrl(t.data.cpEditUrl,{fresh:1}):Craft.createElementEditor(e.elementType,{siteId:e.siteId,elementId:t.data.element.id,draftId:t.data.element.draftId,params:{fresh:1}}).on("submit",(function(){var s="group:".concat(i.uid);e.sourceKey!==s&&e.selectSourceByKey(s),e.clearSearch(),e.selectElementAfterUpdate(t.data.element.id),e.updateElements()}))})).finally((function(){e.$newCategoryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Category",Craft.CategoryIndex)},6617:function(){Craft.CategorySelectInput=Craft.BaseElementSelectInput.extend({setSettings:function(){this.base.apply(this,arguments),this.settings.sortable=!1},getModalSettings:function(){var t=this.base();return t.hideOnSelect=!1,t},getElements:function(){return this.$elementsContainer.find(".element")},onModalSelect:function(t){var e=this;this.modal.disable(),this.modal.disableCancelBtn(),this.modal.disableSelectBtn(),this.modal.showFooterSpinner();for(var i=this.getSelectedElementIds(),s=0;s ').appendTo(this.$container),this.hide()},setContent:function(t){this.$tip.html(t)},setPosition:function(t){this.$tip.css("left","".concat(t.left,"px")),this.$tip.css("top","".concat(t.top,"px"))},show:function(){this.$tip.css("display","block")},hide:function(){this.$tip.css("display","none")}}),Craft.charts.BaseChart=Garnish.Base.extend({$container:null,$chart:null,chartBaseClass:"cp-chart",dataTable:null,formatLocale:null,timeFormatLocale:null,orientation:null,svg:null,width:null,height:null,init:function(t,e){var i=this;this.$container=t,this.setSettings(Craft.charts.BaseChart.defaults),this.setSettings(e);var s={formats:window.d3Formats,formatLocaleDefinition:window.d3FormatLocaleDefinition,timeFormatLocaleDefinition:window.d3TimeFormatLocaleDefinition};this.setSettings(s),d3.select(window).on("resize",(function(){i.resize()}))},setSettings:function(t,e){var i=void 0===this.settings?{}:this.settings;this.settings=$.extend(!0,{},i,e,t)},draw:function(t,e){this.setSettings(e),this.dataTable=t,this.formatLocale=d3.formatLocale(this.settings.formatLocaleDefinition),this.timeFormatLocale=d3.timeFormatLocale(this.settings.timeFormatLocaleDefinition),this.orientation=this.settings.orientation,this.$chart&&this.$chart.remove();var i=this.chartBaseClass;this.settings.chartClass&&(i+=" "+this.settings.chartClass),this.$chart=$('')).appendTo(this.$container)},resize:function(){this.draw(this.dataTable,this.settings)},onAfterDrawTicks:function(){$(".tick",this.$chart).each((function(t,e){var i=$("text",e);i.clone().appendTo(e),i.attr("stroke","#ffffff"),i.attr("stroke-width",3)}))}},{defaults:{formatLocaleDefinition:null,timeFormatLocaleDefinition:null,formats:{numberFormat:",.2f",percentFormat:",.2%",currencyFormat:"$,.2f",shortDateFormats:{day:"%-m/%-d",month:"%-m/%y",year:"%Y"}},margin:{top:0,right:0,bottom:0,left:0},chartClass:null,colors:["#0594D1","#DE3800","#FF9A00","#009802","#9B009B"]}}),Craft.charts.Area=Craft.charts.BaseChart.extend({tip:null,drawingArea:null,init:function(t,e){this.base(t,Craft.charts.Area.defaults),this.setSettings(e)},draw:function(t,e){this.base(t,e),this.tip&&(this.tip=null);var i=this.getChartMargin();this.width=this.$chart.width()-i.left-i.right,this.height=this.$chart.height()-i.top-i.bottom;var s={width:this.width+(i.left+i.right),height:this.height+(i.top+i.bottom),translateX:"rtl"!==this.orientation?i.left:i.right,translateY:i.top};this.svg=d3.select(this.$chart.get(0)).append("svg").attr("width",s.width).attr("height",s.height),this.drawingArea=this.svg.append("g").attr("transform","translate(".concat(s.translateX,",").concat(s.translateY,")")),this.drawTicks(),this.drawAxes(),this.drawChart(),this.drawTipTriggers()},drawTicks:function(){var t=this.getX(!0),e=d3.axisBottom(t).tickFormat(this.getXFormatter()).ticks(3);this.drawingArea.append("g").attr("class","x ticks-axis").attr("transform","translate(0, ".concat(this.height,")")).call(e);var i,s=this.getY();"rtl"!==this.orientation?(i=d3.axisLeft(s).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").call(i)):(i=d3.axisRight(s).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").attr("transform","translate(".concat(this.width,",0)")).call(i)),this.onAfterDrawTicks()},drawAxes:function(){if(this.settings.xAxis.showAxis){var t=this.getX(),e=d3.axisBottom(t).ticks(0).tickSizeOuter(0);this.drawingArea.append("g").attr("class","x axis").attr("transform","translate(0, ".concat(this.height,")")).call(e)}if(this.settings.yAxis.showAxis){var i,s=this.getY();"rtl"===this.orientation?(i=d3.axisLeft(s).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(this.width-0,", 0)")).call(i)):(i=d3.axisRight(s).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(0,", 0)")).call(i))}},drawChart:function(){var t=this.getX(!0),e=this.getY();if(this.settings.xAxis.gridlines){var i=d3.axisBottom(t);this.drawingArea.append("g").attr("class","x grid-line").attr("transform","translate(0,".concat(this.height,")")).call(i.tickSize(-this.height,0,0).tickFormat(""))}if(this.settings.yAxis.gridlines){var s=d3.axisLeft(e);this.drawingArea.append("g").attr("class","y grid-line").attr("transform","translate(0 , 0)").call(s.tickSize(-this.width,0).tickFormat("").tickValues(this.getYTickValues()).ticks(2))}var n=d3.line().x((function(e){return t(e[0])})).y((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-line").append("path").datum(this.dataTable.rows).style("fill","none").style("stroke",this.settings.colors[0]).style("stroke-width","3px").attr("d",n);var a=d3.area().x((function(e){return t(e[0])})).y0(this.height).y1((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-area").append("path").datum(this.dataTable.rows).style("fill",this.settings.colors[0]).style("fill-opacity","0.3").attr("d",a),this.settings.plots&&this.drawingArea.append("g").attr("class","plots").selectAll("circle").data(this.dataTable.rows).enter().append("circle").style("fill",this.settings.colors[0]).attr("class",(function(t,e){return"plot plot-".concat(e)})).attr("r",4).attr("cx",(function(e){return t(e[0])})).attr("cy",(function(t){return e(t[1])}))},drawTipTriggers:function(){var t=this;if(this.settings.tips){this.tip||(this.tip=new Craft.charts.Tip(this.$chart));var e=this.getChartMargin(),i=(this.drawingArea.select(".x path.domain").node().getTotalLength()-e.left-e.right-12)/(this.dataTable.rows.length-1),s=Math.max(0,i),n=this.getX(!0),a=this.getY();this.drawingArea.append("g").attr("class","tip-triggers").selectAll("rect").data(this.dataTable.rows).enter().append("rect").attr("class","tip-trigger").style("fill","transparent").style("fill-opacity","1").attr("width",s).attr("height",this.height).attr("x",(function(t){return n(t[0])-s/2})).on("mouseover",(function(e,i){t.drawingArea.select(".plot-"+i).attr("r",5);var s=$(""),r=$('').appendTo(s),o=$('').appendTo(s);r.html(t.getXFormatter()(e[0])),o.html(t.getYFormatter()(e[1]));var l=s.get(0);t.tip.setContent(l);var h,d=t.getChartMargin(),c=24,u=a(e[1])+c;"rtl"!==t.orientation?(h=n(e[0])+d.left+c,t.$chart.offset().left+h+t.tip.$tip.width()>t.$chart.offset().left+t.$chart.width()-c&&(h=n(e[0])-(t.tip.$tip.width()+c))):h=n(e[0])-(t.tip.$tip.width()+d.left+c),h<0&&(h=n(e[0])+d.left+c);var p={top:u,left:h};t.tip.setPosition(p),t.tip.show()})).on("mouseout",(function(e,i){t.drawingArea.select(".plot-"+i).attr("r",4),t.tip.hide()}))}},getChartMargin:function(){var t=this,e=this.settings.margin,i=this.getYTickValues(),s=0;return $.each(i,(function(e,i){var n=8*t.getYFormatter()(i).length;n>s&&(s=n)})),s+=10,e.left=s,e},getX:function(t){var e=d3.min(this.dataTable.rows,(function(t){return t[0]})),i=d3.max(this.dataTable.rows,(function(t){return t[0]})),s=[e,i];"rtl"===this.orientation&&(s=[i,e]);var n=0,a=0;t&&(n=0,a=0);var r=d3.scaleTime().range([n,this.width-a]);return r.domain(s),r},getY:function(){var t=[0,this.getYMaxValue()],e=d3.scaleLinear().range([this.height,0]);return e.domain(t),e},getXFormatter:function(){return this.settings.xAxis.formatter!==$.noop?this.settings.xAxis.formatter(this):Craft.charts.utils.getTimeFormatter(this.timeFormatLocale,this.settings)},getYFormatter:function(){return this.settings.yAxis.formatter!==$.noop?this.settings.yAxis.formatter(this):Craft.charts.utils.getNumberFormatter(this.formatLocale,this.dataTable.columns[1].type,this.settings)},getYMaxValue:function(){return d3.max(this.dataTable.rows,(function(t){return t[1]}))},getYTickValues:function(){var t=this.getYMaxValue();return t>1?[t/2,t]:[0,t]}},{defaults:{chartClass:"area",margin:{top:25,right:5,bottom:25,left:0},plots:!0,tips:!0,xAxis:{gridlines:!1,showAxis:!0,formatter:$.noop},yAxis:{gridlines:!0,showAxis:!1,formatter:$.noop}}}),Craft.charts.utils={getDuration:function(t){var e=parseInt(t,10),i={hours:Math.floor(e/3600),minutes:Math.floor((e-3600*i.hours)/60),seconds:e-3600*i.hours-60*i.minutes};return i.hours<10&&(i.hours="0".concat(i.hours)),i.minutes<10&&(i.minutes="0".concat(i.minutes)),i.seconds<10&&(i.seconds="0".concat(i.seconds)),"".concat(i.hours,":").concat(i.minutes,":").concat(i.seconds)},getTimeFormatter:function(t,e){switch(e.dataScale){case"year":return t.format("%Y");case"month":return t.format(e.formats.shortDateFormats.month);case"hour":return t.format("".concat(e.formats.shortDateFormats.day," %H:00:00"));default:return t.format(e.formats.shortDateFormats.day)}},getNumberFormatter:function(t,e,i){switch(e){case"currency":return t.format(i.formats.currencyFormat);case"percent":return t.format(i.formats.percentFormat);case"time":return Craft.charts.utils.getDuration;case"number":return t.format(i.formats.numberFormat)}}}},3352:function(){Craft.ColorInput=Garnish.Base.extend({$container:null,$input:null,$colorContainer:null,$colorPreview:null,$colorInput:null,init:function(t){this.$container=$(t),this.$input=this.$container.find(".color-input"),this.$colorContainer=this.$container.children(".color"),this.$colorPreview=this.$colorContainer.children(".color-preview"),this.createColorInput(),this.handleTextChange(),this.addListener(this.$input,"input","handleTextChange")},createColorInput:function(){var t=document.createElement("input");t.setAttribute("type","color"),"color"===t.type&&(this.$colorContainer.removeClass("static"),this.$colorInput=$(t).addClass("color-preview-input").attr({"aria-controls":this.$input.attr("id"),"aria-label":Craft.t("app","Color picker")}).appendTo(this.$colorPreview),this.addListener(this.$colorInput,"click",(function(t){t.stopPropagation()})),this.addListener(this.$colorContainer,"click",(function(){this.$colorInput.trigger("click")})),this.addListener(this.$colorInput,"input","updateColor"))},updateColor:function(){this.$input.val(this.$colorInput.val()),this.handleTextChange()},handleTextChange:function(){var t=this.$input.val();t!==(t=Craft.trim(t))&&this.$input.val(t),t.length&&"#"===t[0]&&(t=t.substring(1),this.$input.val(t)),t.length?(3===t.length&&(t=t[0].repeat(2)+t[1].repeat(2)+t[2].repeat(2)),t.match(/^[0-9a-f]{6}$/i)?(this.$colorPreview.css("background-color","#".concat(t)),this.$colorInput&&this.$colorInput.val("#".concat(t))):this.$colorPreview.css("background-color","")):this.$colorPreview.css("background-color","")}},{_browserSupportsColorInputs:null,doesBrowserSupportColorInputs:function(){return Craft.ColorInput._browserSupportsColorInputs,Craft.ColorInput._browserSupportsColorInputs}})},8167:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{class:"pane-header"}),this.$toolbar=$("",{class:"so-toolbar"}).appendTo(this.$header),this.$tabContainer=$("",{class:"pane-tabs"}).appendTo(this.$toolbar),this.$loadSpinner=$("",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).appendTo(this.$toolbar),this.$editLink=$("",{target:"_blank",class:"btn header-btn hidden",title:Craft.t("app","Open the full edit page in a new tab"),"aria-label":Craft.t("app","Open the full edit page in a new tab"),"data-icon":"external"}).appendTo(this.$toolbar),this.$sidebarBtn=$("",{type:"button",class:"btn header-btn hidden sidebar-btn",title:Craft.t("app","Show sidebar"),"aria-label":Craft.t("app","Show sidebar"),"data-icon":"sidebar-".concat(Garnish.ltr?"right":"left"),"aria-expanded":"false"}).appendTo(this.$toolbar),this.addListener(this.$sidebarBtn,"click",(function(t){t.preventDefault(),i.showingSidebar?i.hideSidebar():i.showSidebar()})),this.$body=$("",{class:"so-body"}),this.$content=$("",{class:"so-content"}).appendTo(this.$body),this.$sidebar=$("",{class:"so-sidebar details hidden"}).appendTo(this.$body),this.$footer=$("",{class:"so-footer hidden"}),this.$noticeContainer=$("",{class:"so-notice"}).appendTo(this.$footer),$("",{class:"flex-grow"}).appendTo(this.$footer);var s=$("",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$cancelBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(s),this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(s);var n=this.$header.add(this.$body).add(this.$footer);this.base(n,{containerElement:"form",containerAttributes:{id:"cp-screen-".concat(Math.floor(1e8*Math.random())),action:"",method:"post",novalidate:"",class:"cp-screen"},closeOnEsc:!1,closeOnShadeClick:!1}),this.$container.data("cpScreen",this),this.on("beforeClose",(function(){i.hideSidebar()})),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},(function(t){i.handleSubmit(t)})),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){i.closeMeMaybe()})),this.addListener(this.$cancelBtn,"click",(function(){i.closeMeMaybe()})),this.addListener(this.$shade,"click",(function(){i.closeMeMaybe()})),this.addListener(this.$container,"click",(function(t){var e=$(event.target);!i.showingSidebar||e.closest(i.$sidebarBtn).length||e.closest(i.$sidebar).length||i.hideSidebar()})),this.addListener(this.$container,"submit","handleSubmit"),this.load()},load:function(t,e){var i=this;return new Promise((function(t,s){i.trigger("beforeLoad"),i.showLoadSpinner(),i.cancelToken&&(i.ignoreFailedRequest=!0,i.cancelToken.cancel()),i.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",i.action,$.extend({params:Object.assign({},i.getParams(),i.settings.params),cancelToken:i.cancelToken.token,headers:{"X-Craft-Container-Id":i.$container.attr("id")}},i.settings.requestOptions)).then((function(n){i.update(n.data).then((function(){!1!==e&&(i.$container.data("delta-names",n.data.deltaNames),i.$container.data("initial-delta-values",n.data.initialDeltaValues),i.$container.data("initialSerializedValue",i.$container.serialize())),t()})).catch((function(t){s(t)}))})).catch((function(t){i.ignoreFailedRequest||(Craft.cp.displayError(),s(t)),i.ignoreFailedRequest=!1})).finally((function(){i.hideLoadSpinner(),i.cancelToken=null}))}))},getParams:function(){return{}},updateHeaderVisibility:function(){var t=this.settings.showHeader||this.hasTabs||this.hasCpLink||this.showingLoadSpinner;t||this.hasSidebar?this.$header.removeClass("hidden"):this.$header.addClass("hidden"),t?this.$header.addClass("so-visible"):this.$header.removeClass("so-visible")},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0,this.updateHeaderVisibility()},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1,this.updateHeaderVisibility()},update:function(t){var e=this;return new Promise((function(i){e.namespace=t.namespace,t.bodyClass&&e.$body.addClass(t.bodyClass),e.$content.html(t.content),t.submitButtonLabel&&e.$saveBtn.text(t.submitButtonLabel),e.updateTabs(t.tabs),t.formAttributes&&Craft.setElementAttributes(e.$container,t.formAttributes),t.editUrl?(e.$editLink.removeClass("hidden").attr("href",t.editUrl),e.hasCpLink=!0):(e.$editLink.addClass("hidden"),e.hasCpLink=!1),t.sidebar?(e.$container.addClass("has-sidebar"),e.$sidebarBtn.removeClass("hidden"),e.$sidebar.html(t.sidebar),e.$sidebar.find("a").each((function(){this.hostname.length&&void 0===$(this).attr("target")&&$(this).attr("target","_blank")})),e.hasSidebar=!0):(e.$container.removeClass("has-sidebar"),e.$sidebarBtn.addClass("hidden"),e.$sidebar.addClass("hidden").html(""),e.hasSidebar=!1),t.notice?e.$noticeContainer.html(t.notice):e.$noticeContainer.empty(),e.updateHeaderVisibility(),e.$footer.removeClass("hidden"),Garnish.requestAnimationFrame((function(){Craft.appendHeadHtml(t.headHtml),Craft.appendBodyHtml(t.bodyHtml),Craft.initUiElements(e.$content),Craft.cp.elementThumbLoader.load($(e.$content)),t.sidebar&&(Craft.initUiElements(e.$sidebar),Craft.cp.elementThumbLoader.load(e.$sidebar)),Garnish.isMobileBrowser()||Craft.setFocusWithin(e.$content),i(),e.trigger("load")}))}))},updateTabs:function(t){var e=this;if(this.tabManager&&(this.tabManager.destroy(),this.tabManager=null,this.$tabContainer.html("")),this.hasTabs=!!t,this.hasTabs){var i=$(t);this.$tabContainer.replaceWith(i),this.$tabContainer=i,this.tabManager=new Craft.Tabs(this.$tabContainer),this.tabManager.on("deselectTab",(function(t){$(t.$tab.attr("href")).addClass("hidden")})),this.tabManager.on("selectTab",(function(t){$(t.$tab.attr("href")).removeClass("hidden"),Garnish.$win.trigger("resize"),e.$body.trigger("scroll")}))}},showSidebar:function(){var t=this;this.showingSidebar||(this.$body.scrollTop(0).addClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).removeClass("hidden"),this.$sidebar[0].offsetWidth,this.$sidebar.css(this._openedSidebarStyles()),Garnish.isMobileBrowser()||this.$sidebar.one("transitionend.so",(function(){Craft.setFocusWithin(t.$sidebar)})),Craft.trapFocusWithin(this.$sidebar),this.$sidebarBtn.addClass("active").attr({"aria-expanded":"true"}),Garnish.$win.trigger("resize"),this.$sidebar.trigger("scroll"),Garnish.uiLayerManager.addLayer(),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.hideSidebar()})),this.showingSidebar=!0)},hideSidebar:function(){var t=this;this.showingSidebar&&(this.$body.removeClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).one("transitionend.so",(function(){t.$sidebar.addClass("hidden"),t.$sidebarBtn.focus()})),this.$sidebarBtn.removeClass("active").attr({"aria-expanded":"false"}),Garnish.uiLayerManager.removeLayer(),this.showingSidebar=!1)},_openedSidebarStyles:function(){return e({},Garnish.ltr?"right":"left","0")},_closedSidebarStyles:function(){return e({},Garnish.ltr?"right":"left","-350px")},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){t.preventDefault(),this.submit()},submit:function(){var t=this;this.showSubmitSpinner();var e=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),this.$container.data("delta-names"),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:e,headers:{"X-Craft-Namespace":this.namespace}}).then((function(e){t.handleSubmitResponse(e)})).catch((function(e){t.handleSubmitError(e)})).finally((function(){t.hideSubmitSpinner()}))},handleSubmitResponse:function(t){this.clearErrors();var e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),this.trigger("submit",{response:t,data:e.modelName&&e[e.modelName]||{}}),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;var e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors)},showErrors:function(e){var i=this;this.clearErrors(),Object.entries(e).forEach((function(e){var s,n,a=(n=2,function(t){if(Array.isArray(t))return t}(s=e)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(s,n)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(s,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[0],o=a[1],l=i.$container.find('[data-attribute="'.concat(r,'"]'));l&&(Craft.ui.addErrorsToField(l,o),i.fieldsWithErrors.push(l))}))},clearErrors:function(){this.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)}))},isDirty:function(){return void 0!==this.$container.data("initialSerializedValue")&&this.$container.serialize()!==this.$container.data("initialSerializedValue")},closeMeMaybe:function(){this.isOpen&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.base(),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel())}},{defaults:{params:{},requestOptions:{},showHeader:null,closeOnSubmit:!0}})},587:function(){function t(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=s(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){throw t})),f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){l=!0,r=t})),f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function i(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||s(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){if(t){if("string"==typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(t,e):void 0}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i\x20\t\r\n\f]*)[^>]*)\/>/gi;if(jQuery.htmlPrefilter=function(t){return t.replace(r,"<$1>$2>")},$.extend(Craft,{navHeight:48,index:function(t,e){if(!$.isArray(t))throw"The first argument passed to Craft.index() must be an array.";return t.reduce((function(t,i,s){return t["string"==typeof e?i[e]:e(i,s)]=i,t}),{})},group:function(t,e){if(!$.isArray(t))throw"The first argument passed to Craft.group() must be an array.";var i={};return t.reduce((function(t,s,n){var a="string"==typeof e?s[e]:e(s,n);return i.hasOwnProperty(a)||(i[a]=[[],a],t.push(i[a])),i[a][0].push(s),t}),[])},t:function(t,e,i){return void 0!==Craft.translations[t]&&void 0!==Craft.translations[t][e]&&(e=Craft.translations[t][e]),i?this.formatMessage(e,i):e},formatMessage:function(t,e){var i;if(!1===(i=this._tokenizePattern(t)))throw"Message pattern is invalid.";for(var s=0;so?(n++,s=o):(n--,s=l),0===n&&(r.push(a.slice(e+1,s).join("").split(",",3)),e=s+1,r.push(a.slice(e,o).join("")),e=o),0!==n&&(!1===o||!1===l))break}return 0===n&&r},_parseToken:function(t,e){var s=this,n=Craft.trim(t[0]);if(void 0===e[n])return"{".concat(t.join(","),"}");var r=e[n],o=void 0!==t[1]?Craft.trim(t[1]):"none";switch(o){case"number":return function(){var e=void 0!==t[2]?Craft.trim(t[2]):null;if(null!==e&&"integer"!==e)throw"Message format 'number' is only supported for integer values.";var i,s=Craft.formatNumber(r);return null===e&&-1!==(i="".concat(r).indexOf("."))&&(s+=".".concat(r.substring(i+1))),s}();case"none":return r;case"select":return function(){if(void 0===t[2])return!1;for(var i=s._tokenizePattern(t[2]),n=i.length,a=!1,o=0;o+1").text(t).html()},escapeRegex:function(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},getText:function(t){return $("").html(t).text()},encodeUriComponent:function(t){t=encodeURIComponent(t);var e={"!":"%21","*":"%2A","'":"%27","(":"%28",")":"%29"};for(var i in e){var s=new RegExp("\\"+i,"g");t=t.replace(s,e[i])}return t},selectFullValue:function(t){var e=$(t),i=e.val();if(void 0!==e[0].setSelectionRange){var s=2*i.length;e[0].setSelectionRange(0,s)}else e.val(i)},formatInputId:function(t){return this.rtrim(t.replace(/[^\w\-]+/g,"-"),"-")},getUrl:function(t,e,i){"string"!=typeof t&&(t="");var s=null;if($.isPlainObject(e))void 0!==e["#"]&&(s=e["#"],delete e["#"]);else if("string"==typeof e){var n=e.indexOf("#");-1!==n&&(s=e.substring(n+1),e=e.substring(0,n)),e=Object.fromEntries(new URLSearchParams(e).entries())}else e={};var a=t.indexOf("#");-1!==a&&(s||(s=t.substring(a+1)),t=t.substring(0,a));var r,o=t.indexOf("?");if(-1!==o&&(e=$.extend(Object.fromEntries(new URLSearchParams(t.substring(o+1)).entries()),e),t=t.substring(0,o)),-1!==t.search("://")||"/"===t[0])return t+($.isEmptyObject(e)?"":"?".concat($.param(e)))+(s?"#".concat(s):"");if(t=Craft.trim(t,"/"),i){if(r=i,t&&Craft.pathParam){var l=r.match(new RegExp("[&?]"+Craft.escapeRegex(Craft.pathParam)+"=[^&]+"));l&&(r=r.replace(l[0],Craft.rtrim(l[0],"/")+"/"+t),t="")}}else r=Craft.baseUrl;return-1!==(o=r.indexOf("?"))&&(e=$.extend(Object.fromEntries(new URLSearchParams(r.substring(o+1)).entries()),e),r=r.substring(0,o)),!Craft.omitScriptNameInUrls&&t&&(Craft.usePathInfo||!Craft.pathParam?-1===r.search(Craft.scriptName)&&(r=Craft.rtrim(r,"/")+"/"+Craft.scriptName):(void 0!==e[Craft.pathParam]&&(t=Craft.rtrim(e[Craft.pathParam])+(t?"/"+t:"")),e[Craft.pathParam]=t,t=null)),t&&(r=Craft.rtrim(r,"/")+"/"+t),$.isEmptyObject(e)||(r+="?".concat($.param(e))),s&&(r+="#".concat(s)),r},getCpUrl:function(t,e){return this.getUrl(t,e,Craft.baseCpUrl)},getSiteUrl:function(t,e){return this.getUrl(t,e,Craft.baseSiteUrl)},getActionUrl:function(t,e){return Craft.getUrl(t,e,Craft.actionUrl)},redirectTo:function(t){document.location.href=this.getUrl(t)},setUrl:function(t){"undefined"!=typeof history&&(t.match(/#/)||(t+=document.location.hash),history.replaceState({},"",t))},setPath:function(t){this.path=t,this.setUrl(Craft.getUrl(t,document.location.search))},setQueryParam:function(t,e){var i=document.location.origin+document.location.pathname,s=this.getQueryParams();null!=e&&!1!==e?s[t]=e:delete s[t],this.setUrl(Craft.getUrl(i,s))},getPageUrl:function(t){var e=document.location.origin+document.location.pathname;e=Craft.rtrim(e,"/");var i=document.location.search?document.location.search.substring(1):"";if("?"===Craft.pageTrigger[0]){var s=Craft.pageTrigger.substring(1);if(document.location.search){var n=Object.fromEntries(new URLSearchParams(i).entries());delete n[s],i=$.param(n)}1!==t&&(i+=(""!==i?"&":"")+"".concat(s,"=").concat(t))}else e=e.replace(new RegExp("/"+Craft.escapeRegex(Craft.pageTrigger)+"\\d+$"),""),1!==t&&(e+="/".concat(Craft.pageTrigger).concat(t));return e+(i?"?".concat(i):"")+document.location.hash},getCsrfInput:function(){return Craft.csrfTokenName?'':""},postActionRequest:function(t,e,i,s){"function"==typeof e&&(s=i,i=e,e={}),(s=s||{}).contentType&&s.contentType.match(/\bjson\b/)&&("object"===a(e)&&(e=JSON.stringify(e)),s.contentType="application/json; charset=utf-8");var n=$.ajax($.extend({url:Craft.getActionUrl(t),type:"POST",dataType:"json",headers:this._actionHeaders(),data:e,success:i,error:function(t,e,s){4===t.readyState&&(400!==t.status&&(void 0!==Craft.cp?Craft.cp.displayError():alert(Craft.t("app","A server error occurred."))),i&&i(400===t.status?t.responseJSON:null,e,t))}},s));return"function"==typeof s.send&&s.send(n),n},_actionHeaders:function(){var t={"X-Registered-Asset-Bundles":i(new Set(Craft.registeredAssetBundles)).join(","),"X-Registered-Js-Files":i(new Set(Craft.registeredJsFiles)).join(",")};return Craft.csrfTokenValue&&(t["X-CSRF-Token"]=Craft.csrfTokenValue),t},sendActionRequest:function(t,e){var i=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if($.isPlainObject(e)&&(s=e,e=null),"POST"===t.toUpperCase()&&e&&s.data)if("string"==typeof s.data){var n=s&&s.headers&&s.headers["X-Craft-Namespace"],a=this.namespaceInputName("action",n);s.data+="&".concat(a,"=").concat(e)}else delete s.data.action;return new Promise((function(n,a){(s=s?$.extend({},s):{}).method=t,s.url=e?Craft.getActionUrl(e):Craft.getCpUrl(),s.headers=$.extend({"X-Requested-With":"XMLHttpRequest"},s.headers||{},i._actionHeaders()),s.params=$.extend({},s.params||{},{v:(new Date).getTime()}),axios.request(s).then(n).catch(a)}))},sendApiRequest:function(t,e,i){var s=this;return new Promise((function(n,a){var r=(i=i?$.extend({},i):{}).cancelToken||null;s._getApiHeaders(r).then((function(o){i.method=t,i.baseURL=Craft.baseApiUrl,i.url=e,i.headers=$.extend(o,i.headers||{}),i.params=$.extend(Craft.apiParams||{},i.params||{},{v:(new Date).getTime()}),s._apiHeaders||(i.params.processCraftHeaders=1),Craft.httpProxy&&(i.proxy=Craft.httpProxy),axios.request(i).then((function(t){s._processApiHeaders(t.headers,r).then((function(){n(t.data)})).catch(a)})).catch(a)})).catch(a)}))},_loadingApiHeaders:!1,_apiHeaders:null,_apiHeaderWaitlist:[],_getApiHeaders:function(t){var i=this;return new Promise((function(s,n){i._loadingApiHeaders?i._apiHeaderWaitlist.push([s,n]):i._apiHeaders?s(i._apiHeaders):(i._loadingApiHeaders=!0,i.sendActionRequest("POST","app/api-headers",{cancelToken:t}).then((function(t){i._loadingApiHeaders?s(t.data):n(e)})).catch((function(t){i._rejectApiRequests(n,t)})))}))},_processApiHeaders:function(t,i){var s=this;return new Promise((function(n,a){s._apiHeaders?n():s.sendActionRequest("POST","app/process-api-response-headers",{data:{headers:t},cancelToken:i}).then((function(t){if(s._loadingApiHeaders)for(s._apiHeaders=t.data,s._loadingApiHeaders=!1,n();s._apiHeaderWaitlist.length;)s._apiHeaderWaitlist.shift()[0](s._apiHeaders);else a(e)})).catch((function(t){s._rejectApiRequests(a,t)}))}))},_rejectApiRequests:function(t,e){for(this._loadingApiHeaders=!1,t(e);this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1](e)},clearCachedApiHeaders:function(){for(this._apiHeaders=null,this._loadingApiHeaders=!1;this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1]()},downloadFromUrl:function(t,e,i){return new Promise((function(s,n){var r=new XMLHttpRequest;r.open(t,e,!0),"object"===a(i)?(r.setRequestHeader("Content-Type","application/json; charset=UTF-8"),i=JSON.stringify(i)):r.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),r.responseType="blob",r.onload=function(){if(200===r.status){var t=r.getResponseHeader("content-disposition"),e=/"([^"]*)"/.exec(t),i=null!=e&&e[1]?e[1]:"Download",a=r.getResponseHeader("content-type"),o=new Blob([r.response],{type:a}),l=document.createElement("a");l.href=window.URL.createObjectURL(o),l.download=i,document.body.appendChild(l),l.click(),document.body.removeChild(l),s()}else n()},r.send(i)}))},stringToArray:function(t){if("string"!=typeof t)return t;for(var e=t.split(","),i=0;ie.length?1:-1}));for(var o=this._groupParamsByDeltaNames(t.split("&"),i,!1,n),l=this._groupParamsByDeltaNames(e.split("&"),i,!0,!1),h=l.__root__,d=0;d=0;o--){var l=t[r].substring(0,e[o].length+1);if(l===e[o]+"="||l===e[o]+"["){void 0===n[e[o]]&&(n[e[o]]=[]),n[e[o]].push(a(t[r]));continue t}}i&&n.__root__.push(a(t[r]))}if(s){var h=function(t,e){return $.isArray(e)||$.isPlainObject(e)?e=$.param(e):"string"==typeof e?e=encodeURIComponent(e):null===e&&(e=""),"".concat(encodeURIComponent(t),"=").concat(e)};for(var d in s)if(s.hasOwnProperty(d))if($.isPlainObject(s[d]))for(var c in n[d]=[],s[d])s[d].hasOwnProperty(c)&&n[d].push(h("".concat(d,"[").concat(c,"]"),s[d][c]));else n[d]=[h(d,s[d])]}return n},expandPostArray:function(t){var e,i={};for(var s in t)if(t.hasOwnProperty(s)){var n,r=t[s],o=s.match(/^(\w+)(\[.*)?/);if(o[2])for(n=o[2].match(/\[[^\[\]]*\]/g),e=0;e",{attr:{method:"post",action:"","accept-charset":"UTF-8"}});if("string"==typeof t)for(var i,s=t.split("&"),n=0;n",{type:"hidden",name:decodeURIComponent(i[0]),value:decodeURIComponent(i[1]||"")}).appendTo(e);return e},compare:function(t,e,i){if(a(t)!==a(e))return!1;if("object"===a(t)&&null!==t&&null!==e){if(t.length!==e.length)return!1;if(t instanceof Array!=e instanceof Array)return!1;if(!(t instanceof Array))if(void 0===i||!0===i){if(!Craft.compare(Craft.getObjectKeys(t).sort(),Craft.getObjectKeys(e).sort()))return!1}else if(!Craft.compare(Craft.getObjectKeys(t),Craft.getObjectKeys(e)))return!1;for(var s in t)if(t.hasOwnProperty(s)&&!Craft.compare(t[s],e[s]))return!1;return!0}return t===e},getObjectKeys:function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(i);return e},escapeChars:function(t){Garnish.isArray(t)||(t=t.split());for(var e="",i=0;i>t/4).toString(16)}))},namespaceInputName:function(t,e){return e?t.replace(/([^'"\[\]]+)([^'"]*)/,"".concat(e,"[$1]$2")):t},namespaceId:function(t,e){return Craft.formatInputId(e?"".concat(e,"-").concat(t):t)},randomString:function(t){for(var e="",i=0;i]*href="(?:'+s.join("|")+')".*?>',"g");t=t.replace(a,"")}$("head").append(t)}},appendBodyHtml:function(t){if(t){var e=$("script[src]");if(e.length){for(var i,s=[],n=0;n]*src="(?:'+s.join("|")+')".*?><\/script>',"g");t=t.replace(a,"")}Garnish.$bod.append(t)}},appendFootHtml:function(t){console.warn("Craft.appendFootHtml() is deprecated. Craft.appendBodyHtml() should be used instead."),this.appendBodyHtml(t)},initUiElements:function(t){$(".grid",t).grid(),$(".info",t).infoicon(),$(".checkbox-select",t).checkboxselect(),$(".fieldtoggle",t).fieldtoggle(),$(".lightswitch",t).lightswitch(),$(".nicetext",t).nicetext(),$(".formsubmit",t).formsubmit(),$(".menubtn:not([data-disclosure-trigger])",t).menubtn(),$("[data-disclosure-trigger]",t).disclosureMenu(),$(".datetimewrapper",t).datetime(),$('.datewrapper > input[type="date"], .timewrapper > input[type="time"]',t).datetimeinput(),$("a",t).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===$(this).attr("target")&&$(this).attr("rel","noopener").attr("target","_blank")}))},_elementIndexClasses:{},_elementSelectorModalClasses:{},_elementEditorClasses:{},_uploaderClasses:{},registerElementIndexClass:function(t,e){if(void 0!==this._elementIndexClasses[t])throw"An element index class has already been registered for the element type “"+t+"”.";this._elementIndexClasses[t]=e},registerUploaderClass:function(t,e){if(void 0!==this._uploaderClasses[t])throw"An asset uploader class has already been registered for the filesystem type “"+t+"”.";this._uploaderClasses[t]=e},registerElementSelectorModalClass:function(t,e){if(void 0!==this._elementSelectorModalClasses[t])throw"An element selector modal class has already been registered for the element type “"+t+"”.";this._elementSelectorModalClasses[t]=e},registerElementEditorClass:function(t,e){if(void 0!==this._elementEditorClasses[t])throw"An element editor class has already been registered for the element type “"+t+"”.";this._elementEditorClasses[t]=e},createElementIndex:function(t,e,i){return new(void 0!==this._elementIndexClasses[t]?this._elementIndexClasses[t]:Craft.BaseElementIndex)(t,e,i)},createUploader:function(t,e,i){var s=new(void 0!==this._uploaderClasses[t]?this._uploaderClasses[t]:Craft.Uploader)(e,i);return s.fsType=t,s},createElementSelectorModal:function(t,e){return new(void 0!==this._elementSelectorModalClasses[t]?this._elementSelectorModalClasses[t]:Craft.BaseElementSelectorModal)(t,e)},createElementEditor:function(t,e,i){return void 0===i&&$.isPlainObject(e)?(i=e,e=null):"object"!==a(i)&&(i={}),i.elementType||(i.elementType=t),new Craft.ElementEditorSlideout(e,i)},getLocalStorage:function(t,e){return t="Craft-"+Craft.systemUid+"."+t,"undefined"!=typeof localStorage&&void 0!==localStorage[t]?JSON.parse(localStorage[t]):e},setLocalStorage:function(t,e){if("undefined"!=typeof localStorage){t="Craft-"+Craft.systemUid+"."+t;try{localStorage[t]=JSON.stringify(e)}catch(t){}}},removeLocalStorage:function(t){"undefined"!=typeof localStorage&&localStorage.removeItem("Craft-".concat(Craft.systemUid,".").concat(t))},getCookie:function(t){return document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)Craft-".concat(Craft.systemUid,":").concat(t,"\\s*\\=\\s*([^;]*).*$)|^.*$")),"$1")},setCookie:function(t,e,i){i=$.extend({},this.defaultCookieOptions,i);var s="Craft-".concat(Craft.systemUid,":").concat(t,"=").concat(encodeURIComponent(e));i.path&&(s+=";path=".concat(i.path)),i.domain&&(s+=";domain=".concat(i.domain)),i.maxAge?s+=";max-age-in-seconds=".concat(i.maxAge):i.expires&&(s+=";expires=".concat(i.expires.toUTCString())),i.secure&&(s+=";secure"),document.cookie=s},removeCookie:function(t){this.setCookie(t,"",new Date("1970-01-01T00:00:00"))},getElementInfo:function(t){var e=$(t);return e.hasClass("element")||(e=e.find(".element:first")),{id:e.data("id"),siteId:e.data("site-id"),label:e.data("label"),status:e.data("status"),url:e.data("url"),hasThumb:e.hasClass("hasthumb"),$element:e}},setElementSize:function(t,e){var i=$(t);if("small"!==e&&"large"!==e&&(e="small"),!i.hasClass(e)){var s="small"===e?"large":"small";if(i.addClass(e).removeClass(s),i.hasClass("hasthumb")){var n=i.find("> .elementthumb > img"),a=$("",{sizes:("small"===e?"30":"100")+"px",srcset:n.attr("srcset")||n.attr("data-pfsrcset")});n.replaceWith(a),picturefill({elements:[a[0]]})}}},submitForm:function(t,e){if(void 0===e&&(e={}),!e.confirm||confirm(e.confirm)){if(e.action&&$("",{type:"hidden",name:"action",val:e.action}).appendTo(t),e.redirect&&$("",{type:"hidden",name:"redirect",val:e.redirect}).appendTo(t),e.params)for(var i in e.params){var s=e.params[i];$("",{type:"hidden",name:i,val:s}).appendTo(t)}e.retainScroll&&this.setLocalStorage("scrollY",window.scrollY),t.trigger($.extend({type:"submit"},e.data))}},trapFocusWithin:function(t){Garnish.trapFocusWithin(t)},setFocusWithin:function(t){Garnish.setFocusWithin(t)},filterInputVal:function(t,e){for(var i=$(t),s=i.val(),n=i[0].selectionStart,a="",r=0;r",{type:"button",class:"clear-btn",title:Craft.t("app","Clear"),"aria-label":Craft.t("app","Clear")}).appendTo(t).on("click",(function(){for(var t=0;tCharacters left: {chars, number}',{chars:t})},Garnish.$doc.ready((function(){Craft.initUiElements()}))},691:function(){function t(t){return function(t){if(Array.isArray(t))return s(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){if(t){if("string"==typeof t)return s(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i').appendTo(Garnish.$bod);this.$sidebar=$('').appendTo(s).attr({role:"navigation","aria-label":Craft.t("app","Source")}),this.$sourcesContainer=$('').appendTo(this.$sidebar),this.$sourceSettingsContainer=$(' ').appendTo(s),this.$footer=$('').appendTo(s),this.$footerBtnContainer=$(' ').appendTo(this.$footer),this.$cancelBtn=$(" ",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$footerBtnContainer),this.$saveBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$footerBtnContainer),this.$loadingSpinner=$(' ').appendTo(this.$sourceSettingsContainer),this.setContainer(s),this.show(),Craft.sendActionRequest("POST","element-index-settings/get-customize-sources-modal-data",{data:{elementType:this.elementIndex.elementType}}).then((function(t){i.$saveBtn.removeClass("disabled"),i.buildModal(t.data)})).finally((function(){i.$loadingSpinner.remove(),Garnish.setFocusWithin(i.$sidebar)})),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:function(t){var e=this;this.baseSortOptions=t.baseSortOptions,this.defaultSortOptions=t.defaultSortOptions,this.availableTableAttributes=t.availableTableAttributes,this.customFieldAttributes=t.customFieldAttributes,this.elementTypeName=t.elementTypeName,this.conditionBuilderHtml=t.conditionBuilderHtml,this.conditionBuilderJs=t.conditionBuilderJs,this.sites=t.sites,this.userGroups=t.userGroups,t.headHtml&&Craft.appendHeadHtml(t.headHtml),t.bodyHtml&&Craft.appendBodyHtml(t.bodyHtml),this.sourceSort=new Garnish.DragSort({handle:".move",axis:"y"}),this.sources=[];for(var i=0;i ').appendTo(this.$footer),n=$(" ",{type:"button",class:"btn menubtn add icon","aria-label":Craft.t("app","Add…"),"aria-controls":"add-source-menu",title:Craft.t("app","Add…"),"data-disclosure-trigger":""}).appendTo(s);this.$addSourceMenu=$(" ",{id:"add-source-menu",class:"menu menu--disclosure"}).appendTo(s);var a=function(t){var i=e.addSource(t,!0);Garnish.scrollContainerToElement(e.$sidebar,i.$item),i.select(),e.addSourceMenu.hide()},r=$(" ",{type:"button",class:"menu-option",text:Craft.t("app","New heading")}).on("click",(function(){a({type:"heading"}),e.focusLabelInput()})),o=$(" ",{type:"button",class:"menu-option",text:Craft.t("app","New custom source"),"data-type":"custom"}).on("click",(function(){var t=e.baseSortOptions.slice(0);t.push(e.defaultSortOptions),a({type:"custom",key:"custom:".concat(Craft.uuid()),sortOptions:t,defaultSort:[t[0].attr,t[1].defaultDir],tableAttributes:[],availableTableAttributes:[]}),e.focusLabelInput()})),l=$(" ").append($(" ").append(r)).appendTo(this.$addSourceMenu);t.conditionBuilderHtml&&$(" ").append(o).appendTo(l),Craft.useMobileStyles()&&this.buildSidebarToggleView(),this.addListener(Garnish.$win,"resize",this.updateSidebarView),this.addSourceMenu=new Garnish.DisclosureMenu(n)},focusLabelInput:function(){this.selectedSource.$labelInput.trigger("focus")},getSourceName:function(){return this.selectedSource?this.selectedSource.sourceData.label:this.sources[0].sourceData.label},updateSidebarView:function(){Craft.useMobileStyles()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView()},resetView:function(){this.$sourceSettingsHeader&&this.$sourceSettingsHeader.remove(),this.$sourcesHeader&&this.$sourcesHeader.remove(),this.$sidebarToggleBtn=null,this.$container.removeClass("sidebar-hidden")},updateHeading:function(){this.$sourcesHeading&&this.$sourcesHeading.text(this.getSourceName())},buildSidebarToggleView:function(){var t=this;this.$sourcesHeader=$('').addClass("sidebar-header").prependTo(this.$sourcesContainer),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sourcesHeader),this.$sourcesHeading=$(' ').text(this.getSourceName()),this.$sourceSettingsHeader=$('').addClass("main-header").append(this.$sourcesHeading).prependTo(this.$sourceSettingsContainer),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$sourceSettingsHeader),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar(),t.$sidebarToggleBtn.trigger("focus")}))},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$container.removeClass("sidebar-hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar(),Garnish.focusIsInside(t.$sidebar)&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$container.addClass("sidebar-hidden"),this.$sidebarToggleBtn&&this.$sidebarToggleBtn.attr("aria-expanded","false"),Garnish.uiLayerManager.currentLayer.$container.hasClass("cs-sidebar")&&Garnish.uiLayerManager.removeLayer()},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},addSource:function(t,e){var i,s=$(' ').appendTo(this.$sourcesContainer),n=$(' ').attr({tabindex:"0",role:"button"}).appendTo(s),a=$(' ').appendTo(s);return $(' ')).appendTo(s),"heading"===t.type?(s.addClass("heading"),a.attr("name","sourceOrder[][heading]"),(i=new Craft.CustomizeSourcesModal.Heading(this,s,n,a,t,e)).updateItemLabel(t.heading)):(a.attr("name","sourceOrder[][key]").val(t.key),(i="native"===t.type?new Craft.CustomizeSourcesModal.Source(this,s,n,a,t,e):new Craft.CustomizeSourcesModal.CustomSource(this,s,n,a,t,e)).updateItemLabel(t.label),t.key===this.elementIndex.rootSourceKey&&i.select()),this.sourceSort.addItems(s),i},save:function(t){var e=this;t&&t.preventDefault(),this.$saveBtn.hasClass("disabled")||this.$saveBtn.hasClass("loading")||(this.$saveBtn.addClass("loading"),Craft.sendActionRequest("POST","element-index-settings/save-customize-sources-modal-settings",{data:this.$container.serialize()+"&elementType=".concat(this.elementIndex.elementType)}).then((function(t){var i=t.data,s=null;e.selectedSource&&e.selectedSource.sourceData.key&&!i.disabledSourceKeys.includes(e.selectedSource.sourceData.key)?s=e.selectedSource.sourceData.key:e.elementIndex.sourceKey||(s=e.elementIndex.$visibleSources.first().data("key")),s&&e.elementIndex.selectSourceByKey(s),window.location.reload()})).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})).finally((function(){e.$saveBtn.removeClass("loading")})))},appendIndexSourceItem:function(t,e){if(e){var i=t.hasClass("heading");if(e.hasClass("heading")&&!i)t.appendTo(e.children("ul"));else{if(i){var s=e.parentsUntil(this.$elementIndexSourcesContainer,"li").last();s.length&&(e=s)}t.insertAfter(e)}}else t.prependTo(this.$elementIndexSourcesContainer)},destroy:function(){for(var t=0;t ").appendTo(this.modal.$sourceSettingsContainer),this.createSettings(this.$settingsContainer)),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:function(){},getIndexSourceItem:function(){},deselect:function(){this.$item.removeClass("sel"),this.$itemLabel.attr({"aria-current":"false"}),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(t){t?this.$itemLabel.text(t):this.$itemLabel.html(" ")},destroy:function(){this.modal.sourceSort.removeItems(this.$item),this.modal.sources.splice($.inArray(this,this.modal.sources),1),this.isSelected()&&(this.deselect(),this.modal.sources.length&&this.modal.sources[0].select(),Garnish.setFocusWithin(this.modal.$sourceSettingsContainer)),this.$item.data("source",null),this.$item.remove(),this.$settingsContainer&&this.$settingsContainer.remove(),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({$sortAttributeSelect:null,$sortDirectionPicker:null,$sortDirectionInput:null,sortDirectionListbox:null,isNative:function(){return!0},createSettings:function(t){Craft.ui.createLightswitchField({label:Craft.t("app","Enabled"),name:"sources[".concat(this.sourceData.key,"][enabled]"),on:!this.sourceData.disabled}).appendTo(t),this.createSortField(t),this.createTableAttributesField(t)},createSortField:function(t){var e=this,i=$(''),s=Craft.ui.createSelect({name:"sources[".concat(this.sourceData.key,"][defaultSort][0]"),options:this.sourceData.sortOptions.map((function(t){return{label:Craft.escapeHtml(t.label),value:t.attr}})),value:this.sourceData.defaultSort[0]}).addClass("fullwidth").appendTo($("").appendTo(i));this.$sortAttributeSelect=s.children("select").attr("aria-label",Craft.t("app","Sort attribute")),this.$sortDirectionPicker=$("",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(i),this.$sortDirectionInput=$("",{type:"hidden",name:"sources[".concat(this.sourceData.key,"][defaultSort][1]")}).appendTo(i),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(t){e.$sortDirectionInput.val(t.data("dir"))}}),this.$sortAttributeSelect.on("change",(function(){e.handleSortAttributeChange()})),this.handleSortAttributeChange(!0),Craft.ui.createField(i,{label:Craft.t("app","Default Sort"),fieldset:!0}).appendTo(t).addClass("sort-field")},handleSortAttributeChange:function(t){var e=this.$sortAttributeSelect.val();if("structure"===e)this.sortDirectionListbox.select(0),this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled");else{this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled");var i=t?this.sourceData.defaultSort[1]:this.sourceData.sortOptions.find((function(t){return t.attr===e})).defaultDir;this.sortDirectionListbox.select("asc"===i?0:1)}},createTableAttributesField:function(t){var i=this.availableTableAttributes();if(this.sourceData.tableAttributes.length||i.length){var s=$(""),n=[];$('')).appendTo(s);for(var a=0;a').append('').append(Craft.ui.createCheckbox({label:Craft.escapeHtml(e),name:"sources[".concat(this.sourceData.key,"][tableAttributes][]"),value:t,checked:i}))},getIndexSourceItem:function(){var t=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(t)return t.closest("li")}}),Craft.CustomizeSourcesModal.CustomSource=Craft.CustomizeSourcesModal.Source.extend({$labelInput:null,createSettings:function(t){var e=this,i=Craft.ui.createTextField({label:Craft.t("app","Label"),name:"sources[".concat(this.sourceData.key,"][label]"),value:this.sourceData.label}).appendTo(t);this.$labelInput=i.find(".text");var s="condition".concat(Math.floor(1e6*Math.random())),n=function(t){return t.replace(/__ID__/g,s).replace(/__SOURCE_KEY__(?=-)/g,Craft.formatInputId(e.sourceData.key)).replace(/__SOURCE_KEY__/g,e.sourceData.key)},a=this.sourceData.conditionBuilderHtml||n(this.modal.conditionBuilderHtml),r=this.sourceData.conditionBuilderJs||n(this.modal.conditionBuilderJs);Craft.ui.createField($("").append(a),{id:"criteria",label:Craft.t("app","{type} Criteria",{type:this.modal.elementTypeName})}).appendTo(t),Craft.appendBodyHtml(r),this.createSortField(t),this.createTableAttributesField(t),Craft.sites.length>1&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","Sites"),instructions:Craft.t("app","Choose which sites this source should be visible for."),name:"sources[".concat(this.sourceData.key,"][sites]"),options:Craft.sites.map((function(t){return{label:t.name,value:t.uid}})),values:this.sourceData.sites||"*",showAllOption:!0}).appendTo(t),this.modal.userGroups.length&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","User Groups"),instructions:Craft.t("app","Choose which user groups should have access to this source."),name:"sources[".concat(this.sourceData.key,"][userGroups]"),options:this.modal.userGroups,values:this.sourceData.userGroups||"*",showAllOption:!0}).appendTo(t),t.append(" "),this.$deleteBtn=$('').attr({role:"button",tabindex:"0"}).text(Craft.t("app","Delete custom source")).appendTo(t),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy")},availableTableAttributes:function(){var e=this.base();return this.isNew&&e.push.apply(e,t(this.modal.customFieldAttributes)),e},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},getIndexSourceItem:function(){var t,e=this.base();if(e?t=e.find(".label"):(t=$("",{class:"label"}),e=$("").append($("",{"data-key":this.sourceData.key}).append(t))),this.$labelInput){var i=Craft.trim(this.$labelInput.val());""===i&&(i=Craft.t("app","(blank)")),t.text(i)}return e}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelInput:null,$deleteBtn:null,isHeading:function(){return!0},createSettings:function(t){var e=Craft.ui.createTextField({label:Craft.t("app","Heading"),instructions:Craft.t("app","This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading||""}).appendTo(t);this.$labelInput=e.find(".text"),t.append(" "),this.$deleteBtn=$('').text(Craft.t("app","Delete heading")).attr({role:"button",tabindex:"0"}).appendTo(t),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy")},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},updateItemLabel:function(t){this.$itemLabel.html((t?Craft.escapeHtml(t):"".concat(Craft.t("app","(blank)"),""))+" "),this.$itemInput.val(t)},getIndexSourceItem:function(){var t=(this.$labelInput?this.$labelInput.val():null)||this.sourceData.heading||"";return $('').append($("").text(t)).append("")}})},1519:function(){Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(t,e){this.$table=$(t);var i=this.$table.children("tbody").children(":not(.filler)");(e=$.extend({},Craft.DataTableSorter.defaults,e)).container=this.$table.children("tbody"),e.helper=this.getHelper.bind(this),e.caboose=" ",e.axis=Garnish.Y_AXIS,e.magnetStrength=4,e.helperLagBase=1.5,this.base(i,e)},getHelper:function(t){var e=$('').appendTo(Garnish.$bod),i=$("").appendTo(e),s=$("").appendTo(i);t.appendTo(s),i.width(this.$table.width()),i.prop("className",this.$table.prop("className"));for(var n=this.$table.find("tr:first").children(),a=t.children(),r=0;r'+Craft.getCsrfInput()+''+(Garnish.isArray(this.userId)?"":'')+(e.redirect?'':"")+"").appendTo(Garnish.$bod),a=$('").appendTo(n),r=$('').appendTo(a),o=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(r);if(e.contentSummary.length)for(var l=0;l",{text:e.contentSummary[l]}));else a.find("ul").remove();if(this.$deleteActionRadios=a.find("input[type=radio]"),this.$deleteSubmitBtn=Craft.ui.createSubmitButton({class:"disabled",label:this._submitBtnLabel(!1),spinner:!0}).appendTo(r),Garnish.isArray(this.userId)){s=["and"];for(var h=0;h0},initialize:function(){if(this.initialized)return!1;this.initialized=!0,this.removeListener(Garnish.$win,"resize");for(var t=this.$tbody.children(),e=0;ei.width()&&i.css("overflow-x","auto"),this.$addRowBtn=this.$table.next(".add"),this.updateAddRowButton(),this.addListener(this.$addRowBtn,"activate","addRow"),!0},initializeIfVisible:function(){this.removeListener(Garnish.$win,"resize"),this.isVisible()?this.initialize():this.addListener(Garnish.$win,"resize","initializeIfVisible")},updateAddRowButton:function(){this.canAddRow()?(this.$addRowBtn.css("opacity","1"),this.$addRowBtn.css("pointer-events","auto"),this.$addRowBtn.attr("aria-disabled","false")):(this.$addRowBtn.css("opacity","0.2"),this.$addRowBtn.css("pointer-events","none"),this.$addRowBtn.attr("aria-disabled","true"))},updateAllRows:function(){if(!this.settings.staticRows)for(var t=this.$table.find("> tbody > tr"),e=0;ethis.settings.minRows},deleteRow:function(t){this.canDeleteRow()?(this.sorter.removeItems(t.$tr),t.$tr.remove(),this.rowCount--,this.updateAllRows(),this.updateAddRowButton(),0===this.rowCount?(this.$table.addClass("hidden"),this.$addRowBtn.trigger("focus")):this.$tbody.find(":focusable").last().trigger("focus"),this.settings.onDeleteRow(t.$tr),t.destroy()):this.updateStatusMessage()},canAddRow:function(){return!!this.settings.allowAdd&&(!this.settings.maxRows||this.rowCount",{"data-id":e});for(var l in i)if(i.hasOwnProperty(l)){var h,d=i[l],c=void 0!==n[l]?n[l]:"";if("heading"===d.type)h=$(" | ",{scope:"row",class:d.class,html:c});else{var u=s+"["+e+"]["+l+"]";switch(h=$(" | ",{class:"".concat(d.class," ").concat(d.type,"-cell"),width:d.width}),Craft.inArray(d.type,Craft.EditableTable.textualColTypes)&&h.addClass("textual"),d.code&&h.addClass("code"),d.type){case"checkbox":$('').append(Craft.ui.createCheckbox({name:u,value:d.value||"1",checked:!!c})).appendTo(h);break;case"color":Craft.ui.createColorInput({name:u,value:"object"!==t(c)?c:null,small:!0}).appendTo(h);break;case"date":Craft.ui.createDateInput({name:u,value:c}).appendTo(h);break;case"lightswitch":Craft.ui.createLightswitch({name:u,value:d.value||"1",on:!!c,small:!0}).appendTo(h);break;case"select":Craft.ui.createSelect({name:u,options:d.options,value:c||function(){for(var t in d.options)if(d.options.hasOwnProperty(t)&&d.options[t].default)return void 0!==d.options[t].value?d.options[t].value:t;return null}(),class:"small"}).appendTo(h);break;case"time":Craft.ui.createTimeInput({name:u,value:c}).appendTo(h);break;case"email":case"url":Craft.ui.createTextInput({name:u,value:"object"!==t(c)?c:null,type:d.type,placeholder:d.placeholder||null}).appendTo(h);break;default:$("",{name:u,rows:d.rows||1,val:"object"!==t(c)?c:null,placeholder:d.placeholder}).appendTo(h)}}h.appendTo(o)}return a&&$(" | ",{class:"thin action"}).append($("",{class:"move icon",title:Craft.t("app","Reorder"),role:"button",type:"button"})).appendTo(o),r&&$(" | ",{class:"thin action"}).append($("",{class:"delete icon",title:Craft.t("app","Delete"),type:"button"})).appendTo(o),o}}),Craft.EditableTable.Row=Garnish.Base.extend({table:null,id:null,niceTexts:null,$tr:null,$tds:null,tds:null,$textareas:null,$deleteBtn:null,init:function(t,e){this.table=t,this.$tr=$(e),this.$tds=this.$tr.children(),this.tds=[],this.id=this.$tr.attr("data-id"),this.$tr.data("editable-table-row",this);var i=parseInt(this.id.substring(this.table.settings.rowIdPrefix.length));i>this.table.biggestId&&(this.table.biggestId=i),this.$textareas=$(),this.niceTexts=[];var s,n,a,r,o,l={},h=0;for(s in this.table.columns)this.table.columns.hasOwnProperty(s)&&(n=this.table.columns[s],a=this.tds[s]=this.$tds[h],Craft.inArray(n.type,Craft.EditableTable.textualColTypes)?(r=$("textarea",a),this.$textareas=this.$textareas.add(r),this.addListener(r,"focus","onTextareaFocus"),this.addListener(r,"mousedown","ignoreNextTextareaFocus"),this.niceTexts.push(new Garnish.NiceText(r,{onHeightChange:this.onTextareaHeightChange.bind(this)})),this.addListener(r,"keypress",{tdIndex:h,type:n.type},"handleKeypress"),this.addListener(r,"input",{type:n.type},"validateValue"),r.trigger("input"),"multiline"!==n.type&&this.addListener(r,"paste",{tdIndex:h,type:n.type},"handlePaste"),l[s]=r):"checkbox"===n.type&&(o=$('input[type="checkbox"]',a),n.radioMode&&(void 0===this.table.radioCheckboxes[s]&&(this.table.radioCheckboxes[s]=[]),this.table.radioCheckboxes[s].push(o[0]),this.addListener(o,"change",{colId:s},"onRadioCheckboxChange")),n.toggle&&this.addListener(o,"change",{colId:s},(function(t){this.applyToggleCheckbox(t.data.colId)}))),$(a).hasClass("disabled")||this.addListener(a,"click",{td:a},(function(t){t.target===t.data.td&&$(t.data.td).find("textarea,input,select,.lightswitch").focus()})),h++);for(s in this.onTextareaHeightChange(),this.table.columns)this.table.columns.hasOwnProperty(s)&&"checkbox"===(n=this.table.columns[s]).type&&n.toggle&&this.applyToggleCheckbox(s);for(s in this.table.columns)this.table.columns.hasOwnProperty(s)&&(!(n=this.table.columns[s]).autopopulate||void 0===l[n.autopopulate]||l[s].val()||l[n.autopopulate].val()||new Craft.HandleGenerator(l[s],l[n.autopopulate],{allowNonAlphaStart:!0}));var d=this.$tr.children().last().find(".delete");this.addListener(d,"click","deleteRow");var c=this.$tr.find("input,textarea,select,.lightswitch");this.addListener(c,"focus",(function(t){$(t.currentTarget).closest("td:not(.disabled)").addClass("focus")})),this.addListener(c,"blur",(function(t){$(t.currentTarget).closest("td").removeClass("focus")}))},onTextareaFocus:function(t){this.onTextareaHeightChange();var e=$(t.currentTarget);e.data("ignoreNextFocus")?e.data("ignoreNextFocus",!1):window.setTimeout((function(){Craft.selectFullValue(e)}),0)},onRadioCheckboxChange:function(t){if(t.currentTarget.checked)for(var e=0;et&&(t=this.niceTexts[e].height);this.$textareas.css("min-height",t);var i=this.$textareas.filter(":visible").first().parent().height();i>t&&this.$textareas.css("min-height",i)},deleteRow:function(){this.table.deleteRow(this)}},{numericKeyCodes:[9,8,37,38,39,40,45,91,46,190,48,49,50,51,52,53,54,55,56,57]})},8468:function(){Craft.ElementActionTrigger=Garnish.Base.extend({maxLevels:null,newChildUrl:null,$trigger:null,$selectedItems:null,triggerEnabled:!0,init:function(t){$.isPlainObject(t)||(t={}),void 0!==t.batch&&(t.bulk=t.batch,delete t.batch),Object.defineProperty(t,"batch",{get:function(){return this.bulk},set:function(t){this.bulk=t}}),this.setSettings(t,Craft.ElementActionTrigger.defaults),this.$trigger=$("#"+t.type.replace(/[\[\]\\]+/g,"-")+"-actiontrigger"),this.settings.activate&&(this.$trigger.data("custom-handler",!0),"FORM"===this.$trigger.prop("nodeName")?this.addListener(this.$trigger,"submit","handleTriggerActivation"):this.addListener(this.$trigger,"activate","handleTriggerActivation")),this.updateTrigger(),Craft.elementIndex.on("selectionChange",this.updateTrigger.bind(this))},updateTrigger:function(){0!==Craft.elementIndex.getSelectedElements().length&&(this.validateSelection()?this.enableTrigger():this.disableTrigger())},validateSelection:function(){return this.$selectedItems=Craft.elementIndex.getSelectedElements(),!(!this.settings.bulk&&this.$selectedItems.length>1)&&(!this.settings.requireId||!this.$selectedItems.is('[data-id=""]'))&&("function"!=typeof this.settings.validateSelection||this.settings.validateSelection(this.$selectedItems))},enableTrigger:function(){this.triggerEnabled||(this.$trigger.removeClass("disabled").removeAttr("aria-disabled"),this.triggerEnabled=!0)},disableTrigger:function(){this.triggerEnabled&&(this.$trigger.addClass("disabled").attr("aria-disabled","true"),this.triggerEnabled=!1)},handleTriggerActivation:function(){this.triggerEnabled&&this.settings.activate(this.$selectedItems)}},{defaults:{type:null,bulk:!0,requireId:!0,validateSelection:null,activate:null}})},5049:function(){function t(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{class:"revision-spinner spinner hidden",title:Craft.t("app","Saving")}).appendTo(r),this.$statusIcon=$("",{class:"revision-status ".concat(this.isFullPage?"invisible":"hidden")}).appendTo(r),this.$statusMessage=$("",{class:"revision-status-message visually-hidden","aria-live":"polite"}).appendTo(r),this.$expandSiteStatusesBtn=$(".expand-status-btn"),this.settings.canEditMultipleSites&&this.addListener(this.$expandSiteStatusesBtn,"click","expandSiteStatuses"),this.settings.previewTargets.length&&this.isFullPage){this.settings.enablePreview&&this.addListener(this.$previewBtn,"click","openPreview");var o=this.$container.find(".preview-btn-container");if(1===this.settings.previewTargets.length){var l=(n=this.settings.previewTargets,a=1,function(t){if(Array.isArray(t))return t}(n)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(n,a)||t(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];this.createPreviewLink(l).addClass("view-btn btn").attr("aria-label",Craft.t("app","View")).appendTo(o)}else this.createShareMenu(o)}this.settings.revisionId||(this.isFullPage&&Craft.edition===Craft.Pro&&(this.$activityContainer=this.$container.find(".activity-container"),this._checkActivity()),this.$container.data("serializer",(function(){return s.serializeForm(!0)})),this.$container.data("initialSerializedValue",this.serializeForm(!0)),this.isFullPage&&this.addListener(this.$container,"submit","handleSubmit"),this.settings.isProvisionalDraft?this.initForProvisionalDraft():this.settings.draftId&&!this.settings.isUnpublishedDraft?this.initForDraft():this.settings.canSaveCanonical||this.addListener(this.$container,"submit.saveShortcut",(function(t){t.saveShortcut&&(t.preventDefault(),s.createDraft(),s.removeListener(s.$container,"submit.saveShortcut"))})),this.listenForChanges(),this.addListener(this.$statusIcon,"click",(function(){s.showStatusHud(s.$statusIcon)})),this.handleDismissibleTips(),this.isFullPage&&Craft.messageReceiver&&Craft.broadcaster.addEventListener("message",(function(t){if("saveDraft"===t.data.event&&t.data.canonicalId===s.settings.canonicalId&&(t.data.draftId===s.settings.draftId||t.data.isProvisionalDraft&&!s.settings.draftId)||"saveElement"===t.data.event&&t.data.id===s.settings.canonicalId&&!s.settings.draftId)Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload();else if("deleteDraft"===t.data.event&&t.data.canonicalId===s.settings.canonicalId&&t.data.draftId===s.settings.draftId){var e=new URL(window.location.href);e.searchParams.delete("draftId"),e.href!==document.location.href?window.location.href=e:(Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload())}})),this.activityTooltips={},this.isFullPage&&Craft.ui.setFocusOnErrorSummary(this.$container))},_createQueue:function(){var t=this,e=new Craft.Queue;return e.on("beforeRun",(function(){t.showSpinner()})),e.on("afterRun",(function(){t.hideSpinner()})),e},get namespace(){return this.isFullPage?null:this.slideout.namespace},namespaceInputName:function(t){return Craft.namespaceInputName(t,this.namespace)},namespaceId:function(t){return Craft.namespaceId(t,this.namespace)},listenForChanges:function(){var t=this;if(!(this.listeningForChanges||this.pauseLevel>0)&&this.enableAutosave&&this.settings.canCreateDrafts){this.listeningForChanges=!0;var e=this.isFullPage?Garnish.$bod:this.$container;this.addListener(e.find(".selectized"),"selectizedropdownopen",(function(e){t.pause()})),this.addListener(e.find(".selectized"),"selectizedropdownclose",(function(e){t.resume(!1)})),this.addListener(e,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(e){$(e.target).is(t.statusIcons())||0==t.pauseLevel&&(clearTimeout(t.timeout),["keypress","keyup","change"].includes(e.type)?t.timeout=setTimeout(t.checkForm.bind(t),500):t.checkForm())}))}},stopListeningForChanges:function(){this.listeningForChanges&&(this.removeListener(Garnish.$bod,"keypress,keyup,change,focus,blur,click,mousedown,mouseup"),clearTimeout(this.timeout),this.listeningForChanges=!1)},pause:function(){this.pauseLevel++,this.stopListeningForChanges()},resume:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(0===this.pauseLevel)throw"Craft.ElementEditor::resume() should only be called after pause().";this.pauseLevel--,0===this.pauseLevel&&this.enableAutosave&&(t&&this.checkForm(),this.listenForChanges())},initForProvisionalDraft:function(){var t=this,e=this.$container.find(".discard-changes-btn");if(!e.length){var i,s,n;this.isFullPage?(i=$("#content").height(),s=Garnish.$win.scrollTop(),n=Craft.cp.$noticeContainer):n=this.$container.find(".so-notice");var a=$("",{class:"draft-notice"}).append($("",{class:"draft-icon","aria-hidden":"true","data-icon":"edit"})).append($("",{text:Craft.t("app","Showing your unsaved changes.")})).appendTo(n);if(e=$("",{type:"button",class:"discard-changes-btn btn",text:Craft.t("app","Discard")}).appendTo(a),this.isFullPage){var r=$("#content").height()-i;if(Garnish.$win.scrollTop(s+r),Garnish.$win.scrollTop()===s){Craft.cp.$contentContainer.css("pointer-events","none"),$("#content-header").css("min-height","auto");var o=n.height();n.css({height:o-r,overflow:"hidden"}).velocity({height:o},"fast",(function(){$("#content-header").css("min-height",""),n.css({height:"",overflow:""}),setTimeout((function(){Craft.cp.$contentContainer.css("pointer-events","")}),300)}))}}}this.addListener(e,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(t){t.stopPropagation()})),this.addListener(e,"click",(function(){confirm(Craft.t("app","Are you sure you want to discard your changes?"))&&t.queue.unshift((function(){return new Promise((function(e,i){t.isFullPage?Craft.submitForm(t.$container,{action:"elements/delete-draft",redirect:t.settings.hashedCpEditUrl,params:{draftId:t.settings.draftId,provisional:1}}):Craft.sendActionRequest("POST","elements/delete-draft",{data:{elementId:t.settings.canonicalId,draftId:t.settings.draftId,provisional:1}}).then((function(e){Craft.cp.displaySuccess(e.data.message),t.slideout.close()})).catch(i)}))}))}))},initForDraft:function(){var t=this;this.createEditMetaBtn(),this.settings.canSaveCanonical&&Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0,alt:!0},(function(){Craft.submitForm(t.$container,{action:"elements/apply-draft",redirect:t.settings.hashedCpEditUrl})}),0)},expandSiteStatuses:function(){var t=this;this.removeListener(this.$expandSiteStatusesBtn,"click"),this.$expandSiteStatusesBtn.velocity({opacity:0},"fast",(function(){t.$expandSiteStatusesBtn.remove()}));var e=this.$container.find(".enabled-for-site-".concat(this.settings.siteId,"-field"));if(this.$siteStatusPane=e.parent(),this.settings.revisionId)this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));else{e.addClass("nested");var i=Craft.ui.createLightswitchField({label:Craft.t("app","Enabled for all sites"),name:this.namespaceInputName("enabled")}).insertBefore(e);i.find("label").css("font-weight","bold"),this.$globalLightswitch=i.find(".lightswitch"),this.settings.revisionId||this._showField(i);var s=Object.values(this.settings.siteStatuses),n=s.includes(!0),a=s.includes(!1),r=n&&a?"-":n?"1":"",o=encodeURIComponent(this.namespaceInputName("enabledForSite[".concat(this.settings.siteId,"]")))+"="+(this.settings.enabledForSite?"1":"");this.$siteLightswitches=e.find(".lightswitch").on("change",this._updateGlobalStatus.bind(this)),this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));for(var l=encodeURIComponent(this.namespaceInputName("enabled"))+"=".concat(r),h=0;h",{text:Craft.t("app","Add a site..."),class:"visually-hidden",id:a}),o=Craft.ui.createSelect({options:[{label:Craft.t("app","Add a site…")}].concat((i=n.map((function(t){return{label:t.name,value:t.id}})),function(t){if(Array.isArray(t))return e(t)}(i)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||t(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())),labelledBy:a}).addClass("fullwidth");this.$additionalSiteField=Craft.ui.createField(o,{}).addClass("nested add").appendTo(this.$siteStatusPane),r.prependTo(this.$additionalSiteField);var l=o.find("select");l.on("change",(function(){var t=parseInt(l.val()),e=Craft.sites.find((function(e){return e.id===t}));if(e){var i=s.settings.additionalSites.find((function(t){return t.siteId==e.id}));s._createSiteStatusField(e,i.enabledByDefault),s._updateGlobalStatus(),l.val("").find('option[value="'.concat(t,'"]')).remove(),null===s.newSiteIds&&(s.newSiteIds=[]),s.siteIds.push(t),s.newSiteIds.push(t),1===l.find("option").length&&s._removeField(s.$additionalSiteField)}})),this._showField(this.$additionalSiteField)}},showStatusHud:function(t){var e;this.failed?(e=''.concat(this._saveFailMessage()," "),this.httpError&&(e+=''.concat(Craft.escapeHtml(this.httpError)," ")),400===this.httpStatus&&(e+='"))):e="".concat(this._saveSuccessMessage()," ");var i=new Garnish.HUD(t,e,{hudClass:"hud revision-status-hud",onHide:function(){i.destroy()}});i.$mainContainer.find(".refresh-btn").on("click",(function(){window.location.reload()}))},_saveSuccessMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes have been stored."):Craft.t("app","The draft has been saved.")},_saveFailMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes could not be stored."):Craft.t("app","The draft could not be saved.")},spinners:function(){return this.preview?this.$spinner.add(this.preview.$spinner):this.$spinner},showSpinner:function(){this.spinners().removeClass("hidden")},hideSpinner:function(){this.spinners().addClass("hidden")},statusIcons:function(){return this.preview?this.$statusIcon.add(this.preview.$statusIcon):this.$statusIcon},statusMessage:function(){return this.preview?this.$statusMessage.add(this.preview.$statusMessage):this.$statusMessage},createEditMetaBtn:function(){var t=this.$container.find(".context-btngroup");this.$editMetaBtn=$("",{type:"button",class:"btn edit icon","aria-expanded":"false","aria-label":Craft.t("app","Edit draft settings"),title:Craft.t("app","Edit draft settings")}).appendTo(t),t.find(".btngroup-btn-last").removeClass("btngroup-btn-last"),this.addListener(this.$editMetaBtn,"click","showMetaHud")},createPreviewLink:function(t,e){var i=this,s=$("",{href:this.getTokenizedPreviewUrl(t.url,null,!1),text:e||Craft.t("app","View"),target:"_blank",data:{targetUrl:t.url,targetLabel:t.label}});return this.addListener(s,"click",(function(){setTimeout((function(){i.activatePreviewToken()}),1)})),this.previewLinks.push(s),s},updatePreviewLinks:function(){var t=this;this.previewLinks.forEach((function(e){t.updatePreviewLinkHref(e),t.activatedPreviewToken&&t.removeListener(e,"click")}))},updatePreviewLinkHref:function(t){t.attr("href",this.getTokenizedPreviewUrl(t.data("targetUrl"),null,!1))},activatePreviewToken:function(){this.settings.isLive||(this.activatedPreviewToken=!0,this.updatePreviewLinks())},createShareMenu:function(t){var e=this,i=$("",{type:"button",class:"view-btn btn menubtn",text:Craft.t("app","View")}).appendTo(t),s=$("",{class:"menu"}).appendTo(t),n=$("").appendTo(s);this.settings.previewTargets.forEach((function(t){$("").append(e.createPreviewLink(t,t.label)).appendTo(n)})),new Garnish.MenuBtn(i)},getPreviewTokenParams:function(){var t={elementType:this.settings.elementType,canonicalId:this.settings.canonicalId,siteId:this.settings.siteId,revisionId:this.settings.revisionId,previewToken:this.settings.previewToken};return this.settings.draftId&&!this.settings.isProvisionalDraft&&(t.draftId=this.settings.draftId),t},getPreviewToken:function(){var t=this;return this.previewTokenQueue.push((function(){return new Promise((function(e,i){t.activatedPreviewToken?e(t.settings.previewToken):Craft.sendActionRequest("POST","preview/create-token",{data:t.getPreviewTokenParams()}).then((function(){t.activatePreviewToken(),e(t.settings.previewToken)})).catch(i)}))}))},getTokenizedPreviewUrl:function(t,e,i){var s=this;void 0===i&&(i=!0);var n={};if(!e&&this.settings.isLive||(n[e||"x-craft-preview"]=Craft.randomString(10)),this.settings.siteToken&&(n[Craft.siteToken]=this.settings.siteToken),this.settings.isLive){var a=Craft.getUrl(t,n);return i?new Promise((function(t){t(a)})):a}if(!this.settings.previewToken)throw"Missing preview token";n[Craft.tokenParam]=this.settings.previewToken;var r=Craft.getUrl(t,n);if(this.activatedPreviewToken)return i?new Promise((function(t){t(r)})):r;if(i)return new Promise((function(t,e){s.getPreviewToken().then((function(){t(r)})).catch(e)}));var o=this.getPreviewTokenParams();return o.redirect=r,Craft.getActionUrl("preview/create-token",o)},getPreview:function(){var t=this;return this.preview||(this.preview=new Craft.Preview(this),this.enableAutosave||(this.preview.on("open",(function(){t.enableAutosave=!0,t.listenForChanges()})),this.preview.on("close",(function(){t.enableAutosave=!1,t.stopListeningForChanges();var e=t.statusIcons();e.hasClass("checkmark-icon")&&e.addClass("hidden")}))),this.preview.on("close",(function(){t.scrollY&&(window.scrollTo(0,t.scrollY),t.scrollY=null)}))),this.preview},openPreview:function(){var t=this;Garnish.hasAttr(this.$previewBtn,"aria-disabled")||(this.$previewBtn.attr("aria-disabled",!0),this.$previewBtn.addClass("loading"),this.queue.push((function(){return new Promise((function(e,i){t.openingPreview=!0,t.ensureIsDraftOrRevision(!0).then((function(){t.scrollY=window.scrollY,t.$previewBtn.removeAttr("aria-disabled"),t.$previewBtn.removeClass("loading"),t.getPreview().open(),t.openingPreview=!1,e()})).catch(i)}))})))},ensureIsDraftOrRevision:function(t){var e=this;return new Promise((function(i,s){if(e.settings.draftId||e.settings.revisionId)i();else{if(t&&e.serializeForm(!0)===e.$container.data("initialSerializedValue"))return void i();e.createDraft().then(i).catch(s)}}))},serializeForm:function(t){var e=this.$container.serialize();if(this.isPreviewActive()&&(e=e.replace("__PREVIEW_FIELDS__=1",this.preview.$editor.serialize())),t&&!this.settings.isUnpublishedDraft){var i=this.namespaceInputName("action"),s=this.namespaceInputName("redirect");e=(e=e.replace(new RegExp("&".concat(Craft.escapeRegex(i),"=[^&]*")),"")).replace(new RegExp("&".concat(Craft.escapeRegex(s),"=[^&]*")),"")}return e},checkForm:function(t){var e=this;return this.queue.push((function(){return new Promise((function(i,s){if(e.settings.revisionId||e.pauseLevel>0||!e.enableAutosave||!e.settings.canCreateDrafts)i();else if(clearTimeout(e.timeout),e.timeout=null,void 0!==e.$container.data("initialSerializedValue")){var n=e.serializeForm(!0);t||n!==(e.lastSerializedValue||e.$container.data("initialSerializedValue"))?e.saveDraft(n).then(i).catch((function(t){console.warn("Couldn’t save draft:",t),s(t)})):i()}else e.timeout=setTimeout(e.checkForm.bind(e),500)}))}))},isPreviewActive:function(){return this.preview&&this.preview.isActive},createDraft:function(){var t=this;return this.queue.push((function(){return new Promise((function(e,i){t.saveDraft(t.serializeForm(!0)).then(e).catch(i)}))}))},saveDraft:function(t){var e=this;return new Promise((function(i,s){if(e.submittingForm)s("Form already being submitted.");else{e.lastSerializedValue=t,e.failed=!1,e.httpStatus=null,e.httpError=null,e.cancelToken=axios.CancelToken.source(),e.statusIcons().velocity("stop").css("opacity","").removeClass("hidden invisible checkmark-icon alert-icon fade-out").addClass("hidden"),e.statusMessage().empty(),e.$saveMetaBtn&&e.$saveMetaBtn.addClass("active");var n,a,r,o=[],l=e.prepareData(t,e.settings.isUnpublishedDraft?null:function(t,e){e.length&&o.push(decodeURIComponent(e[0].split("=")[0]))}),h=(n={},a=e.namespaceInputName("visibleLayoutElements"),r=e.settings.visibleLayoutElements,a in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n);!e.settings.isProvisionalDraft&&e.settings.draftId||(h[e.namespaceInputName("provisional")]=1);var d=e.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");d&&(h[e.namespaceInputName("selectedTab")]=d),l+="&".concat($.param(h)),Craft.sendActionRequest("POST","elements/save-draft",{cancelToken:e.cancelToken.token,headers:e._saveHeaders,data:l}).then((function(s){var n=e.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");e._afterSaveDraft();var a=!e.settings.draftId;a&&(e.settings.isProvisionalDraft=!0,e.$revisionLabel.append($("",{text:" — ".concat(Craft.t("app","Edited"))}))),e.isFullPage&&(s.data.title&&e.$container.find(".screen-title").text(s.data.title),s.data.docTitle&&(document.title=s.data.docTitle)),e.settings.isProvisionalDraft||(e.$revisionLabel.text(s.data.draftName),e.settings.draftName=s.data.draftName);var r=e.$revisionBtn.data("menubtn")?e.$revisionBtn.data("menubtn").menu:null;for(var l in e.newSiteIds&&(r||(e.$revisionBtn.removeClass("disabled").addClass("menubtn"),new Garnish.MenuBtn(e.$revisionBtn),(r=e.$revisionBtn.data("menubtn").menu).$container.removeClass("hidden")),e.newSiteIds.forEach((function(t){var i=r.$options.filter("[data-site-id=".concat(t,"]")),s=e.settings.additionalSites.find((function(e){return e.siteId==t}));s&&void 0!==s.enabledByDefault&&!s.enabledByDefault||i.find(".status").removeClass("disabled").addClass("enabled"),i.parent().removeClass("hidden").closest(".site-group").removeClass("hidden")})),r.$container.find(".revision-hr").removeClass("hidden"),e.newSiteIds=null),e.settings.isProvisionalDraft?a&&(e.$container.find("input.action-input").attr("value","elements/apply-draft"),e.settings.draftId=s.data.draftId,e.settings.isLive=!1,e.previewToken=null,e.initForProvisionalDraft()):r&&(r.$options.filter(".sel").find(".draft-name").text(s.data.draftName),r.$options.filter(".sel").find(".draft-meta").text(s.data.creator?Craft.t("app","Saved {timestamp} by {creator}",{timestamp:s.data.timestamp,creator:s.data.creator}):Craft.t("app","Saved {timestamp}",{timestamp:s.data.timestamp}))),s.data.previewTargets&&JSON.stringify(s.data.previewTargets)!==JSON.stringify(e.settings.previewTargets)&&e.updatePreviewTargets(s.data.previewTargets),a&&(e.updatePreviewLinks(),e.trigger("createProvisionalDraft")),e.$nameTextInput&&e.checkMetaValues(),s.data.duplicatedElements)l!=e.settings.canonicalId&&s.data.duplicatedElements.hasOwnProperty(l)&&(e.duplicatedElements[l]=s.data.duplicatedElements[l]);for(var h=s.data.modifiedAttributes.map((function(t){return t=e.namespaceInputName(t),'[name="'.concat(t,'"],[name^="').concat(t,'["]')})).concat(o.map((function(t){return'[name="'.concat(t,'"]')}))),c=$(h.join(",")).parents().filter(".flex-fields > .field:not(:has(> .status-badge))"),u=0;u",{class:"status-badge modified",title:Craft.t("app","This field has been modified.")}).append($("",{class:"visually-hidden",html:Craft.t("app","This field has been modified.")})));for(var p=e.serializeForm(!0)===t,f=$(),g={},m=!1,v=0;v",{id:e.namespaceId(b.id),class:"flex-fields","data-id":b.id,"data-layout-tab":b.uid}),b.id!==d&&C.addClass("hidden"),C.appendTo(e.$contentContainer)),f=f.add(C);for(var _=0;_",{class:"hidden","data-layout-element":w.uid,"data-layout-element-placeholder":""});I.length?I.replaceWith(T):T.appendTo(C),m=!0}}}}var x,P=e.$contentContainer.children("[data-layout-tab]").not(f).not('[data-layout-tab=""]');if(P.length&&(P.remove(),m=!0),f.filter(":not(.hidden)").length||f.first().removeClass("hidden"),e.settings.visibleLayoutElements=g,e.isFullPage?(Craft.cp.updateTabs(s.data.tabs),x=Craft.cp.tabManager):(e.slideout.updateTabs(s.data.tabs),x=e.slideout.tabManager),d&&n&&d!==n){var B=x.$tabs.filter('[data-id="'.concat(n,'"]'));B.length?x.selectTab(B):x.selectTab(x.$tabs.first())}Craft.appendHeadHtml(s.data.headHtml),Craft.appendBodyHtml(s.data.bodyHtml),m&&(s.data.initialDeltaValues&&Object.assign(e.$container.data("initial-delta-values"),s.data.initialDeltaValues),p&&(e.lastSerializedValue=e.serializeForm(!0))),e.handleDismissibleTips(),e.settings.updatedTimestamp=s.data.updatedTimestamp,e.settings.canonicalUpdatedTimestamp=s.data.canonicalUpdatedTimestamp,e.afterUpdate(t),Craft.broadcaster&&Craft.broadcaster.postMessage({pageId:Craft.pageId,event:"saveDraft",canonicalId:e.settings.canonicalId,draftId:e.settings.draftId,isProvisionalDraft:e.settings.isProvisionalDraft}),i()})).catch((function(t){e._afterSaveDraft(),e.ignoreFailedRequest||(e.failed=!0,t&&t.response&&(e.httpStatus=t.response.status,e.httpError=t.response.data?t.response.data.message:null),e._showFailStatus(),s(t)),e.ignoreFailedRequest=!1}))}}))},_afterSaveDraft:function(){this.$saveMetaBtn&&this.$saveMetaBtn.removeClass("active")},_showFailStatus:function(){this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden checkmark-icon").addClass("alert-icon"),this.setStatusMessage(this._saveFailMessage())},prepareData:function(t,e){t=Craft.findDeltaData(this.$container.data("initialSerializedValue"),t,this.$container.data("delta-names"),e,this.$container.data("initial-delta-values"),this.$container.data("modified-delta-names")),t=this.swapDuplicatedElementIds(t);var i={};return this.settings.draftId&&(i[this.namespaceInputName("draftId")]=this.settings.draftId,this.settings.isProvisionalDraft&&(i[this.namespaceInputName("provisional")]=1)),null!==this.settings.draftName&&(i[this.namespaceInputName("draftName")]=this.settings.draftName),$.isEmptyObject(i)||(t+="&".concat($.param(i))),t},get _saveHeaders(){var t={"content-type":"application/x-www-form-urlencoded"};return this.namespace&&(t["X-Craft-Namespace"]=this.namespace),t},swapDuplicatedElementIds:function(t){var e=this,i=Object.keys(this.duplicatedElements).join("|");if(""===i)return t;var s=encodeURIComponent("["),n=encodeURIComponent("]"),a=this.namespaceInputName("fields");for(a=this.isFullPage?Craft.escapeRegex(a):encodeURIComponent(a);t!==(t=t.replace(new RegExp("(&".concat(a).concat(s,"[^=]+").concat(n).concat(s,")(").concat(i,")(").concat(n,")"),"g"),(function(t,i,s,n){return e._filterFieldInputName(i)?i+e.duplicatedElements[s]+n:t})).replace(new RegExp("&(".concat(a).concat(s,"[^=]+)=(").concat(i,")\\b"),"g"),(function(t,i,a){return!e._filterFieldInputName(i)||i.match(new RegExp("".concat(s,"(enabled|sortOrder|type|typeId)").concat(n,"$")))?t:"&".concat(i,"=").concat(e.duplicatedElements[a])}))););return t},_filterFieldInputName:function(t){var e=encodeURIComponent("["),i=encodeURIComponent("]"),s=t.match(new RegExp("(\\bfields|".concat(e,"fields").concat(i,")").concat(e,".+?").concat(i),"g"));if(!s)throw"Unexpected input name: ".concat(t);var n=s[s.length-1].match(new RegExp("(?:\\bfields|".concat(e,"fields").concat(i,")").concat(e,"(.+?)").concat(i)))[1];return Craft.fieldsWithoutContent.includes(n)},updatePreviewTargets:function(t){var e=this;t.forEach((function(t){var i=e.settings.previewTargets.find((function(e){return e.label===t.label}));i&&(i.url=t.url);var s=e.previewLinks.find((function(e){return e.data("targetLabel")===t.label}));s&&(s.data("targetUrl",t.url),e.updatePreviewLinkHref(s))}))},afterUpdate:function(t){this.$container.data("initialSerializedValue",t),this.$container.data("initial-delta-values",{});var e=this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden").addClass("checkmark-icon");this.setStatusMessage(this._saveSuccessMessage()),Craft.autosaveDrafts||e.velocity("stop").velocity({opacity:0},{delay:2e3,complete:function(){e.addClass("hidden")}}),this.trigger("update")},setStatusMessage:function(t){this.statusIcons().attr("title",t),this.statusMessage().empty().append($("",{class:"visually-hidden",text:t}))},showMetaHud:function(){this.metaHud?this.metaHud.show():(this.createMetaHud(),this.onMetaHudShow()),Garnish.isMobileBrowser(!0)||this.$nameTextInput.trigger("focus")},createMetaHud:function(){var t=$(""),e=$(' ").appendTo(t),i=$('').appendTo(e);this.$nameTextInput=$('').appendTo(i).val(this.settings.draftName);var s=$('').appendTo(t);$('').appendTo(s),this.$saveMetaBtn=$("",{type:"submit",class:"btn submit disabled","aria-disabled":"true",text:Craft.t("app","Save")}).appendTo(s),this.metaHud=new Garnish.HUD(this.$editMetaBtn,t,{onSubmit:this.saveMeta.bind(this)}),this.addListener(this.$nameTextInput,"input","checkMetaValues"),this.metaHud.on("show",this.onMetaHudShow.bind(this)),this.metaHud.on("hide",this.onMetaHudHide.bind(this)),this.metaHud.on("escape",this.onMetaHudEscape.bind(this))},onMetaHudShow:function(){this.$editMetaBtn.addClass("active"),this.$editMetaBtn.attr("aria-expanded","true")},onMetaHudHide:function(){this.$editMetaBtn.removeClass("active"),this.$editMetaBtn.attr("aria-expanded","false"),Garnish.focusIsInside(this.metaHud.$body)&&this.$editMetaBtn.trigger("focus")},onMetaHudEscape:function(){this.$nameTextInput.val(this.settings.draftName)},checkMetaValues:function(){return this.$nameTextInput.val()&&this.$nameTextInput.val()!==this.settings.draftName?(this.$saveMetaBtn.removeClass("disabled"),this.$saveMetaBtn.removeAttr("aria-disabled"),!0):(this.$saveMetaBtn.addClass("disabled"),this.$saveMetaBtn.attr("aria-disabled","true"),!1)},shakeMetaHud:function(){Garnish.shake(this.metaHud.$hud)},saveMeta:function(){var t=this;return new Promise((function(e,i){if(!t.checkMetaValues())return t.shakeMetaHud(),void i();t.settings.draftName=t.$nameTextInput.val(),t.metaHud.hide(),t.checkForm(!0).then(e).catch(i)}))},handleSubmit:function(t){var e=this;if(t.preventDefault(),t.stopPropagation(),!this.submittingForm)if(!this.settings.draftId||this.settings.isUnpublishedDraft||this.settings.isProvisionalDraft||void 0!==t.autosave&&!t.autosave||!(t.saveShortcut||t.customTrigger&&"elements/save-draft"===t.customTrigger.data("action"))||!this.enableAutosave){this.submittingForm=!0,Craft.cp.$confirmUnloadForms=Craft.cp.$confirmUnloadForms.not(this.$container),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.trigger("beforeSubmit");var i=this.prepareData(this.serializeForm(!1));if(this.isFullPage){this.stopListeningForChanges();var s=Craft.createForm(i);s.appendTo(Garnish.$bod),s.submit()}else this.slideout.showSubmitSpinner(),Craft.sendActionRequest("POST",null,{headers:this._saveHeaders,data:i}).then((function(t){e.slideout.handleSubmitResponse(t)})).catch((function(t){e.slideout.handleSubmitError(t)})).finally((function(){e.submittingForm=!1,e.slideout.hideSubmitSpinner()}))}else this.checkForm(!0)},handleDismissibleTips:function(){var t=this;this.addListener(this.tipDismissBtn,"click",(function(e){t.hideTip(e)}))},getHiddenTipsUids:function(){return Craft.getLocalStorage("dismissedTips",[])},setHiddenTipsUids:function(t){Craft.setLocalStorage("dismissedTips",t)},hideTip:function(t){var e=t.target;if(e){var i=$(e).closest(".readable");if(i.length){var s=i.data("layout-element");if(i.remove(),"undefined"!=typeof Storage){var n=this.getHiddenTipsUids();n.includes(s)||(n.push(s),this.setHiddenTipsUids(n))}}}},_checkActivity:function(){var t=this;this.queue.push((function(){return new Promise((function(e,i){Craft.sendActionRequest("POST","elements/recent-activity",{params:{dontExtendSession:1},data:{elementType:t.settings.elementType,elementId:t.settings.canonicalId,draftId:t.settings.draftId,siteId:t.settings.siteId,provisional:t.settings.isProvisionalDraft}}).then((function(i){var s=i.data,n=null;if(t.activityTooltips&&(n=Object.values(t.activityTooltips).find((function(t){return t.$trigger[0]===document.activeElement}))),t.$activityContainer.html("").attr("role","region").attr("aria-label",Craft.t("app","Recent Activity")),s.activity.length){$("",{class:"visually-hidden",text:Craft.t("app","Recent Activity")}).appendTo(t.$activityContainer);for(var a=$("").appendTo(t.$activityContainer),r=0;r").appendTo(a),h=$("",{type:"button",class:"activity-btn","aria-label":Craft.t("app","{name} active, more info",{name:o.userName}),"aria-expanded":"false"}).appendTo(l),d=$(o.userThumb).addClass("elementthumb").css("z-index",s.activity.length-r).appendTo(h);d.find("img,svg").attr("role","presentation"),Craft.cp.elementThumbLoader.load(l),d.find("title").remove(),void 0===t.activityTooltips[o.userId]?t.activityTooltips[o.userId]=new Craft.Tooltip(h,o.message):(t.activityTooltips[o.userId].$trigger=h,t.activityTooltips[o.userId].message=o.message,t.activityTooltips[o.userId]===n&&t.activityTooltips[o.userId].$trigger.focus())}}for(var c=function(){var e=p[u];s.activity.find((function(t){return t.userId==e}))||t.activityTooltips[e].hide()},u=0,p=Object.keys(t.activityTooltips);u",{class:"hidden",name:t.namespaceInputName(e),value:i.settings.saveParams[e]}).appendTo(i.$container)}))}))})),this.on("submit",(function(t){if(Craft.broadcaster&&Craft.broadcaster.postMessage({event:"saveElement",id:t.response.data.element.id}),i.settings.onSaveElement){var e=Object.assign({},t.response.data,t.response.data.element);delete e.element,delete e.modelName,delete e.message,i.settings.onSaveElement(e)}Craft.Preview.refresh()}))},getParams:function(){var t={};return this.settings.elementType&&(t.elementType=this.settings.elementType),this.settings.elementId?t.elementId=this.settings.elementId:this.$element&&this.$element.data("id")&&(t.elementId=this.$element.data("id")),this.settings.draftId?t.draftId=this.settings.draftId:this.$element&&this.$element.data("draft-id")?t.draftId=this.$element.data("draft-id"):this.settings.revisionId?t.revisionId=this.settings.revisionId:this.$element&&this.$element.data("revision-id")&&(t.revisionId=this.$element.data("revision-id")),this.settings.siteId?t.siteId=this.settings.siteId:this.$element&&this.$element.data("site-id")&&(t.siteId=this.$element.data("site-id")),this.settings.prevalidate&&(t.prevalidate=1),t},handleSubmit:function(t){this.$container.data("elementEditor").handleSubmit(t)}},{defaults:{elementId:null,draftId:null,revisionId:null,elementType:null,siteId:null,prevalidate:!1,saveParams:{},onSaveElement:null,validators:[]}})},7998:function(){Craft.ElementFieldSettings=Garnish.Base.extend({allowMultipleSources:null,$maintainHierarchyField:null,$maintainHierarchyInput:null,$sourcesField:null,$sourceSelect:null,$branchLimitField:null,$maxRelationsField:null,$minRelationsField:null,init:function(t,e,i,s,n,a){this.allowMultipleSources=t,this.$maintainHierarchyField=$("#".concat(e)),this.$maintainHierarchyInput=this.$maintainHierarchyField.find('input[type="checkbox"]'),this.$sourcesField=$("#".concat(i)),this.allowMultipleSources||(this.$sourceSelect=this.$sourcesField.find("select")),this.$branchLimitField=$("#".concat(s)),this.$minRelationsField=$("#".concat(n)),this.$maxRelationsField=$("#".concat(a)),this.updateLimitFields(),this.addListener(this.$maintainHierarchyInput,"change","updateLimitFields"),this.allowMultipleSources?this.$sourcesField.find("[type=checkbox]").each(function(t,e){this.addListener($(e),"change","updateMaintainHierarchyField")}.bind(this)):this.addListener(this.$sourceSelect,"change","updateMaintainHierarchyField"),this.updateMaintainHierarchyField()},updateLimitFields:function(){!this.$maintainHierarchyField.hasClass("hidden")&&this.$maintainHierarchyInput.is(":checked")?(this.$minRelationsField.addClass("hidden"),this.$maxRelationsField.addClass("hidden"),this.$branchLimitField.removeClass("hidden")):(this.$branchLimitField.addClass("hidden"),this.$minRelationsField.removeClass("hidden"),this.$maxRelationsField.removeClass("hidden"))},updateMaintainHierarchyField:function(){var t;if(this.allowMultipleSources){var e=this.$sourcesField.find('[type="checkbox"]:checked');t=1===e.length&&e.data("structure-id")}else t=this.$sourceSelect.children("option:selected").data("structure-id");t?this.$maintainHierarchyField.removeClass("hidden"):this.$maintainHierarchyField.addClass("hidden"),this.updateLimitFields()}})},8895:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);ii&&n",{sizes:e.attr("data-sizes"),srcset:e.attr("data-srcset"),alt:e.attr("data-alt")||""});this.addListener(i,"load,abort,error","loadNext"),i.appendTo(e),picturefill({elements:[i[0]]})}}}else this.deactivate()},loadNextIfRemoved:function(){return!(!this.container||document.body.contains(this.container)||(this.loadNext(),0))}})},4233:function(){Craft.ElevatedSessionForm=Garnish.Base.extend({$form:null,inputs:null,init:function(t,e){if(this.$form=$(t),void 0!==e){this.inputs=[],e=$.makeArray(e);for(var i=0;i=Craft.ElevatedSessionManager.minSafeElevatedSessionTimeout?e.callback():e.showPasswordModal()})).catch((function(){e.fetchingTimeout=!1}))},showPasswordModal:function(){var t=this;if(this.passwordModal)this.passwordModal.show();else{var e=$(''),i=$(''+Craft.t("app","Enter your password to continue.")+" ").appendTo(e),s=$('').appendTo(i),n=$(' ').appendTo(s),a=$(' ').appendTo(n),r=$(" | ").appendTo(n),o=$(' ').appendTo(a);this.$passwordInput=$(' ').appendTo(o),this.$submitBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Submit"),spinner:!0}).appendTo(r),this.$errorPara=$(' ').appendTo(i),this.passwordModal=new Garnish.Modal(e,{closeOtherModals:!1,onFadeIn:function(){setTimeout(t.focusPasswordInput.bind(t),100)},onFadeOut:function(){t.$passwordInput.val("")}}),new Craft.PasswordInput(this.$passwordInput,{onToggleInput:function(e){t.$passwordInput=e}}),this.addListener(this.$passwordInput,"input","validatePassword"),this.addListener(e,"submit","submitPassword")}},focusPasswordInput:function(){Garnish.isMobileBrowser(!0)||this.$passwordInput.trigger("focus")},validatePassword:function(){return this.$passwordInput.val().length>=6?(this.$submitBtn.removeClass("disabled"),!0):(this.$submitBtn.addClass("disabled"),!1)},submitPassword:function(t){var e=this;if(t&&t.preventDefault(),this.validatePassword()){this.$submitBtn.addClass("loading"),this.clearLoginError();var i={currentPassword:this.$passwordInput.val()};Craft.sendActionRequest("POST","users/start-elevated-session",{data:i}).then((function(t){e.$submitBtn.removeClass("loading"),e.passwordModal.hide(),e.callback()})).catch((function(t){var i=t.response;e.$submitBtn.removeClass("loading"),e.showPasswordError(i.data.message||Craft.t("app","Incorrect password.")),Garnish.shake(e.passwordModal.$container),e.focusPasswordInput()}))}},showPasswordError:function(t){null==t&&(t=Craft.t("app","A server error occurred.")),this.$errorPara.text(t),this.passwordModal.updateSizeAndPosition()},clearLoginError:function(){this.showPasswordError("")}},{minSafeElevatedSessionTimeout:5}),Craft.elevatedSessionManager=new Craft.ElevatedSessionManager},1402:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i ');var r="new-entry-menu-"+Craft.randomString(10);if(a){var o="index"===s.settings.context?Craft.t("app","New entry"):Craft.t("app","New {section} entry",{section:a.name}),l="index"===s.settings.context?Craft.t("app","New entry in the {section} section",{section:a.name}):o,h="index"===s.settings.context?"link":null;s.$newEntryBtn=Craft.ui.createButton({label:o,ariaLabel:l,spinner:!0,role:h}).addClass("submit add icon").appendTo(s.$newEntryBtnGroup),s.addListener(s.$newEntryBtn,"click mousedown",(function(t){if("index"===s.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)){var e={};i&&(e.type=i),window.open(Craft.getUrl("entries/".concat(a.handle,"/new"),e))}else"click"===t.type&&s._createEntry(a.id,i)})),s.publishableSections.length>1&&(n=$(" ",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":r,"data-disclosure-trigger":"","aria-label":Craft.t("app","New entry, choose a section")}).appendTo(s.$newEntryBtnGroup))}else s.$newEntryBtn=n=Craft.ui.createButton({label:Craft.t("app","New entry"),ariaLabel:Craft.t("app","New entry, choose a section"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",r).attr("data-disclosure-trigger","").appendTo(s.$newEntryBtnGroup);if(s.addButton(s.$newEntryBtnGroup),n){var d,c=$(" ",{id:r,class:"menu menu--disclosure"}).appendTo(s.$newEntryBtnGroup),u=$(" ").appendTo(c),p=function(e,i){var s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!s){if(Array.isArray(e)||(s=function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){s&&(e=s);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(e)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}(s.publishableSections);try{var f=function(){var t=d.value,e="index"===s.settings.context?"link":"button";if("index"===s.settings.context&&-1!==$.inArray(s.siteId,t.sites)||"index"!==s.settings.context&&t!==a){var i=$(" ").appendTo(u),r=$(" ",{role:"button"===e?"button":null,href:Craft.getUrl("entries/".concat(t.handle,"/new")),type:"button"===e?"button":null,text:Craft.t("app","New {section} entry",{section:t.name})}).appendTo(i);s.addListener(r,"activate",(function(){n.data("trigger").hide(),s._createEntry(t.id)})),"button"===e&&s.addListener(r,"keydown",(function(e){e.keyCode===Garnish.SPACE_KEY&&(e.preventDefault(),n.data("trigger").hide(),s._createEntry(t.id))}))}};for(p.s();!(d=p.n()).done;)f()}catch(t){p.e(t)}finally{p.f()}new Garnish.DisclosureMenu(n)}}(),"index"===this.settings.context)){var n="entries";e&&(n+="/"+e),Craft.setPath(n)}},_createEntry:function(t,e){var i=this;if(this.$newEntryBtn.hasClass("loading"))console.warn("New entry creation already in progress.");else{var s=this.publishableSections.find((function(e){return e.id===t}));if(!s)throw"Invalid section ID: ".concat(t);this.$newEntryBtn.addClass("loading"),Craft.sendActionRequest("POST","entries/create",{data:{siteId:this.siteId,section:s.handle,type:e}}).then((function(t){var e=t.data;"index"===i.settings.context?document.location.href=Craft.getUrl(e.cpEditUrl,{fresh:1}):Craft.createElementEditor(i.elementType,{siteId:i.siteId,elementId:e.entry.id,draftId:e.entry.draftId,params:{fresh:1}}).on("submit",(function(){i.clearSearch(),i.setSelectedSortAttribute("dateCreated","desc"),i.selectElementAfterUpdate(e.entry.id),i.updateElements()}))})).finally((function(){i.$newEntryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Entry",Craft.EntryIndex)},8201:function(){Craft.FieldLayoutDesigner=Garnish.Base.extend({$container:null,$configInput:null,$tabContainer:null,$newTabBtn:null,$sidebar:null,$libraryToggle:null,$selectedLibrary:null,$fieldLibrary:null,$uiLibrary:null,$uiLibraryElements:null,$fieldSearch:null,$clearFieldSearchBtn:null,$fieldGroups:null,$fields:null,tabGrid:null,elementDrag:null,_config:null,init:function(t,e){var i=this;this.$container=$(t),this.setSettings(e,Craft.FieldLayoutDesigner.defaults),this.$configInput=this.$container.children("input[data-config-input]"),this._config=JSON.parse(this.$configInput.val()),this._config.tabs||(this._config.tabs=[]);var s=this.$container.children(".fld-workspace");this.$tabContainer=s.children(".fld-tabs"),this.$newTabBtn=s.children(".fld-new-tab-btn"),this.$sidebar=this.$container.children(".fld-sidebar"),this.$fieldLibrary=this.$selectedLibrary=this.$sidebar.children(".fld-field-library");var n=this.$fieldLibrary.children(".search");this.$fieldSearch=n.children("input"),this.$clearFieldSearchBtn=n.children(".clear"),this.$fieldGroups=this.$sidebar.find(".fld-field-group"),this.$fields=this.$fieldGroups.children(".fld-element"),this.$uiLibrary=this.$sidebar.children(".fld-ui-library"),this.$uiLibraryElements=this.$uiLibrary.children(),this.tabGrid=new Craft.Grid(this.$tabContainer,{itemSelector:".fld-tab",minColWidth:264,fillMode:"grid",snapToGrid:24});for(var a=this.$tabContainer.children(),r=0;r \n \n \n \n')).appendTo(this.$tabContainer);this.tabGrid.addItems(e),this.tabDrag.addItems(e),this.initTab(e).updatePositionInConfig()}}},get config(){return this._config},set config(t){this._config=t,this.$configInput.val(JSON.stringify(t))},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)}},{defaults:{customizableTabs:!0,customizableUi:!0},createSlideout:function createSlideout(contents,js){var $body=$("",{class:"fld-element-settings-body"});$("",{class:"fields",html:contents}).appendTo($body);var $footer=$("",{class:"fld-element-settings-footer"});$("",{class:"flex-grow"}).appendTo($footer);var $cancelBtn=Craft.ui.createButton({label:Craft.t("app","Close"),spinner:!0}).appendTo($footer);Craft.ui.createSubmitButton({class:"secondary",label:Craft.t("app","Apply"),spinner:!0}).appendTo($footer);var $contents=$body.add($footer),slideout=new Craft.Slideout($contents,{containerElement:"form",containerAttributes:{action:"",method:"post",novalidate:"",class:"fld-element-settings"}});return slideout.on("open",(function(){Garnish.requestAnimationFrame((function(){slideout.$container.find(".text:first").trigger("focus")}))})),$cancelBtn.on("click",(function(){slideout.close()})),js&&eval(js),Craft.initUiElements(slideout.$container),slideout}}),Craft.FieldLayoutDesigner.Tab=Garnish.Base.extend({designer:null,uid:null,$container:null,slideout:null,destroyed:!1,init:function(t,e){this.designer=t,this.$container=e,this.$container.data("fld-tab",this),this.uid=this.$container.data("uid"),this.uid||(this.uid=Craft.uuid(),this.config={uid:this.uid,name:this.$container.find(".tabs .tab span").text(),elements:[]},this.$container.data("settings-namespace",this.designer.$container.data("new-tab-settings-namespace").replace(/\bTAB_UID\b/g,this.uid)),this.$container.data("settings-html",this.designer.$container.data("new-tab-settings-html").replace(/\bTAB_UID\b/g,this.uid).replace(/\bTAB_NAME\b/g,this.config.name)),this.$container.data("settings-js",this.designer.$container.data("new-tab-settings-js").replace(/\bTAB_UID\b/g,this.uid))),this.designer.settings.customizableTabs&&(this.settingsNamespace=this.$container.data("settings-namespace"),this.createMenu());for(var i=this.$container.children(".fld-tabcontent").children(),s=0;s').insertAfter(e).append($("").append($("").append($("",{"data-action":"settings",text:Craft.t("app","Settings")}))).append($("").append($("",{"data-action":"remove",text:Craft.t("app","Remove")})))).append($(" ")).append($("").append($("").append($("",{"data-action":"moveLeft",text:Craft.t("app","Move to the left")}))).append($("").append($("",{"data-action":"moveRight",text:Craft.t("app","Move to the right")}))));var i=new Garnish.MenuBtn(e,{onOptionSelect:this.onTabOptionSelect.bind(this)});i.menu.on("show",(function(){t.$container.prev(".fld-tab").length?i.menu.$container.find("[data-action=moveLeft]").removeClass("disabled"):i.menu.$container.find("[data-action=moveLeft]").addClass("disabled"),t.$container.next(".fld-tab").length?i.menu.$container.find("[data-action=moveRight]").removeClass("disabled"):i.menu.$container.find("[data-action=moveRight]").addClass("disabled")}))},onTabOptionSelect:function(t){if(this.designer.settings.customizableTabs)switch($(t).data("action")){case"settings":this.slideout?this.slideout.open():this.createSettings();break;case"remove":this.destroy();break;case"moveLeft":var e=this.$container.prev(".fld-tab");e.length&&(this.$container.insertBefore(e),this.updatePositionInConfig());break;case"moveRight":var i=this.$container.next(".fld-tab");i.length&&(this.$container.insertAfter(i),this.updatePositionInConfig())}},createSettings:function(){var t=this,e=this.$container.data("settings-html"),i=this.$container.data("settings-js");this.slideout=Craft.FieldLayoutDesigner.createSlideout(e,i),this.slideout.$container.on("submit",(function(e){e.preventDefault(),t.applySettings()}))},applySettings:function(){var t=this;if(this.slideout.$container.find('[name$="[name]"]').val()){var e=this.slideout.$container.find("button[type=submit]").addClass("loading"),i=$.extend({},this.config);delete i.elements,Craft.sendActionRequest("POST","fields/apply-layout-tab-settings",{data:{config:i,settingsNamespace:this.settingsNamespace,settings:this.slideout.$container.serialize()}}).then((function(e){t.updateConfig((function(t){return $.extend(e.data.config,{elements:t.elements})}));var i=t.$container.find(".tabs .tab span"),s=i.children(".fld-indicator");e.data.hasConditions?s.length||i.append($("",{class:"fld-indicator",title:Craft.t("app","This tab is conditional"),"aria-label":Craft.t("app","This tab is conditional"),"data-icon":"condition",role:"img"})):s.length&&s.remove(),t.slideout.close()})).catch((function(t){Craft.cp.displayError(),console.error(t)})).finally((function(){e.removeClass("loading"),t.slideout.close()}))}else Craft.cp.displayError(Craft.t("app","You must specify a tab name."))},initElement:function(t){return new Craft.FieldLayoutDesigner.Element(this,t)},get index(){var t=this;return this.designer.config.tabs.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.designer.config.tabs.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid,elements:[]},this.config=e),e},set config(t){if(!this.destroyed){t.name&&t.name!==this.config.name&&this.$container.find(".tabs .tab span").text(t.name);var e=this.designer.config,i=this.index;if(-1!==i)e.tabs[i]=t;else{var s=$.inArray(this.$container[0],this.$container.parent().children(".fld-tab"));e.tabs.splice(s,0,t)}this.designer.config=e}},updateConfig:function(t){if(!this.destroyed){var e=t(this.config);!1!==e&&(this.config=e)}},updatePositionInConfig:function(){var t=this;this.destroyed||this.designer.updateConfig((function(e){var i=t.config,s=t.index,n=$.inArray(t.$container[0],t.$container.parent().children(".fld-tab"));return-1!==s&&e.tabs.splice(s,1),e.tabs.splice(n,0,i),e}))},destroy:function(){var t=this;if(!this.destroyed){this.destroyed=!0,this.designer.updateConfig((function(e){var i=t.index;return-1!==i&&(e.tabs.splice(i,1),e)}));for(var e=this.$container.find(".fld-element"),i=0;i",{class:"hidden"}),this.$editBtn=$("",{role:"button",tabindex:0,class:"settings icon",title:Craft.t("app","Edit")});var a=function(){i.slideout?i.slideout.open():i.createSettings(s,n)};this.$editBtn.on("click",a),this.$container.on("dblclick",a)}this.initUi(),this.$container.attr("data-keywords",null),this.$container.attr("data-settings-html",null)},initUi:function(){var t=this;this.hasCustomWidth&&new Craft.SlidePicker(this.config.width||100,{min:25,max:100,step:25,valueLabel:function(t){return Craft.t("app","{pct} width",{pct:"".concat(t,"%")})},onChange:function(e){t.updateConfig((function(t){return t.width=e,t}))}}).$container.appendTo(this.$container),this.hasSettings&&this.$editBtn.appendTo(this.$container)},createSettings:function(t,e){var i=this,s=(this.$container.data("settings-js")||"").replace(/\bELEMENT_UID\b/g,this.uid);if(this.slideout=Craft.FieldLayoutDesigner.createSlideout(t,s),this.slideout.$container.on("submit",(function(t){t.preventDefault(),i.applySettings()})),this.requirable){var n=this.slideout.$container.find(".fields:first");Craft.ui.createLightswitchField({label:Craft.t("app","Required"),name:"".concat(this.settingsNamespace,"[required]"),on:e}).prependTo(n)}this.trigger("createSettings")},applySettings:function(){var t=this,e=this.slideout.$container.find("button[type=submit]").addClass("loading");Craft.sendActionRequest("POST","fields/apply-layout-element-settings",{data:{config:this.config,settingsNamespace:this.settingsNamespace,settings:this.slideout.$container.serialize()}}).then((function(e){t.config=e.data.config,t.$editBtn.detach(),t.$container.html($(e.data.selectorHtml).html()),t.initUi()})).catch((function(t){Craft.cp.displayError(),console.error(t)})).finally((function(){e.removeClass("loading"),t.updateRequiredClass(),t.slideout.close()}))},updateRequiredClass:function(){this.requirable&&(this.config.required?this.$container.addClass("fld-required"):this.$container.removeClass("fld-required"))},get index(){var t=this,e=this.tab.config;return void 0===e?-1:e.elements.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.tab.config.elements.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid},this.config=e),e},set config(t){var e=this.tab.config,i=this.index;if(-1!==i)e.elements[i]=t;else{var s=$.inArray(this.$container[0],this.$container.parent().children(".fld-element"));e.elements.splice(s,0,t)}this.tab.config=e},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)},updatePositionInConfig:function(){var t=this;this.tab.updateConfig((function(e){var i=t.config,s=t.index,n=$.inArray(t.$container[0],t.$container.parent().children(".fld-element"));return-1!==s&&e.elements.splice(s,1),e.elements.splice(n,0,i),e}))},destroy:function(){var t=this;this.tab.updateConfig((function(e){var i=t.index;return-1!==i&&(e.elements.splice(i,1),e)})),this.tab.designer.elementDrag.removeItems(this.$container),this.$container.remove(),this.isField&&this.tab.designer.removeFieldByHandle(this.attribute),this.base()}}),Craft.FieldLayoutDesigner.BaseDrag=Garnish.Drag.extend({designer:null,$insertion:null,showingInsertion:!1,$caboose:null,init:function(t,e){this.designer=t,this.base(this.findItems(),e)},onDragStart:function(){this.base(),this.$insertion=this.createInsertion(),this.$caboose=this.createCaboose(),this.$items=$().add(this.$items.add(this.$caboose)),Garnish.$bod.addClass("dragging")},removeCaboose:function(){this.$items=this.$items.not(this.$caboose),this.$caboose.remove()},swapDraggeeWithInsertion:function(){this.$insertion.insertBefore(this.$draggee),this.$draggee.detach(),this.$items=$().add(this.$items.not(this.$draggee).add(this.$insertion)),this.showingInsertion=!0},swapInsertionWithDraggee:function(){this.$insertion.replaceWith(this.$draggee),this.$items=$().add(this.$items.not(this.$insertion).add(this.$draggee)),this.showingInsertion=!1},setMidpoints:function(){for(var t=0;t div.fld-tab")},onDragStart:function(){this.base(),this.swapDraggeeWithInsertion(),this.setMidpoints()},swapDraggeeWithInsertion:function(){this.base(),this.designer.tabGrid.removeItems(this.$draggee),this.designer.tabGrid.addItems(this.$insertion)},swapInsertionWithDraggee:function(){this.base(),this.designer.tabGrid.removeItems(this.$insertion),this.designer.tabGrid.addItems(this.$draggee)},onDrag:function(){this.checkForNewClosestItem(),this.base()},onDragStop:function(){this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:"hidden"}),this.$draggee.data("fld-tab").updatePositionInConfig()},createCaboose:function(){var t=$('').appendTo(this.designer.$tabContainer);return this.designer.tabGrid.addItems(t),t},removeCaboose:function(){this.base(),this.designer.tabGrid.removeItems(this.$caboose)},createInsertion:function(){var t=this.$draggee.find(".tab");return $('\n\n'))}}),Craft.FieldLayoutDesigner.ElementDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({draggingLibraryElement:!1,draggingField:!1,originalTab:null,onDragStart:function(){this.base(),this.draggingLibraryElement=this.$draggee.hasClass("unused"),this.draggingField=this.$draggee.hasClass("fld-field"),this.draggingLibraryElement&&!this.draggingField&&this.$draggee.css({display:this.draggeeDisplay,visibility:"visible"}),this.draggingLibraryElement?this.originalTab=null:(this.originalTab=this.$draggee.closest(".fld-tab").data("fld-tab"),this.swapDraggeeWithInsertion()),this.setMidpoints()},onDrag:function(){this.isDraggeeMandatory()||this.isHoveringOverTab()?this.checkForNewClosestItem():this.showingInsertion&&(this.$insertion.remove(),this.$items=$().add(this.$items.not(this.$insertion)),this.showingInsertion=!1,this.designer.tabGrid.refreshCols(!0),this.setMidpoints()),this.base()},isDraggeeMandatory:function(){return Garnish.hasAttr(this.$draggee,"data-mandatory")},isHoveringOverTab:function(){for(var t=0;t .fld-tab > .fld-tabcontent"),i=0;i").appendTo(e[i]));return t},createInsertion:function(){return $(''))},onDragStop:function(){var t=this.showingInsertion;if(t){if(this.draggingLibraryElement){var e=this.$draggee.clone().removeClass("unused");this.draggingField&&(this.$draggee.css({visibility:"inherit",display:"field"}).addClass("hidden"),0===this.$draggee.siblings(".fld-field:not(.hidden)").length&&this.$draggee.closest(".fld-field-group").addClass("hidden")),this.$draggee=e,this.addItems(e)}}else if(!this.draggingLibraryElement){var i=this.draggingField?this.designer.$fields.filter('[data-attribute="'.concat(this.$draggee.data("attribute"),'"]:first')):this.designer.$uiLibraryElements.filter('[data-type="'.concat(this.$draggee.data("type"),'"]:first'));this.draggingField&&(i.removeClass("hidden"),i.closest(".fld-field-group").removeClass("hidden")),this.$draggee.data("fld-element").destroy(),this.$draggee=i}if(this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:this.draggingField||t?"hidden":"visible"}),t){var s,n=this.$draggee.closest(".fld-tab").data("fld-tab");if(this.draggingLibraryElement)s=n.initElement(this.$draggee);else if(s=this.$draggee.data("fld-element"),n!==this.originalTab){var a=s.config;this.originalTab.updateConfig((function(t){var e=s.index;return-1!==e&&(t.elements.splice(e,1),t)})),this.$draggee.data("fld-element").tab=n,s.config=a}s.updatePositionInConfig()}}})},3347:function(){Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(t){switch(this.$toggle=$(t),this.$toggle.data("fieldtoggle")&&(console.warn("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"===this.type||"fieldset"===this.type?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),this.type){case"link":this.addListener(this.$toggle,"click","onToggleChange");break;case"fieldset":this.addListener(this.$toggle.find("input"),"change","onToggleChange");break;default:this.addListener(this.$toggle,"change","onToggleChange"),this.onToggleChange()}},normalizeTargetSelector:function(t){return t&&!t.match(/^[#\.]/)&&(t="#"+t),t},getType:function(){var t=this.$toggle.prop("nodeName");if("INPUT"===t&&"checkbox"===this.$toggle.attr("type")||"checkbox"===this.$toggle.attr("role")||"switch"===this.$toggle.attr("role"))return"checkbox";switch(t){case"SELECT":return Garnish.hasAttr(this.$toggle,"data-boolean-menu")?"booleanMenu":"select";case"A":return"link";default:return"fieldset"}},findTargets:function(){"select"===this.type||"fieldset"===this.type?(this.getToggleVal(),this._$target=$(this.normalizeTargetSelector(this.targetPrefix+this.getToggleVal()))):(this.targetSelector&&(this._$target=$(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=$(this.reverseTargetSelector)))},getToggleVal:function(){switch(this.type){case"checkbox":return void 0!==this.$toggle.prop("checked")?this.$toggle.prop("checked"):"true"===this.$toggle.attr("aria-checked");case"booleanMenu":var t=this.$toggle.data("boolean");if(void 0!==t)return t;var e=this.$toggle.val();return e&&"0"!==e;default:var i;return null==(i="fieldset"===this.type?this.$toggle.find("input:checked:first").val():Garnish.getInputPostVal(this.$toggle))?null:i.replace(/[^\w]+/g,"-")}},onToggleChange:function(){"select"===this.type||"fieldset"===this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):(this.findTargets(),"link"===this.type?this.onToggleChange._show=this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show)},showTarget:function(t){var e=this;if(t&&t.length){if(this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),"select"!==this.type&&"fieldset"!==this.type){"link"===this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded"));for(var i=0;ithis.totalCols&&(this.refreshCols._.totalCols=Math.floor((this.$container.width()-20)/this.settings.minColWidth)),this.settings.maxCols&&this.refreshCols._.totalCols>this.settings.maxCols&&(this.refreshCols._.totalCols=this.settings.maxCols)),0===this.refreshCols._.totalCols&&(this.refreshCols._.totalCols=1),!0===t||this.totalCols!==this.refreshCols._.totalCols){if(this.totalCols=this.refreshCols._.totalCols,this.colGutterDrop=this.settings.gutter*(this.totalCols-1)/this.totalCols,this.removeListener(this.$container,"resize"),"grid"===this.settings.fillMode)for(this.refreshCols._.itemIndex=0;this.refreshCols._.itemIndexthis.refreshCols._.tallestItemHeight&&(this.refreshCols._.tallestItemHeight=this.refreshCols._.itemHeight),this.refreshCols._.colIndex++;for(this.settings.snapToGrid&&(this.refreshCols._.remainder=this.refreshCols._.tallestItemHeight%this.settings.snapToGrid,this.refreshCols._.remainder&&(this.refreshCols._.tallestItemHeight+=this.settings.snapToGrid-this.refreshCols._.remainder)),this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.ithis.totalCols&&(this.refreshCols._.minColspan=this.totalCols),this.refreshCols._.maxColspan>this.totalCols&&(this.refreshCols._.maxColspan=this.totalCols),this.refreshCols._.colspan=this.refreshCols._.minColspan;this.refreshCols._.colspan<=this.refreshCols._.maxColspan;this.refreshCols._.colspan++)for(this.refreshCols._.$item.css("width",this.getItemWidthCss(this.refreshCols._.colspan)),this.itemHeightsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=this.refreshCols._.$item.outerHeight(),this.possibleItemColspans[this.refreshCols._.item].push(this.refreshCols._.colspan),this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=[],this.refreshCols._.positionLeft?(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=0):this.refreshCols._.positionRight?(this.refreshCols._.minPosition=this.totalCols-this.refreshCols._.colspan,this.refreshCols._.maxPosition=this.refreshCols._.minPosition):(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=this.totalCols-this.refreshCols._.colspan),this.refreshCols._.position=this.refreshCols._.minPosition;this.refreshCols._.position<=this.refreshCols._.maxPosition;this.refreshCols._.position++)this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan].push(this.refreshCols._.position);for(this.refreshCols._.colHeights=[],this.refreshCols._.i=0;this.refreshCols._.i=0;this.refreshCols._.i--)this.refreshCols._.layoutTotalCols[this.refreshCols._.i]!==this.refreshCols._.highestTotalCols&&this.layouts.splice(this.refreshCols._.i,1);for(this.refreshCols._.layoutHeights=[],this.refreshCols._.i=0;this.refreshCols._.i0&&(this.positionItems._.top+=this.settings.gutter),this.items[this.positionItems._.i].css("top",this.positionItems._.top),this.positionItems._.col=this.layout.positions[this.positionItems._.i];this.positionItems._.col<=this.positionItems._.endingCol;this.positionItems._.col++)this.positionItems._.colHeights[this.positionItems._.col]=this.positionItems._.top+this.itemHeightsByColspan[this.positionItems._.i][this.layout.colspans[this.positionItems._.i]]}this.$container.height(Math.max.apply(null,this.positionItems._.colHeights)),delete this.positionItems._},onItemResize:function(t){this.onItemResize._={},t.stopPropagation(),this.onItemResize._.item=$.inArray(t.currentTarget,this.$items),-1!==this.onItemResize._.item&&(this.onItemResize._.newHeight=this.items[this.onItemResize._.item].outerHeight(),this.onItemResize._.newHeight!==this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]&&(this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]=this.onItemResize._.newHeight,this.positionItems(!1))),delete this.onItemResize._},onRefreshCols:function(){this.trigger("refreshCols"),this.settings.onRefreshCols()},destroy:function(){this.$container.removeData("grid"),this.base()}},{defaults:{itemSelector:".item",cols:null,maxCols:null,minColWidth:320,gutter:14,fillMode:"top",colClass:"col",snapToGrid:null,onRefreshCols:$.noop}}),Craft.Grid.LayoutGenerator=Garnish.Base.extend({grid:null,_:null,init:function(t){this.grid=t},createLayouts:function(t,e,i,s,n){for(this._={},this._.c=0;this._.c/g,"");e=(e=e.replace(/['"‘’“”\[\]\(\)\{\}:]/g,"")).toLowerCase(),e=Craft.asciiString(e),this.settings.allowNonAlphaStart||(e=e.replace(/^[^a-z]+/,""));var i=Craft.filterArray(e.split(/[^a-z0-9]+/));if(e="","snake"===Craft.handleCasing)return i.join("_");for(var s=0;s').appendTo(this.$container));var t={url:Craft.getActionUrl(this.settings.uploadAction),formData:this.settings.postParameters,fileInput:this.$container.find(this.settings.fileInputSelector),paramName:this.settings.uploadParamName};void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),t.events={},t.events.fileuploadstart=this._onUploadStart.bind(this),t.events.fileuploadprogressall=this._onUploadProgress.bind(this),t.events.fileuploaddone=this._onUploadComplete.bind(this),t.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(null,this.$container,t),this.initButtons()},initButtons:function(){var t=this;this.$container.find(this.settings.uploadButtonSelector).on("click",(function(e){t.$container.find(t.settings.fileInputSelector).trigger("click")})),this.$container.find(this.settings.deleteButtonSelector).on("click",(function(e){confirm(Craft.t("app","Are you sure you want to delete this image?"))&&($(e.currentTarget).parent().append(' '),Craft.sendActionRequest("POST",t.settings.deleteAction,{data:t.settings.postParameters}).then((function(e){var i=e.data;t.refreshImage(i)})))}))},refreshImage:function(t){$(this.settings.containerSelector).replaceWith(t.html),this.settings.onAfterRefreshImage(t),this.initImageUpload()},_onUploadStart:function(t){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t,e){var i=parseInt(e.loaded/e.total*100,10);this.progressBar.setProgressPercentage(i)},_onUploadComplete:function(t,e){e.result.error?Craft.cp.displayError(e.result.error):($(e.result.html),this.refreshImage(e.result)),this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.$container.removeClass("uploading"))},_onUploadFailure:function(t,e){var i,s=e.response(),n=(null==s||null===(i=s.jqXHR)||void 0===i?void 0:i.responseJSON)||{},a=n.message,r=n.filename;a||(a=r?Craft.t("app","Upload failed for “{filename}”.",{filename:r}):Craft.t("app","Upload failed.")),Craft.cp.displayError(a),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")}},{defaults:{postParameters:{},uploadAction:"",deleteAction:"",fileInputSelector:"",onAfterRefreshImage:$.noop,containerSelector:null,uploadButtonSelector:null,deleteButtonSelector:null,uploadParamName:"files"}})},657:function(){Craft.InfoIcon=Garnish.Base.extend({$container:null,$icon:null,$liveRegion:null,content:null,hud:null,init:function(t){var e=this;if(this.$icon=$(t),this.$liveRegion=$(" ",{role:"status",class:"visually-hidden"}),this.$icon.data("infoicon")?(console.warn("Double-instantiating an info icon on an element"),this.content=this.$icon.data("infoicon").content,this.$icon.data("infoicon").destroy()):(this.content=this.$icon.html(),this.$icon.html("").attr({tabindex:0,role:"button",type:"button","aria-label":Craft.t("app","More info")}).wrap($(" ",{class:"infoicon-container"})),this.$container=this.$icon.parent(),this.$container.append(this.$liveRegion)),this.$icon.data("infoicon",this),this.$icon[0].previousSibling&&this.$icon[0].previousSibling.nodeType===Node.TEXT_NODE&&!this.$icon.parent().hasClass("nowrap")){var i=this.$icon[0].previousSibling.nodeValue.match(/[^\s\-]+\s*$/);i&&(this.$icon[0].previousSibling.nodeValue=this.$icon[0].previousSibling.nodeValue.substring(0,i.index),$(" ",{class:"nowrap",html:i[0].replace(/\s+$/,"")+" "}).insertAfter(this.$icon[0].previousSibling).append(this.$icon))}this.addListener(this.$icon,"click",(function(t){t.preventDefault(),t.stopPropagation(),e.showHud()})),this.addListener(this.$icon,"keydown",(function(t){e.hud&&e.hud.showing||![Garnish.SPACE_KEY,Garnish.RETURN_KEY].includes(t.keyCode)||(t.preventDefault(),t.stopPropagation(),e.showHud())}))},showHud:function(t){var e=this;this.hud?this.hud.show():(this.hud=new Garnish.HUD(this.$icon,this.content,{hudClass:"hud info-hud",closeOtherHUDs:!1,onShow:function(){Garnish.uiLayerManager.registerShortcut(Garnish.SPACE_KEY,(function(){e.hud.hide()})),e.$liveRegion.html(""),setTimeout((function(){e.$liveRegion.html(e.content)}),200)},onHide:function(){e.$liveRegion.html("")}}),Craft.initUiElements(this.hud.$body))},destroy:function(){this.$icon.removeData("infoicon"),this.base()}})},4487:function(){Craft.LightSwitch=Garnish.Base.extend({settings:null,$outerContainer:null,$innerContainer:null,$input:null,small:!1,on:!1,indeterminate:!1,dragger:null,dragStartMargin:null,init:function(t,e){if(this.$outerContainer=$(t),this.$outerContainer.data("lightswitch")&&(console.warn("Double-instantiating a lightswitch on an element"),this.$outerContainer.data("lightswitch").destroy()),this.$outerContainer.data("lightswitch",this),this.small=this.$outerContainer.hasClass("small"),this.setSettings(e,Craft.LightSwitch.defaults),this.$innerContainer=this.$outerContainer.find(".lightswitch-container:first"),this.$input=this.$outerContainer.find("input:first"),!this.$input.prop("disabled")){this.on=this.$outerContainer.hasClass("on"),this.indeterminate=this.$outerContainer.hasClass("indeterminate"),this.addListener(this.$outerContainer,"mousedown","_onMouseDown"),this.addListener(this.$outerContainer,"keydown","_onKeyDown"),this.dragger=new Garnish.BaseDrag(this.$outerContainer,{axis:Garnish.X_AXIS,ignoreHandleSelector:null,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)});var i=this.$outerContainer.parent(".lightswitch-inner-container");i.length&&(this.addListener(i.children('span[data-toggle="off"]'),"click",this.turnOff),this.addListener(i.children('span[data-toggle="on"]'),"click",this.turnOn))}},turnOn:function(t){var e=!this.on;if(this.on=!0,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,0);else{var i={};i["margin-"+Craft.left]=0,this.$innerContainer.velocity("stop").velocity(i,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(this.settings.value),this.$outerContainer.addClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","true"),e&&!0!==t&&this.onChange()},turnOff:function(t){var e=this.on||this.indeterminate;if(this.on=!1,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,this._getOffMargin());else{var i={};i["margin-"+Craft.left]=this._getOffMargin(),this.$innerContainer.velocity("stop").velocity(i,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(""),this.$outerContainer.removeClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","false"),e&&!0!==t&&this.onChange()},turnIndeterminate:function(t){var e=!this.indeterminate;this.on=!1,this.indeterminate=!0,this.$outerContainer.addClass("dragging");var i={};i["margin-"+Craft.left]=this._getOffMargin()/2,this.$innerContainer.velocity("stop").velocity(i,Craft.LightSwitch.animationDuration,this._onSettle.bind(this)),this.$input.val(this.settings.indeterminateValue),this.$outerContainer.removeClass("on"),this.$outerContainer.addClass("indeterminate"),this.$outerContainer.attr("aria-checked","mixed"),e&&!0!==t&&this.onChange()},toggle:function(){this.indeterminate||!this.on?this.turnOn():this.turnOff()},onChange:function(){this.trigger("change"),this.settings.onChange(this.on),this.$outerContainer.trigger("change")},_onMouseDown:function(){this.addListener(Garnish.$doc,"mouseup","_onMouseUp")},_onMouseUp:function(){this.removeListener(Garnish.$doc,"mouseup"),this.dragger.dragging||this.toggle()},_onKeyDown:function(t){switch(t.keyCode){case Garnish.SPACE_KEY:this.toggle(),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?this.turnOn():this.turnOff(),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?this.turnOff():this.turnOn(),t.preventDefault()}},_getMargin:function(){return parseInt(this.$innerContainer.css("margin-"+Craft.left))},_onDragStart:function(){this.$outerContainer.addClass("dragging"),this.dragStartMargin=this._getMargin()},_onDrag:function(){var t;(t="ltr"===Craft.orientation?this.dragStartMargin+this.dragger.mouseDistX:this.dragStartMargin-this.dragger.mouseDistX) 0&&(t=0),this.$innerContainer.css("margin-"+Craft.left,t)},_onDragStop:function(){this._getMargin()>this._getOffMargin()/2?this.turnOn():this.turnOff()},_onSettle:function(){this.$outerContainer.removeClass("dragging")},destroy:function(){this.$outerContainer.removeData("lightswitch"),this.base(),this.dragger.destroy()},_getOffMargin:function(){return this.small?-10:-12}},{animationDuration:100,defaults:{value:"1",indeterminateValue:"-",onChange:$.noop}})},6966:function(){Craft.Listbox=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,selectedOptionIndex:null,init:function(t,e){var i=this;this.$container=$(t),this.setSettings(e,Craft.Listbox.defaults),this.$container.data("listbox")&&(console.warn("Double-instantiating a listbox on an element"),this.$container.data("listbox").destroy()),this.$container.data("listbox",this),this.$options=this.$container.find("button,[role=option]"),this.$selectedOption=this.$options.filter("[aria-pressed=true],[aria-selected=true]").removeAttr("aria-selected").attr("aria-pressed","true"),this.$selectedOption.length?this.selectedOptionIndex=this.$options.index(this.$selectedOption):this.$selectedOption=null,this.addListener(this.$options,"click",(function(t){i.select(i.$options.index($(t.currentTarget))),t.preventDefault()}))},select:function(t){t<0||t>=this.$options.length||t===this.selectedOptionIndex||(this.$selectedOption&&this.$selectedOption.removeClass(this.settings.selectedClass).attr("aria-pressed","false"),this.$selectedOption=this.$options.eq(t).addClass(this.settings.selectedClass).attr("aria-pressed","true"),this.selectedOptionIndex=t,this.settings.onChange(this.$selectedOption,t),this.trigger("change",{$selectedOption:this.$selectedOption,selectedOptionIndex:t}))},disable:function(){this.base(),this.$container.attr("aria-disabled","true")},enable:function(){this.base(),this.$container.removeAttr("aria-disabled")},destroy:function(){this.$container.removeData("listbox"),this.base()}},{defaults:{selectedClass:"active",focusClass:"focus",onChange:$.noop}})},5080:function(){Craft.LivePreview=Garnish.Base.extend({$extraFields:null,$trigger:null,$shade:null,$editorContainer:null,$editor:null,$dragHandle:null,$previewContainer:null,$iframeContainer:null,$iframe:null,$fieldPlaceholder:null,previewUrl:null,token:null,basePostData:null,inPreviewMode:!1,fields:null,lastPostData:null,updateIframeInterval:null,loading:!1,checkAgain:!1,dragger:null,dragStartEditorWidth:null,_slideInOnIframeLoad:!1,_scrollX:null,_scrollY:null,_editorWidth:null,_editorWidthInPx:null,init:function(t){var e=this;this.setSettings(t,Craft.LivePreview.defaults),this.settings.previewUrl?this.previewUrl=this.settings.previewUrl:this.previewUrl=Craft.baseSiteUrl.replace(/\/+$/,"")+"/","https:"===document.location.protocol&&(this.previewUrl=this.previewUrl.replace(/^http:/,"https:")),this.basePostData=$.extend({},this.settings.previewParams),this.$extraFields=$(this.settings.extraFields),this.$trigger=$(this.settings.trigger),this.$fieldPlaceholder=$(""),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.LivePreview.defaultEditorWidth),this.addListener(this.$trigger,"activate","toggle"),Craft.cp.on("beforeSaveShortcut",(function(){e.inPreviewMode&&e.moveFieldsBack()})),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewContainer=$("",{class:"lp-preview-container"}).appendTo(Garnish.$bod),this.$iframeContainer=$("",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$editorContainer=$("",{class:"lp-editor-container"}).appendTo(Garnish.$bod);var e=$("",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var i=$("",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(e);$("",{class:"flex-grow"}).appendTo(e);var s=$("",{type:"button",class:"btn submit",text:Craft.t("app","Save")}).appendTo(e);this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(i,"click","exit"),this.addListener(s,"click","save")}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];for(var n=$(this.settings.fields),a=0;awindow.scrollTo('+this._scrollX+", "+this._scrollY+");<\/script>",s=$('');this.$iframe?s.insertBefore(this.$iframe):s.appendTo(this.$iframeContainer),this.addListener(s,"load",(function(){this.$iframe&&this.$iframe.remove(),this.$iframe=s,this._slideInOnIframeLoad&&(this.slideIn(),this._slideInOnIframeLoad=!1),this.removeListener(s,"load")})),Garnish.requestAnimationFrame((function(){s[0].contentWindow.document.open(),s[0].contentWindow.document.write(i),s[0].contentWindow.document.close(),e.onResponse()}))},handleError:function(){this.onResponse()},onResponse:function(){this.loading=!1,this.checkAgain&&(this.checkAgain=!1,this.updateIframe())},_getClone:function(t){var e=t.clone();return Garnish.copyInputValues(t,e),e.attr("id",""),e.find("[id]").attr("id",""),e},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$previewContainer.addClass("dragging")},_onDrag:function(){"ltr"===Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths()},_onDragStop:function(){this.$previewContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)},destroy:function(){var t=this;Craft.Preview.instances=Craft.Preview.instances.filter((function(e){return e!==t})),this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],defaults:{trigger:".livepreviewbtn",fields:null,extraFields:null,previewUrl:null,previewAction:null,previewParams:{}}}),Craft.LivePreview.init=function(t){Craft.livePreview=new Craft.LivePreview(t)}},7439:function(){Craft.PasswordInput=Garnish.Base.extend({$passwordWrapper:null,$passwordInput:null,$textInput:null,$currentInput:null,$showPasswordToggle:null,showingPassword:null,init:function(t,e){this.$passwordInput=$(t),this.$passwordWrapper=this.$passwordInput.parent(".passwordwrapper"),this.settings=$.extend({},Craft.PasswordInput.defaults,e),this.$passwordInput.data("passwordInput")&&(console.warn("Double-instantiating a password input on an element"),this.$passwordInput.data("passwordInput").destroy()),this.$passwordInput.data("passwordInput",this),this.$showPasswordToggle=$(''),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.initInputFocusEvents(this.$passwordInput),this.addListener(this.$showPasswordToggle,"click","onClick"),this.hidePassword(),this.addListener(this.$passwordWrapper.closest("form"),"submit","hidePassword")},setCurrentInput:function(t){this.$currentInput&&(t.insertAfter(this.$currentInput),this.$currentInput.detach(),t.trigger("focus"),t.val(this.$currentInput.val())),this.$currentInput=t,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(t){this.$showPasswordToggle.text(t)},initInputFocusEvents:function(t){this.addListener(t,"focus",(function(){this.$passwordWrapper.addClass("focus")})),this.addListener(t,"blur",(function(){this.$passwordWrapper.removeClass("focus")}))},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr({type:"text",autocapitalize:"off"}),this.initInputFocusEvents(this.$textInput)),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("app","Hide")),this.showingPassword=!0)},hidePassword:function(){!1!==this.showingPassword&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("app","Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.removeClass("invisible"):this.$showPasswordToggle.addClass("invisible")},onClick:function(t){if(this.$currentInput[0].setSelectionRange){var e=this.$currentInput[0].selectionStart,i=this.$currentInput[0].selectionEnd;this.togglePassword(),this.$currentInput[0].setSelectionRange(e,i)}else this.togglePassword()},destroy:function(){this.$passwordInput.removeData("passwordInput"),this.base()}},{defaults:{onToggleInput:$.noop}})},5328:function(){function t(t,i){var s="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!s){if(Array.isArray(t)||(s=function(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}(t))||i&&t&&"number"==typeof t.length){s&&(t=s);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(t)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{type:"hidden",name:"__PREVIEW_FIELDS__",value:"1"}),this.$fieldPlaceholder=$(""),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.Preview.defaultEditorWidth),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewWrapper=$("",{role:"dialog","aria-modal":"true","aria-labelledby":"lp-preview-heading"}).appendTo(Garnish.$bod),this.$modalLabel=$("",{id:"lp-preview-heading",class:"visually-hidden",html:Craft.t("app","Preview")}).appendTo(this.$previewWrapper),this.$editorContainer=$("",{class:"lp-editor-container"}).appendTo(this.$previewWrapper),this.$previewContainer=$("",{class:"lp-preview-container",id:"lp-preview-container"}).appendTo(this.$previewWrapper),this.$notifier=$("",{class:"visually-hidden","aria-live":"assertive"}).appendTo(this.$previewContainer);var i=$("",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var s=$("",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(i);if($("",{class:"flex-grow"}).appendTo(i),this.$spinner=$("",{class:"spinner hidden",title:Craft.t("app","Saving")}).appendTo(i),this.$statusIcon=$("",{class:"invisible"}).appendTo(i),this.$statusMessage=$("",{class:"visually-hidden","aria-live":"polite"}).appendTo(i),this.$previewSkipLink=$("",{class:"skip-link btn",href:"#lp-preview-container",html:e}).appendTo(i),Craft.Pro){if(this.$previewHeader=$("",{class:"lp-preview-header"}).appendTo(this.$previewContainer),this.elementEditor.settings.previewTargets.length>1){this.$targetBtn=$("",{type:"button",class:"btn menubtn",text:this.elementEditor.settings.previewTargets[0].label}).appendTo(this.$previewHeader),this.$targetMenu=$("",{class:"menu lp-target-menu"}).insertAfter(this.$targetBtn);for(var n,a=$("",{class:"padded"}).appendTo(this.$targetMenu),r=0;r").appendTo(a),$("",{data:{target:r},text:this.elementEditor.settings.previewTargets[r].label,class:0===r?"sel":null}).appendTo(n);new Garnish.MenuBtn(this.$targetBtn,{onOptionSelect:function(e){t.switchTarget($(e).data("target"))}}),$('').appendTo(this.$previewHeader)}this._buildDeviceTypeFieldset(),$('').appendTo(this.$previewHeader);var o=$('').appendTo(this.$previewHeader);this.$orientationBtn=$("",{type:"button",class:"btn disabled","data-icon":"rotate","aria-disabled":"true",text:Craft.t("app","Rotate"),"aria-label":Craft.t("app","Rotate")}).appendTo(o),this.addListener(this.$orientationBtn,"click","switchOrientation"),this.$refreshBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Refresh"),"data-icon":"refresh"}).appendTo(o),this.addListener(this.$refreshBtn,"click",(function(){t.updateIframe(!1,!0)})),this.deviceOrientation=Craft.getLocalStorage("LivePreview.orientation")}this.$iframeContainer=$("",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$devicePreviewContainer=$("",{class:"lp-device-preview-container"}).appendTo(this.$iframeContainer),this.$deviceMask=$("",{class:"lp-device-mask"}).appendTo(this.$iframeContainer),this.$bumperLink=$("",{class:"skip-link btn lp-preview-container__bumper-link",html:e,href:"#lp-preview-container"}),this.$bumperLink.appendTo(this.$previewContainer),this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(s,"click","close"),this.addListener(this.$statusIcon,"click",(function(){t.elementEditor.showStatusHud(t.$statusIcon)}))}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];var l=$("#content .field").not($("#content .field .field"));if(l.length){this.$tempInput.insertBefore(l.get(0));for(var h=0;h",{class:"btngroup lp-device-type","aria-label":Craft.t("app","Device type")}).appendTo(this.$previewHeader),$("",{type:"button",class:"btn lp-device-type-btn--desktop active",title:Craft.t("app","Desktop"),"aria-label":Craft.t("app","Desktop"),"aria-pressed":"true",data:{width:"",height:"",deviceType:"desktop"}}).appendTo(this.$deviceTypeContainer),$("",{type:"button",class:"btn lp-device-type-btn--tablet",title:Craft.t("app","Tablet"),"aria-label":Craft.t("app","Tablet"),"aria-pressed":"false",data:{width:768,height:1024,deviceType:"tablet"}}).appendTo(this.$deviceTypeContainer),$("",{type:"button",class:"btn lp-device-type-btn--phone",title:Craft.t("app","Mobile"),"aria-label":Craft.t("app","Mobile"),"aria-pressed":"false",data:{width:375,height:667,deviceType:"phone"}}).appendTo(this.$deviceTypeContainer),this.deviceBtnGroup=new Craft.Listbox(this.$deviceTypeContainer,{onChange:function(e){t.switchDeviceType(e)}})},_activeTarget:function(){return this.elementEditor.settings.previewTargets[this.activeTarget]},_autoRefresh:function(){var t=this._activeTarget();return void 0===a(t.refresh)||!!t.refresh},switchTarget:function(t){this.activeTarget=t,this.$targetBtn.text(this.elementEditor.settings.previewTargets[t].label),this.$targetMenu.find("a.sel").removeClass("sel"),this.$targetMenu.find("a").eq(t).addClass("sel"),this.updateIframe(!0),this.trigger("switchTarget",{previewTarget:this.elementEditor.settings.previewTargets[t]})},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(){var t=this;this.isActive&&!this.isVisible&&($("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){t.trigger("slideIn"),Garnish.$win.trigger("resize")})),this.$previewContainer.show().velocity("stop").animateRight(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration)),this.isVisible=!0,Garnish.uiLayerManager.addLayer(this.$previewWrapper),Garnish.hideModalBackgroundLayers(),Craft.setFocusWithin(this.$previewWrapper),Craft.trapFocusWithin(this.$previewWrapper),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.close()})))},close:function(){var t=this;this.isActive&&this.isVisible&&(this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$tempInput.detach(),this.moveFieldsBack(),Garnish.prefersReducedMotion()?this.$shade.velocity("fadeOut"):this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){for(var e=0;e",{class:"lp-preview",frameborder:0,src:e,title:Craft.t("app","Preview")});i.$iframe?i.$iframe.replaceWith(n):n.appendTo(i.$devicePreviewContainer),i._useIframeResizer()?(t||null===i.iframeHeight||(n.height(i.iframeHeight),i.$iframeContainer.scrollTop(i.scrollTop),i.$iframeContainer.scrollLeft(i.scrollLeft)),iFrameResize($.extend({checkOrigin:!1,scrolling:!0,onInit:function(t){i.iframeLoaded=!0,i.iframeHeight=null,i.scrollTop=null,i.scrollLeft=null,t.scrolling="no"}},Craft.previewIframeResizerOptions||{}),n[0])):n.on("load",(function(){i.iframeLoaded=!0,!t&&s&&(null!==i.scrollTop&&$(n[0].contentWindow.document).scrollTop(i.scrollTop),null!==i.scrollLeft&&$(n[0].contentWindow.document).scrollLeft(i.scrollLeft))})),i.url=e,i.$iframe=n,i._devicePreviewIsActive()&&i.updateDevicePreview(),i.trigger("afterUpdateIframe",{previewTarget:i.elementEditor.settings.previewTargets[i.activeTarget],$iframe:i.$iframe}),i.slideIn()})):this.slideIn()},_devicePreviewIsActive:function(){return"desktop"!==this.currentDeviceType},_updateNotifier:function(){var t=this;this.$notifier.html="";var e="desktop"===this.currentDeviceType?"Previewing {type} device":"Previewing {type} device in {orientation}",i={type:this._getDeviceTypeTranslation(this.currentDeviceType)};"desktop"!==this.currentDeviceType&&(i=s(s({},i),{orientation:this._getDeviceOrientationTranslation(this.deviceOrientation)}));var n=Craft.t("app",e,i);setTimeout((function(){t.$notifier.text(n)}),200)},switchDeviceType:function(t){this.$iframeContainer.removeClass("lp-iframe-container--rotating");var e=t.data("deviceType");if(e===this.currentDeviceType)return!1;this.currentDeviceType=e,this.deviceWidth=t.data("width"),this.deviceHeight=t.data("height"),"desktop"===this.currentDeviceType?(this.$orientationBtn.addClass("disabled").attr("aria-disabled","true"),this.$iframeContainer.removeClass("lp-iframe-container--has-device-preview")):(this.$orientationBtn.removeClass("disabled").removeAttr("aria-disabled"),this.$iframeContainer.addClass("lp-iframe-container--has-device-preview")),"tablet"===this.currentDeviceType?this.$iframeContainer.addClass("lp-iframe-container--tablet"):this.$iframeContainer.removeClass("lp-iframe-container--tablet"),this._updateNotifier(),"desktop"!==this.currentDeviceType&&this.updateDevicePreview()},switchOrientation:function(){var t=this;if(!this._devicePreviewIsActive())return!1;this.deviceOrientation&&"portrait"!==this.deviceOrientation?this.deviceOrientation="portrait":this.deviceOrientation="landscape",Craft.setLocalStorage("LivePreview.orientation",this.deviceOrientation),this.$iframeContainer.addClass("lp-iframe-container--rotating"),this.updateDevicePreview(),this._updateNotifier(),setTimeout((function(){t.$iframeContainer.removeClass("lp-iframe-container--rotating")}),300)},updateDevicePreview:function(){var t=1,e=1,i=1,s=this.$previewContainer.height()-50-48,n=this.$previewContainer.width()-48,a=this.deviceMaskDimensions[this.currentDeviceType].height,r=this.deviceMaskDimensions[this.currentDeviceType].width;"landscape"===this.deviceOrientation?(n').appendTo(Garnish.$bod),this.base(this.$container,$.extend({resizable:!0},i)),this.$container&&(this.$container.velocity("stop"),this.$container.show().css("opacity",1),this.$shade.velocity("stop"),this.$shade.show().css("opacity",1),Garnish.setFocusWithin(this.$container)),this.$bumperButtonStart=Craft.ui.createButton({html:Craft.t("app","Close Preview"),class:"skip-link"}),this.addListener(this.$bumperButtonStart,"click",(function(){s.hide()})),this.$bumperButtonEnd=this.$bumperButtonStart.clone(!0),this.loadAsset(t,i.startingWidth,i.startingHeight)},_onHide:function(){return Craft.PreviewFileModal.openInstance=null,this.elementSelect?this.elementSelect.focusItem(this.elementSelect.$focusedItem):this.$triggerElement&&this.$triggerElement.length&&this.$triggerElement.trigger("focus"),this.$shade.remove(),this.destroy()},_addBumperButtons:function(){this.$container.prepend(this.$bumperButtonStart).append(this.$bumperButtonEnd)},_addModalName:function(){var t="preview-heading";$("",{class:"visually-hidden",id:t,text:Craft.t("app","Preview file")}).prependTo(this.$container),this.$container.attr("aria-labelledby",t)},selfDestruct:function(){var t=Craft.PreviewFileModal.openInstance;return t.hide(),t.$shade.remove(),t.destroy(),Craft.PreviewFileModal.openInstance=null,Craft.focalPoint.destruct(),Craft.focalPoint=null,!0},loadAsset:function(t,e,i){var s=this;this.assetId=t,this.$container.empty(),this.loaded=!1,this.desiredHeight=null,this.desiredWidth=null;var n=.66*Garnish.$win.height(),a=Math.min(n/3*4,Garnish.$win.width()-2*this.settings.minGutter);if(n=a/4*3,e&&i){var r=e/i;a=Math.min(e,Garnish.$win.width()-2*this.settings.minGutter),(a=(n=Math.min(a/r,Garnish.$win.height()-2*this.settings.minGutter))*r)>Math.min(e,Garnish.$win.width()-2*this.settings.minGutter)&&(n=(a=Math.min(e,Garnish.$win.width()-2*this.settings.minGutter))/r)}this._resizeContainer(a,n),this.$spinner=$('').appendTo(this.$container);var o=this.$container.height()/2-this.$spinner.height()/2+"px",l=this.$container.width()/2-this.$spinner.width()/2+"px";this.$spinner.css({left:l,top:o,position:"absolute"}),this.requestId++;var h={assetId:t,requestId:this.requestId},d=function(){s.$container.removeClass("loading"),s.$spinner.remove(),s.loaded=!0};Craft.sendActionRequest("POST","assets/preview-file",{data:h}).then((function(t){if(d(),t.data.requestId==s.requestId){if(!t.data.previewHtml)return s.$container.addClass("zilch"),s.$container.append($("",{text:Craft.t("app","No preview available.")})),void s._addBumperButtons();s.$container.removeClass("zilch"),s.$container.attr("data-asset-id",s.assetId),s.$container.append(t.data.previewHtml),s._addBumperButtons(),s._addModalName(),Craft.appendHeadHtml(t.data.headHtml),Craft.appendBodyHtml(t.data.bodyHtml)}})).catch((function(t){var e=t.response;d(),Craft.cp.displayError(e.data.message),s.hide()}))},_resizeContainer:function(t,e){this.$container.css({width:t,"min-width":t,"max-width":t,height:e,"min-height":e,"max-height":e,top:(Garnish.$win.height()-e)/2,left:(Garnish.$win.width()-t)/2})}},{defaultSettings:{startingWidth:null,startingHeight:null}})},872:function(){Craft.ProgressBar=Garnish.Base.extend({$progressBar:null,$innerProgressBar:null,$progressBarStatus:null,_itemCount:0,_processedItemCount:0,_displaySteps:!1,init:function(t,e){e&&(this._displaySteps=!0),this.$progressBar=$('').appendTo(t),this.$innerProgressBar=$('').appendTo(this.$progressBar),this.$progressBarStatus=$('').insertAfter(this.$progressBar),this.resetProgressBar()},resetProgressBar:function(){this.setProgressPercentage(100),this.$progressBar.addClass("pending"),this.setItemCount(1),this.setProcessedItemCount(0),this.$progressBarStatus.html(""),this._displaySteps&&this.$progressBar.addClass("has-status")},hideProgressBar:function(){this.$progressBar.addClass("hidden"),this.$progressBarStatus.addClass("hidden")},showProgressBar:function(){this.$progressBar.removeClass("hidden"),this.$progressBarStatus.removeClass("hidden")},setItemCount:function(t){this._itemCount=t},incrementItemCount:function(t){this._itemCount+=t},setProcessedItemCount:function(t){this._processedItemCount=t},incrementProcessedItemCount:function(t){this._processedItemCount+=t},updateProgressBar:function(){this._itemCount=Math.max(this._itemCount,1);var t=Math.min(100,Math.round(100*this._processedItemCount/this._itemCount));this.setProgressPercentage(t),this._displaySteps&&this.$progressBarStatus.html(this._processedItemCount+" / "+this._itemCount)},setProgressPercentage:function(t,e){0===t?this.$progressBar.addClass("pending"):(this.$progressBar.removeClass("pending"),e?this.$innerProgressBar.velocity("stop").velocity({width:t+"%"},"fast"):this.$innerProgressBar.velocity("stop").width(t+"%"))}})},1396:function(){Craft.PromptHandler=Garnish.Base.extend({modal:null,$modalContainerDiv:null,$prompt:null,$promptApplyToRemainingContainer:null,$promptApplyToRemainingCheckbox:null,$promptApplyToRemainingLabel:null,$pomptChoices:null,_prompts:[],_promptBatchCallback:$.noop,_promptBatchReturnData:[],_promptBatchNum:0,resetPrompts:function(){this._prompts=[],this._promptBatchCallback=$.noop,this._promptBatchReturnData=[],this._promptBatchNum=0},addPrompt:function(t){this._prompts.push(t)},getPromptCount:function(){return this._prompts.length},showBatchPrompts:function(t){this._promptBatchCallback=t,this._promptBatchReturnData=[],this._promptBatchNum=0,this._showNextPromptInBatch()},_showNextPromptInBatch:function(){var t=this._prompts[this._promptBatchNum].prompt,e=this._prompts.length-(this._promptBatchNum+1);this._showPrompt(t.message,t.choices,this._handleBatchPromptSelection.bind(this),e)},_handleBatchPromptSelection:function(t,e){var i=this._prompts[this._promptBatchNum],s=this._prompts.length-(this._promptBatchNum+1),n=$.extend(i,{choice:t});this._promptBatchReturnData.push(n),s?(this._promptBatchNum++,e?this._handleBatchPromptSelection(t,!0):this._showNextPromptInBatch()):"function"==typeof this._promptBatchCallback&&this._promptBatchCallback(this._promptBatchReturnData)},_showPrompt:function(t,e,i,s){this._promptCallback=i,null===this.modal&&(this.modal=new Garnish.Modal({closeOtherModals:!1})),null===this.$modalContainerDiv&&(this.$modalContainerDiv=$('').addClass().appendTo(Garnish.$bod)),this.$prompt=$('').appendTo(this.$modalContainerDiv.empty()),this.$promptMessage=$('').appendTo(this.$prompt),this.$promptChoices=$('').appendTo(this.$prompt),this.$promptApplyToRemainingContainer=$('').appendTo(this.$prompt).hide(),this.$promptApplyToRemainingCheckbox=$('').appendTo(this.$promptApplyToRemainingContainer),this.$promptApplyToRemainingLabel=$("").appendTo(this.$promptApplyToRemainingContainer),this.$promptButtons=$('').appendTo(this.$prompt),this.modal.setContainer(this.$modalContainerDiv),this.$promptMessage.html(t);for(var n=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$promptButtons),a=$("",{type:"submit",class:"btn submit disabled",text:Craft.t("app","OK")}).appendTo(this.$promptButtons),r=0;r ").appendTo(this.$promptChoices).find("input");this.addListener(o,"click",(function(){a.removeClass("disabled")}))}this.addListener(a,"activate",(function(t){var e=$(t.currentTarget).parents(".modal").find("input[name=promptAction]:checked").val(),i=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice(e,i)})),this.addListener(n,"activate",(function(){var t=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice("cancel",t)})),s&&(this.$promptApplyToRemainingContainer.show(),this.$promptApplyToRemainingLabel.html(" "+Craft.t("app","Apply this to the {number} remaining conflicts?",{number:s}))),this.modal.show(),this.modal.removeListener(Garnish.Modal.$shade,"click"),this.addListener(Garnish.Modal.$shade,"click","_cancelPrompt")},_selectPromptChoice:function(t,e){var i=this;this.$prompt.fadeOut("fast",(function(){i.modal.hide(),i._promptCallback(t,e)}))},_cancelPrompt:function(){this._selectPromptChoice("cancel",!0)}})},8960:function(){Craft.Queue=Garnish.Base.extend({running:!1,paused:!1,pausedForVisibility:!1,jobs:null,get length(){return this.jobs.length},get isPaused(){return this.paused||this.pausedForVisibility},init:function(){var t=this;this.jobs=[],Garnish.$doc.on("visibilitychange",(function(){t.pausedForVisibility&&Craft.isVisible()&&(t.pausedForVisibility=!1,t._resume())}))},push:function(t){return this._add(t,"push")},unshift:function(t){return this._add(t,"unshift")},pause:function(){this.paused||(this.paused=!0,this.pausedForVisibility||this.trigger("pause"))},resume:function(){this.paused&&(this.paused=!1,this._resume())},_add:function(t,e){var i=this;return new Promise((function(s,n){i.jobs[e]((function(){return new Promise((function(e,i){t().then((function(t){s(t),e()})).catch((function(t){n(t),i()}))}))})),i.running||(i.trigger("beforeRun"),i.running=!0,i._exec())}))},clear:function(){this.jobs.length=0},_exec:function(){var t=this;if(!this.jobs.length)return this.running=!1,void this.trigger("afterRun");this.pausedForVisibility||Craft.isVisible()||(this.pausedForVisibility=!0,this.paused||this.trigger("pause")),this.paused||this.pausedForVisibility||(this.trigger("beforeExec"),this.jobs.shift()().finally((function(){t.trigger("afterExec"),t._exec()})))},_resume:function(){this.isPaused||(this.trigger("resume"),this._exec())}}),Craft.queue=new Craft.Queue},4070:function(){!function(t){Craft.SlidePicker=Garnish.Base.extend({min:null,max:null,totalSteps:null,value:null,label:null,describedBy:null,$container:null,$buttons:null,init:function(e,i){var s=this;this.setSettings(i,Craft.SlidePicker.defaults),this.$container=t("",{class:"slide-picker",role:"slider",tabindex:0}),this.refresh(),this.setValue(e,!1),this.addListener(this.$container,"keydown",(function(t){switch(t.keyCode){case Garnish.UP_KEY:s.setValue(s.value+s.settings.step),t.preventDefault();break;case Garnish.DOWN_KEY:s.setValue(s.value-s.settings.step),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?s.setValue(s.value+s.settings.step):s.setValue(s.value-s.settings.step),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?s.setValue(s.value-s.settings.step):s.setValue(s.value+s.settings.step),t.preventDefault();break;case Garnish.HOME_KEY:s.setValue(s.min),t.preventDefault();break;case Garnish.END_KEY:s.setValue(s.max),t.preventDefault()}}))},refresh:function(){var e=this;if(this.min=this._min(),this.max=this._max(),this.totalSteps=(this.max-this.min)/this.settings.step,this.label=this.settings.label,this.describedBy=this.settings.describedBy,!Number.isInteger(this.totalSteps))throw"Invalid SlidePicker config";this.$buttons&&this.$buttons.remove(),this.$container.attr("aria-valuemin",this.min),this.$container.attr("aria-valuemax",this.max),this.label&&this.$container.attr("aria-label",this.label),this.describedBy&&this.$container.attr("aria-describedby",this.describedBy),this.$buttons=t();for(var i=this.min;i<=this.max;i+=this.settings.step)this.$buttons=this.$buttons.add(t("",{title:this.settings.valueLabel(i),data:{value:i}}));if(this.$buttons.appendTo(this.$container),null!==this.value){var s=this.value;this.value=null,this.setValue(s,!1)}this.addListener(this.$buttons,"mouseover",(function(i){e.$buttons.removeClass("active-hover last-active-hover"),t(i.currentTarget).addClass("active-hover last-active-hover").prevAll().addClass("active-hover")})),this.addListener(this.$buttons,"mouseout",(function(){e.$buttons.removeClass("active-hover")})),this.addListener(this.$buttons,"click",(function(i){e.setValue(t.data(i.currentTarget,"value")),i.stopPropagation(),e.$container.focus()}))},setValue:function(t,e){if(t=Math.max(Math.min(t,this.max),this.min),this.value!==(this.value=t)){this.$container.attr({"aria-valuenow":this.value,"aria-valuetext":this.settings.valueLabel(this.value)}),this.$buttons.removeClass("last-active active");var i=this.$buttons.eq((this.value-this.min)/this.settings.step);i.add(i.prevAll()).addClass("active"),i.addClass("last-active"),!1!==e&&this.settings.onChange(t)}},_min:function(){return"function"==typeof this.settings.min?this.settings.min():this.settings.min},_max:function(){return"function"==typeof this.settings.max?this.settings.max():this.settings.max}},{defaults:{min:0,max:100,step:10,valueLabel:null,onChange:t.noop}})}(jQuery)},5763:function(){Craft.SlideRuleInput=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,$input:null,value:null,startPositionX:null,init:function(t,e){var i=this;this.setSettings(e,Craft.SlideRuleInput.defaultSettings),this.value=0,this.graduationsMin=-70,this.graduationsMax=70,this.slideMin=-45,this.slideMax=45,this.$container=$("#"+t),this.$overlay=$('').appendTo(this.$container),this.$cursor=$('').appendTo(this.$container),this.$graduations=$('').appendTo(this.$container),this.$graduationsUl=$("").appendTo(this.$graduations),this.$container.attr({role:"slider",tabindex:"0","aria-valuemin":this.slideMin,"aria-valuemax":this.slideMax,"aria-valuenow":"0","aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:0})});for(var s=this.graduationsMin;s<=this.graduationsMax;s++){var n=$(''+s+" ").appendTo(this.$graduationsUl);s%5==0&&n.addClass("main-graduation"),0===s&&n.addClass("selected")}this.$options=this.$container.find(".graduation"),this.addListener(this.$container,"resize",this._handleResize.bind(this)),this.addListener(this.$container,"tapstart",this._handleTapStart.bind(this)),this.addListener(Garnish.$bod,"tapmove",this._handleTapMove.bind(this)),this.addListener(Garnish.$bod,"tapend",this._handleTapEnd.bind(this)),this.addListener(this.$container,"keydown",this._handleKeypress.bind(this)),setTimeout((function(){i.graduationsCalculatedWidth=10*(i.$options.length-1),i.$graduationsUl.css("left",-i.graduationsCalculatedWidth/2+i.$container.width()/2)}),50)},_handleResize:function(){var t=this.valueToPosition(this.value);this.$graduationsUl.css("left",t)},_handleKeypress:function(t){var e=parseInt(this.$container.attr("aria-valuenow"),10);switch(t.keyCode){case Garnish.UP_KEY:case Garnish.RIGHT_KEY:this.setValue(e+1);break;case Garnish.DOWN_KEY:case Garnish.LEFT_KEY:this.setValue(e-1);break;case Garnish.PAGE_UP_KEY:this.setValue(e+10);break;case Garnish.PAGE_DOWN_KEY:this.setValue(e-10);break;case Garnish.HOME_KEY:this.setValue(this.slideMin);break;case Garnish.END_KEY:this.setValue(this.slideMax)}this.onChange()},_handleTapStart:function(t,e){t.preventDefault(),this.startPositionX=e.position.x,this.startLeft=this.$graduationsUl.position().left,this.dragging=!0,this.onStart()},_handleTapMove:function(t,e){if(this.dragging){t.preventDefault();var i=this.startPositionX-e.position.x,s=this.startLeft-i,n=this.positionToValue(s);this.setValue(n),this.onChange()}},setValue:function(t){var e=this.valueToPosition(t);tthis.slideMax&&(t=this.slideMax,e=this.valueToPosition(t)),this.$graduationsUl.css("left",e),t>=this.slideMin&&t<=this.slideMax&&(this.$options.removeClass("selected"),$.each(this.$options,(function(e,i){$(i).data("graduation")>0&&$(i).data("graduation")<=t&&$(i).addClass("selected"),$(i).data("graduation")<0&&$(i).data("graduation")>=t&&$(i).addClass("selected"),0==$(i).data("graduation")&&$(i).addClass("selected")}))),this.$container.attr({"aria-valuenow":t,"aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:parseInt(t,10)})}),this.value=t},_handleTapEnd:function(t){this.dragging&&(t.preventDefault(),this.dragging=!1,this.onEnd())},positionToValue:function(t){var e=-1*this.graduationsMin,i=-1*(this.graduationsMin-this.graduationsMax);return(this.$graduations.width()/2+-1*t)/this.graduationsCalculatedWidth*i-e},valueToPosition:function(t){var e=-1*this.graduationsMin,i=-1*(this.graduationsMin-this.graduationsMax);return-((t+e)*this.graduationsCalculatedWidth/i-this.$graduations.width()/2)},onStart:function(){"function"==typeof this.settings.onChange&&this.settings.onStart(this)},onChange:function(){"function"==typeof this.settings.onChange&&this.settings.onChange(this)},onEnd:function(){"function"==typeof this.settings.onChange&&this.settings.onEnd(this)},defaultSettings:{onStart:$.noop,onChange:$.noop,onEnd:$.noop}})},5759:function(){!function(t){Craft.Slideout=Garnish.Base.extend({$outerContainer:null,$container:null,$shade:null,isOpen:!1,init:function(e,i){var s=this;this.setSettings(i,Craft.Slideout.defaults),Craft.useMobileStyles()||(this.$shade=t('').appendTo(Garnish.$bod),this.settings.closeOnShadeClick&&this.addListener(this.$shade,"click",(function(t){t.stopPropagation(),s.close()}))),this.$outerContainer=t("",{class:"slideout-container hidden"}),this.$container=t("<".concat(this.settings.containerElement,"/>"),this.settings.containerAttributes).attr("data-slideout","").addClass("slideout").append(e).data("slideout",this).appendTo(this.$outerContainer),Garnish.addModalAttributes(this.$outerContainer),Craft.useMobileStyles()&&this.$container.addClass("so-mobile"),Craft.trapFocusWithin(this.$container),this.settings.autoOpen&&this.open()},open:function(){var t=this;this.isOpen||(this.setTriggerElement(document.activeElement),this._cancelTransitionListeners(),this.$shade&&this.$shade.appendTo(Garnish.$bod).show(),this.$outerContainer.appendTo(Garnish.$bod).removeClass("hidden"),Craft.useMobileStyles()?this.$container.css("top","100vh"):this.$container.css(Garnish.ltr?"left":"right","100vw"),this.$container.one("transitionend.slideout",(function(){Craft.setFocusWithin(t.$container)})),this.$shade&&(this.$shade[0].offsetWidth,this.$shade.addClass("so-visible")),this.$container[0].offsetWidth,Craft.Slideout.addPanel(this),this.enable(),Garnish.uiLayerManager.addLayer(this.$outerContainer),Garnish.hideModalBackgroundLayers(),this.settings.closeOnEsc&&Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.close()})),this.isOpen=!0,this.trigger("open"))},setTriggerElement:function(t){this.settings.triggerElement=t},close:function(){var t=this;this.isOpen&&(this.trigger("beforeClose"),this.disable(),this.isOpen=!1,this._cancelTransitionListeners(),this.$shade&&this.$shade.removeClass("so-visible").one("transitionend.slideout",(function(){t.$shade.hide()})),Craft.Slideout.removePanel(this),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$container.one("transitionend.slideout",(function(){t.$outerContainer.addClass("hidden"),t.trigger("close")})),this.settings.triggerElement&&this.settings.triggerElement.focus())},_cancelTransitionListeners:function(){this.$shade&&this.$shade.off("transitionend.slideout"),this.$container.off("transitionend.slideout")},destroy:function(){this.$shade&&(this.$shade.remove(),this.$shade=null),this.$outerContainer.remove(),this.$outerContainer=null,this.$container=null,this.base()}},{defaults:{containerElement:"div",containerAttributes:{},autoOpen:!0,closeOnEsc:!0,closeOnShadeClick:!0,triggerElement:null},openPanels:[],addPanel:function(t){Craft.Slideout.openPanels.unshift(t),Craft.useMobileStyles()?t.$container.css("top",0):Craft.Slideout.updateStyles()},removePanel:function(t){Craft.Slideout.openPanels=Craft.Slideout.openPanels.filter((function(e){return e!==t})),Craft.useMobileStyles()?t.$container.css("top","100vh"):(t.$container.css(Garnish.ltr?"left":"right","100vw"),Craft.Slideout.updateStyles())},updateStyles:function(){var t=Craft.Slideout.openPanels.length;Craft.Slideout.openPanels.forEach((function(e,i){e.$container.css(Garnish.ltr?"left":"right","".concat((t-i)/t*50,"vw"))})),0!==t?Garnish.$bod.addClass("no-scroll"):Garnish.$bod.removeClass("no-scroll")}})}(jQuery)},5185:function(){Craft.SlugGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),Craft.allowUppercaseInSlug||(t=t.toLowerCase()),Craft.limitAutoSlugsToAscii&&(t=Craft.asciiString(t,this.settings.charMap));var e=Craft.filterArray(XRegExp.matchChain(t,[XRegExp("[\\p{L}\\p{N}\\p{M}]+")]));return e.length?e.join(Craft.slugWordSeparator):""}})},8030:function(){Craft.Structure=Garnish.Base.extend({id:null,$container:null,state:null,structureDrag:null,init:function(t,e,i){this.id=t,this.$container=$(e),this.setSettings(i,Craft.Structure.defaults),this.$container.data("structure")&&(console.warn("Double-instantiating a structure on an element"),this.$container.data("structure").destroy()),this.$container.data("structure",this),this.state={},this.settings.storageKey&&$.extend(this.state,Craft.getLocalStorage(this.settings.storageKey,{})),void 0===this.state.collapsedElementIds&&(this.state.collapsedElementIds=[]);for(var s=this.$container.find("ul").prev(".row"),n=0;n').prependTo(a);-1!==$.inArray(a.children(".element").data("id"),this.state.collapsedElementIds)&&r.addClass("collapsed"),this.initToggle(o)}this.settings.sortable&&(this.structureDrag=new Craft.StructureDrag(this,this.settings.maxLevels)),this.settings.newChildUrl&&this.initNewChildMenus(this.$container.find(".add"))},initToggle:function(t){var e=this;t.on("click",(function(t){var i=$(t.currentTarget).closest("li"),s=i.children(".row").find(".element:first").data("id"),n=$.inArray(s,e.state.collapsedElementIds);i.hasClass("collapsed")?(i.removeClass("collapsed"),-1!==n&&e.state.collapsedElementIds.splice(n,1)):(i.addClass("collapsed"),-1===n&&e.state.collapsedElementIds.push(s)),e.settings.storageKey&&Craft.setLocalStorage(e.settings.storageKey,e.state)}))},initNewChildMenus:function(t){this.addListener(t,"click","onNewChildMenuClick")},onNewChildMenuClick:function(t){var e=$(t.currentTarget);if(!e.data("menubtn")){var i=e.parent().children(".element").data("id"),s=Craft.getUrl(this.settings.newChildUrl,"parentId="+i);$('").insertAfter(e),new Garnish.MenuBtn(e).showMenu()}},getIndent:function(t){return Craft.Structure.baseIndent+(t-1)*Craft.Structure.nestedIndent},addElement:function(t){var e=$('').appendTo(this.$container),i=$('').appendTo(e);if(i.append(t),this.settings.sortable&&(i.append(' '),this.structureDrag.addItems(e)),this.settings.newChildUrl){var s=$(' ').appendTo(i);this.initNewChildMenus(s)}i.css("margin-bottom",-30),i.velocity({"margin-bottom":0},"fast")},removeElement:function(t){var e,i=this,s=t.parent().parent();this.settings.sortable&&this.structureDrag.removeItems(s),s.siblings().length||(e=s.parent()),s.css("visibility","hidden").velocity({marginBottom:-s.height()},"fast",(function(){s.remove(),void 0!==e&&i._removeUl(e)}))},_removeUl:function(t){t.siblings(".row").children(".toggle").remove(),t.remove()},destroy:function(){this.$container.removeData("structure"),this.base()}},{baseIndent:8,nestedIndent:35,defaults:{storageKey:null,sortable:!1,newChildUrl:null,maxLevels:null}})},3096:function(){Craft.StructureDrag=Garnish.Drag.extend({structure:null,maxLevels:null,draggeeLevel:null,$helperLi:null,$targets:null,draggeeHeight:null,init:function(t,e){this.structure=t,this.maxLevels=e,this.$insertion=$(' ');var i=this.structure.$container.find("li");this.base(i,{handle:".element:first, .move:first",helper:this.getHelper.bind(this)})},getHelper:function(t){this.$helperLi=t;var e=$(' ').append(t);return t.css("padding-"+Craft.left,this.$draggee.css("padding-"+Craft.left)),t.find(".move").removeAttr("title"),e},onDragStart:function(){var t=this;this.$targets=$(),this.findTargets(this.structure.$container),this.draggeeLevel=0;var e=this.$draggee;do{this.draggeeLevel++,e=e.find("> ul > li")}while(e.length);this.draggeeHeight=this.$draggee.height(),this.$draggee.velocity({height:0},"fast",(function(){t.$draggee.addClass("hidden")})),this.base(),this.addListener(Garnish.$doc,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&this.cancelDrag()}))},findTargets:function(t){for(var e=t.children().not(this.$draggee),i=0;i =this._.targetOffset.top+5&&this._.targetYDiff=this._.closestTargetOffset.top+this._.closestTargetHeight-5,this._.$nextTargetLi&&this._.nextTargetLevel==this._.closestTargetLevel)this._.hoveringBetweenRows?(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel-1)&&this.$insertion.insertAfter(this._.$closestTargetLi):(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover");else if(this._.$nextTargetLi&&this._.nextTargetLevel>this._.closestTargetLevel)(!this.maxLevels||this.maxLevels>=this._.nextTargetLevel+this.draggeeLevel-1)&&(this._.hoveringBetweenRows?this.$insertion.insertBefore(this._.$nextTargetLi):(this._.$closestTarget.addClass("draghover"),this.$insertion.appendTo(this._.$closestTargetLi.children("ul"))));else if(this._.hoveringBetweenRows){for(this._.draggeeX=this.mouseX-this.targetItemMouseDiffX,"rtl"===Craft.orientation&&(this._.draggeeX+=this.$helperLi.width()),this._.$parentLis=this._.$closestTarget.parentsUntil(this.structure.$container,"li"),this._.$closestParentLi=null,this._.closestParentLiXDiff=null,this._.closestParentLevel=null,this._.i=0;this._.i=this._.parentLevel+this.draggeeLevel-1)&&(!this._.$closestParentLi||this._.parentLiXDiff=this._.nextTargetLevel))&&(this._.$closestParentLi=this._.$parentLi,this._.closestParentLiXDiff=this._.parentLiXDiff,this._.closestParentLevel=this._.parentLevel);this._.$closestParentLi&&this.$insertion.insertAfter(this._.$closestParentLi)}else(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover")},cancelDrag:function(){this.$insertion.remove(),this._.$closestTarget&&this._.$closestTarget.removeClass("draghover"),this.onMouseUp()},onDragStop:function(){var t=this;if(this._.$closestTarget&&(this.$insertion.parent().length||this._.$closestTarget.hasClass("draghover"))){var e,i;if(this.$draggee.siblings().length||(e=this.$draggee.parent()),this.$insertion.parent().length){var s=this.$insertion.next().add(this.$insertion.prev());-1===$.inArray(this.$draggee[0],s)?(this.$insertion.replaceWith(this.$draggee),i=!0):(this.$insertion.remove(),i=!1)}else{var n=this._.$closestTargetLi.children("ul");if(e&&n.length&&n[0]===e[0])i=!1;else{if(n.length)this._.$closestTargetLi.hasClass("collapsed")&&this._.$closestTarget.children(".toggle").trigger("click");else{var a=$('').prependTo(this._.$closestTarget);this.structure.initToggle(a),n=$("").appendTo(this._.$closestTargetLi)}this.$draggee.appendTo(n),i=!0}}if(this._.$closestTarget.removeClass("draghover"),i){e&&this.structure._removeUl(e);var r,o=this.$draggee.parentsUntil(this.structure.$container,"li").length+1;o!=this.$draggee.data("level")&&(1==this.$draggee.data("level")?((r={})["padding-"+Craft.left]=38,this.$helperLi.velocity(r,"fast")):1==o&&((r={})["padding-"+Craft.left]=Craft.Structure.baseIndent,this.$helperLi.velocity(r,"fast")),this.setLevel(this.$draggee,o));var l=this.$draggee.children(".row").children(".element"),h={structureId:this.structure.id,elementId:l.data("id"),siteId:l.data("site-id"),prevId:this.$draggee.prev().children(".row").children(".element").data("id"),parentId:this.$draggee.parent("ul").parent("li").children(".row").children(".element").data("id")};Craft.sendActionRequest("POST","structures/move-element",{data:h}).then((function(t){Craft.cp.displaySuccess(Craft.t("app","New order saved."))}))}}this.$draggee.velocity("stop").removeClass("hidden").velocity({height:this.draggeeHeight},"fast",(function(){t.$draggee.css("height","auto")})),this.returnHelpersToDraggees(),this.base()},setLevel:function(t,e){t.data("level",e);var i=this.structure.getIndent(e),s={};s["margin-"+Craft.left]="-"+i+"px",s["padding-"+Craft.left]=i+"px",this.$draggee.children(".row").css(s);for(var n=t.children("ul").children(),a=0;athis._draggeeLevelDelta&&(this._draggeeLevelDelta=n),e=e.add(i),i=i.next()}if(this.draggingLastElements=!i.length,this.maxLevels&&this.draggingLastElements&&this.tableView.getMorePending()){this._loadingDraggeeLevelDelta=!0;var a=this._getAjaxBaseData(this.$targetItem);Craft.sendActionRequest("POST","structures/get-element-level-delta",{data:a}).then((function(e){t._loadingDraggeeLevelDelta=!1,t.dragging&&(t._draggeeLevelDelta=e.data.delta,t.drag(!1))}))}return e},getHelper:function(t){var e=$('').appendTo(Garnish.$bod),i=$('').appendTo(e),s=$('').appendTo(i),n=$("").appendTo(s);t.appendTo(n),this._$firstRowCells=this.tableView.$elementContainer.children("tr:first").children();for(var a=t.children(),r=0;r th > .toggle");if(!c.hasClass("expanded")){c.addClass("expanded");var u=this.tableView._createSpinnerRowAfter(h);this.tableView.elementSelect&&this.tableView.elementSelect.removeItems(this.$targetItem),this.removeItems(this.$targetItem),this.$targetItem.remove(),this.tableView._totalVisible--}break}h=h.prev()}Craft.sendActionRequest("POST","structures/move-element",{data:l}).then((function(e){Craft.cp.displaySuccess(Craft.t("app","New position saved.")),t.onPositionChange(),u&&u.parent().length&&(u.remove(),t.tableView._expandElement(c,!0)),Craft.cp.runQueue()})).catch((function(e){e.response,Craft.cp.displayError(Craft.t("app","A server error occurred.")),t.tableView.elementIndex.updateElements()}))}},onSortChange:function(){this.tableView.elementSelect&&this.tableView.elementSelect.resetItemOrder(),this._positionChanged=!0,this.base()},onPositionChange:function(){var t=this;Garnish.requestAnimationFrame((function(){t.trigger("positionChange"),t.settings.onPositionChange()}))},onReturnHelpersToDraggees:function(){if(this._$firstRowCells.css("width",""),this.draggingLastElements&&this.tableView.getMorePending()){this.tableView._totalVisible+=this.newDraggeeIndexes[0]-this.oldDraggeeIndexes[0];var t=this.$draggee.last().nextAll();t.length&&(this.removeItems(t),t.remove(),this.tableView.maybeLoadMore())}this.base()},_getLevelBounds:function(t,e){if(e&&e.length?this._getLevelBounds._minLevel=e.data("level"):this._getLevelBounds._minLevel=1,t&&t.length?this._getLevelBounds._maxLevel=t.data("level")+1:this._getLevelBounds._maxLevel=1,this.maxLevels){if(1!=this._getLevelBounds._minLevel&&this._getLevelBounds._minLevel+this._draggeeLevelDelta>this.maxLevels)return!1;this._getLevelBounds._maxLevel+this._draggeeLevelDelta>this.maxLevels&&(this._getLevelBounds._maxLevel=this.maxLevels-this._draggeeLevelDelta,this._getLevelBounds._maxLevelthis._targetLevelBounds.max&&(this._updateIndent._indentationDist-=this._updateIndent._targetLevel-this._targetLevelBounds.max,this._updateIndent._targetLevel=this._targetLevelBounds.max),this._targetLevel!==(this._targetLevel=this._updateIndent._targetLevel)&&this._updateAncestorsBeforeRepaint(),this._updateIndent._targetLevelMouseDiff=this._updateIndent._mouseDist-this._updateIndent._indentationDist*Craft.StructureTableSorter.LEVEL_INDENT,this._updateIndent._magnetImpact=Math.round(this._updateIndent._targetLevelMouseDiff/15),Math.abs(this._updateIndent._magnetImpact)>Craft.StructureTableSorter.MAX_GIVE&&(this._updateIndent._magnetImpact=(this._updateIndent._magnetImpact>0?1:-1)*Craft.StructureTableSorter.MAX_GIVE),this._updateIndent._closestLevelMagnetIndent=this._getLevelIndent(this._targetLevel)+this._updateIndent._magnetImpact,this.helpers[0].css("margin-"+Craft.left,this._updateIndent._closestLevelMagnetIndent+this._helperMargin),this._$titleHelperCell.css("width",this._titleHelperCellOuterWidth-this._updateIndent._closestLevelMagnetIndent)},_getLevelIndent:function(t){return(t-1)*Craft.StructureTableSorter.LEVEL_INDENT},_getAjaxBaseData:function(t){return{structureId:this.structureId,elementId:t.data("id"),siteId:t.find(".element:first").data("site-id")}},_getAncestors:function(t,e){if(this._getAncestors._ancestors=[],0!=e)for(this._getAncestors._level=e,this._getAncestors._$prevRow=t.prev();this._getAncestors._$prevRow.length&&!(this._getAncestors._$prevRow.data("level") th > .toggle:first").remove();for(this._updateAncestors._newAncestors=this._getAncestors(this.$targetItem,this._targetLevel),this._updateAncestors._i=0;this._updateAncestors._i').insertAfter(this._updateAncestors._$ancestor.find("> th .move:first"))}this._ancestors=this._updateAncestors._newAncestors,delete this._updateAncestors._i,delete this._updateAncestors._$ancestor,delete this._updateAncestors._newAncestors}},{HELPER_MARGIN:0,LEVEL_INDENT:44,MAX_GIVE:22,defaults:{onPositionChange:$.noop}})},53:function(){function t(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,i)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}(t,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i tbody > tr[data-id="'.concat(e.data.id,'"]'));if(i.length){var s={elementType:t.elementIndex.elementType,source:t.elementIndex.sourceKey,id:e.data.id,siteId:t.elementIndex.siteId};Craft.sendActionRequest("POST","element-indexes/element-table-html",{data:s}).then((function(t){for(var e=t.data,s=0;s th[data-titlecell] .element").replaceWith(e.elementHtml),e.attributeHtml)e.attributeHtml.hasOwnProperty(a)&&n.find('> td[data-attr="'.concat(a,'"]')).html(e.attributeHtml[a])}Craft.cp.elementThumbLoader.load(i)}))}}},Craft.messageReceiver.addEventListener("message",this._broadcastListener))},initTableHeaders:function(){var e,i;if("structure"===this.elementIndex.viewMode)e="structure",i="asc";else{var s=t(this.elementIndex.getSortAttributeAndDirection(),2);e=s[0],i=s[1]}for(var n=this.$table.children("thead").children().children("[data-attribute]"),a=0;a1&&void 0!==arguments[1]&&arguments[1];t.addClass("orderable");var i=t.html(),s=this.$tableCaption.find("[data-sort-instructions]"),n=$("",{id:"".concat(this.elementIndex.idPrefix,"-").concat(t.attr("data-attribute")),type:"button","aria-pressed":"false"}).html(i);s.length&&n.attr("aria-describedby",s.attr("id")),e?(n.attr("aria-pressed","true"),n.on("click",this._handleSelectedSortHeaderClick.bind(this))):n.on("click",this._handleUnselectedSortHeaderClick.bind(this)),t.empty().append(n)},isVerticalList:function(){return!0},getTotalVisible:function(){return this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee:this._totalVisible},setTotalVisible:function(t){this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee=t:this._totalVisible=t},getMorePending:function(){return this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee:this._morePending},setMorePending:function(t){this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee=t:this._morePending=this._morePendingPostStructureTableDraggee=t},getLoadMoreParams:function(){var t=this.base();return this._isStructureTableDraggingLastElements()&&(t.criteria.positionedAfter=this.structureTableSort.$targetItem.data("id")),t},appendElements:function(t){this.base(t),this.structureTableSort&&this.structureTableSort.addItems(t),Craft.cp.updateResponsiveTables()},_collapseElement:function(t,e){if(!e&&!t.hasClass("expanded"))return!1;t.removeClass("expanded"),t.attr("aria-expanded","false");for(var i=t.parent().parent(),s=i.data("id"),n=i.data("level"),a=i.next();a.length;){if(!Garnish.hasAttr(a,"data-spinnerrow")){if(a.data("level")<=n)break;this.elementSelect&&this.elementSelect.removeItems(a),this.structureTableSort&&this.structureTableSort.removeItems(a),this._totalVisible--}var r=a.next();a.remove(),a=r}this.elementIndex.instanceState.collapsedElementIds||(this.elementIndex.instanceState.collapsedElementIds=[]),this.elementIndex.instanceState.collapsedElementIds.push(s),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds),this.maybeLoadMore()},_expandElement:function(t,e){var i=this;if(!e&&t.hasClass("expanded"))return!1;if(t.addClass("expanded"),t.attr("aria-expanded","true"),this.elementIndex.instanceState.collapsedElementIds){var s=t.parent().parent(),n=s.data("id"),a=$.inArray(n,this.elementIndex.instanceState.collapsedElementIds);if(-1!==a){this.elementIndex.instanceState.collapsedElementIds.splice(a,1),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds);var r=this._createSpinnerRowAfter(s),o=$.extend(!0,{},this.settings.params);o.criteria.descendantOf=n,Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:o}).then((function(t){if(r.parent().length){var e=$(t.data.html),s=i._totalVisible+e.length,n=i.settings.batchSize&&e.length===i.settings.batchSize;if(n){var a=r.nextAll();i.elementSelect&&i.elementSelect.removeItems(a),i.structureTableSort&&i.structureTableSort.removeItems(a),a.remove(),s-=a.length}else n=i._morePending;r.replaceWith(e),i.thumbLoader.load(e),(i.elementIndex.actions||i.settings.selectable)&&(i.elementSelect.addItems(e.filter(":not(.disabled)")),i.elementIndex.updateActionTriggers()),i.structureTableSort&&i.structureTableSort.addItems(e),Craft.appendHeadHtml(t.data.headHtml),Craft.appendBodyHtml(t.data.bodyHtml),Craft.cp.updateResponsiveTables(),i.setTotalVisible(s),i.setMorePending(n),i.maybeLoadMore()}})).catch((function(t){Craft.cp.displayError(),r.parent().length}))}}},_createSpinnerRowAfter:function(t){return $(' | ').insertAfter(t)},_isStructureTableDraggingLastElements:function(){return this.structureTableSort&&this.structureTableSort.dragging&&this.structureTableSort.draggingLastElements},_handleSelectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var i="asc"===this.elementIndex.getSelectedSortDirection()?"desc":"asc";this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortDirection(i),this._handleSortHeaderClick(t,e)}},_handleUnselectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var i=e.attr("data-attribute");this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortAttribute(i),this._handleSortHeaderClick(t,e)}},_handleSortHeaderClick:function(t,e){this.$selectedSortHeader&&this.$selectedSortHeader.removeClass("ordered asc desc"),e.addClass("ordered loading"),this.elementIndex.updateElements(),this.elementIndex.setIndexAvailable()},_updateScreenReaderStatus:function(){var e,i;if("structure"===this.elementIndex.viewMode)e="structure",i="asc";else{var s=t(this.elementIndex.getSortAttributeAndDirection(),2);e=s[0],i=s[1]}var n=this.elementIndex.getSortLabel(e);if(n){var a="asc"===i?Craft.t("app","Ascending"):Craft.t("app","Descending"),r=Craft.t("app","Table {name} sorted by {attribute}, {direction}",{name:this.$table.attr("data-name"),attribute:n,direction:a});this.$statusMessage.empty(),this.$statusMessage.text(r)}},_updateTableAttributes:function(t,e){var i=t.closest("tr");for(var s in e)e.hasOwnProperty(s)&&i.children('[data-attr="'+s+'"]:first').html(e[s])},destroy:function(){this._broadcastListener&&(Craft.messageReceiver.removeEventListener("message",this._broadcastListener),delete this._broadcastListener),this.base()}})},7745:function(){Craft.Tabs=Garnish.Base.extend({$container:null,$tablist:null,$menuBtn:null,$tabs:null,$firstTab:null,$lastTab:null,$selectedTab:null,$focusableTab:null,menu:null,init:function(t){var e=this;this.$container=$(t),this.$tablist=this.$container.find('> [role="tablist"]:first'),this.$tabs=this.$tablist.find('> [role="tab"]'),this.$firstTab=this.$tabs.first(),this.$lastTab=this.$tabs.last(),this.$selectedTab=this.$tabs.filter(".sel:first"),this.$focusableTab=this.$tabs.filter("[tabindex=0]:first"),this.$menuBtn=this.$container.find("> .menubtn:first").menubtn(),this.menu=this.$menuBtn.data("menubtn").menu,this.$container.data("tabs")&&(console.warn("Double-instantiating a tab manager on an element"),this.$container.data("tabs").destroy()),this.$container.data("tabs",this);for(var i=0;i1&&void 0!==arguments[1])||arguments[1],i=this._getTab(t);if(i[0]!==this.$selectedTab[0]){this.deselectTab(),this.$selectedTab=i.addClass("sel").attr("aria-selected","true"),this.makeTabFocusable(i),e&&i.trigger("focus"),this.scrollToTab(i),this.menu.$options.removeClass("sel"),this.menu.$options.filter('[data-id="'.concat(i.data("id"),'"]')).addClass("sel"),this.trigger("selectTab",{$tab:i}),$("#content").trigger("scroll");var s=i.closest(".slideout-container");s.length&&s.find(".so-content").trigger("scroll")}},deselectTab:function(){var t=this.$selectedTab.removeClass("sel").attr("aria-selected","false");this.$selectedTab=null,this.trigger("deselectTab",{$tab:t})},makeTabFocusable:function(t){var e=this._getTab(t);e[0]!==this.$focusableTab[0]&&(this.$focusableTab.attr("tabindex","-1"),this.$focusableTab=e.attr("tabindex","0"))},scrollToTab:function(t){var e=this._getTab(t),i=this.$tablist.scrollLeft(),s=e.offset().left-this.$tablist.offset().left,n=!1;if(s<0)n=i+s-24;else{var a=e.outerWidth(),r=this.$tablist.prop("clientWidth");s+a>r&&(n=i+(s-(r-a))+24)}!1!==n&&this.$tablist.scrollLeft(n)},updateMenuBtn:function(){Math.floor(this.$tablist.prop("scrollWidth")-48)>this.$container.prop("clientWidth")?(this.$tablist.addClass("scrollable"),this.$menuBtn.removeClass("hidden")):(this.$tablist.removeClass("scrollable"),this.$menuBtn.addClass("hidden"))},_getTab:function(t){if(t instanceof jQuery)return t;if(t instanceof HTMLElement)return $(t);if("string"!=typeof t)throw"Invalid tab ID";var e=this.$tabs.filter('[data-id="'.concat(t,'"]'));if(!e.length)throw"Invalid tab ID: ".concat(t);return e},destroy:function(){this.$container.removeData("tabs"),this.base()}})},5074:function(){Craft.TagSelectInput=Craft.BaseElementSelectInput.extend({searchTimeout:null,searchMenu:null,$container:null,$elementsContainer:null,$elements:null,$addTagInput:null,$spinner:null,_ignoreBlur:!1,init:function(t){var e=this;if(!$.isPlainObject(t)){for(var i={},s=["id","name","tagGroupId","sourceElementId"],n=0;n').appendTo(Garnish.$bod),a=$("").appendTo(s),r=0;r").appendTo(a),$('').appendTo(i).text(e.data.tags[r].title).data("id",e.data.tags[r].id).addClass(e.data.tags[r].exclude?"disabled":"");e.data.exactMatch||(i=$("").appendTo(a),$('').appendTo(i).text(n.search)),a.find("a:not(.disabled):first").addClass("hover"),t.searchMenu=new Garnish.Menu(s,{attachToElement:t.$addTagInput,onOptionSelect:t.selectTag.bind(t)}),t.addListener(s,"mousedown",(function(){t._ignoreBlur=!0})),t.searchMenu.show()})).catch((function(e){e.response,t.searchMenu&&t.killSearchMenu(),t.$spinner.addClass("hidden")}))}else this.$spinner.addClass("hidden")},selectTag:function(t){var e=this,i=$(t);if(!i.hasClass("disabled")){var s=i.data("id"),n=i.text(),a=$("",{class:"element small removable","data-id":s,"data-site-id":this.settings.targetSiteId,"data-label":n,"data-editable":"1"}).appendTo(this.$elementsContainer),r=$("",{type:"hidden",name:this.settings.name+"[]",value:s}).appendTo(a);$("",{class:"delete icon",title:Craft.t("app","Remove"),type:"button","aria-label":Craft.t("app","Remove {label}",{label:n})}).appendTo(a);var o=$("",{class:"label"}).appendTo(a);if($("",{class:"title",text:n}).appendTo(o),this.$elements=this.$elements.add(a),this.addElements(a),this.killSearchMenu(),this.$addTagInput.val(""),this.$addTagInput.trigger("focus"),!s){a.addClass("loading disabled");var l={groupId:this.settings.tagGroupId,title:n};Craft.sendActionRequest("POST","tags/create-tag",{data:l}).then((function(t){a.attr("data-id",t.data.id),r.val(t.data.id),a.removeClass("loading disabled")})).catch((function(t){t.response,e.removeElement(a),Craft.cp.displayError(Craft.t("app","A server error occurred."))}))}}},killSearchMenu:function(){this.searchMenu.hide(),this.searchMenu.destroy(),this.searchMenu=null}},{defaults:{tagGroupId:null}})},3958:function(){Craft.ThumbsElementIndexView=Craft.BaseElementIndexView.extend({getElementContainer:function(){return this.$container.children("ul")}})},1592:function(){Craft.ui={createButton:function(t){var e=$("",{type:t.type||"button",class:"btn"});return t.id&&e.attr("id",t.id),t.class&&e.addClass(t.class),t.ariaLabel&&e.attr("aria-label",t.ariaLabel),t.role&&e.attr("role",t.role),t.html?e.html(t.html):t.label?e.append($('').text(t.label)):e.addClass("btn-empty"),t.toggle&&e.attr("aria-expanded","false"),t.controls&&e.attr("aria-controls",t.controls),t.spinner&&e.append($('')),e},createSubmitButton:function(t){var e=this.createButton(Object.assign({},t,{type:"submit",label:t.label||Craft.t("app","Submit")}));return e.addClass("submit"),e},createTextInput:function(t){t=$.extend({autocomplete:!1},t);var e=$("",{attr:{class:"text",type:t.type||"text",inputmode:t.inputmode,id:t.id,size:t.size,name:t.name,value:t.value,maxlength:t.maxlength,autofocus:this.getAutofocusValue(t.autofocus),autocomplete:"boolean"==typeof t.autocomplete?t.autocomplete?"on":"off":t.autocomplete,disabled:this.getDisabledValue(t.disabled),readonly:t.readonly,title:t.title,placeholder:t.placeholder,step:t.step,min:t.min,max:t.max}});return t.class&&e.addClass(t.class),t.placeholder&&e.addClass("nicetext"),"password"===t.type&&e.addClass("password"),t.disabled&&e.addClass("disabled"),t.size||e.addClass("fullwidth"),t.showCharsLeft&&t.maxlength&&e.attr("data-show-chars-left").css("padding-"+("ltr"===Craft.orientation?"right":"left"),7.2*t.maxlength.toString().length+14+"px"),(t.placeholder||t.showCharsLeft)&&new Garnish.NiceText(e),"password"===t.type?$('').append(e):e},createTextField:function(t){return t.id||(t.id="text"+Math.floor(1e9*Math.random())),this.createField(this.createTextInput(t),t)},createCopyTextInput:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),i=t.buttonId||"".concat(e,"-btn"),s=$("",{class:"copytext"}),n=this.createTextInput($.extend({},t,{readonly:!0})).appendTo(s);return $("",{type:"button",id:i,class:"btn","data-icon":"clipboard",title:Craft.t("app","Copy to clipboard"),"aria-label":Craft.t("app","Copy to clipboard")}).appendTo(s).on("click",(function(){n[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),s.trigger("copy"),n[0].setSelectionRange(0,0)})),s},createCopyTextBtn:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),i=t.value,s=$("",{class:"copytextbtn-wrapper"}),n=$("",{id:e,class:"copytextbtn",role:"button",title:Craft.t("app","Copy to clipboard"),tabindex:"0"}).appendTo(s);t.class&&n.addClass(t.class);var a=$("",{value:i,readonly:!0,size:i.length,tabindex:"-1","aria-hidden":"true",class:"visually-hidden"}).insertBefore(n);$("",{text:i,class:"copytextbtn__value"}).appendTo(n),$("",{class:"visually-hidden",text:Craft.t("app","Copy to clipboard")}).appendTo(n),$("",{class:"copytextbtn__icon","data-icon":"clipboard","aria-hidden":"true"}).appendTo(n);var r=function(){a[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),n.trigger("copy"),a[0].setSelectionRange(0,0),n.focus()};return n.on("activate",(function(){r()})),n.on("keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(r(),t.preventDefault())})),s},createCopyTextField:function(t){return t.id||(t.id="copytext"+Math.floor(1e9*Math.random())),this.createField(this.createCopyTextInput(t),t)},createCopyTextPrompt:function(t){var e=$("",{class:"modal fitted"}),i=$("",{class:"body"}).appendTo(e);this.createCopyTextField($.extend({size:Math.max(Math.min(t.value.length,50),25)},t)).appendTo(i);var s=i.find("label");s.length>0&&s.attr("id")&&e.attr("aria-labelledby",s.attr("id"));var n=new Garnish.Modal(e,{closeOtherModals:!1});return e.on("copy",(function(){n.hide()})),e},createTextarea:function(t){var e=$("",{class:"text",rows:t.rows||2,cols:t.cols||50,id:t.id,name:t.name,maxlength:t.maxlength,autofocus:t.autofocus&&!Garnish.isMobileBrowser(!0),disabled:!!t.disabled,placeholder:t.placeholder,html:t.value});return t.showCharsLeft&&e.attr("data-show-chars-left",""),t.class&&e.addClass(t.class),t.size||e.addClass("fullwidth"),e},createTextareaField:function(t){return t.id||(t.id="textarea"+Math.floor(1e9*Math.random())),this.createField(this.createTextarea(t),t)},createSelect:function(t){var e=$("",{class:"select"});t.class&&e.addClass(t.class);var i=$("",{id:t.id,name:t.name,autofocus:t.autofocus&&Garnish.isMobileBrowser(!0),disabled:t.disabled,"data-target-prefix":t.targetPrefix,"aria-labelledby":t.labelledBy}).appendTo(e);if($.isPlainObject(t.options)){var s=[];for(var n in t.options)if(t.options.hasOwnProperty(n)){var a=t.options[n];$.isPlainObject(a)?void 0!==a.optgroup?s.push(a):s.push({label:a.label,value:void 0!==a.value?a.value:n,disabled:void 0!==a.disabled&&a.disabled}):s.push({label:a,value:n})}t.options=s}for(var r=null,o=0;o",{label:l.optgroup}).appendTo(i):$("",{value:l.value,selected:l.value==t.value,disabled:void 0!==l.disabled&&l.disabled,html:l.label}).appendTo(r||i)}return t.toggle&&(i.addClass("fieldtoggle"),new Craft.FieldToggle(i)),e},createSelectField:function(t){return t.id||(t.id="select"+Math.floor(1e9*Math.random())),this.createField(this.createSelect(t),t)},createCheckbox:function(t){var e=t.id||"checkbox"+Math.floor(1e9*Math.random()),i=$("",{type:"checkbox",value:void 0!==t.value?t.value:"1",id:e,class:"checkbox",name:t.name,checked:t.checked?"checked":null,autofocus:this.getAutofocusValue(t.autofocus),disabled:this.getDisabledValue(t.disabled),"data-target":t.toggle,"data-reverse-target":t.reverseToggle});t.class&&i.addClass(t.class),(t.toggle||t.reverseToggle)&&(i.addClass("fieldtoggle"),new Craft.FieldToggle(i));var s=$("",{for:e,html:t.label});return t.name&&(t.name.length<3||"[]"!==t.name.slice(-2))?$([$("",{type:"hidden",name:t.name,value:""})[0],i[0],s[0]]):$([i[0],s[0]])},createCheckboxField:function(t){t.id||(t.id="checkbox"+Math.floor(1e9*Math.random()));var e=$('',{id:"".concat(t.id,"-field")});return t.first&&e.addClass("first"),t.instructions&&e.addClass("has-instructions"),this.createCheckbox(t).appendTo(e),t.instructions&&$('').text(t.instructions).appendTo(e),e},createCheckboxSelect:function(t){var e,i,s=$('');t.class&&s.addClass(t.class),t.showAllOption?(e=t.allValue||"*",i=t.values==e,$("").appendTo(s).append(this.createCheckbox({id:t.id,class:"all",label:""+(t.allLabel||Craft.t("app","All"))+"",name:t.name,value:e,checked:i,autofocus:t.autofocus}))):i=!1;for(var n=0;n").appendTo(s).append(this.createCheckbox({label:a.label,name:t.name?t.name+"[]":null,value:a.value,checked:i||(t.values||[]).includes(a.value),disabled:i}))}return new Garnish.CheckboxSelect(s),s},createCheckboxSelectField:function(t){return t.fieldset=!0,t.id||(t.id="checkboxselect"+Math.floor(1e9*Math.random())),this.createField(this.createCheckboxSelect(t),t)},createLightswitch:function(t){var e=t.value||"1",i=t.indeterminateValue||"-",s=$("",{type:"button",class:"lightswitch","data-value":e,"data-indeterminate-value":i,id:t.id,role:"switch","aria-checked":t.on?"true":t.indeterminate?"mixed":"false","aria-labelledby":t.labelId,"data-target":t.toggle,"data-reverse-target":t.reverseToggle});return t.on?s.addClass("on"):t.indeterminate&&s.addClass("indeterminate"),t.small&&s.addClass("small"),t.disabled&&s.addClass("disabled"),$('').appendTo(s),t.name&&$("",{type:"hidden",name:t.name,value:t.on?e:t.indeterminate?i:"",disabled:t.disabled}).appendTo(s),(t.toggle||t.reverseToggle)&&(s.addClass("fieldtoggle"),new Craft.FieldToggle(s)),new Craft.LightSwitch(s,{onChange:t.onChange||$.noop}),s},createLightswitchField:function(t){return t.id||(t.id="lightswitch"+Math.floor(1e9*Math.random())),t.labelId||(t.labelId="".concat(t.id,"-label")),this.createField(this.createLightswitch(t),t).addClass("lightswitch-field")},createColorInput:function(t){var e=t.id||"color"+Math.floor(1e9*Math.random()),i=t.containerId||e+"-container",s=t.name||null,n=t.value||null,a=t.small||!1,r=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("",{id:i,class:"flex color-container"}),h=$("",{class:"color static"+(a?" small":"")}).appendTo(l),d=($("",{class:"color-preview",style:t.value?{backgroundColor:t.value}:null}).appendTo(h),$("",{class:"color-input-container"}).append($("",{class:"color-hex-indicator light code","aria-hidden":"true",text:"#"})).appendTo(l));return this.createTextInput({id:e,name:s,value:Craft.ltrim(n,"#"),size:10,class:"color-input",autofocus:r,disabled:o,"aria-label":Craft.t("app","Color hex value")}).appendTo(d),new Craft.ColorInput(l),l},createColorField:function(t){return t.fieldset=!0,o,t.id||(t.id="color"+Math.floor(1e9*Math.random())),this.createField(this.createColorInput(t),t)},createDateInput:function(t){var e=Garnish.isMobileBrowser(),i=(t.id||"date"+Math.floor(1e9*Math.random()))+"-date",s=t.name||null,n=s?s+"[date]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,r=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("",{class:"datewrapper"}),h=this.createTextInput({id:i,type:e?"date":"text",class:!(!e||a)&&"empty-value",name:n,value:a?e?a.toISOString().split("T")[0]:Craft.formatDate(a):"",placeholder:" ",autocomplete:!1,autofocus:r,disabled:o}).appendTo(l);return $('').appendTo(l),s&&$("",{type:"hidden",name:s+"[timezone]",val:Craft.timezone}).appendTo(l),e?h.datetimeinput():h.datepicker($.extend({defaultDate:a||new Date},Craft.datepickerOptions)),t.hasOuterContainer?l:$('').append(l).datetime()},createDateField:function(t){return t.id||(t.id="date"+Math.floor(1e9*Math.random())),this.createField(this.createDateInput(t),t)},createDateRangePicker:function(t){var e=new Date,i=new Date(e.getFullYear(),e.getMonth(),e.getDate());t=$.extend({class:"",options:["today","thisWeek","thisMonth","thisYear","past7Days","past30Days","past90Days","pastYear"],onChange:$.noop,selected:null,startDate:null,endDate:null},t);var s,n,a=$("",{class:"menu"}),r=$("",{class:"padded"}).appendTo(a),o=$("").addClass("sel").text(Craft.t("app","All")).data("handle","all");$("").append(o).appendTo(r);for(var l=0;l"),u=$("",{text:s.label}).data("handle",h).data("startDate",s.startDate).data("endDate",s.endDate).data("startTime",s.startDate?s.startDate.getTime():null).data("endTime",s.endDate?s.endDate.getTime():null);t.selected&&h==t.selected&&(n=u[0]),c.append(u),c.appendTo(r)}$(" ").appendTo(a);var p=$("",{class:"flex flex-nowrap padded"}).appendTo(a),f=this.createDateField({label:Craft.t("app","From")}).appendTo(p).find("input"),g=this.createDateField({label:Craft.t("app","To")}).appendTo(p).find("input"),m=f.add(g);m.on("keyup",(function(t){t.keyCode===Garnish.ESC_KEY&&$(this).data("datepicker")&&$(this).data("datepicker").dpDiv.is(":visible")&&t.stopPropagation()})),f.data("datepicker")&&f.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()})),g.data("datepicker")&&g.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()}));var v=new Garnish.Menu(a,{onOptionSelect:function(e){var i=$(e);C.text(i.text()),v.setPositionRelativeToAnchor(),a.find(".sel").removeClass("sel"),i.addClass("sel"),f.hasClass("hasDatepicker")?(f.datepicker("setDate",i.data("startDate")),g.datepicker("setDate",i.data("endDate"))):(f.val(i.data("startDate")),g.val(i.data("endDate"))),t.onChange(i.data("startDate")||null,i.data("endDate")||null,i.data("handle"))}});m.on("change",(function(){var e=null,i=null;if(f.hasClass("hasDatepicker"))e=f.datepicker("getDate"),i=g.datepicker("getDate");else{var s=f.val();""!==s&&(e=new Date(Date.parse(s)));var n=g.val();""!==n&&(i=new Date(Date.parse(n)))}for(var o,l=e?e.getTime():null,h=i?i.getTime():null,d=r.find("a"),c=!1,u=0;u",{type:"button",class:b,"data-icon":"date",text:Craft.t("app","All")});if(new Garnish.MenuBtn(C,v),n&&v.selectOption(n),t.startDate)if(f.hasClass("hasDatepicker"))f.datepicker("setDate",t.startDate);else{var _=t.startDate.getTimezoneOffset(),w=new Date(t.startDate.getTime()-60*_*1e3);f.val(w.toISOString().split("T")[0])}if(t.endDate)if(g.hasClass("hasDatepicker"))g.datepicker("setDate",t.endDate);else{var S=t.endDate.getTimezoneOffset(),y=new Date(t.endDate.getTime()-60*S*1e3);g.val(y.toISOString().split("T")[0])}return(t.startDate||t.endDate)&&m.trigger("change"),C},createTimeInput:function(t){var e=Garnish.isMobileBrowser(),i=(t.id||"time"+Math.floor(1e9*Math.random()))+"-time",s=t.name||null,n=s?s+"[time]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,r=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("",{class:"timewrapper"}),h=this.createTextInput({id:i,type:e?"time":"text",class:!(!e||a)&&"empty-value",name:n,placeholder:" ",autocomplete:!1,autofocus:r,disabled:o}).appendTo(l);return $('').appendTo(l),s&&$("",{type:"hidden",name:s+"[timezone]",val:Craft.timezone}).appendTo(l),e?(a&&h.val(a.toISOString().split("T")[1]),h.datetimeinput()):(h.timepicker(Craft.timepickerOptions),a&&h.timepicker("setTime",3600*a.getHours()+60*a.getMinutes()+a.getSeconds())),t.hasOuterContainer?l:$('').append(l).datetime()},createTimeField:function(t){return t.id||(t.id="time"+Math.floor(1e9*Math.random())),this.createField(this.createTimeInput(t),t)},createField:function(t,e){var i=e.label&&"__blank__"!==e.label?e.label:null,s=$(e.fieldset?"":"",{class:"field",id:e.fieldId||(e.id?e.id+"-field":null)});if(e.first&&s.addClass("first"),e.fieldClass&&s.addClass(e.fieldClass),i&&e.fieldset&&$("",{text:i,class:"visually-hidden","data-label":i}).appendTo(s),i){var n=$('').appendTo(s);$(e.fieldset?"":"",{id:e.labelId||(e.id?"".concat(e.id,"-").concat(e.fieldset?"legend":"label"):null),class:e.required?"required":null,for:!e.fieldset&&e.id||null,text:i}).appendTo(n)}if(e.instructions&&$('').text(e.instructions).appendTo(s),$('').append(t).appendTo(s),e.tip){var a=$('');$('').appendTo(a),$('').text(Craft.t("app","Tip")+": ").appendTo(a),$("").text(e.tip).appendTo(a),a.appendTo(s)}if(e.warning){var r=$('');$('').appendTo(r),$('').text(Craft.t("app","Warning")+": ").appendTo(r),$("").text(e.warning).appendTo(r),r.appendTo(s)}return e.errors&&this.addErrorsToField(s,e.errors),s},createErrorList:function(t,e){var i=$('');return e&&i.attr("id",e),t&&this.addErrorsToList(i,t),i},addErrorsToList:function(t,e){for(var i=0;i").text(e[i].replaceAll("*","")).appendTo(t)},addErrorsToField:function(t,e){if(e){t.addClass("has-errors"),t.children(".input").addClass("errors");var i=t.attr("id"),s="";i&&(s=i.replace(new RegExp("(-field)$"),"-errors"));var n=t.children("ul.errors");n.length||(n=this.createErrorList(null,s).appendTo(t)),this.addErrorsToList(n,e)}},clearErrorsFromField:function(t){t.removeClass("has-errors"),t.children(".input").removeClass("errors"),t.children("ul.errors").remove()},clearErrorSummary:function(t){t.prev(".error-summary").remove()},setFocusOnErrorSummary:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",s=t.find(".error-summary");s.length>0&&(s.focus(),s.find("a").on("click",(function(s){0==$(s.currentTarget).hasClass("cross-site-validate")&&(s.preventDefault(),e.anchorSummaryErrorToField(s.currentTarget,t,i))})))},findErrorsContainerByErrorKey:function(t,e,i){i=this._getPreppedNamespace(i);var s,n,a=e.split(/[\[\]\.]/).filter((function(t){return t}));return void 0!==a[0]&&(s=void 0===a[2]?new RegExp("^".concat(i,"(fields-)?").concat(a[0],".*-errors")):s=new RegExp("^".concat(i,"(fields-)?").concat(a[0],".*-").concat(a[2],"-errors"))),s&&(n=(n=t.find("ul.errors").filter((function(){return this.id.match(s)}))).length>1&&void 0!==a[1]?n[a[1]]:n[0]),$(n)},anchorSummaryErrorToField:function(t,e,i){var s=$(t).attr("data-field-error-key");if(s){var n=this.findErrorsContainerByErrorKey(e,s,i);if(n){var a=this.findTabAnchorForField(n,e,i);a&&"false"==a.attr("aria-selected")&&a.click(),n.parents(".field:first").focus()}}},findTabAnchorForField:function(t,e,i){i=this._getPreppedNamespace(i);var s=t.parents("div[id^=".concat(i,'tab][role="tabpanel"]')),n=e.find('[role="tablist"]').find('a[href="#'+s.attr("id")+'"]');return $(n)},getAutofocusValue:function(t){return t&&!Garnish.isMobileBrowser(!0)?"autofocus":null},getDisabledValue:function(t){return t?"disabled":null},_getPreppedNamespace:function(t){return""!==t?t+="-":t}}},1752:function(){function t(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,i)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}(t,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);ii.settings.maxFileSize&&(i._rejectedFiles.size.push("“"+t.name+"”"),n=!1),n&&"function"==typeof i.settings.canAddMoreFiles&&!i.settings.canAddMoreFiles(i._validFileCounter)&&(i._rejectedFiles.limit.push("“"+t.name+"”"),n=!1),n&&(i._validFileCounter++,e.submit()),++i._totalFileCounter===e.originalFiles.length&&(i._totalFileCounter=0,i._validFileCounter=0,i.processErrorMessages())})),!0},destroy:function(){var e=this;this.uploader.fileupload("instance")&&this.uploader.fileupload("destroy"),this.$element.off("fileuploadadd",this._onFileAdd),Object.entries(this.events).forEach((function(i){var s=t(i,2),n=s[0],a=s[1];e.$element.off(n,a)}))}},{defaults:{autoUpload:!1,sequentialUploads:!0,maxFileSize:Craft.maxUploadSize,createAction:"assets/upload",replaceAction:"assets/replace-file",deleteAction:"assets/delete-asset"}})},7e3:function(){Craft.UriFormatGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).toLowerCase(),t=(t=(t=Craft.asciiString(t)).replace(/^[^a-z]+/,"")).replace(/[^a-z0-9]+$/,"");var e=Craft.filterArray(t.split(/[^a-z0-9]+/)).join(Craft.slugWordSeparator);return e&&this.settings.suffix&&(e+=this.settings.suffix),e}})},8654:function(){Craft.UserIndex=Craft.BaseElementIndex.extend({init:function(t,e,i){this.on("selectSource",this.updateUrl.bind(this)),this.base(t,e,i)},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSourceSlug)for(var t=0;ti.parts.length&&(s.parts.length=i.parts.length)}else{var r=[];for(n=0;n=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function n(t,e){if(t){if("string"==typeof t)return a(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?a(t,e):void 0}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i'),tabManager:null,enableQueue:!0,totalJobs:0,jobInfo:null,displayedJobInfo:null,displayedJobInfoUnchanged:1,trackJobProgressTimeout:null,jobProgressIcon:null,checkingForUpdates:!1,forcingRefreshOnUpdatesCheck:!1,includingDetailsOnUpdatesCheck:!1,checkForUpdatesCallbacks:null,resizeTimeout:null,init:function(){var t=this;this.elementThumbLoader=new Craft.ElementThumbLoader,0!==Craft.remainingSessionTime&&(this.authManager=new Craft.AuthManager),this.$nav=e()("#nav"),this.$navToggle=e()("#primary-nav-toggle"),this.$globalSidebar=e()("#global-sidebar"),this.$globalContainer=e()("#global-container"),this.$mainContainer=e()("#main-container"),this.$alerts=e()("#alerts"),this.$crumbs=e()("#crumbs"),this.$breadcrumbList=e()(".breadcrumb-list"),this.$breadcrumbItems=e()(".breadcrumb-list li"),this.$notificationContainer=e()("#notifications"),this.$main=e()("#main"),this.$primaryForm=e()("#main-form"),this.$headerContainer=e()("#header-container"),this.$header=e()("#header"),this.$mainContent=e()("#main-content"),this.$details=e()("#details"),this.$sidebarContainer=e()("#sidebar-container"),this.$sidebarToggle=e()("#sidebar-toggle"),this.$sidebar=e()("#sidebar"),this.$contentContainer=e()("#content-container"),this.$collapsibleTables=e()("table.collapsible"),this.isMobile=Garnish.isMobileBrowser(),this.updateContentHeading();for(var i=this.$details.find(".meta > .field > .instructions"),s=0;s",{class:"info",html:a.children().html()}).appendTo(r),a.remove()}if(!this.isMobile&&this.$header.length&&(this.addListener(Garnish.$win,"scroll","updateFixedHeader"),this.updateFixedHeader()),Garnish.$doc.ready((function(){t.addListener(Garnish.$win,"resize",(function(e){if(e.target===window){t.handleWindowResize(),clearTimeout(t.resizeTimeout);var i=t;t.resizeTimeout=setTimeout((function(){i.setSidebarNavAttributes()}),100)}})),t.handleWindowResize(),t.setSidebarNavAttributes(),Garnish.requestAnimationFrame(t.initSpecialForms.bind(t))})),this.$alerts.length&&this.initAlerts(),this.addListener(this.$navToggle,"click","toggleNav"),this.addListener(this.$sidebarToggle,"click","toggleSidebar"),this.$primaryForm.length||(this.$primaryForm=e()("form[data-saveshortcut]:first")),this.$primaryForm.length&&Garnish.hasAttr(this.$primaryForm,"data-saveshortcut")&&function(){var e=[],i=t.$primaryForm.data("actions");if(void 0===i)e.push([{keyCode:Garnish.S_KEY,ctrl:!0},{redirect:t.$primaryForm.data("saveshortcut-redirect"),retainScroll:Garnish.hasAttr(t.$primaryForm,"saveshortcut-scroll")}]);else for(var s=0;s",{class:"visually-hidden",html:Craft.t("app","Unread messages")}),c.addClass("unread").append(h)),this.addListener(c,"click",(function(){if(d)d.show();else{var t="";Craft.announcements.forEach((function(e){t+='')+'"+" ".concat(e.body," ")+" "})),d=new Garnish.HUD(c,''.concat(Craft.t("app","Announcements"),'').concat(t," "),{onShow:function(){c.addClass("active")},onHide:function(){c.removeClass("active")}}),e()("a",d.$main).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===e()(this).attr("target")&&e()(this).attr("rel","noopener").attr("target","_blank")})),u&&(c.removeClass("unread"),h.remove(),Craft.sendActionRequest("POST","users/mark-announcements-as-read",{data:{ids:Craft.announcements.map((function(t){return t.id}))}}))}}))}var p=document.getElementById("footer");p&&new IntersectionObserver((function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,e)||n(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,1)[0];e.target.classList.toggle("stuck",e.intersectionRatio<1)}),{rootMargin:"0px 0px -1px 0px",threshold:[1]}).observe(p),this.elementThumbLoader.load(e()("#user-info")),this.elementThumbLoader.load(this.$mainContent)},get $contentHeader(){var t=e()("#content-header");return t.length?t:e()("",{id:"content-header",class:"pane-header"}).prependTo(e()("#content"))},get $noticeContainer(){var t=e()("#content-notice");return t.length?t:e()('').attr("role","status").prependTo(this.$contentHeader)},initSpecialForms:function(){var t=this;if(this.$confirmUnloadForms=e()("form[data-confirm-unload]"),this.$deltaForms=e()("form[data-delta]"),this.$confirmUnloadForms.length){for(var i=this.$confirmUnloadForms.add(this.$deltaForms),s=function(e){var s=i.eq(e),n=void 0;s.data("initialSerializedValue")||(n="function"==typeof s.data("serializer")?s.data("serializer")():s.serialize(),s.data("initialSerializedValue",n)),t.addListener(s,"submit",(function(t){if(Garnish.hasAttr(s,"data-confirm-unload")&&this.removeListener(Garnish.$win,"beforeunload"),Garnish.hasAttr(s,"data-delta")){var e;t.preventDefault(),e="function"==typeof s.data("serializer")?s.data("serializer")():s.serialize();var i=Craft.findDeltaData(s.data("initialSerializedValue"),e,s.data("delta-names"),null,s.data("initial-delta-values"),s.data("modified-delta-names"));Craft.createForm(i).appendTo(Garnish.$bod).submit()}}))},n=0;n a"):void 0},get $selectedTab(){return this.tabManager?this.tabManager.$selectedTab:void 0},get selectedTabIndex(){return this.tabManager?this.tabManager.$tabs.index(this.tabManager.$selectedTab):void 0},get $focusableTab(){return this.tabManager?this.tabManager.$focusableTab:void 0},selectTab:function(t){this.tabManager&&this.tabManager.selectTab(t)},deselectTab:function(){this.tabManager&&this.tabManager.deselectTab()},handleWindowResize:function(){this.updateResponsiveTables(),this.handleBreadcrumbVisibility()},breadcrumbItemsWrap:function(){if(this.$breadcrumbItems[0]){this.$breadcrumbList.css("ltr"===Craft.orientation?"margin-right":"margin-left","");for(var t=this.$breadcrumbList[0].getBoundingClientRect().width,e=0,i=this.$breadcrumbList.find("li"),s=0;s0&&(void 0===this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._check=!0:(this.updateResponsiveTables._isCollapsed=this.updateResponsiveTables._$table.hasClass("collapsed"),this.updateResponsiveTables._containerWidth>this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._isCollapsed&&(this.updateResponsiveTables._$table.removeClass("collapsed"),this.updateResponsiveTables._check=!0):this.updateResponsiveTables._isCollapsed||(this.updateResponsiveTables._check=!0)),this.updateResponsiveTables._check&&this.updateResponsiveTables._$table.width()-30>this.updateResponsiveTables._containerWidth&&this.updateResponsiveTables._$table.addClass("collapsed"),this.updateResponsiveTables._$table.data("lastContainerWidth",this.updateResponsiveTables._containerWidth))},updateFixedHeader:function(){if(!this.isMobile)if(this.$main.length&&this.$headerContainer[0].getBoundingClientRect().top<0){if(!this.fixedHeader){var t=this.$headerContainer.height();this.$contentContainer.css("min-height","calc(100vh - "+(t+14+48-1)+"px)"),this.$headerContainer.height(t),Garnish.$bod.addClass("fixed-header"),this.$contentContainer.outerHeight(),this.$details.outerHeight();var e={top:t+"px","max-height":"calc(100vh - "+t+"px)"};this.$sidebar.addClass("fixed").css(e),this.$details.addClass("fixed").css(e),this.fixedHeader=!0}}else this.fixedHeader&&(this.$headerContainer.height("auto"),Garnish.$bod.removeClass("fixed-header"),this.$contentContainer.css("min-height",""),this.$sidebar.removeClass("fixed").css({top:"","max-height":""}),this.$details.removeClass("fixed").css({top:"","max-height":""}),this.fixedHeader=!1)},displayNotification:function(t,e,i){var s=new Craft.CP.Notification(t,e,i);return this.trigger("displayNotification",{notificationType:t,message:e,notification:s}),s},displayNotice:function(t,e){return this.displayNotification("notice",t,Object.assign({icon:"info",iconLabel:Craft.t("app","Notice")},e))},displaySuccess:function(t,e){return this.displayNotification("success",t,Object.assign({icon:"check",iconLabel:Craft.t("app","Success")},e))},displayError:function(t,e){return t&&"object"!==s(t)||(e=t,t=Craft.t("app","A server error occurred.")),this.displayNotification("error",t,Object.assign({icon:"alert",iconLabel:Craft.t("app","Error")},e))},fetchAlerts:function(){return Craft.queue.push((function(){return new Promise((function(t,e){var i={path:Craft.path};Craft.sendActionRequest("POST","app/get-cp-alerts",{data:i}).then((function(e){var i=e.data;t(i.alerts)})).catch(e)}))}))},displayAlerts:function(t){if(this.$alerts.remove(),Garnish.isArray(t)&&t.length){this.$alerts=e()('').prependTo(e()("#page-container"));var s,n=i(t);try{for(n.s();!(s=n.n()).done;){var a=s.value;e().isPlainObject(a)||(a={content:a,showIcon:!0});var r=a.content;a.showIcon&&(r=' ').concat(r)),e()("- ".concat(r,"
")).appendTo(this.$alerts)}}catch(t){n.e(t)}finally{n.f()}var o=this.$alerts.outerHeight();this.$alerts.css("margin-top",-o).velocity({"margin-top":0},"fast"),this.initAlerts()}},initAlerts:function(){for(var t=this,i=this.$alerts.find('a[class^="shun:"]'),s=0;s a:not(.sel)");t.length&&Craft.queue.push((function(){return new Promise((function(i,s){Craft.sendActionRequest("POST","app/get-utilities-badge-count").then((function(s){var n=s.data,a=t.children(".badge"),r=t.children("[data-notification]");n.badgeCount?(a.length||(a=e()('').appendTo(t)),r.length||(r=e()('').appendTo(t)),a.text(n.badgeCount),r.text(Craft.t("app","{num, number} {num, plural, =1{notification} other{notifications}}",{num:n.badgeCount}))):a.length&&r.length&&(a.remove(),r.remove()),i()})).catch(s)}))}))},runQueue:function(){var t=this;this.enableQueue&&(Craft.runQueueAutomatically?Craft.queue.push((function(){return new Promise((function(e,i){Craft.sendActionRequest("POST","queue/run").then((function(){t.trackJobProgress(!1,!0),e()})).catch(i)}))})):this.trackJobProgress(!1,!0))},trackJobProgress:function(t,e){if(e&&this.trackJobProgressTimeout&&(clearTimeout(this.trackJobProgressTimeout),this.trackJobProgressTimeout=null),!this.trackJobProgressTimeout&&this.enableQueue)if(!0===t){var i=Math.min(6e4,500*this.displayedJobInfoUnchanged);this.trackJobProgressTimeout=setTimeout(this._trackJobProgressInternal.bind(this),i)}else this._trackJobProgressInternal()},_trackJobProgressInternal:function(){var t=this;Craft.queue.push((function(){return new Promise((function(e,i){Craft.sendActionRequest("POST","queue/get-job-info?limit=50&dontExtendSession=1").then((function(i){var s=i.data;t.trackJobProgressTimeout=null,t.totalJobs=s.total,t.setJobInfo(s.jobs),t.jobInfo.length&&t.trackJobProgress(!0),e()})).catch(i)}))}))},setJobInfo:function(t){if(this.enableQueue){this.jobInfo=t;var e=this.displayedJobInfo;this.displayedJobInfo=this.getDisplayedJobInfo(),e&&this.displayedJobInfo&&e.id===this.displayedJobInfo.id&&e.progress===this.displayedJobInfo.progress&&e.progressLabel===this.displayedJobInfo.progressLabel&&e.status===this.displayedJobInfo.status?this.displayedJobInfoUnchanged++:this.displayedJobInfoUnchanged=1,this.updateJobIcon(),this.trigger("setJobInfo")}},getDisplayedJobInfo:function(){if(!this.enableQueue)return null;for(var t=[Craft.CP.JOB_STATUS_RESERVED,Craft.CP.JOB_STATUS_FAILED,Craft.CP.JOB_STATUS_WAITING],e=0;e",{class:"notification","data-type":this.type}).appendTo(Craft.cp.$notificationContainer);var a=e()('').appendTo(this.$container);if(this.settings.icon){var r=e()("",{class:"notification-icon","data-icon":this.settings.icon}).appendTo(a);this.settings.iconLabel?r.attr({"aria-label":this.settings.iconLabel,role:"img"}):r.attr("aria-hidden","true")}var o=e()('').appendTo(a);e()("",{class:"notification-message",text:this.message}).appendTo(o);var l=e()("").appendTo(this.$container);if(this.$closeBtn=e()("",{type:"button",class:"notification-close-btn","aria-label":Craft.t("app","Close"),"data-icon":"remove"}).appendTo(l),this.settings.details){var h=e()('').append(this.settings.details).appendTo(o);this._hasUiElements=!!h.find("button,input"),this._hasUiElements&&(Garnish.uiLayerManager.addLayer(this.$container),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){n.close()})),this.originalActiveElement=document.activeElement,this.$container.attr("tabindex","-1").focus(),this.$container.on("keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&(t.stopPropagation(),n.close())})))}this.$container.css({opacity:0,"margin-bottom":this._negMargin()}).velocity({opacity:1,"margin-bottom":0},{duration:"fast"}),Craft.initUiElements(this.$container),this.addListener(this.$closeBtn,"click","close"),Craft.notificationDuration&&this._initDelayedClose()},_initDelayedClose:function(){var t=this;this._preventDelayedClose||(Craft.isVisible()?(this.delayedClose(),this.$container.on("keypress keyup change focus blur click mousedown mouseup",(function(e){e.target!=t.$closeBtn[0]&&(t.$container.off("keypress keyup change focus blur click mousedown mouseup"),t.preventDelayedClose())}))):Garnish.$doc.one("visibilitychange",(function(){t._initDelayedClose()})))},_negMargin:function(){return"-".concat(this.$container.outerHeight()+12,"px")},close:function(){var t=this;this.closing||(this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.closing=!0,this._hasUiElements&&Garnish.uiLayerManager.removeLayer(this.$container),this.originalActiveElement&&document.activeElement&&(document.activeElement===this.$container[0]||e().contains(this.$container[0],document.activeElement))&&e()(this.originalActiveElement).focus(),this.$container.velocity({opacity:0,"margin-bottom":this._negMargin()},{duration:"fast",complete:function(){t.$container.remove()}}))},delayedClose:function(){var t=this;this.closeTimeout=setTimeout((function(){t.close()}),Craft.notificationDuration),this.$container.one("mouseover",(function(){clearTimeout(t.closeTimeout),t.closeTimeout=null,t.$container.on("mouseout",(function(e){e.target==t.$container[0]&&(t.$container.off("mouseout"),t.delayedClose())}))}))},preventDelayedClose:function(){this._preventDelayedClose=!0,this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.$container.off("mouseover mouseout")}}),Garnish.$scrollContainer=Garnish.$win,Craft.cp=new Craft.CP;var r=Garnish.Base.extend({$li:null,$a:null,$label:null,$progressLabel:null,progress:null,failMode:!1,_$bgCanvas:null,_$staticCanvas:null,_$hoverCanvas:null,_$failCanvas:null,_staticCtx:null,_hoverCtx:null,_canvasSize:null,_arcPos:null,_arcRadius:null,_lineWidth:null,_arcStartPos:0,_arcEndPos:0,_arcStartStepSize:null,_arcEndStepSize:null,_arcStep:null,_arcStepTimeout:null,_arcAnimateCallback:null,_progressBar:null,init:function(){this.$li=e()("").appendTo(Craft.cp.$nav.children("ul")),this.$a=e()("",{id:"job-icon",href:Craft.canAccessQueueManager?Craft.getUrl("utilities/queue-manager"):null}).appendTo(this.$li),this.$canvasContainer=e()('').appendTo(this.$a);var t=e()('').appendTo(this.$a);this.$label=e()("").appendTo(t),this.$progressLabel=e()('').appendTo(t).hide();var i=window.devicePixelRatio>1?2:1;this._canvasSize=18*i,this._arcPos=this._canvasSize/2,this._arcRadius=7*i,this._lineWidth=3*i,this._$bgCanvas=this._createCanvas("bg","#61666b"),this._$staticCanvas=this._createCanvas("static","#d7d9db"),this._$hoverCanvas=this._createCanvas("hover","#fff"),this._$failCanvas=this._createCanvas("fail","#da5a47").hide(),this._staticCtx=this._$staticCanvas[0].getContext("2d"),this._hoverCtx=this._$hoverCanvas[0].getContext("2d"),this._drawArc(this._$bgCanvas[0].getContext("2d"),0,1),this._drawArc(this._$failCanvas[0].getContext("2d"),0,1)},setDescription:function(t,e){this.$a.attr("title",t),this.$label.text(t),e?this.$progressLabel.text(e).show():this.$progressLabel.hide()},setProgress:function(t){0==t?(this._$staticCanvas.hide(),this._$hoverCanvas.hide()):(this._$staticCanvas.show(),this._$hoverCanvas.show(),this.progress&&t>this.progress?this._animateArc(0,t/100):this._setArc(0,t/100)),this.progress=t},complete:function(){var t=this;this._animateArc(0,1,(function(){t._$bgCanvas.velocity("fadeOut"),t._animateArc(1,1,(function(){t.$a.remove(),t.destroy()}))}))},showFailMode:function(t){this.failMode||(this.failMode=!0,this.progress=null,this._$bgCanvas.hide(),this._$staticCanvas.hide(),this._$hoverCanvas.hide(),this._$failCanvas.show(),this.setDescription(t))},hideFailMode:function(){this.failMode&&(this.failMode=!1,this._$bgCanvas.show(),this._$staticCanvas.show(),this._$hoverCanvas.show(),this._$failCanvas.hide())},_createCanvas:function(t,i){var s=e()('').appendTo(this.$canvasContainer),n=s[0].getContext("2d");return n.strokeStyle=i,n.lineWidth=this._lineWidth,n.lineCap="round",s},_setArc:function(t,e){this._arcStartPos=t,this._arcEndPos=e,this._drawArc(this._staticCtx,t,e),this._drawArc(this._hoverCtx,t,e)},_drawArc:function(t,e,i){t.clearRect(0,0,this._canvasSize,this._canvasSize),t.beginPath(),t.arc(this._arcPos,this._arcPos,this._arcRadius,(1.5+2*e)*Math.PI,(1.5+2*i)*Math.PI),t.stroke(),t.closePath()},_animateArc:function(t,e,i){this._arcStepTimeout&&clearTimeout(this._arcStepTimeout),this._arcStep=0,this._arcStartStepSize=(t-this._arcStartPos)/10,this._arcEndStepSize=(e-this._arcEndPos)/10,this._arcAnimateCallback=i,this._takeNextArcStep()},_takeNextArcStep:function(){this._setArc(this._arcStartPos+this._arcStartStepSize,this._arcEndPos+this._arcEndStepSize),this._arcStep++,this._arcStep<10?this._arcStepTimeout=setTimeout(this._takeNextArcStep.bind(this),50):this._arcAnimateCallback&&this._arcAnimateCallback()}});__webpack_require__(3778),__webpack_require__(6617),__webpack_require__(9482),__webpack_require__(3352),__webpack_require__(691),__webpack_require__(1519),__webpack_require__(501),__webpack_require__(2318),__webpack_require__(4755),__webpack_require__(8468),__webpack_require__(5049),__webpack_require__(7998),__webpack_require__(4233),__webpack_require__(9699),__webpack_require__(1402),__webpack_require__(8201),__webpack_require__(9712),__webpack_require__(3347),__webpack_require__(9478),__webpack_require__(2387),__webpack_require__(7966),__webpack_require__(657),__webpack_require__(4487),__webpack_require__(6966),__webpack_require__(5080),__webpack_require__(7439),__webpack_require__(5328),__webpack_require__(6419),__webpack_require__(872),__webpack_require__(1396),__webpack_require__(4070),__webpack_require__(5763),__webpack_require__(5185),__webpack_require__(8030),__webpack_require__(3096),__webpack_require__(3331),__webpack_require__(53),__webpack_require__(5074),__webpack_require__(3958),Craft.Tooltip=Garnish.Base.extend({_$trigger:null,_message:null,hud:null,$p:null,hoverTimeout:null,triggerHit:!1,shownViaHover:!1,init:function(t,i){var s=this;this.$trigger=e()(t),this.message=i,"BUTTON"!==this.$trigger[0].tagName&&"button"!==this.$trigger.attr("role")&&console.error("Toggletip buttons need to be ').appendTo(this.$container)),this.$addElementBtn&&(this.$uploadBtn=$("",{type:"button",class:"btn dashed","data-icon":"upload","aria-label":1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files"),"aria-describedby":this.settings.describedBy,text:1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files")}).insertAfter(this.$addElementBtn),this.$fileInput=$("",{type:"file",class:"hidden",multiple:1!=this.settings.limit}).insertAfter(this.$uploadBtn),Garnish.$win.trigger("resize"));var e={dropZone:this.$container,fileInput:this.$fileInput};void 0!==this.settings.criteria.kind&&(e.allowedKinds=this.settings.criteria.kind),e.canAddMoreFiles=this.canAddMoreFiles.bind(this),e.events={},e.events.fileuploadstart=this._onUploadStart.bind(this),e.events.fileuploadprogressall=this._onUploadProgress.bind(this),e.events.fileuploaddone=this._onUploadComplete.bind(this),e.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(this.settings.fsType,this.$container,e);var i={fieldId:this.settings.fieldId};this.settings.sourceElementId&&(i.elementId=this.settings.sourceElementId),this.settings.criteria.siteId&&(i.siteId=this.settings.criteria.siteId),this.uploader.setParams(i),this.$uploadBtn&&this.$uploadBtn.on("click",(function(e){t.$uploadBtn.next("input[type=file]").trigger("click")}))},enableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.removeClass("hidden"),this.base()},disableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.addClass("hidden"),this.base()},selectUploadedFile:function(t){if(this.canAddMoreElements()){var e=t.$element;e.addClass("removable"),e.prepend(''),e.appendTo(this.$elementsContainer);var i=-(e.outerWidth()+10);this.$addElementBtn.css("margin-"+Craft.left,i+"px");var s={};s["margin-"+Craft.left]=0,this.$addElementBtn.velocity(s,"fast"),this.addElements(e),delete this.modal}},_onUploadStart:function(){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e=t instanceof CustomEvent?t.detail:e;var i=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(i)},_onUploadComplete:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=t instanceof CustomEvent?t.detail:i.result,n={elementId:s.assetId,siteId:this.settings.criteria.siteId,thumbSize:this.settings.viewMode};Craft.sendActionRequest("POST","elements/get-element-html",{data:n}).then((function(t){var i=$(t.data.html);Craft.appendHeadHtml(t.data.headHtml),e.selectUploadedFile(Craft.getElementInfo(i)),e.uploader.isLastUpload()&&(e.progressBar.hideProgressBar(),e.$container.removeClass("uploading"),e.$container.trigger("change"))})).catch((function(t){var e=t.response;Craft.cp.displayError(e.data.message)})),Craft.cp.runQueue()},_onUploadFailure:function(t){var e,i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t instanceof CustomEvent?t.detail:null==s||null===(e=s.jqXHR)||void 0===e?void 0:e.responseJSON,a=n||{},r=a.message,o=a.filename;o=o||(null==s||null===(i=s.files)||void 0===i?void 0:i[0].name),r||(r=o?Craft.t("app","Upload failed for “{filename}”.",{filename:o}):Craft.t("app","Upload failed.")),Craft.cp.displayError(r),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")},canAddMoreFiles:function(t){return!this.settings.limit||this.$elements.length+t').appendTo(this.$primaryButtons);this.$selectBtn.appendTo(e),this.$selectTransformBtn=$("",{type:"button",class:"btn menubtn disabled",text:Craft.t("app","Select transform")}).appendTo(e);for(var i=$('').insertAfter(this.$selectTransformBtn),s=$("").appendTo(i),n=0;n'+t[n].name+"").appendTo(s);var a=new Garnish.MenuBtn(this.$selectTransformBtn,{onOptionSelect:this.onSelectTransform.bind(this)});a.disable(),this.$selectTransformBtn.data("menuButton",a)}},onSelectionChange:function(t){var e=this.elementIndex.getSelectedElements(),i=!1;if(e.length&&this.settings.transforms.length){i=!0;for(var s=0;s'),i=$('').appendTo(e),s=$('').appendTo(i),n=$("",{type:"button",class:"btn",text:Craft.t("app","Sign out now")}).appendTo(s),a=$("",{type:"submit",class:"btn submit",text:Craft.t("app","Keep me signed in")}).appendTo(s);this.$logoutWarningPara=$("").prependTo(i),this.logoutWarningModal=new Garnish.Modal(e,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark logoutwarningmodalshade",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout((function(){a.trigger("focus")}),100)}}),this.addListener(n,"activate","logout"),this.addListener(e,"submit","renewSession")}t?this.logoutWarningModal.quickShow():this.logoutWarningModal.show(),this.updateLogoutWarningMessage(),this.decrementLogoutWarningInterval=setInterval(this.decrementLogoutWarning.bind(this),1e3)},updateLogoutWarningMessage:function(){this.$logoutWarningPara.text(Craft.t("app","Your session will expire in {time}.",{time:Craft.secondsToHumanTimeDuration(this.remainingSessionTime)})),this.logoutWarningModal.updateSizeAndPosition()},decrementLogoutWarning:function(){this.remainingSessionTime>0&&(this.remainingSessionTime--,this.updateLogoutWarningMessage()),0===this.remainingSessionTime&&clearInterval(this.decrementLogoutWarningInterval)},hideLogoutWarningModal:function(t){this.showingLogoutWarningModal=!1,this.logoutWarningModal&&(t?this.logoutWarningModal.quickHide():this.logoutWarningModal.hide(),this.decrementLogoutWarningInterval&&clearInterval(this.decrementLogoutWarningInterval))},showLoginModal:function(){var t,e=this;if(this.showingLogoutWarningModal?(this.hideLogoutWarningModal(!0),t=!0):t=!1,this.showingLoginModal=!0,!this.loginModal){var i=$(''),s=$(''+Craft.t("app","Your session has ended.")+""+Craft.t("app","Enter your password to log back in.")+" ").appendTo(i),n=$('').appendTo(s),a=$(' ').appendTo(n),r=$(' ').appendTo(a),o=$(" ").appendTo(a),l=$(' ').appendTo(r);this.$passwordInput=$(' ').appendTo(l),this.$loginBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Sign in"),spinner:!0}).attr("aria-disabled","true").appendTo(o),this.$loginErrorPara=$(' ').appendTo(s),this.loginModal=new Garnish.Modal(i,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark loginmodalshade",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout((function(){e.$passwordInput.trigger("focus")}),100)},onFadeOut:function(){e.$passwordInput.val("")}}),new Craft.PasswordInput(this.$passwordInput,{onToggleInput:function(t){e.$passwordInput=t}}),this.addListener(this.$passwordInput,"input","validatePassword"),this.addListener(i,"submit","login")}t?this.loginModal.quickShow():this.loginModal.show()},hideLoginModal:function(t){this.showingLoginModal=!1,this.loginModal&&(t?this.loginModal.quickHide():this.loginModal.hide())},logout:function(){$.get({url:Craft.getActionUrl("users/logout"),dataType:"json",success:function(){Craft.redirectTo("")}})},renewSession:function(t){t&&t.preventDefault(),this.hideLogoutWarningModal(),this.checkRemainingSessionTime(!0)},validatePassword:function(){return this.$passwordInput.val().length>=6?(this.$loginBtn.removeClass("disabled"),this.$loginBtn.removeAttr("aria-disabled"),!0):(this.$loginBtn.addClass("disabled"),this.$loginBtn.attr("aria-disabled","true"),!1)},login:function(t){t&&t.preventDefault(),this.validatePassword()&&(this.$loginBtn.addClass("loading"),this.clearLoginError(),void 0!==Craft.csrfTokenValue?(this.submitLoginIfLoggedOut=!0,this.checkRemainingSessionTime()):this.submitLogin())},submitLogin:function(){var t=this,e={loginName:Craft.username,password:this.$passwordInput.val()};Craft.sendActionRequest("POST","users/login",{data:e}).then((function(e){t.$loginBtn.removeClass("loading"),t.hideLoginModal(),t.checkRemainingSessionTime()})).catch((function(e){var i=e.response;t.$loginBtn.removeClass("loading"),t.showLoginError(i.data.message||null),Garnish.shake(t.loginModal.$container),Garnish.isMobileBrowser(!0)||t.$passwordInput.trigger("focus")}))},showLoginError:function(t){null==t&&(t=Craft.t("app","A server error occurred.")),this.$loginErrorPara.text(t),this.loginModal.updateSizeAndPosition()},clearLoginError:function(){this.showLoginError("")}},{checkInterval:60,minSafeSessionTime:120})},5774:function(){function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function e(e){for(var s=1;s =t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,a=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw a}}}}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{class:"update-spinner spinner spinner-absolute"}).appendTo(this.$elements)),this.$countSpinner=this.$container.find("#count-spinner"),this.$countContainer=this.$container.find("#count-container"),this.$actionsContainer=this.$container.find("#actions-container"),this.$exportBtn=this.$container.find("#export-btn"),this.settings.hideSidebar&&(this.$sidebar.hide(),$(".body, .content",this.$container).removeClass("has-sidebar")),this.initSources()){if(this.$statusMenuBtn.length&&(this.statusMenu=this.$statusMenuBtn.menubtn().data("menubtn").menu,this.statusMenu.on("optionselect",this._handleStatusChange.bind(this))),this.$siteMenuBtn.length){this.siteMenu=this.$siteMenuBtn.menubtn().data("menubtn").menu;var n=this.siteMenu.$options.filter(".sel:first");if(n.length||(n=this.siteMenu.$options.first()),n.length?this._setSite(n.data("site-id")):this.settings.criteria={id:"0"},this.siteMenu.on("optionselect",this._handleSiteChange.bind(this)),this.siteId){var a=this.settings.defaultSiteId||Craft.cp.getSiteId();if(a&&a!=this.siteId){var r=this.siteMenu.$options.filter('[data-site-id="'+a+'"]:first');r.length&&r.trigger("click")}}}else this.settings.criteria&&this.settings.criteria.siteId&&"*"!==this.settings.criteria.siteId?this._setSite(this.settings.criteria.siteId):this._setSite(Craft.siteId);this.settings.criteria&&this.settings.criteria.siteId&&delete this.settings.criteria.siteId,this.addListener(this.$search,"input",(function(){!s.searching&&s.$search.val()?s.startSearching():s.searching&&!s.$search.val()&&s.stopSearching(),s.searchTimeout&&clearTimeout(s.searchTimeout),s.searchTimeout=setTimeout(s.updateElementsIfSearchTextChanged.bind(s),500)})),this.addListener(this.$search,"keypress",(function(t){t.keyCode===Garnish.RETURN_KEY&&(t.preventDefault(),s.searchTimeout&&clearTimeout(s.searchTimeout),s.updateElementsIfSearchTextChanged())})),this.addListener(this.$clearSearchBtn,"click",(function(){s.clearSearch(!0),Garnish.isMobileBrowser(!0)||s.$search.trigger("focus")})),Garnish.isMobileBrowser(!0)||this.$search.trigger("focus"),this.viewMenus={},this.filterHuds={},this.addListener(this.$filterBtn,"click","showFilterHud");var o,l="index"===this.settings.context?Craft.getQueryParams():{};if(l.status){var h;switch(l.status){case"trashed":h="[data-trashed]";break;case"drafts":h="[data-drafts]";break;default:h='[data-status="'.concat(l.status,'"]')}var d=this.statusMenu.$options.filter(h);d.length?this.statusMenu.selectOption(d[0]):Craft.setQueryParam("status",null)}this.addListener(this.$exportBtn,"click","_showExportHud"),this.initialized=!0,this.afterInit(),o="index"===this.settings.context?this.getSelectedSourceState("sourcePathStep"):this.instanceState.sourcePathStep||null,this.selectDefaultSource();var c=this.getDefaultSourcePath();!c&&o?this.loadSourcePathByKey(o).then((function(t){if(t){var e=s.sourceKey.split("/").slice(-1)[0],i=t.findIndex((function(t){return t.key===e}));-1!==i&&(s.sourcePath=t.slice(i))}s.afterSetInitialSource(l)})):(c&&(this.sourcePath=c),this.afterSetInitialSource(l))}},afterInit:function(){this.onAfterInit()},loadSourcePathByKey:function(t){var e=this;return new Promise((function(i,s){if(t!==e.sourceKey){var n=e.getViewParams();n.stepKey=t,Craft.sendActionRequest("POST","element-indexes/source-path",{data:n}).then((function(t){var e=t.data;i(e.sourcePath)})).catch(s)}else i([])}))},afterSetInitialSource:function(t){if("index"===this.settings.context&&this.addListener(Garnish.$win,"resize","handleResize"),this.handleResize(),t.search&&(this.startSearching(),this.searchText=t.search),t.filters&&this.createFilterHud({showOnInit:!1,serialized:t.filters}),t.sort){var e=t.sort.lastIndexOf("-");if(-1!==e){var i=t.sort.substring(0,e),s=t.sort.substring(e+1);this.setSelectedSortAttribute(i,s)}}this.setPage(Craft.pageNum),this.updateElements(!0)},handleResize:function(){this.sourcePath.length&&this.settings.showSourcePath&&this._updateSourcePathVisibility()},_createCancelToken:function(){return this._cancelToken=axios.CancelToken.source(),this._cancelToken.token},_cancelRequests:function(){this._cancelToken&&this._cancelToken.cancel()},getSourceContainer:function(){return this.$sidebar.find("nav > ul")},get $sources(){if(this.sourceSelect)return this.sourceSelect.$items},getSite:function(){var t=this;if(this.siteId)return Craft.sites.find((function(e){return e.id==t.siteId}))},initSources:function(){var t=this._getSourcesInList(this.getSourceContainer(),!0);if(0===t.length)return!1;this.sourceSelect||(this.sourceSelect=new Garnish.Select(this.$sidebar.find("nav"),{multi:!1,allowEmpty:!1,vertical:!0,onSelectionChange:this._handleSourceSelectionChange.bind(this)})),this.sourcesByKey={};for(var e=0;e",{class:"source-path"}).insertBefore(e.$elements),e.$sourcePathInnerContainer=$("",{class:"chevron-btns"}).appendTo(e.$sourcePathOuterContainer);var s,n,a,r=$("",{"aria-label":e.getSourcePathLabel()}).appendTo(e.$sourcePathInnerContainer),o=$(" ").appendTo(r);if(t.length>1){e.$sourcePathOverflowBtnContainer=$("",{class:"first-step hidden"}).appendTo(o),n="menu"+Math.floor(1e6*Math.random()),s=$("",{type:"button",class:"btn",title:Craft.t("app","More items"),"aria-label":Craft.t("app","More items"),"data-disclosure-trigger":!0,"aria-controls":n}).append($("",{class:"btn-body"}).append($("",{class:"label"}).append($("",{"data-icon":"ellipsis","aria-hidden":"true"})))).append($("",{class:"chevron-right"})).appendTo(e.$sourcePathOverflowBtnContainer);var l=$("",{id:n,class:"menu menu--disclosure"}).appendTo(e.$sourcePathOverflowBtnContainer);a=$("").appendTo(l),s.disclosureMenu()}for(var h=0;h",{class:"hidden"}).appendTo(a),$("",{class:"flex flex-nowrap",href:"#",type:"button",role:"button",html:r.icon?'').concat(r.label,""):r.label}).appendTo(r.$overflowLi).on("click",(function(t){t.preventDefault(),s.data("trigger").hide(),e.selectSourcePathStep(n)})));var l=0===n,h=n===t.length-1;r.$li=$("").appendTo(o),l&&r.$li.addClass("first-step"),r.$btn=$("",{href:r.uri?Craft.getCpUrl(r.uri):"#",class:"btn",role:"button"}),r.icon&&r.$btn.attr("aria-label",r.label);var d=$("",{class:"btn-body"}).appendTo(r.$btn);r.$label=$("",{class:"label",html:r.icon?''):r.label}).appendTo(d),r.$btn.append($('')),h&&i.length?r.$btn.addClass("has-action-menu"):r.$btn.append($('')),h&&r.$btn.addClass("current-step").attr("aria-current","page"),r.$btn.appendTo(r.$li),e.addListener(r.$btn,"activate",(function(){e.selectSourcePathStep(n)}))}(h);if(i&&i.length){var d=e.getSourcePathActionLabel(),c="menu"+Math.floor(1e6*Math.random());e.$sourcePathActionsBtn=$("",{type:"button",class:"btn current-step",title:d,"aria-label":d,"data-disclosure-trigger":!0,"aria-controls":c}).append($("",{class:"btn-body"}).append($("",{class:"label"}))).append($("",{class:"chevron-right"})).appendTo(e.$sourcePathInnerContainer);var u=[i.filter((function(t){return!t.destructive&&!t.administrative})),i.filter((function(t){return t.destructive&&!t.administrative})),i.filter((function(t){return t.administrative}))].filter((function(t){return t.length})),p=$("",{id:c,class:"menu menu--disclosure"}).appendTo(e.$sourcePathInnerContainer);u.forEach((function(t,i){0!==i&&$(" ").appendTo(p),e._buildSourcePathActionList(t).appendTo(p)})),e.$sourcePathActionsBtn.disclosureMenu(),e._updateSourcePathVisibility()}"index"===e.settings.context&&void 0!==t[t.length-1].uri&&"undefined"!=typeof history&&history.replaceState({},"",Craft.getCpUrl(t[t.length-1].uri))}();var i=(this.sourcePaths[this.sourceKey]?this.sourcePaths[this.sourceKey][this.sourcePaths[this.sourceKey].length-1].key:null)||null;"index"===this.settings.context?this.setSelecetedSourceState("sourcePathStep",i):this.setInstanceState("sourcePathStep",i),this.onSourcePathChange()},getSourcePathLabel:function(){return""},getSourcePathActions:function(){return[]},getSourcePathActionLabel:function(){return""},_updateSourcePathVisibility:function(){var t=this.sourcePath[0],e=this.sourcePath[this.sourcePath.length-1];this.$sourcePathOverflowBtnContainer&&(this.$sourcePathOverflowBtnContainer.addClass("hidden"),t.$li.addClass("first-step"));var i,s=a(this.sourcePath);try{for(s.s();!(i=s.n()).done;){var n=i.value;n.$overflowLi&&n.$overflowLi.addClass("hidden"),n.$li.removeClass("hidden")}}catch(t){s.e(t)}finally{s.f()}e.$label.css("width",""),e.$btn.removeAttr("title");var r=this._checkSourcePathOverage();if(r){if(this.$sourcePathOverflowBtnContainer){this.$sourcePathOverflowBtnContainer.removeClass("hidden"),t.$li.removeClass("first-step");for(var o=0;o");return t.forEach((function(t){var s=$("",{href:"#",type:"button",role:"button","aria-label":t.label,text:t.label}).on("click",(function(i){i.preventDefault(),e.$sourcePathActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&s.addClass("error"),$("").append(s).appendTo(i)})),i},onSourcePathChange:function(){this.settings.onSourcePathChange(),this.trigger("sourcePathChange")},selectSourcePathStep:function(t){this.sourcePath=this.sourcePath.slice(0,t+1),this.sourcePath[t].$btn.focus(),this.clearSearch(!1),this.updateElements()},startSearching:function(){this.$clearSearchBtn.removeClass("hidden"),this.searching=!0,this.sortByScore=!0,this.activeViewMenu&&this.activeViewMenu.updateSortField()},clearSearch:function(t){this.searching&&(this.$search.val(""),this.searchTimeout&&clearTimeout(this.searchTimeout),this.stopSearching(),t?this.updateElementsIfSearchTextChanged():this.searchText=null)},stopSearching:function(){this.$clearSearchBtn.addClass("hidden"),this.searching=!1,this.sortByScore=!1,this.activeViewMenu&&this.activeViewMenu.updateSortField()},setInstanceState:function(t,e){"object"===n(t)?$.extend(this.instanceState,t):this.instanceState[t]=e,this.storeInstanceState()},storeInstanceState:function(){this.settings.storageKey&&Craft.setLocalStorage(this.settings.storageKey,this.instanceState)},getSourceState:function(t,e,i){return null==t?null:(t=t.replace(/\/.*/,""),void 0===this.sourceStates[t]&&(this.sourceStates[t]={}),void 0===e?this.sourceStates[t]:void 0!==this.sourceStates[t][e]?this.sourceStates[t][e]:void 0!==i?i:null)},getSelectedSourceState:function(t,e){return this.getSourceState(this.instanceState.selectedSource,t,e)},setSelecetedSourceState:function(t,e){var i=this.getSelectedSourceState();if(null==i&&(i=[]),"object"===n(t))for(var s in t)t.hasOwnProperty(s)&&(null!==t[s]?i[s]=t[s]:delete i[s]);else null!==e?i[t]=e:delete i[t];var a="*";for(var r in null!=this.instanceState.selectedSource&&(a=this.instanceState.selectedSource.replace(/\/.*/,"")),this.sourceStates[a]=i,this.sourceStates)this.sourceStates.hasOwnProperty(r)&&r.includes("/")&&delete this.sourceStates[r];Craft.setLocalStorage(this.sourceStatesStorageKey,this.sourceStates)},storeSortAttributeAndDirection:function(){},setPage:function(t){if("index"===this.settings.context){t=Math.max(t,1),this.page=t;var e=Craft.getPageUrl(this.page);history.replaceState({},"",e)}},_resetCount:function(){this.resultSet=null,this.totalResults=null},updateSourceMenu:function(){var t=this;if(this.$sourceActionsContainer.length){this.$sourceActionsBtn&&(this.$sourceActionsBtn.data("trigger").destroy(),this.$sourceActionsContainer.empty(),$("#source-actions-menu").remove(),this.$sourceActionsBtn=null);var e=this.getSourceActions();if(e.length){var i=[e.filter((function(t){return!t.destructive&&!t.administrative})),e.filter((function(t){return t.destructive&&!t.administrative})),e.filter((function(t){return t.administrative}))].filter((function(t){return t.length}));this.$sourceActionsBtn=$("",{type:"button",class:"btn settings icon menubtn",title:Craft.t("app","Source settings"),"aria-label":Craft.t("app","Source settings"),"aria-controls":"source-actions-menu"}).appendTo(this.$sourceActionsContainer);var s=$("",{id:"source-actions-menu",class:"menu menu--disclosure"}).appendTo(this.$sourceActionsContainer);i.forEach((function(e,i){0!==i&&$(" ").appendTo(s),t._buildActionList(e).appendTo(s)})),this.$sourceActionsBtn.disclosureMenu()}}},_buildActionList:function(t){var e=this,i=$("");return t.forEach((function(t){var s=$("",{type:"button",class:"menu-option",text:t.label}).on("click",(function(){e.$sourceActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&s.addClass("error"),$("").append(s).appendTo(i)})),i},getSourceActions:function(){var t=this,e=[];return Craft.userIsAdmin&&Craft.allowAdminChanges&&e.push({label:Craft.t("app","Customize sources"),administrative:!0,onSelect:function(){t.createCustomizeSourcesModal()}}),e},updateViewMenu:function(){this.activeViewMenu&&this.activeViewMenu===this.viewMenus[this.rootSourceKey]||(this.activeViewMenu&&this.activeViewMenu.hideTrigger(),this.viewMenus[this.rootSourceKey]||(this.viewMenus[this.rootSourceKey]=new l(this,this.$rootSource)),this.activeViewMenu=this.viewMenus[this.rootSourceKey],this.activeViewMenu.showTrigger())},getViewSettings:function(){return{}},getViewParams:function(){var t={siteId:this.siteId,search:this.searchText,offset:this.settings.batchSize*(this.page-1),limit:this.settings.batchSize};if(this.settings.canHaveDrafts&&(this.drafts||"index"===this.settings.context&&!this.status)&&(t.drafts=this.drafts||null,t.savedDraftsOnly=!0,this.drafts||(t.draftOf=!1)),this.trashed&&(t.trashed=!0),Garnish.hasAttr(this.$source,"data-override-status")||(t.status=this.status),$.extend(t,this.settings.criteria),this.sourcePath.length){var e=this.sourcePath[this.sourcePath.length-1];void 0!==e.criteria&&$.extend(t,e.criteria)}var i={context:this.settings.context,elementType:this.elementType,source:this.instanceState.selectedSource,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:t,disabledElementIds:this.settings.disabledElementIds,viewState:$.extend({},this.getSelectedSourceState()),paginated:this._isViewPaginated()?1:0};if(i.viewState.mode=this.viewMode,"structure"===this.viewMode)i.viewState.mode="table",i.viewState.order="structure",i.viewState.sort="asc",void 0===this.instanceState.collapsedElementIds&&(this.instanceState.collapsedElementIds=[]),i.collapsedElementIds=this.instanceState.collapsedElementIds;else{var n=s(this.getSortAttributeAndDirection(),2),a=n[0],r=n[1];i.viewState.order=a,i.viewState.sort=r}return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]&&(this.filterHuds[this.siteId][this.sourceKey].conditionConfig||this.filterHuds[this.siteId][this.sourceKey].serialized)&&(i.filterConfig=this.filterHuds[this.siteId][this.sourceKey].conditionConfig,i.filters=this.filterHuds[this.siteId][this.sourceKey].serialized),this.trigger("registerViewParams",{params:i}),i},updateElements:function(t,e){var i=this;return new Promise((function(s,n){if(i.initialized){i._cancelRequests(),i.setIndexBusy(),i.view&&(i.view.destroy(),delete i.view),!0!==t&&(i.setPage(1),i._resetCount());var a=i.getViewParams();Craft.sendActionRequest("POST",i.settings.updateElementsAction,{data:a,cancelToken:i._createCancelToken()}).then((function(t){if(i.setIndexAvailable(),"index"===i.settings.context){if(Craft.cp.fixedHeader){var n=Craft.cp.$headerContainer.height(),r=i.$main.offset().top-n;r1){this.$viewModeBtnContainer=$('').attr("aria-label",Craft.t("app","View")).insertAfter(this.$searchContainer);for(var s=0;s",{type:"button",class:"btn"+(void 0!==n.className?" ".concat(n.className):""),"data-view":n.mode,"data-icon":n.icon,"aria-label":n.title,"aria-pressed":"false",title:n.title}).appendTo(this.$viewModeBtnContainer);this.viewModeBtns[n.mode]=a,this.addListener(a,"click",{mode:n.mode},(function(t){this.selectViewMode(t.data.mode),this.updateElements()}))}}var r=this.getSelectedSourceState("mode");if("table"===r&&"structure"===this.getSourceState(e.data("key"),"order")&&(r="structure"),r&&this.doesSourceHaveViewMode(r)||(r=this.viewMode&&this.doesSourceHaveViewMode(this.viewMode)?this.viewMode:this.sourceViewModes[0].mode),this.selectViewMode(r),this.updateSourceMenu(),this.updateViewMenu(),!this.filterHudExists()&&this.$source.data("default-filter")?this.createFilterHud({showOnInit:!1,conditionConfig:this.$source.data("default-filter")}):this.updateFilterBtn(),this.sourcePath=this.sourcePaths[this.sourceKey]||this.$source.data("default-source-path"),this.onSelectSource(),"index"===this.settings.context){var o=Craft.getQueryParams();o.source=this.sourceKey,Craft.setUrl(Craft.getUrl(Craft.path,o))}return!0},selectSourceByKey:function(t){var e=this.getSourceByKey(t);return!!e&&this.selectSource(e)},getSortOptions:function(t){var e=((t=t?this.getRootSource(t):this.$rootSource)?t.data("sort-opts"):null)||[];return e.length||e.push({label:Craft.t("app","Title"),attr:"title",defaultDir:"asc"}),e},getSortOption:function(t,e){return this.getSortOptions(e).find((function(e){return e.attr===t}))||null},getDefaultSort:function(t){if(t=t?this.getRootSource(t):this.$rootSource){var e=t.data("default-sort");if(e){"string"==typeof e&&(e=[e]);var i=this.getSortOption(e[0],t);if(i)return e[1]||(e[1]=i.defaultDir),e}}var s=this.getSortOptions(t);return[s[0].attr,s[0].defaultDir]},getTableColumnOptions:function(t){return((t=t?this.getRootSource(t):this.$rootSource)?t.data("table-col-opts"):null)||[]},getTableColumnOption:function(t,e){return this.getTableColumnOptions(e).find((function(e){return e.attr===t}))||null},getDefaultTableColumns:function(t){return((t=t?this.getRootSource(t):this.$rootSource)?t.data("default-table-cols"):null)||[]},getSelectedTableColumns:function(t){var e=this;if(t=t?this.getRootSource(t):this.$rootSource){var i=this.getSourceState(t.data("key"),"tableColumns");if(i)return i.filter((function(i){return!!e.getTableColumnOption(i,t)}))}return this.getDefaultTableColumns(t)},setSelectedTableColumns:function(t){this.setSelecetedSourceState({tableColumns:t}),this.activeViewMenu&&this.activeViewMenu.updateTableColumnField()},getViewModesForSource:function(){var t=[];return Garnish.hasAttr(this.$source,"data-has-structure")&&t.push({mode:"structure",title:Craft.t("app","Display in a structured table"),icon:"rtl"===Craft.orientation?"structurertl":"structure"}),t.push({mode:"table",title:Craft.t("app","Display in a table"),icon:"list"}),this.$source&&Garnish.hasAttr(this.$source,"data-has-thumbs")&&t.push({mode:"thumbs",title:Craft.t("app","Display as thumbnails"),icon:"grid"}),t},doesSourceHaveViewMode:function(t){for(var e=0;e').appendTo($("#header"))),t},setIndexBusy:function(){this.$elements.addClass("busy"),this.$updateSpinner.appendTo(this.$elements),this.isIndexBusy=!0,document.activeElement&&this.$elements[0].contains(document.activeElement)&&(this._activeElement=document.activeElement,document.activeElement.blur());var t=this.$elements.height(),e=window.innerHeight,i=$(document).scrollTop();if("modal"==this.settings.context&&(e=this.$elements.parents(".modal").height(),i=this.$elements.scrollParent().scrollTop()),t>e){var s=Math.floor(i+e/2)-100;s=Math.floor(s/t*100),document.documentElement.style.setProperty("--elements-busy-top-position",s+"%")}},setIndexAvailable:function(){this.$elements.removeClass("busy"),this.$updateSpinner.remove(),this.isIndexBusy=!1,this._activeElement&&(document.activeElement&&document.activeElement!==document.body||(document.body.contains(this._activeElement)?this._activeElement.focus():this._activeElement.id&&$("#".concat(this._activeElement.id)).focus()),this._activeElement=null)},createCustomizeSourcesModal:function(){var t=new Craft.CustomizeSourcesModal(this,{hideOnEsc:!1,hideOnShadeClick:!1,onHide:function(){t.destroy()}});return t},disable:function(){this.sourceSelect&&this.sourceSelect.disable(),this.view&&this.view.disable(),this.base()},enable:function(){this.sourceSelect&&this.sourceSelect.enable(),this.view&&this.view.enable(),this.base()},onAfterInit:function(){this.settings.onAfterInit(),this.trigger("afterInit")},onSelectSource:function(){this.settings.onSelectSource(this.sourceKey),this.trigger("selectSource",{sourceKey:this.sourceKey})},onSelectSite:function(){this.settings.onSelectSite(this.siteId),this.trigger("selectSite",{siteId:this.siteId})},onUpdateElements:function(){this.settings.onUpdateElements(),this.trigger("updateElements")},onSelectionChange:function(){this.settings.onSelectionChange(),this.trigger("selectionChange")},onEnableElements:function(t){this.settings.onEnableElements(t),this.trigger("enableElements",{elements:t})},onDisableElements:function(t){this.settings.onDisableElements(t),this.trigger("disableElements",{elements:t})},onAfterAction:function(t,e){this.settings.onAfterAction(t,e),this.trigger("afterAction",{action:t,params:e})},_handleSourceSelectionChange:function(){this.sourceSelect.totalSelected?this.selectSource(this.sourceSelect.$selectedItems)&&this.updateElements():this.sourceSelect.selectItem(this.$visibleSources.first())},_handleActionTriggerSubmit:function(t){t.preventDefault();var e=$(t.currentTarget);e.hasClass("disabled")||e.data("custom-handler")||this.submitAction(e.data("action"),Garnish.getPostData(e))},_handleMenuActionTriggerSubmit:function(t){var e=$(t.option);e.hasClass("disabled")||e.data("custom-handler")||this.submitAction(e.data("action"))},_handleStatusChange:function(t){this.statusMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$statusMenuBtn.html(e.html()),this.trashed=!1,this.drafts=!1,this.status=null;var i=null;Garnish.hasAttr(e,"data-trashed")?(this.trashed=!0,i="trashed"):Garnish.hasAttr(e,"data-drafts")?(this.drafts=!0,i="drafts"):this.status=i=e.data("status")||null,this.activeViewMenu&&this.activeViewMenu.updateSortField(),"index"===this.settings.context&&Craft.setQueryParam("status",i),this.updateElements()},_handleSiteChange:function(t){this.siteMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$siteMenuBtn.html(e.html()),this._setSite(e.data("site-id")),this.initialized&&this.updateElements(),this.onSelectSite()},_setSite:function(t){var e=null===this.siteId;this.siteId=t,this.updateSourceVisibility(),!this.initialized||e||this.$source&&this.$source.length||!this.$visibleSources.length||this.selectSource(this.$visibleSources[0]);for(var i,s=this.getSourceContainer().children(".heading"),n=0;n ul > li:not(.hidden)").length?i.removeClass("hidden"):i.addClass("hidden");this.initialized&&("index"===this.settings.context&&Craft.cp.setSiteId(t),this.updateFilterBtn())},updateSourceVisibility:function(){var t=this;this.$visibleSources=$();for(var e=0;e li:not(.heading) > a");return e&&(i=i.add(t.find("> li.heading > ul > li > a"))),i},_getChildSources:function(t){var e=t.siblings("ul");return this._getSourcesInList(e)},_getSourceToggle:function(t){return t.siblings(".toggle")},_toggleSource:function(t){t.parent("li").hasClass("expanded")?this._collapseSource(t):this._expandSource(t)},_expandSource:function(t){t.next(".toggle").attr({"aria-expanded":"true","aria-label":Craft.t("app","Hide nested sources")}),t.parent("li").addClass("expanded");for(var e=this._getChildSources(t),i=0;i').appendTo(i.$countContainer),l=Math.max(Math.ceil(t/i.settings.batchSize),1),h=$("",{class:"flex","aria-label":Craft.t("app","{element} pagination",{element:e})}).appendTo(o),d=$("",{role:"button",class:"page-link prev-page"+(i.page>1?"":" disabled"),disabled:1===i.page,title:Craft.t("app","Previous Page")}).appendTo(h),c=$("",{role:"button",class:"page-link next-page"+(i.page",{class:"page-info",text:r}).appendTo(o),i.page>1&&i.addListener(d,"click",(function(){this.removeListener(d,"click"),this.removeListener(c,"click"),this.setPage(this.page-1),this.updateElements(!0,!0)})),i.page').prependTo(this.$selectAllContainer).attr({role:"checkbox",tabindex:"0","aria-checked":"false","aria-label":Craft.t("app","Select all")}),this.addListener(this.$selectAllContainer,"click",(function(){0===this.view.getSelectedElements().length?this.view.selectAllElements():this.view.deselectAllElements()})),this.addListener(this.$selectAllCheckbox,"keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(t.preventDefault(),$(t.currentTarget).trigger("click"))}))):(this.$selectAllContainer.siblings().length||this.$selectAllContainer.parent(".header").remove(),this.$selectAllContainer.remove()),this.exporters=e.exporters,this.exportersByType=Craft.index(this.exporters||[],(function(t){return t.type})),this.exporters&&this.exporters.length?this.$exportBtn.removeClass("hidden"):this.$exportBtn.addClass("hidden");var s=this.actions||this.settings.selectable,n=Object.assign({context:this.settings.context,batchSize:"index"!==this.settings.context||"structure"===this.viewMode?this.settings.batchSize:null,params:t,selectable:s,multiSelect:this.actions||this.settings.multiSelect,canSelectElement:this.settings.canSelectElement,checkboxMode:!!this.actions,onSelectionChange:this._handleSelectionChange.bind(this)},this.getViewSettings());if(this.view=this.createView(this.getSelectedViewMode(),n),this._autoSelectElements){if(s)for(var a=0;a').appendTo(i)),s.text(t[e])):s&&s.remove()}}},_countResults:function(){var t=this;return new Promise((function(e,i){if(null!==t.totalResults)e(t.totalResults);else{var s=t.getViewParams();delete s.criteria.offset,delete s.criteria.limit,null===t.resultSet&&(t.resultSet=Math.floor(1e8*Math.random())),s.resultSet=t.resultSet,Craft.sendActionRequest("POST",t.settings.countElementsAction,{data:s,cancelToken:t._createCancelToken()}).then((function(s){s.data.resultSet==t.resultSet?(t.totalResults=s.data.count,e(s.data.count)):i()})).catch(i)}}))},_createTriggers:function(){var t,e,i=[],s=[],n=[];for(t=0;t').data("action",a).append(a.trigger);r.find(".btn").addClass("secondary"),this.addListener(r,"submit","_handleActionTriggerSubmit"),i.push(r)}else a.destructive?n.push(a):s.push(a)}if(s.length||n.length){var o=$("");e=$("",{type:"button",class:"btn secondary menubtn","data-icon":"settings",title:Craft.t("app","Actions")}).appendTo(o);var l=$('').appendTo(o),h=this._createMenuTriggerList(s,!1),d=this._createMenuTriggerList(n,!0);h&&h.appendTo(l),h&&d&&$(" ").appendTo(l),d&&d.appendTo(l),i.push(o)}for(this._$triggers=$(),t=0;t").append(i[t]);this._$triggers=this._$triggers.add(c)}this._$triggers.appendTo(this.$actionsContainer),Craft.appendHeadHtml(this.actionsHeadHtml),Craft.appendBodyHtml(this.actionsBodyHtml),Craft.initUiElements(this._$triggers),e&&e.data("menubtn").on("optionSelect",this._handleMenuActionTriggerSubmit.bind(this))},_showExportHud:function(){var t=this;this.$exportBtn.addClass("active"),this.$exportBtn.attr("aria-expanded","true");for(var e=$("",{class:"export-form"}),i=[],s=0;s"),s=0;s").append($("",{id:Craft.formatInputId(t[s].type)+"-actiontrigger",class:e?"error":null,data:{action:t[s]},text:t[s].name})).appendTo(i);return i}},filterHudExists:function(){return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]},showFilterHud:function(){this.filterHudExists()?this.filterHuds[this.siteId][this.sourceKey].show():this.createFilterHud()},createFilterHud:function(t){this.filterHuds[this.siteId]||(this.filterHuds[this.siteId]={}),this.filterHuds[this.siteId][this.sourceKey]=new h(this,this.sourceKey,this.siteId,t),this.updateFilterBtn()},updateFilterBtn:function(){this.$filterBtn.removeClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",null),this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]?(this.$filterBtn.attr("aria-controls",this.filterHuds[this.siteId][this.sourceKey].id).attr("aria-expanded",this.filterHuds[this.siteId][this.sourceKey].showing?"true":"false"),this.filterHuds[this.siteId][this.sourceKey].isActive&&(this.$filterBtn.addClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",this.filterHuds[this.siteId][this.sourceKey].serialized))):this.$filterBtn.attr("aria-controls",null)}},{defaults:{context:"index",modal:null,storageKey:null,condition:null,referenceElementId:null,referenceElementSiteId:null,criteria:null,batchSize:100,disabledElementIds:[],selectable:!1,multiSelect:!1,canSelectElement:null,buttonContainer:null,hideSidebar:!1,toolbarSelector:".toolbar:first",refreshSourcesAction:"element-indexes/get-source-tree-html",updateElementsAction:"element-indexes/get-elements",countElementsAction:"element-indexes/count-elements",submitActionsAction:"element-indexes/perform-action",defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,canHaveDrafts:!1,elementTypeName:Craft.t("app","Element"),elementTypePluralName:Craft.t("app","Elements"),onAfterInit:$.noop,onSelectSource:$.noop,onSelectSite:$.noop,onUpdateElements:$.noop,onSelectionChange:$.noop,onSourcePathChange:$.noop,onEnableElements:$.noop,onDisableElements:$.noop,onAfterAction:$.noop}});var l=Garnish.Base.extend({elementIndex:null,$source:null,sourceKey:null,menu:null,id:null,$trigger:null,$container:null,$sortField:null,$sortAttributeSelect:null,$sortDirectionPicker:null,sortDirectionListbox:null,$tableColumnsField:null,$tableColumnsContainer:null,$revertContainer:null,$revertBtn:null,$closeBtn:null,init:function(t,e){var i=this;this.elementIndex=t,this.$source=e,this.sourceKey=e.data("key"),this.id="view-menu-".concat(Math.floor(1e9*Math.random())),this.$trigger=$("",{type:"button",class:"btn menubtn hidden",text:Craft.t("app","View"),"aria-label":Craft.t("app","View settings"),"aria-controls":this.id,"data-icon":"sliders"}).appendTo(this.elementIndex.$toolbar),this.$container=$("",{id:this.id,class:"menu menu--disclosure element-index-view-menu","data-align":"right"}).appendTo(Garnish.$bod),this._buildMenu(),this.addListener(this.$container,"mousedown",(function(t){t.stopPropagation()})),this.menu=new Garnish.DisclosureMenu(this.$trigger),this.menu.on("show",(function(){i.$trigger.addClass("active")})),this.menu.on("hide",(function(){i.$trigger.removeClass("active"),setTimeout((function(){i.tidyTableColumnField()}),Garnish.FX_DURATION)}))},showTrigger:function(){this.$trigger.removeClass("hidden")},hideTrigger:function(){this.$trigger.data("trigger").hide(),this.$trigger.addClass("hidden"),this.menu.hide()},updateSortField:function(){this.$sortField&&("structure"===this.elementIndex.viewMode?(this.$sortField.addClass("hidden"),this.$tableColumnsField.addClass("first-child")):(this.$sortField.removeClass("hidden"),this.$tableColumnsField.removeClass("first-child")));var t=s(this.elementIndex.getSortAttributeAndDirection(),2),e=t[0],i=t[1],n=this.$sortAttributeSelect.children('option[value="score"]');this.elementIndex.searching?n.length||this.$sortAttributeSelect.prepend($("",{value:"score",text:Craft.t("app","Score")})):n.length&&n.remove(),this.$sortAttributeSelect.val(e),this.sortDirectionListbox.select("asc"===i?0:1),"score"===e?(this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled")):(this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled"))},updateTableColumnField:function(){var t,e,i=this,s=this.elementIndex.getSelectedTableColumns();s.forEach((function(s){var n=i.$tableColumnsContainer.find('input[value="'.concat(s,'"]'));n.prop("checked")||n.prop("checked",!0);var a=n.parent();t&&a.index()').appendTo(this.$container);this.$sortField=this._createSortField().appendTo(e),this.$tableColumnsField=this._createTableColumnsField().appendTo(e),this.updateSortField(),this.$sortAttributeSelect.focus();var i=$("",{class:"flex menu-footer"}).appendTo(this.$container);this.$revertContainer=$("",{class:"flex-grow"}).appendTo(i),(this.elementIndex.getSelectedSourceState("order")||this.elementIndex.getSelectedSourceState("sort")||this.elementIndex.getSelectedSourceState("tableColumns"))&&this._createRevertBtn(),this.$closeBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Close")}).appendTo(i).on("click",(function(){t.menu.hide()}))},_createSortField:function(){var t=this,e=$(''),i=Craft.ui.createSelect({options:this.elementIndex.getSortOptions(this.$source).map((function(t){return{label:Craft.escapeHtml(t.label),value:t.attr}}))}).addClass("fullwidth").appendTo($('').appendTo(e));this.$sortAttributeSelect=i.children("select").attr({"aria-label":Craft.t("app","Sort attribute")}),this.$sortDirectionPicker=$("",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(e),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(e){e.data("dir")!==t.elementIndex.getSelectedSortDirection()&&(t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),e.data("dir")),t.elementIndex.sortByScore||t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn())}}),this.$sortAttributeSelect.on("change",(function(){t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),null,!1),t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn()}));var s=Craft.ui.createField(e,{label:Craft.t("app","Sort by"),fieldset:!0});return s.addClass("sort-field"),s},_getTableColumnCheckboxes:function(){return this.$tableColumnsContainer.find('input[type="checkbox"]')},_createTableColumnsField:function(){var t=this,e=this.elementIndex.getTableColumnOptions(this.$source);if(!e.length)return $();this.$tableColumnsContainer=$(""),e.forEach((function(e){$('').append('').append(Craft.ui.createCheckbox({label:Craft.escapeHtml(e.label),value:e.attr})).appendTo(t.$tableColumnsContainer)})),this.updateTableColumnField(),this.tidyTableColumnField(),new Garnish.DragSort(this.$tableColumnsContainer.children(),{handle:".move",axis:"y",onSortChange:function(){t._onTableColumnChange()}}),this._getTableColumnCheckboxes().on("change",(function(e){t._onTableColumnChange()}));var i=Craft.ui.createField(this.$tableColumnsContainer,{label:Craft.t("app","Table Columns"),fieldset:!0});return i.addClass("table-columns-field"),i},_onTableColumnChange:function(){for(var t=[],e=this._getTableColumnCheckboxes().filter(":checked"),i=0;i",{type:"button",class:"light",text:Craft.t("app","Use defaults")}).appendTo(this.$revertContainer).on("click",(function(){t.revert()})))},destroy:function(){this.menu.destroy(),delete this.menu,this.base()}}),h=Garnish.HUD.extend({elementIndex:null,sourceKey:null,siteId:null,id:null,loading:!0,conditionConfig:null,serialized:null,$clearBtn:null,cleared:!1,get isActive(){return this.showing||this.conditionConfig||this.serialized},init:function(t,e,i,s){var n=this;this.elementIndex=t,this.sourceKey=e,this.siteId=i,this.id="filter-".concat(Math.floor(1e9*Math.random())),s&&(s.conditionConfig?(this.conditionConfig=s.conditionConfig,delete s.conditionConfig):s.serialized&&(this.serialized=s.serialized,delete s.serialized));var a=$("").append($("",{class:"spinner"})).append($("",{text:Craft.t("app","Loading"),class:"visually-hidden","aria-role":"alert"}));this.base(this.elementIndex.$filterBtn,a,Object.assign({hudClass:"hud element-filter-hud loading"},s)),this.$hud.attr({id:this.id,"aria-live":"polite","aria-busy":"false"}),this.$tip.remove(),this.$tip=null,this.$body.on("submit",(function(t){t.preventDefault(),n.hide()})),Craft.sendActionRequest("POST","element-indexes/filter-hud",{data:{elementType:this.elementIndex.elementType,source:this.sourceKey,condition:this.elementIndex.settings.condition,conditionConfig:this.conditionConfig,serialized:this.serialized,id:"".concat(this.id,"-filters")}}).then((function(t){n.loading=!1,n.$hud.removeClass("loading"),a.remove(),n.$main.append(t.data.hudHtml),Craft.appendHeadHtml(t.data.headHtml),Craft.appendBodyHtml(t.data.bodyHtml);var e=$("",{class:"flex flex-nowrap"}).appendTo(n.$main);$("",{class:"flex-grow"}).appendTo(e),n.$clearBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(e),$("",{type:"submit",class:"btn secondary",text:Craft.t("app","Apply")}).appendTo(e),n.$clearBtn.on("click",(function(){n.clear()})),n.$hud.find(".condition-container").on("htmx:beforeRequest",(function(){n.setBusy()})),n.$hud.find(".condition-container").on("htmx:load",(function(){n.setReady(),n.updateSizeAndPosition(!0)})),n.setFocus(),n.conditionConfig&&(n.conditionConfig=null,n.serialized=n.serialize())})).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})),this.$hud.css("position","fixed"),this.addListener(Garnish.$win,"scroll,resize",(function(){n.updateSizeAndPosition(!0)}))},addListener:function(t,e,i,s){t===this.$main&&"resize"===e||this.base(t,e,i,s)},setBusy:function(){this.$hud.attr("aria-busy","true"),$("",{class:"visually-hidden",text:Craft.t("app","Loading")}).insertAfter(this.$main.find(".htmx-indicator"))},setReady:function(){this.$hud.attr("aria-busy","false")},setFocus:function(){Garnish.setFocusWithin(this.$main)},clear:function(){this.cleared=!0,this.hide()},updateSizeAndPositionInternal:function(){var t,e=this.elementIndex.$searchContainer[0].getBoundingClientRect(),i=Garnish.$win.height(),s=i-e.bottom;this.$body.height()>s&&(t=i-e.bottom-10),this.$hud.css({width:this.elementIndex.$searchContainer.outerWidth()-2,top:e.top+this.elementIndex.$searchContainer.outerHeight(),left:e.left+1,height:t?"".concat(t,"px"):"unset",overflowY:t?"scroll":"unset"})},onShow:function(){this.base(),this.$clearBtn&&this.$clearBtn.text(Craft.t("app","Clear")),this.elementIndex.updateFilterBtn(),this.setFocus()},onHide:function(){this.base(),this.serialized!==(this.serialized=this.serialize())&&this.elementIndex.updateElements(),this.cleared?this.destroy():(this.$hud.detach(),this.$shade.detach()),this.elementIndex.updateFilterBtn(),this.elementIndex.$filterBtn.focus()},hasRules:function(){return 0!==this.$main.has(".condition-rule").length},serialize:function(){return!this.cleared&&this.hasRules()?this.$body.serialize():null},destroy:function(){this.base(),delete this.elementIndex.filterHuds[this.siteId][this.sourceKey]}})},8495:function(){Craft.BaseElementIndexView=Garnish.Base.extend({$container:null,$loadingMoreSpinner:null,$elementContainer:null,$scroller:null,elementIndex:null,elementSelect:null,loadingMore:!1,_totalVisible:null,_morePending:null,_handleEnableElements:null,_handleDisableElements:null,get thumbLoader(){return console.warn("Craft.BaseElementIndexView::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead."),Craft.cp.elementThumbLoader},init:function(t,e,i){var s=this;this.elementIndex=t,this.$container=$(e),this.setSettings(i,Craft.BaseElementIndexView.defaults),this.$loadingMoreSpinner=$('').insertAfter(this.$container),this.$elementContainer=this.getElementContainer();var n=this.$elementContainer.children();this.setTotalVisible(n.length),this.setMorePending(this.settings.batchSize&&n.length==this.settings.batchSize),Craft.cp.elementThumbLoader.load(n),this.settings.selectable&&(this.elementSelect=new Garnish.Select(this.$elementContainer,this.filterSelectableElements(n),{multi:this.settings.multiSelect,vertical:this.isVerticalList(),handle:"index"===this.settings.context?".checkbox, .element:first":null,filter:":not(a):not(.toggle)",checkboxMode:this.settings.checkboxMode,onSelectionChange:this.onSelectionChange.bind(this)}),this._handleEnableElements=function(t){s.elementSelect.addItems(s.filterSelectableElements($(t.elements)))},this._handleDisableElements=function(t){s.elementSelect.removeItems(t.elements)},this.elementIndex.on("enableElements",this._handleEnableElements),this.elementIndex.on("disableElements",this._handleDisableElements)),"index"===this.settings.context&&(this._handleElementEditing=function(t){var e=$(t.target);if("A"!==e.prop("nodeName")){var i;if(e.hasClass("element"))i=e;else if(!(i=e.closest(".element")).length)return;Garnish.hasAttr(i,"data-editable")&&Craft.createElementEditor(i.data("type"),i)}},this.elementIndex.trashed||this.addListener(this.$elementContainer,"dblclick,taphold",this._handleElementEditing)),this.afterInit(),this.settings.batchSize&&("index"===this.settings.context?this.$scroller=Garnish.$scrollContainer:this.$scroller=this.elementIndex.$main,this.$scroller.scrollTop(0),this.addListener(this.$scroller,"scroll","maybeLoadMore"),this.maybeLoadMore())},filterSelectableElements:function(t){var e=this;return $(t.toArray().filter((function(t){return e.canSelectElement($(t))})))},canSelectElement:function(t){return!t.hasClass("disabled")&&(this.settings.canSelectElement?this.settings.canSelectElement(t):!!t.data("id"))},getElementContainer:function(){throw"Classes that extend Craft.BaseElementIndexView must supply a getElementContainer() method."},afterInit:function(){},getAllElements:function(){return this.$elementContainer.children()},getEnabledElements:function(){return this.$elementContainer.children(":not(.disabled)")},getElementById:function(t){var e=this.$elementContainer.children('[data-id="'+t+'"]:first');return e.length?e:null},getSelectedElements:function(){if(!this.elementSelect)throw"This view is not selectable.";return this.elementSelect.$selectedItems},getSelectedElementIds:function(){var t;try{t=this.getSelectedElements()}catch(t){}var e=[];if(t)for(var i=0;i=this.$container.offset().top+this.$container.height():this.$scroller.prop("scrollHeight")-this.$scroller.scrollTop()<=this.$scroller.outerHeight()+15)},loadMore:function(){var t=this;this.getMorePending()&&!this.loadingMore&&this.settings.batchSize&&(this.loadingMore=!0,this.$loadingMoreSpinner.removeClass("hidden"),this.removeListener(this.$scroller,"scroll"),Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:this.getLoadMoreParams()}).then((function(e){t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden");var i=$(e.data.html);t.appendElements(i),Craft.appendHeadHtml(e.data.headHtml),Craft.appendBodyHtml(e.data.bodyHtml),t.elementSelect&&(t.elementSelect.addItems(t.filterSelectableElements(i)),t.elementIndex.updateActionTriggers()),t.setTotalVisible(t.getTotalVisible()+i.length),t.setMorePending(i.length==t.settings.batchSize),t.addListener(t.$scroller,"scroll","maybeLoadMore"),t.maybeLoadMore()})).catch((function(e){t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden")})))},getLoadMoreParams:function(){var t=$.extend(!0,{},this.settings.params);return t.criteria.offset=this.getTotalVisible(),t},appendElements:function(t){t.appendTo(this.$elementContainer),Craft.cp.elementThumbLoader.load(t),this.onAppendElements(t)},onAppendElements:function(t){this.settings.onAppendElements(t),this.trigger("appendElements",{newElements:t})},onSelectionChange:function(){var t=this;this.settings.onSelectionChange(),this.trigger("selectionChange"),this.settings.checkboxMode&&this.elementSelect.$items.each((function(e,i){t.elementSelect.isSelected(i)?t.getElementCheckbox(i).attr("aria-checked","true"):t.getElementCheckbox(i).attr("aria-checked","false")}))},disable:function(){this.elementSelect&&this.elementSelect.disable()},enable:function(){this.elementSelect&&this.elementSelect.enable()},destroy:function(){this.$loadingMoreSpinner.remove(),this.elementSelect&&(this.elementIndex.off("enableElements",this._handleEnableElements),this.elementIndex.off("disableElements",this._handleDisableElements),this.elementSelect.destroy(),delete this.elementSelect),this.base()}},{defaults:{context:"index",batchSize:null,params:null,selectable:!1,multiSelect:!1,canSelectElement:null,checkboxMode:!1,loadMoreElementsAction:"element-indexes/get-more-elements",onAppendElements:$.noop,onSelectionChange:$.noop}})},5970:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);ie&&(t=t.slice(0,e))}this.selectElements(t),this.updateDisabledElementsInModal()}},onModalHide:function(){var t=this;this.modal&&this.settings.condition&&this.settings.referenceElementId&&(this.modal.destroy(),this.modal=null),this.canAddMoreElements()||setTimeout((function(){t.focusNextLogicalElement()}),200)},selectElements:function(t){for(var e=0;e",{type:"hidden",name:this.settings.name+(this.settings.single?"":"[]"),value:t.id})).prepend($("",{type:"button",class:"delete icon",title:Craft.t("app","Remove"),"aria-label":i})),e},appendElement:function(t){t.appendTo(this.$elementsContainer)},animateElementIntoPlace:function(t,e){var i=t.offset(),s=e.offset(),n=e.clone().appendTo(Garnish.$bod);e.css("visibility","hidden"),n.css({position:"absolute",zIndex:1e4,top:i.top,left:i.left});var a={top:s.top,left:s.left};n.velocity(a,Craft.BaseElementSelectInput.ADD_FX_DURATION,(function(){n.remove(),e.css("visibility","visible")}))},updateDisabledElementsInModal:function(){this.modal.elementIndex&&this.modal.elementIndex.disableElementsById(this.getDisabledElementIds())},getElementById:function(t){for(var e=0;e",{class:"modal elementselectormodal","aria-labelledby":i}).appendTo(Garnish.$bod),n=$("",{class:this.settings.showTitle?"header":"visually-hidden"}).appendTo(s);$("",{id:i,text:this.settings.modalTitle}).appendTo(n);var a=$("",{class:"body"}).append($("",{class:"spinner big"})).appendTo(s);this.$footer=$("",{class:"footer"}).appendTo(s),this.settings.fullscreen&&(s.addClass("fullscreen"),this.settings.minGutter=0),this.base(s,this.settings),this.$secondaryButtons=$('').appendTo(this.$footer),this.$primaryButtons=$('').appendTo(this.$footer),this.$cancelBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$primaryButtons),this.$selectBtn=Craft.ui.createSubmitButton({class:"disabled",label:this.settings.selectBtnLabel,spinner:!0}).attr("aria-disabled","true").appendTo(this.$primaryButtons),this.$body=a,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},updateModalBottomPadding:function(){var t=this.$footer.outerHeight();t!==parseInt(this.$container.css("padding-bottom"))&&this.$container.css("padding-bottom",t)},updateSidebarView:function(){this.supportSidebarToggleView&&(this.sidebarShouldBeHidden()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView())},sidebarShouldBeHidden:function(){return this.$container.outerWidth()<550},resetView:function(){this.$mainHeader&&this.$mainHeader.remove(),this.$sidebarHeader&&this.$sidebarHeader.remove(),this.$sidebarToggleBtn=null,this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden")},buildSidebarToggleView:function(){var t=this;!this.$sidebarToggleBtn&&this.sidebarShouldBeHidden()&&(this.$sidebarHeader=$('').prependTo(this.$sidebar),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sidebarHeader),this.$mainHeader=$('').prependTo(this.$main),this.$mainHeading=$(''.concat(this.getActiveSourceName(),"")).appendTo(this.$mainHeader),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$mainHeader),this.$sidebar.attr("id","modal-sidebar"),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar()})))},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar();var e=Garnish.getFocusedElement();$.contains(t.$sidebar.get(0),e.get(0))&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$sidebarToggleBtn&&(this.sidebarIsOpen()&&(Garnish.uiLayerManager.removeLayer(),this.$sidebar.addClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","false")),this.$body.removeClass("has-sidebar"),this.$content.removeClass("has-sidebar"))},getActiveSourceName:function(){return this.$sidebar.find(".sel").text()},onFadeIn:function(){this.elementIndex?(this.updateModalBottomPadding(),Garnish.isMobileBrowser(!0)||this.elementIndex.$search.trigger("focus")):this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},onSelectSource:function(){this.updateHeading(),this.updateModalBottomPadding()},updateHeading:function(){this.$mainHeading&&this.$mainHeading.text(this.getActiveSourceName())},updateSelectBtnState:function(){this.$selectBtn&&(this.hasSelection()?this.enableSelectBtn():this.disableSelectBtn())},hasSelection:function(){return this.elementIndex&&this.elementIndex.getSelectedElements().length},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled").attr("aria-disabled","false")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled").attr("aria-disabled","true")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$selectBtn.addClass("loading")},hideFooterSpinner:function(){this.$selectBtn.removeClass("loading")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.hasSelection()){this.elementIndex.view&&this.elementIndex.view.elementSelect&&this.elementIndex.view.elementSelect.clearMouseUpTimeout();var t=this.elementIndex.getSelectedElements(),e=this.getElementInfo(t);this.onSelect(e),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(t){for(var e=[],i=0;i=e);return t.toFixed(1)+" "+["kB","MB","GB","TB","PB","EB","ZB","YB"][i]},_createExtensionList:function(){this._extensionList=[];for(var t=0;tt.length)&&(e=t.length);for(var i=0,s=new Array(e);i');var a="new-category-menu-"+Craft.randomString(10);if(n){var r="index"===e.settings.context?Craft.t("app","New category"):Craft.t("app","New {group} category",{group:n.name}),o="index"===e.settings.context?Craft.t("app","New category in the {group} category group",{group:n.name}):r,l="index"===e.settings.context?"link":null;e.$newCategoryBtn=Craft.ui.createButton({label:r,ariaLabel:o,spinner:!0,role:l}).addClass("submit add icon").appendTo(e.$newCategoryBtnGroup),e.addListener(e.$newCategoryBtn,"click mousedown",(function(t){"index"===e.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)?window.open(Craft.getUrl("categories/".concat(n.handle,"/new"))):"click"===t.type&&e._createCategory(n.id)})),e.editableGroups.length>1&&(s=$("",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":a,"data-disclosure-trigger":"","aria-label":Craft.t("app","New category, choose a category group")}).appendTo(e.$newCategoryBtnGroup))}else e.$newCategoryBtn=s=Craft.ui.createButton({label:Craft.t("app","New category"),ariaLabel:Craft.t("app","New category, choose a category group"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",a).attr("data-disclosure-trigger","").appendTo(e.$newCategoryBtnGroup);if(e.addButton(e.$newCategoryBtnGroup),s){var h,d=$("",{id:a,class:"menu menu--disclosure"}).appendTo(e.$newCategoryBtnGroup),c=$("").appendTo(d),u=function(e,i){var s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!s){if(Array.isArray(e)||(s=function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){s&&(e=s);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(e)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}(e.editableGroups);try{var p=function(){var t=h.value,i="index"===e.settings.context?"link":"button";if("index"===e.settings.context||t!==n){var a=$("").appendTo(c),r=$("",{role:"button"===i?"button":null,href:"#",type:"button"===i?"button":null,text:Craft.t("app","New {group} category",{group:t.name})}).appendTo(a);e.addListener(r,"click",(function(){s.data("trigger").hide(),e._createCategory(t.id)})),"button"===i&&e.addListener(r,"keydown",(function(i){i.keyCode===Garnish.SPACE_KEY&&(i.preventDefault(),s.data("trigger").hide(),e._createCategory(t.id))}))}};for(u.s();!(h=u.n()).done;)p()}catch(t){u.e(t)}finally{u.f()}new Garnish.DisclosureMenu(s)}}(),"index"===this.settings.context){var s="categories";i&&(s+="/"+i),Craft.setPath(s)}}},_createCategory:function(t){var e=this;if(this.$newCategoryBtn.hasClass("loading"))console.warn("New category creation already in progress.");else{var i=this.editableGroups.find((function(e){return e.id===t}));if(!i)throw"Invalid category group ID: ".concat(t);this.$newCategoryBtn.addClass("loading"),Craft.sendActionRequest("POST","elements/create",{data:{elementType:this.elementType,siteId:this.siteId,groupId:t}}).then((function(t){"index"===e.settings.context?document.location.href=Craft.getUrl(t.data.cpEditUrl,{fresh:1}):Craft.createElementEditor(e.elementType,{siteId:e.siteId,elementId:t.data.element.id,draftId:t.data.element.draftId,params:{fresh:1}}).on("submit",(function(){var s="group:".concat(i.uid);e.sourceKey!==s&&e.selectSourceByKey(s),e.clearSearch(),e.selectElementAfterUpdate(t.data.element.id),e.updateElements()}))})).finally((function(){e.$newCategoryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Category",Craft.CategoryIndex)},6617:function(){Craft.CategorySelectInput=Craft.BaseElementSelectInput.extend({setSettings:function(){this.base.apply(this,arguments),this.settings.sortable=!1},getModalSettings:function(){var t=this.base();return t.hideOnSelect=!1,t},getElements:function(){return this.$elementsContainer.find(".element")},onModalSelect:function(t){var e=this;this.modal.disable(),this.modal.disableCancelBtn(),this.modal.disableSelectBtn(),this.modal.showFooterSpinner();for(var i=this.getSelectedElementIds(),s=0;s ').appendTo(this.$container),this.hide()},setContent:function(t){this.$tip.html(t)},setPosition:function(t){this.$tip.css("left","".concat(t.left,"px")),this.$tip.css("top","".concat(t.top,"px"))},show:function(){this.$tip.css("display","block")},hide:function(){this.$tip.css("display","none")}}),Craft.charts.BaseChart=Garnish.Base.extend({$container:null,$chart:null,chartBaseClass:"cp-chart",dataTable:null,formatLocale:null,timeFormatLocale:null,orientation:null,svg:null,width:null,height:null,init:function(t,e){var i=this;this.$container=t,this.setSettings(Craft.charts.BaseChart.defaults),this.setSettings(e);var s={formats:window.d3Formats,formatLocaleDefinition:window.d3FormatLocaleDefinition,timeFormatLocaleDefinition:window.d3TimeFormatLocaleDefinition};this.setSettings(s),d3.select(window).on("resize",(function(){i.resize()}))},setSettings:function(t,e){var i=void 0===this.settings?{}:this.settings;this.settings=$.extend(!0,{},i,e,t)},draw:function(t,e){this.setSettings(e),this.dataTable=t,this.formatLocale=d3.formatLocale(this.settings.formatLocaleDefinition),this.timeFormatLocale=d3.timeFormatLocale(this.settings.timeFormatLocaleDefinition),this.orientation=this.settings.orientation,this.$chart&&this.$chart.remove();var i=this.chartBaseClass;this.settings.chartClass&&(i+=" "+this.settings.chartClass),this.$chart=$('')).appendTo(this.$container)},resize:function(){this.draw(this.dataTable,this.settings)},onAfterDrawTicks:function(){$(".tick",this.$chart).each((function(t,e){var i=$("text",e);i.clone().appendTo(e),i.attr("stroke","#ffffff"),i.attr("stroke-width",3)}))}},{defaults:{formatLocaleDefinition:null,timeFormatLocaleDefinition:null,formats:{numberFormat:",.2f",percentFormat:",.2%",currencyFormat:"$,.2f",shortDateFormats:{day:"%-m/%-d",month:"%-m/%y",year:"%Y"}},margin:{top:0,right:0,bottom:0,left:0},chartClass:null,colors:["#0594D1","#DE3800","#FF9A00","#009802","#9B009B"]}}),Craft.charts.Area=Craft.charts.BaseChart.extend({tip:null,drawingArea:null,init:function(t,e){this.base(t,Craft.charts.Area.defaults),this.setSettings(e)},draw:function(t,e){this.base(t,e),this.tip&&(this.tip=null);var i=this.getChartMargin();this.width=this.$chart.width()-i.left-i.right,this.height=this.$chart.height()-i.top-i.bottom;var s={width:this.width+(i.left+i.right),height:this.height+(i.top+i.bottom),translateX:"rtl"!==this.orientation?i.left:i.right,translateY:i.top};this.svg=d3.select(this.$chart.get(0)).append("svg").attr("width",s.width).attr("height",s.height),this.drawingArea=this.svg.append("g").attr("transform","translate(".concat(s.translateX,",").concat(s.translateY,")")),this.drawTicks(),this.drawAxes(),this.drawChart(),this.drawTipTriggers()},drawTicks:function(){var t=this.getX(!0),e=d3.axisBottom(t).tickFormat(this.getXFormatter()).ticks(3);this.drawingArea.append("g").attr("class","x ticks-axis").attr("transform","translate(0, ".concat(this.height,")")).call(e);var i,s=this.getY();"rtl"!==this.orientation?(i=d3.axisLeft(s).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").call(i)):(i=d3.axisRight(s).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").attr("transform","translate(".concat(this.width,",0)")).call(i)),this.onAfterDrawTicks()},drawAxes:function(){if(this.settings.xAxis.showAxis){var t=this.getX(),e=d3.axisBottom(t).ticks(0).tickSizeOuter(0);this.drawingArea.append("g").attr("class","x axis").attr("transform","translate(0, ".concat(this.height,")")).call(e)}if(this.settings.yAxis.showAxis){var i,s=this.getY();"rtl"===this.orientation?(i=d3.axisLeft(s).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(this.width-0,", 0)")).call(i)):(i=d3.axisRight(s).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(0,", 0)")).call(i))}},drawChart:function(){var t=this.getX(!0),e=this.getY();if(this.settings.xAxis.gridlines){var i=d3.axisBottom(t);this.drawingArea.append("g").attr("class","x grid-line").attr("transform","translate(0,".concat(this.height,")")).call(i.tickSize(-this.height,0,0).tickFormat(""))}if(this.settings.yAxis.gridlines){var s=d3.axisLeft(e);this.drawingArea.append("g").attr("class","y grid-line").attr("transform","translate(0 , 0)").call(s.tickSize(-this.width,0).tickFormat("").tickValues(this.getYTickValues()).ticks(2))}var n=d3.line().x((function(e){return t(e[0])})).y((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-line").append("path").datum(this.dataTable.rows).style("fill","none").style("stroke",this.settings.colors[0]).style("stroke-width","3px").attr("d",n);var a=d3.area().x((function(e){return t(e[0])})).y0(this.height).y1((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-area").append("path").datum(this.dataTable.rows).style("fill",this.settings.colors[0]).style("fill-opacity","0.3").attr("d",a),this.settings.plots&&this.drawingArea.append("g").attr("class","plots").selectAll("circle").data(this.dataTable.rows).enter().append("circle").style("fill",this.settings.colors[0]).attr("class",(function(t,e){return"plot plot-".concat(e)})).attr("r",4).attr("cx",(function(e){return t(e[0])})).attr("cy",(function(t){return e(t[1])}))},drawTipTriggers:function(){var t=this;if(this.settings.tips){this.tip||(this.tip=new Craft.charts.Tip(this.$chart));var e=this.getChartMargin(),i=(this.drawingArea.select(".x path.domain").node().getTotalLength()-e.left-e.right-12)/(this.dataTable.rows.length-1),s=Math.max(0,i),n=this.getX(!0),a=this.getY();this.drawingArea.append("g").attr("class","tip-triggers").selectAll("rect").data(this.dataTable.rows).enter().append("rect").attr("class","tip-trigger").style("fill","transparent").style("fill-opacity","1").attr("width",s).attr("height",this.height).attr("x",(function(t){return n(t[0])-s/2})).on("mouseover",(function(e,i){t.drawingArea.select(".plot-"+i).attr("r",5);var s=$(""),r=$('').appendTo(s),o=$('').appendTo(s);r.html(t.getXFormatter()(e[0])),o.html(t.getYFormatter()(e[1]));var l=s.get(0);t.tip.setContent(l);var h,d=t.getChartMargin(),c=24,u=a(e[1])+c;"rtl"!==t.orientation?(h=n(e[0])+d.left+c,t.$chart.offset().left+h+t.tip.$tip.width()>t.$chart.offset().left+t.$chart.width()-c&&(h=n(e[0])-(t.tip.$tip.width()+c))):h=n(e[0])-(t.tip.$tip.width()+d.left+c),h<0&&(h=n(e[0])+d.left+c);var p={top:u,left:h};t.tip.setPosition(p),t.tip.show()})).on("mouseout",(function(e,i){t.drawingArea.select(".plot-"+i).attr("r",4),t.tip.hide()}))}},getChartMargin:function(){var t=this,e=this.settings.margin,i=this.getYTickValues(),s=0;return $.each(i,(function(e,i){var n=8*t.getYFormatter()(i).length;n>s&&(s=n)})),s+=10,e.left=s,e},getX:function(t){var e=d3.min(this.dataTable.rows,(function(t){return t[0]})),i=d3.max(this.dataTable.rows,(function(t){return t[0]})),s=[e,i];"rtl"===this.orientation&&(s=[i,e]);var n=0,a=0;t&&(n=0,a=0);var r=d3.scaleTime().range([n,this.width-a]);return r.domain(s),r},getY:function(){var t=[0,this.getYMaxValue()],e=d3.scaleLinear().range([this.height,0]);return e.domain(t),e},getXFormatter:function(){return this.settings.xAxis.formatter!==$.noop?this.settings.xAxis.formatter(this):Craft.charts.utils.getTimeFormatter(this.timeFormatLocale,this.settings)},getYFormatter:function(){return this.settings.yAxis.formatter!==$.noop?this.settings.yAxis.formatter(this):Craft.charts.utils.getNumberFormatter(this.formatLocale,this.dataTable.columns[1].type,this.settings)},getYMaxValue:function(){return d3.max(this.dataTable.rows,(function(t){return t[1]}))},getYTickValues:function(){var t=this.getYMaxValue();return t>1?[t/2,t]:[0,t]}},{defaults:{chartClass:"area",margin:{top:25,right:5,bottom:25,left:0},plots:!0,tips:!0,xAxis:{gridlines:!1,showAxis:!0,formatter:$.noop},yAxis:{gridlines:!0,showAxis:!1,formatter:$.noop}}}),Craft.charts.utils={getDuration:function(t){var e=parseInt(t,10),i={hours:Math.floor(e/3600),minutes:Math.floor((e-3600*i.hours)/60),seconds:e-3600*i.hours-60*i.minutes};return i.hours<10&&(i.hours="0".concat(i.hours)),i.minutes<10&&(i.minutes="0".concat(i.minutes)),i.seconds<10&&(i.seconds="0".concat(i.seconds)),"".concat(i.hours,":").concat(i.minutes,":").concat(i.seconds)},getTimeFormatter:function(t,e){switch(e.dataScale){case"year":return t.format("%Y");case"month":return t.format(e.formats.shortDateFormats.month);case"hour":return t.format("".concat(e.formats.shortDateFormats.day," %H:00:00"));default:return t.format(e.formats.shortDateFormats.day)}},getNumberFormatter:function(t,e,i){switch(e){case"currency":return t.format(i.formats.currencyFormat);case"percent":return t.format(i.formats.percentFormat);case"time":return Craft.charts.utils.getDuration;case"number":return t.format(i.formats.numberFormat)}}}},3352:function(){Craft.ColorInput=Garnish.Base.extend({$container:null,$input:null,$colorContainer:null,$colorPreview:null,$colorInput:null,init:function(t){this.$container=$(t),this.$input=this.$container.find(".color-input"),this.$colorContainer=this.$container.children(".color"),this.$colorPreview=this.$colorContainer.children(".color-preview"),this.createColorInput(),this.handleTextChange(),this.addListener(this.$input,"input","handleTextChange")},createColorInput:function(){var t=document.createElement("input");t.setAttribute("type","color"),"color"===t.type&&(this.$colorContainer.removeClass("static"),this.$colorInput=$(t).addClass("color-preview-input").attr({"aria-controls":this.$input.attr("id"),"aria-label":Craft.t("app","Color picker")}).appendTo(this.$colorPreview),this.addListener(this.$colorInput,"click",(function(t){t.stopPropagation()})),this.addListener(this.$colorContainer,"click",(function(){this.$colorInput.trigger("click")})),this.addListener(this.$colorInput,"input","updateColor"))},updateColor:function(){this.$input.val(this.$colorInput.val()),this.handleTextChange()},handleTextChange:function(){var t=this.$input.val();t!==(t=t.trim())&&this.$input.val(t),t.length&&"#"===t[0]&&(t=t.substring(1),this.$input.val(t)),t.length?(3===t.length&&(t=t[0].repeat(2)+t[1].repeat(2)+t[2].repeat(2)),t.match(/^[0-9a-f]{6}$/i)?(this.$colorPreview.css("background-color","#".concat(t)),this.$colorInput&&this.$colorInput.val("#".concat(t))):this.$colorPreview.css("background-color","")):this.$colorPreview.css("background-color","")}},{_browserSupportsColorInputs:null,doesBrowserSupportColorInputs:function(){return Craft.ColorInput._browserSupportsColorInputs,Craft.ColorInput._browserSupportsColorInputs}})},8167:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{class:"pane-header"}),this.$toolbar=$("",{class:"so-toolbar"}).appendTo(this.$header),this.$tabContainer=$("",{class:"pane-tabs"}).appendTo(this.$toolbar),this.$loadSpinner=$("",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).appendTo(this.$toolbar),this.$editLink=$("",{target:"_blank",class:"btn header-btn hidden",title:Craft.t("app","Open the full edit page in a new tab"),"aria-label":Craft.t("app","Open the full edit page in a new tab"),"data-icon":"external"}).appendTo(this.$toolbar),this.$sidebarBtn=$("",{type:"button",class:"btn header-btn hidden sidebar-btn",title:Craft.t("app","Show sidebar"),"aria-label":Craft.t("app","Show sidebar"),"data-icon":"sidebar-".concat(Garnish.ltr?"right":"left"),"aria-expanded":"false"}).appendTo(this.$toolbar),this.addListener(this.$sidebarBtn,"click",(function(t){t.preventDefault(),i.showingSidebar?i.hideSidebar():i.showSidebar()})),this.$body=$("",{class:"so-body"}),this.$content=$("",{class:"so-content"}).appendTo(this.$body),this.$sidebar=$("",{class:"so-sidebar details hidden"}).appendTo(this.$body),this.$footer=$("",{class:"so-footer hidden"}),this.$noticeContainer=$("",{class:"so-notice"}).appendTo(this.$footer),$("",{class:"flex-grow"}).appendTo(this.$footer);var s=$("",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$cancelBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(s),this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(s);var n=this.$header.add(this.$body).add(this.$footer);this.base(n,{containerElement:"form",containerAttributes:{id:"cp-screen-".concat(Math.floor(1e8*Math.random())),action:"",method:"post",novalidate:"",class:"cp-screen"},closeOnEsc:!1,closeOnShadeClick:!1}),this.$container.data("cpScreen",this),this.on("beforeClose",(function(){i.hideSidebar()})),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},(function(t){i.handleSubmit(t)})),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){i.closeMeMaybe()})),this.addListener(this.$cancelBtn,"click",(function(){i.closeMeMaybe()})),this.addListener(this.$shade,"click",(function(){i.closeMeMaybe()})),this.addListener(this.$container,"click",(function(t){var e=$(event.target);!i.showingSidebar||e.closest(i.$sidebarBtn).length||e.closest(i.$sidebar).length||i.hideSidebar()})),this.addListener(this.$container,"submit","handleSubmit"),this.load()},load:function(t,e){var i=this;return new Promise((function(t,s){i.trigger("beforeLoad"),i.showLoadSpinner(),i.cancelToken&&(i.ignoreFailedRequest=!0,i.cancelToken.cancel()),i.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",i.action,$.extend({params:Object.assign({},i.getParams(),i.settings.params),cancelToken:i.cancelToken.token,headers:{"X-Craft-Container-Id":i.$container.attr("id")}},i.settings.requestOptions)).then((function(n){i.update(n.data).then((function(){!1!==e&&(i.$container.data("delta-names",n.data.deltaNames),i.$container.data("initial-delta-values",n.data.initialDeltaValues),i.$container.data("initialSerializedValue",i.$container.serialize())),t()})).catch((function(t){s(t)}))})).catch((function(t){i.ignoreFailedRequest||(Craft.cp.displayError(),s(t)),i.ignoreFailedRequest=!1})).finally((function(){i.hideLoadSpinner(),i.cancelToken=null}))}))},getParams:function(){return{}},updateHeaderVisibility:function(){var t=this.settings.showHeader||this.hasTabs||this.hasCpLink||this.showingLoadSpinner;t||this.hasSidebar?this.$header.removeClass("hidden"):this.$header.addClass("hidden"),t?this.$header.addClass("so-visible"):this.$header.removeClass("so-visible")},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0,this.updateHeaderVisibility()},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1,this.updateHeaderVisibility()},update:function(t){var e=this;return new Promise((function(i){e.namespace=t.namespace,t.bodyClass&&e.$body.addClass(t.bodyClass),e.$content.html(t.content),t.submitButtonLabel&&e.$saveBtn.text(t.submitButtonLabel),e.updateTabs(t.tabs),t.formAttributes&&Craft.setElementAttributes(e.$container,t.formAttributes),t.editUrl?(e.$editLink.removeClass("hidden").attr("href",t.editUrl),e.hasCpLink=!0):(e.$editLink.addClass("hidden"),e.hasCpLink=!1),t.sidebar?(e.$container.addClass("has-sidebar"),e.$sidebarBtn.removeClass("hidden"),e.$sidebar.html(t.sidebar),e.$sidebar.find("a").each((function(){this.hostname.length&&void 0===$(this).attr("target")&&$(this).attr("target","_blank")})),e.hasSidebar=!0):(e.$container.removeClass("has-sidebar"),e.$sidebarBtn.addClass("hidden"),e.$sidebar.addClass("hidden").html(""),e.hasSidebar=!1),t.notice?e.$noticeContainer.html(t.notice):e.$noticeContainer.empty(),e.updateHeaderVisibility(),e.$footer.removeClass("hidden"),Garnish.requestAnimationFrame((function(){Craft.appendHeadHtml(t.headHtml),Craft.appendBodyHtml(t.bodyHtml),Craft.initUiElements(e.$content),Craft.cp.elementThumbLoader.load($(e.$content)),t.sidebar&&(Craft.initUiElements(e.$sidebar),Craft.cp.elementThumbLoader.load(e.$sidebar)),Garnish.isMobileBrowser()||Craft.setFocusWithin(e.$content),i(),e.trigger("load")}))}))},updateTabs:function(t){var e=this;if(this.tabManager&&(this.tabManager.destroy(),this.tabManager=null,this.$tabContainer.html("")),this.hasTabs=!!t,this.hasTabs){var i=$(t);this.$tabContainer.replaceWith(i),this.$tabContainer=i,this.tabManager=new Craft.Tabs(this.$tabContainer),this.tabManager.on("deselectTab",(function(t){$(t.$tab.attr("href")).addClass("hidden")})),this.tabManager.on("selectTab",(function(t){$(t.$tab.attr("href")).removeClass("hidden"),Garnish.$win.trigger("resize"),e.$body.trigger("scroll")}))}},showSidebar:function(){var t=this;this.showingSidebar||(this.$body.scrollTop(0).addClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).removeClass("hidden"),this.$sidebar[0].offsetWidth,this.$sidebar.css(this._openedSidebarStyles()),Garnish.isMobileBrowser()||this.$sidebar.one("transitionend.so",(function(){Craft.setFocusWithin(t.$sidebar)})),Craft.trapFocusWithin(this.$sidebar),this.$sidebarBtn.addClass("active").attr({"aria-expanded":"true"}),Garnish.$win.trigger("resize"),this.$sidebar.trigger("scroll"),Garnish.uiLayerManager.addLayer(),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.hideSidebar()})),this.showingSidebar=!0)},hideSidebar:function(){var t=this;this.showingSidebar&&(this.$body.removeClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).one("transitionend.so",(function(){t.$sidebar.addClass("hidden"),t.$sidebarBtn.focus()})),this.$sidebarBtn.removeClass("active").attr({"aria-expanded":"false"}),Garnish.uiLayerManager.removeLayer(),this.showingSidebar=!1)},_openedSidebarStyles:function(){return e({},Garnish.ltr?"right":"left","0")},_closedSidebarStyles:function(){return e({},Garnish.ltr?"right":"left","-350px")},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){t.preventDefault(),this.submit()},submit:function(){var t=this;this.showSubmitSpinner();var e=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),this.$container.data("delta-names"),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:e,headers:{"X-Craft-Namespace":this.namespace}}).then((function(e){t.handleSubmitResponse(e)})).catch((function(e){t.handleSubmitError(e)})).finally((function(){t.hideSubmitSpinner()}))},handleSubmitResponse:function(t){this.clearErrors();var e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),this.trigger("submit",{response:t,data:e.modelName&&e[e.modelName]||{}}),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;var e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors)},showErrors:function(e){var i=this;this.clearErrors(),Object.entries(e).forEach((function(e){var s,n,a=(n=2,function(t){if(Array.isArray(t))return t}(s=e)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(s,n)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(s,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[0],o=a[1],l=i.$container.find('[data-attribute="'.concat(r,'"]'));l&&(Craft.ui.addErrorsToField(l,o),i.fieldsWithErrors.push(l))}))},clearErrors:function(){this.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)}))},isDirty:function(){var t=this,e=this.$container.data("initialSerializedValue");return void 0!==e&&e!==(this.$container.data("serializer")||function(){return t.$container.serialize()})()},closeMeMaybe:function(){this.isOpen&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.base(),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel())}},{defaults:{params:{},requestOptions:{},showHeader:null,closeOnSubmit:!0}})},587:function(){function t(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=r(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var s=0,n=function(){};return{s:n,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){throw t})),f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){l=!0,a=t})),f:function(){try{o||null==i.return||i.return()}finally{if(l)throw a}}}}function i(){"use strict";i=function(){return t};var t={},e=Object.prototype,s=e.hasOwnProperty,n=Object.defineProperty||function(t,e,i){t[e]=i.value},a="function"==typeof Symbol?Symbol:{},r=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",h=a.toStringTag||"@@toStringTag";function d(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(t){d=function(t,e,i){return t[e]=i}}function c(t,e,i,s){var a=e&&e.prototype instanceof f?e:f,r=Object.create(a.prototype),o=new x(s||[]);return n(r,"_invoke",{value:w(t,i,o)}),r}function u(t,e,i){try{return{type:"normal",arg:t.call(e,i)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var p={};function f(){}function g(){}function m(){}var v={};d(v,r,(function(){return this}));var b=Object.getPrototypeOf,$=b&&b(b(P([])));$&&$!==e&&s.call($,r)&&(v=$);var C=m.prototype=f.prototype=Object.create(v);function _(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function y(t,e){function i(n,a,r,o){var h=u(t[n],t,a);if("throw"!==h.type){var d=h.arg,c=d.value;return c&&"object"==l(c)&&s.call(c,"__await")?e.resolve(c.__await).then((function(t){i("next",t,r,o)}),(function(t){i("throw",t,r,o)})):e.resolve(c).then((function(t){d.value=t,r(d)}),(function(t){return i("throw",t,r,o)}))}o(h.arg)}var a;n(this,"_invoke",{value:function(t,s){function n(){return new e((function(e,n){i(t,s,e,n)}))}return a=a?a.then(n,n):n()}})}function w(t,e,i){var s="suspendedStart";return function(n,a){if("executing"===s)throw new Error("Generator is already running");if("completed"===s){if("throw"===n)throw a;return{value:void 0,done:!0}}for(i.method=n,i.arg=a;;){var r=i.delegate;if(r){var o=S(r,i);if(o){if(o===p)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if("suspendedStart"===s)throw s="completed",i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);s="executing";var l=u(t,e,i);if("normal"===l.type){if(s=i.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(s="completed",i.method="throw",i.arg=l.arg)}}}function S(t,e){var i=t.iterator[e.method];if(void 0===i){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method))return p;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var s=u(i,t.iterator,e.arg);if("throw"===s.type)return e.method="throw",e.arg=s.arg,e.delegate=null,p;var n=s.arg;return n?n.done?(e[t.resultName]=n.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):n:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function P(t){if(t){var e=t[r];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,n=function e(){for(;++i=0;--n){var a=this.tryEntries[n],r=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var o=s.call(a,"catchLoc"),l=s.call(a,"finallyLoc");if(o&&l){if(this.prev=0;--i){var n=this.tryEntries[i];if(n.tryLoc<=this.prev&&s.call(n,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),T(i),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var s=i.completion;if("throw"===s.type){var n=s.arg;T(i)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:P(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=void 0),p}},t}function s(t,e,i,s,n,a,r){try{var o=t[a](r),l=o.value}catch(t){return void i(t)}o.done?e(l):Promise.resolve(l).then(s,n)}function n(t){return function(){var e=this,i=arguments;return new Promise((function(n,a){var r=t.apply(e,i);function o(t){s(r,n,a,o,l,"next",t)}function l(t){s(r,n,a,o,l,"throw",t)}o(void 0)}))}}function a(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||r(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t,e){if(t){if("string"==typeof t)return o(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i\x20\t\r\n\f]*)[^>]*)\/>/gi;if(jQuery.htmlPrefilter=function(t){return t.replace(c,"<$1>$2>")},$.extend(Craft,{navHeight:48,index:function(t,e){if(!Array.isArray(t))throw"The first argument passed to Craft.index() must be an array.";return t.reduce((function(t,i,s){return t["string"==typeof e?i[e]:e(i,s)]=i,t}),{})},group:function(t,e){if(!Array.isArray(t))throw"The first argument passed to Craft.group() must be an array.";var i={};return t.reduce((function(t,s,n){var a="string"==typeof e?s[e]:e(s,n);return i.hasOwnProperty(a)||(i[a]=[[],a],t.push(i[a])),i[a][0].push(s),t}),[])},t:function(t,e,i){return void 0!==Craft.translations[t]&&void 0!==Craft.translations[t][e]&&(e=Craft.translations[t][e]),i?this.formatMessage(e,i):e},formatMessage:function(t,e){var i;if(!1===(i=this._tokenizePattern(t)))throw"Message pattern is invalid.";for(var s=0;so?(s++,i=o):(s--,i=l),0===s&&(r.push(n.slice(e+1,i).join("").split(",",3)),e=i+1,r.push(n.slice(e,o).join("")),e=o),0!==s&&(!1===o||!1===l))break}return 0===s&&r},_parseToken:function(t,e){var i=this,s=t[0].trim();if(void 0===e[s])return"{".concat(t.join(","),"}");var n=e[s],r=void 0!==t[1]?t[1].trim():"none";switch(r){case"number":return function(){var e=void 0!==t[2]?t[2].trim():null;if(null!==e&&"integer"!==e)throw"Message format 'number' is only supported for integer values.";var i,s=Craft.formatNumber(n);return null===e&&-1!==(i="".concat(n).indexOf("."))&&(s+=".".concat(n.substring(i+1))),s}();case"none":return n;case"select":return function(){if(void 0===t[2])return!1;for(var s=i._tokenizePattern(t[2]),a=s.length,r=!1,o=0;o+1").text(t).html()},escapeRegex:function(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},getText:function(t){return $("").html(t).text()},encodeUriComponent:function(t){t=encodeURIComponent(t);var e={"!":"%21","*":"%2A","'":"%27","(":"%28",")":"%29"};for(var i in e){var s=new RegExp("\\"+i,"g");t=t.replace(s,e[i])}return t},selectFullValue:function(t){var e=$(t),i=e.val();if(void 0!==e[0].setSelectionRange){var s=2*i.length;e[0].setSelectionRange(0,s)}else e.val(i)},formatInputId:function(t){return this.rtrim(t.replace(/[^\w\-]+/g,"-"),"-")},getUrl:function(t,e,i){"string"!=typeof t&&(t="");var s=null;if($.isPlainObject(e))void 0!==e["#"]&&(s=e["#"],delete e["#"]);else if("string"==typeof e){var n=e.indexOf("#");-1!==n&&(s=e.substring(n+1),e=e.substring(0,n)),e=Object.fromEntries(new URLSearchParams(e).entries())}else e={};var a=t.indexOf("#");-1!==a&&(s||(s=t.substring(a+1)),t=t.substring(0,a));var r,o=t.indexOf("?");if(-1!==o&&(e=$.extend(Object.fromEntries(new URLSearchParams(t.substring(o+1)).entries()),e),t=t.substring(0,o)),-1!==t.search("://")||"/"===t[0])return t+($.isEmptyObject(e)?"":"?".concat($.param(e)))+(s?"#".concat(s):"");if(t=Craft.trim(t,"/"),i){if(r=i,t&&Craft.pathParam){var l=r.match(new RegExp("[&?]"+Craft.escapeRegex(Craft.pathParam)+"=[^&]+"));l&&(r=r.replace(l[0],Craft.rtrim(l[0],"/")+"/"+t),t="")}}else r=Craft.baseUrl;return-1!==(o=r.indexOf("?"))&&(e=$.extend(Object.fromEntries(new URLSearchParams(r.substring(o+1)).entries()),e),r=r.substring(0,o)),!Craft.omitScriptNameInUrls&&t&&(Craft.usePathInfo||!Craft.pathParam?-1===r.search(Craft.scriptName)&&(r=Craft.rtrim(r,"/")+"/"+Craft.scriptName):(void 0!==e[Craft.pathParam]&&(t=e[Craft.pathParam].trimEnd()+(t?"/"+t:"")),e[Craft.pathParam]=t,t=null)),t&&(r=Craft.rtrim(r,"/")+"/"+t),$.isEmptyObject(e)||(r+="?".concat($.param(e))),s&&(r+="#".concat(s)),r},getCpUrl:function(t,e){return this.getUrl(t,e,Craft.baseCpUrl)},getSiteUrl:function(t,e){return this.getUrl(t,e,Craft.baseSiteUrl)},getActionUrl:function(t,e){return Craft.getUrl(t,e,Craft.actionUrl)},redirectTo:function(t){document.location.href=this.getUrl(t)},setUrl:function(t){"undefined"!=typeof history&&(t.match(/#/)||(t+=document.location.hash),history.replaceState({},"",t))},setPath:function(t){this.path=t,this.setUrl(Craft.getUrl(t,document.location.search))},setQueryParam:function(t,e){var i=document.location.origin+document.location.pathname,s=this.getQueryParams();null!=e&&!1!==e?s[t]=e:delete s[t],this.setUrl(Craft.getUrl(i,s))},getPageUrl:function(t){var e=document.location.origin+document.location.pathname;e=Craft.rtrim(e,"/");var i=document.location.search?document.location.search.substring(1):"";if("?"===Craft.pageTrigger[0]){var s=Craft.pageTrigger.substring(1);if(document.location.search){var n=Object.fromEntries(new URLSearchParams(i).entries());delete n[s],i=$.param(n)}1!==t&&(i+=(""!==i?"&":"")+"".concat(s,"=").concat(t))}else e=e.replace(new RegExp("/"+Craft.escapeRegex(Craft.pageTrigger)+"\\d+$"),""),1!==t&&(e+="/".concat(Craft.pageTrigger).concat(t));return e+(i?"?".concat(i):"")+document.location.hash},getCsrfInput:function(){return Craft.csrfTokenName?'':""},postActionRequest:function(t,e,i,s){"function"==typeof e&&(s=i,i=e,e={}),(s=s||{}).contentType&&s.contentType.match(/\bjson\b/)&&("object"===l(e)&&(e=JSON.stringify(e)),s.contentType="application/json; charset=utf-8");var n=$.ajax($.extend({url:Craft.getActionUrl(t),type:"POST",dataType:"json",headers:this._actionHeaders(),data:e,success:i,error:function(t,e,s){4===t.readyState&&(400!==t.status&&(void 0!==Craft.cp?Craft.cp.displayError():alert(Craft.t("app","A server error occurred."))),i&&i(400===t.status?t.responseJSON:null,e,t))}},s));return"function"==typeof s.send&&s.send(n),n},_actionHeaders:function(){var t={"X-Registered-Asset-Bundles":a(new Set(Craft.registeredAssetBundles)).join(","),"X-Registered-Js-Files":a(new Set(Craft.registeredJsFiles)).join(",")};return Craft.csrfTokenValue&&(t["X-CSRF-Token"]=Craft.csrfTokenValue),t},sendActionRequest:function(t,e){var i=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if($.isPlainObject(e)&&(s=e,e=null),"POST"===t.toUpperCase()&&e&&s.data)if("string"==typeof s.data){var n=s&&s.headers&&s.headers["X-Craft-Namespace"],a=this.namespaceInputName("action",n);s.data+="&".concat(a,"=").concat(e)}else delete s.data.action;return new Promise((function(n,a){(s=s?$.extend({},s):{}).method=t,s.url=e?Craft.getActionUrl(e):Craft.getCpUrl(),s.headers=$.extend({"X-Requested-With":"XMLHttpRequest"},s.headers||{},i._actionHeaders()),s.params=$.extend({},s.params||{},{v:(new Date).getTime()}),axios.request(s).then(n).catch(a)}))},sendApiRequest:function(t,e){var i=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Promise((function(n,a){var r=(s=s?$.extend({},s):{}).cancelToken||null;i._getApiHeaders(r).then((function(o){s.method=t,s.baseURL=Craft.baseApiUrl,s.url=e,s.headers=$.extend(o,s.headers||{}),s.params=$.extend(Craft.apiParams||{},s.params||{},{v:(new Date).getTime()}),i._apiHeaders||(s.params.processCraftHeaders=1),Craft.httpProxy&&(s.proxy=Craft.httpProxy),axios.request(s).then((function(t){i._processApiHeaders(t.headers,r).then((function(){n(t.data)})).catch(a)})).catch(a)})).catch(a)}))},_loadingApiHeaders:!1,_apiHeaders:null,_apiHeaderWaitlist:[],_getApiHeaders:function(t){var i=this;return new Promise((function(s,n){i._loadingApiHeaders?i._apiHeaderWaitlist.push([s,n]):i._apiHeaders?s(i._apiHeaders):(i._loadingApiHeaders=!0,i.sendActionRequest("POST","app/api-headers",{cancelToken:t}).then((function(t){i._loadingApiHeaders?s(t.data):n(e)})).catch((function(t){i._rejectApiRequests(n,t)})))}))},_processApiHeaders:function(t,i){var s=this;return new Promise((function(n,a){s._apiHeaders?n():s.sendActionRequest("POST","app/process-api-response-headers",{data:{headers:t},cancelToken:i}).then((function(t){if(s._loadingApiHeaders)for(s._apiHeaders=t.data,s._loadingApiHeaders=!1,n();s._apiHeaderWaitlist.length;)s._apiHeaderWaitlist.shift()[0](s._apiHeaders);else a(e)})).catch((function(t){s._rejectApiRequests(a,t)}))}))},_rejectApiRequests:function(t,e){for(this._loadingApiHeaders=!1,t(e);this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1](e)},clearCachedApiHeaders:function(){for(this._apiHeaders=null,this._loadingApiHeaders=!1;this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1]()},downloadFromUrl:function(t,e,i){return new Promise((function(s,n){var a=new XMLHttpRequest;a.open(t,e,!0),"object"===l(i)?(a.setRequestHeader("Content-Type","application/json; charset=UTF-8"),i=JSON.stringify(i)):a.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),a.responseType="blob",a.onload=function(){if(200===a.status){var t=a.getResponseHeader("content-disposition"),e=/"([^"]*)"/.exec(t),i=null!=e&&e[1]?e[1]:"Download",r=a.getResponseHeader("content-type"),o=new Blob([a.response],{type:r}),l=document.createElement("a");l.href=window.URL.createObjectURL(o),l.download=i,document.body.appendChild(l),l.click(),document.body.removeChild(l),s()}else n()},a.send(i)}))},stringToArray:function(t){if("string"!=typeof t)return t;for(var e=t.split(","),i=0;ie.length?1:-1}));for(var r=this._groupParamsByDeltaNames(t.split("&"),i,!1,n),o=this._groupParamsByDeltaNames(e.split("&"),i,!0,!1),h=o.__root__,d=0;d=0;o--){var l=t[r].substring(0,e[o].length+1);if(l===e[o]+"="||l===e[o]+"["){void 0===n[e[o]]&&(n[e[o]]=[]),n[e[o]].push(a(t[r]));continue t}}i&&n.__root__.push(a(t[r]))}if(s){var h=function(t,e){return Array.isArray(e)||$.isPlainObject(e)?e=$.param(e):"string"==typeof e?e=encodeURIComponent(e):null===e&&(e=""),"".concat(encodeURIComponent(t),"=").concat(e)};for(var d in s)if(s.hasOwnProperty(d))if($.isPlainObject(s[d]))for(var c in n[d]=[],s[d])s[d].hasOwnProperty(c)&&n[d].push(h("".concat(d,"[").concat(c,"]"),s[d][c]));else n[d]=[h(d,s[d])]}return n},expandPostArray:function(t){var e,i={};for(var s in t)if(t.hasOwnProperty(s)){var n,a=t[s],r=s.match(/^(\w+)(\[.*)?/);if(r[2])for(n=r[2].match(/\[[^\[\]]*\]/g),e=0;e",{attr:{method:"post",action:"","accept-charset":"UTF-8"}});if("string"==typeof t)for(var i,s=t.split("&"),n=0;n",{type:"hidden",name:decodeURIComponent(i[0]),value:decodeURIComponent(i[1]||"")}).appendTo(e);return e},compare:function(t,e,i){if(l(t)!==l(e))return!1;if("object"===l(t)&&null!==t&&null!==e){if(t.length!==e.length)return!1;if(Array.isArray(t)!==Array.isArray(e))return!1;if(!Array.isArray(t))if(void 0===i||!0===i){if(!Craft.compare(Craft.getObjectKeys(t).sort(),Craft.getObjectKeys(e).sort()))return!1}else if(!Craft.compare(Craft.getObjectKeys(t),Craft.getObjectKeys(e)))return!1;for(var s in t)if(t.hasOwnProperty(s)&&!Craft.compare(t[s],e[s]))return!1;return!0}return t===e},getObjectKeys:function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(i);return e},escapeChars:function(t){Array.isArray(t)||(t=t.split());for(var e="",i=0;i>t/4).toString(16)}))},namespaceInputName:function(t,e){return e?t.replace(/([^'"\[\]]+)([^'"]*)/,"".concat(e,"[$1]$2")):t},namespaceId:function(t,e){return(e?"".concat(Craft.formatInputId(e),"-"):"")+Craft.formatInputId(t)},randomString:function(t){for(var e="",i=0;i input[type="date"], .timewrapper > input[type="time"]',t).datetimeinput(),$("a",t).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===$(this).attr("target")&&$(this).attr("rel","noopener").attr("target","_blank")}))},_elementIndexClasses:{},_elementSelectorModalClasses:{},_elementEditorClasses:{},_uploaderClasses:{},registerElementIndexClass:function(t,e){if(void 0!==this._elementIndexClasses[t])throw"An element index class has already been registered for the element type “"+t+"”.";this._elementIndexClasses[t]=e},registerUploaderClass:function(t,e){if(void 0!==this._uploaderClasses[t])throw"An asset uploader class has already been registered for the filesystem type “"+t+"”.";this._uploaderClasses[t]=e},registerElementSelectorModalClass:function(t,e){if(void 0!==this._elementSelectorModalClasses[t])throw"An element selector modal class has already been registered for the element type “"+t+"”.";this._elementSelectorModalClasses[t]=e},registerElementEditorClass:function(t,e){if(void 0!==this._elementEditorClasses[t])throw"An element editor class has already been registered for the element type “"+t+"”.";this._elementEditorClasses[t]=e},createElementIndex:function(t,e,i){return new(void 0!==this._elementIndexClasses[t]?this._elementIndexClasses[t]:Craft.BaseElementIndex)(t,e,i)},createUploader:function(t,e,i){var s=new(void 0!==this._uploaderClasses[t]?this._uploaderClasses[t]:Craft.Uploader)(e,i);return s.fsType=t,s},createElementSelectorModal:function(t,e){return new(void 0!==this._elementSelectorModalClasses[t]?this._elementSelectorModalClasses[t]:Craft.BaseElementSelectorModal)(t,e)},createElementEditor:function(t,e,i){return void 0===i&&$.isPlainObject(e)?(i=e,e=null):"object"!==l(i)&&(i={}),i.elementType||(i.elementType=t),new Craft.ElementEditorSlideout(e,i)},getLocalStorage:function(t,e){return t="Craft-"+Craft.systemUid+"."+t,"undefined"!=typeof localStorage&&void 0!==localStorage[t]?JSON.parse(localStorage[t]):e},setLocalStorage:function(t,e){if("undefined"!=typeof localStorage){t="Craft-"+Craft.systemUid+"."+t;try{localStorage[t]=JSON.stringify(e)}catch(t){}}},removeLocalStorage:function(t){"undefined"!=typeof localStorage&&localStorage.removeItem("Craft-".concat(Craft.systemUid,".").concat(t))},getCookie:function(t){return document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)Craft-".concat(Craft.systemUid,":").concat(t,"\\s*\\=\\s*([^;]*).*$)|^.*$")),"$1")},setCookie:function(t,e,i){i=$.extend({},this.defaultCookieOptions,i);var s="Craft-".concat(Craft.systemUid,":").concat(t,"=").concat(encodeURIComponent(e));i.path&&(s+=";path=".concat(i.path)),i.domain&&(s+=";domain=".concat(i.domain)),i.maxAge?s+=";max-age-in-seconds=".concat(i.maxAge):i.expires&&(s+=";expires=".concat(i.expires.toUTCString())),i.secure&&(s+=";secure"),document.cookie=s},removeCookie:function(t){this.setCookie(t,"",new Date("1970-01-01T00:00:00"))},getElementInfo:function(t){var e=$(t);return e.hasClass("element")||(e=e.find(".element:first")),{id:e.data("id"),siteId:e.data("site-id"),label:e.data("label"),status:e.data("status"),url:e.data("url"),hasThumb:e.hasClass("hasthumb"),$element:e}},setElementSize:function(t,e){var i=$(t);if("small"!==e&&"large"!==e&&(e="small"),!i.hasClass(e)){var s="small"===e?"large":"small";if(i.addClass(e).removeClass(s),i.hasClass("hasthumb")){var n=i.find("> .elementthumb > img"),a=$("",{sizes:("small"===e?"30":"100")+"px",srcset:n.attr("srcset")||n.attr("data-pfsrcset")});n.replaceWith(a),picturefill({elements:[a[0]]})}}},submitForm:function(t,e){if(void 0===e&&(e={}),!e.confirm||confirm(e.confirm)){if(e.action&&$("",{type:"hidden",name:"action",val:e.action}).appendTo(t),e.redirect&&$("",{type:"hidden",name:"redirect",val:e.redirect}).appendTo(t),e.params)for(var i in e.params){var s=e.params[i];$("",{type:"hidden",name:i,val:s}).appendTo(t)}e.retainScroll&&this.setLocalStorage("scrollY",window.scrollY),t.trigger($.extend({type:"submit"},e.data))}},trapFocusWithin:function(t){Garnish.trapFocusWithin(t)},setFocusWithin:function(t){Garnish.setFocusWithin(t)},filterInputVal:function(t,e){for(var i=$(t),s=i.val(),n=i[0].selectionStart,a="",r=0;r",{type:"button",class:"clear-btn",title:Craft.t("app","Clear"),"aria-label":Craft.t("app","Clear")}).appendTo(t).on("click",(function(){for(var t=0;tCharacters left: {chars, number}',{chars:t})},Garnish.$doc.ready((function(){Craft.initUiElements()}))},691:function(){function t(t){return function(t){if(Array.isArray(t))return s(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){if(t){if("string"==typeof t)return s(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i').appendTo(Garnish.$bod);this.$sidebar=$('').appendTo(s).attr({role:"navigation","aria-label":Craft.t("app","Source")}),this.$sourcesContainer=$('').appendTo(this.$sidebar),this.$sourceSettingsContainer=$(' ').appendTo(s),this.$footer=$('').appendTo(s),this.$footerBtnContainer=$(' ').appendTo(this.$footer),this.$cancelBtn=$(" ",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$footerBtnContainer),this.$saveBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$footerBtnContainer),this.$loadingSpinner=$(' ').appendTo(this.$sourceSettingsContainer),this.setContainer(s),this.show(),Craft.sendActionRequest("POST","element-index-settings/get-customize-sources-modal-data",{data:{elementType:this.elementIndex.elementType}}).then((function(t){i.$saveBtn.removeClass("disabled"),i.buildModal(t.data)})).finally((function(){i.$loadingSpinner.remove(),Garnish.setFocusWithin(i.$sidebar)})),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:function(t){var e=this;this.baseSortOptions=t.baseSortOptions,this.defaultSortOptions=t.defaultSortOptions,this.availableTableAttributes=t.availableTableAttributes,this.customFieldAttributes=t.customFieldAttributes,this.elementTypeName=t.elementTypeName,this.conditionBuilderHtml=t.conditionBuilderHtml,this.conditionBuilderJs=t.conditionBuilderJs,this.sites=t.sites,this.userGroups=t.userGroups,t.headHtml&&Craft.appendHeadHtml(t.headHtml),t.bodyHtml&&Craft.appendBodyHtml(t.bodyHtml),this.sourceSort=new Garnish.DragSort({handle:".move",axis:"y"}),this.sources=[];for(var i=0;i ').appendTo(this.$footer),n=$(" ",{type:"button",class:"btn menubtn add icon","aria-label":Craft.t("app","Add…"),"aria-controls":"add-source-menu",title:Craft.t("app","Add…"),"data-disclosure-trigger":""}).appendTo(s);this.$addSourceMenu=$(" ",{id:"add-source-menu",class:"menu menu--disclosure"}).appendTo(s);var a=function(t){var i=e.addSource(t,!0);Garnish.scrollContainerToElement(e.$sidebar,i.$item),i.select(),e.addSourceMenu.hide()},r=$(" ",{type:"button",class:"menu-option",text:Craft.t("app","New heading")}).on("click",(function(){a({type:"heading"}),e.focusLabelInput()})),o=$(" ",{type:"button",class:"menu-option",text:Craft.t("app","New custom source"),"data-type":"custom"}).on("click",(function(){var t=e.baseSortOptions.slice(0);t.push(e.defaultSortOptions),a({type:"custom",key:"custom:".concat(Craft.uuid()),sortOptions:t,defaultSort:[t[0].attr,t[1].defaultDir],tableAttributes:[],availableTableAttributes:[]}),e.focusLabelInput()})),l=$(" ").append($(" ").append(r)).appendTo(this.$addSourceMenu);t.conditionBuilderHtml&&$(" ").append(o).appendTo(l),Craft.useMobileStyles()&&this.buildSidebarToggleView(),this.addListener(Garnish.$win,"resize",this.updateSidebarView),this.addSourceMenu=new Garnish.DisclosureMenu(n)},focusLabelInput:function(){this.selectedSource.$labelInput.trigger("focus")},getSourceName:function(){return this.selectedSource?this.selectedSource.sourceData.label:this.sources[0].sourceData.label},updateSidebarView:function(){Craft.useMobileStyles()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView()},resetView:function(){this.$sourceSettingsHeader&&this.$sourceSettingsHeader.remove(),this.$sourcesHeader&&this.$sourcesHeader.remove(),this.$sidebarToggleBtn=null,this.$container.removeClass("sidebar-hidden")},updateHeading:function(){this.$sourcesHeading&&this.$sourcesHeading.text(this.getSourceName())},buildSidebarToggleView:function(){var t=this;this.$sourcesHeader=$('').addClass("sidebar-header").prependTo(this.$sourcesContainer),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sourcesHeader),this.$sourcesHeading=$(' ').text(this.getSourceName()),this.$sourceSettingsHeader=$('').addClass("main-header").append(this.$sourcesHeading).prependTo(this.$sourceSettingsContainer),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$sourceSettingsHeader),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar(),t.$sidebarToggleBtn.trigger("focus")}))},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$container.removeClass("sidebar-hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar(),Garnish.focusIsInside(t.$sidebar)&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$container.addClass("sidebar-hidden"),this.$sidebarToggleBtn&&this.$sidebarToggleBtn.attr("aria-expanded","false"),Garnish.uiLayerManager.currentLayer.$container.hasClass("cs-sidebar")&&Garnish.uiLayerManager.removeLayer()},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},addSource:function(t,e){var i,s=$(' ').appendTo(this.$sourcesContainer),n=$(' ').attr({tabindex:"0",role:"button"}).appendTo(s),a=$(' ').appendTo(s);return $(' ')).appendTo(s),"heading"===t.type?(s.addClass("heading"),a.attr("name","sourceOrder[][heading]"),(i=new Craft.CustomizeSourcesModal.Heading(this,s,n,a,t,e)).updateItemLabel(t.heading)):(a.attr("name","sourceOrder[][key]").val(t.key),(i="native"===t.type?new Craft.CustomizeSourcesModal.Source(this,s,n,a,t,e):new Craft.CustomizeSourcesModal.CustomSource(this,s,n,a,t,e)).updateItemLabel(t.label),t.key===this.elementIndex.rootSourceKey&&i.select()),this.sourceSort.addItems(s),i},save:function(t){var e=this;t&&t.preventDefault(),this.$saveBtn.hasClass("disabled")||this.$saveBtn.hasClass("loading")||(this.$saveBtn.addClass("loading"),Craft.sendActionRequest("POST","element-index-settings/save-customize-sources-modal-settings",{data:this.$container.serialize()+"&elementType=".concat(this.elementIndex.elementType)}).then((function(t){var i=t.data,s=null;e.selectedSource&&e.selectedSource.sourceData.key&&!i.disabledSourceKeys.includes(e.selectedSource.sourceData.key)?s=e.selectedSource.sourceData.key:e.elementIndex.sourceKey||(s=e.elementIndex.$visibleSources.first().data("key")),s&&e.elementIndex.selectSourceByKey(s),window.location.reload()})).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})).finally((function(){e.$saveBtn.removeClass("loading")})))},appendIndexSourceItem:function(t,e){if(e){var i=t.hasClass("heading");if(e.hasClass("heading")&&!i)t.appendTo(e.children("ul"));else{if(i){var s=e.parentsUntil(this.$elementIndexSourcesContainer,"li").last();s.length&&(e=s)}t.insertAfter(e)}}else t.prependTo(this.$elementIndexSourcesContainer)},destroy:function(){for(var t=0;t ").appendTo(this.modal.$sourceSettingsContainer),this.createSettings(this.$settingsContainer)),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:function(){},getIndexSourceItem:function(){},deselect:function(){this.$item.removeClass("sel"),this.$itemLabel.attr({"aria-current":"false"}),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(t){t?this.$itemLabel.text(t):this.$itemLabel.html(" ")},destroy:function(){this.modal.sourceSort.removeItems(this.$item),this.modal.sources.splice($.inArray(this,this.modal.sources),1),this.isSelected()&&(this.deselect(),this.modal.sources.length&&this.modal.sources[0].select(),Garnish.setFocusWithin(this.modal.$sourceSettingsContainer)),this.$item.data("source",null),this.$item.remove(),this.$settingsContainer&&this.$settingsContainer.remove(),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({$sortAttributeSelect:null,$sortDirectionPicker:null,$sortDirectionInput:null,sortDirectionListbox:null,isNative:function(){return!0},createSettings:function(t){Craft.ui.createLightswitchField({label:Craft.t("app","Enabled"),name:"sources[".concat(this.sourceData.key,"][enabled]"),on:!this.sourceData.disabled}).appendTo(t),this.createSortField(t),this.createTableAttributesField(t)},createSortField:function(t){var e=this,i=$(''),s=Craft.ui.createSelect({name:"sources[".concat(this.sourceData.key,"][defaultSort][0]"),options:this.sourceData.sortOptions.map((function(t){return{label:Craft.escapeHtml(t.label),value:t.attr}})),value:this.sourceData.defaultSort[0]}).addClass("fullwidth").appendTo($("").appendTo(i));this.$sortAttributeSelect=s.children("select").attr("aria-label",Craft.t("app","Sort attribute")),this.$sortDirectionPicker=$("",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(i),this.$sortDirectionInput=$("",{type:"hidden",name:"sources[".concat(this.sourceData.key,"][defaultSort][1]")}).appendTo(i),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(t){e.$sortDirectionInput.val(t.data("dir"))}}),this.$sortAttributeSelect.on("change",(function(){e.handleSortAttributeChange()})),this.handleSortAttributeChange(!0),Craft.ui.createField(i,{label:Craft.t("app","Default Sort"),fieldset:!0}).appendTo(t).addClass("sort-field")},handleSortAttributeChange:function(t){var e=this.$sortAttributeSelect.val();if("structure"===e)this.sortDirectionListbox.select(0),this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled");else{this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled");var i=t?this.sourceData.defaultSort[1]:this.sourceData.sortOptions.find((function(t){return t.attr===e})).defaultDir;this.sortDirectionListbox.select("asc"===i?0:1)}},createTableAttributesField:function(t){var i=this.availableTableAttributes();if(this.sourceData.tableAttributes.length||i.length){var s=$(""),n=[];$('')).appendTo(s);for(var a=0;a').append('').append(Craft.ui.createCheckbox({label:Craft.escapeHtml(e),name:"sources[".concat(this.sourceData.key,"][tableAttributes][]"),value:t,checked:i}))},getIndexSourceItem:function(){var t=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(t)return t.closest("li")}}),Craft.CustomizeSourcesModal.CustomSource=Craft.CustomizeSourcesModal.Source.extend({$labelInput:null,createSettings:function(t){var e=this,i=Craft.ui.createTextField({label:Craft.t("app","Label"),name:"sources[".concat(this.sourceData.key,"][label]"),value:this.sourceData.label}).appendTo(t);this.$labelInput=i.find(".text");var s="condition".concat(Math.floor(1e6*Math.random())),n=function(t){return t.replace(/__ID__/g,s).replace(/__SOURCE_KEY__(?=-)/g,Craft.formatInputId(e.sourceData.key)).replace(/__SOURCE_KEY__/g,e.sourceData.key)},a=this.sourceData.conditionBuilderHtml||n(this.modal.conditionBuilderHtml),r=this.sourceData.conditionBuilderJs||n(this.modal.conditionBuilderJs);Craft.ui.createField($("").append(a),{id:"criteria",label:Craft.t("app","{type} Criteria",{type:this.modal.elementTypeName})}).appendTo(t),Craft.appendBodyHtml(r),this.createSortField(t),this.createTableAttributesField(t),Craft.sites.length>1&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","Sites"),instructions:Craft.t("app","Choose which sites this source should be visible for."),name:"sources[".concat(this.sourceData.key,"][sites]"),options:Craft.sites.map((function(t){return{label:t.name,value:t.uid}})),values:this.sourceData.sites||"*",showAllOption:!0}).appendTo(t),this.modal.userGroups.length&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","User Groups"),instructions:Craft.t("app","Choose which user groups should have access to this source."),name:"sources[".concat(this.sourceData.key,"][userGroups]"),options:this.modal.userGroups,values:this.sourceData.userGroups||"*",showAllOption:!0}).appendTo(t),t.append(" "),this.$deleteBtn=$('').attr({role:"button",tabindex:"0"}).text(Craft.t("app","Delete custom source")).appendTo(t),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy")},availableTableAttributes:function(){var e=this.base();return this.isNew&&e.push.apply(e,t(this.modal.customFieldAttributes)),e},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},getIndexSourceItem:function(){var t,e=this.base();if(e?t=e.find(".label"):(t=$("",{class:"label"}),e=$("").append($("",{"data-key":this.sourceData.key}).append(t))),this.$labelInput){var i=this.$labelInput.val().trim();""===i&&(i=Craft.t("app","(blank)")),t.text(i)}return e}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelInput:null,$deleteBtn:null,isHeading:function(){return!0},createSettings:function(t){var e=Craft.ui.createTextField({label:Craft.t("app","Heading"),instructions:Craft.t("app","This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading||""}).appendTo(t);this.$labelInput=e.find(".text"),t.append(" "),this.$deleteBtn=$('').text(Craft.t("app","Delete heading")).attr({role:"button",tabindex:"0"}).appendTo(t),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy")},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},updateItemLabel:function(t){this.$itemLabel.html((t?Craft.escapeHtml(t):"".concat(Craft.t("app","(blank)"),""))+" "),this.$itemInput.val(t)},getIndexSourceItem:function(){var t=(this.$labelInput?this.$labelInput.val():null)||this.sourceData.heading||"";return $('').append($("").text(t)).append("")}})},1519:function(){Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(t,e){this.$table=$(t);var i=this.$table.children("tbody").children(":not(.filler)");(e=$.extend({},Craft.DataTableSorter.defaults,e)).container=this.$table.children("tbody"),e.helper=this.getHelper.bind(this),e.caboose=" ",e.axis=Garnish.Y_AXIS,e.magnetStrength=4,e.helperLagBase=1.5,this.base(i,e)},getHelper:function(t){var e=$('').appendTo(Garnish.$bod),i=$("").appendTo(e),s=$("").appendTo(i);t.appendTo(s),i.width(this.$table.width()),i.prop("className",this.$table.prop("className"));for(var n=this.$table.find("tr:first").children(),a=t.children(),r=0;r'+Craft.getCsrfInput()+''+(Array.isArray(this.userId)?"":'')+(e.redirect?'':"")+"").appendTo(Garnish.$bod),a=$('").appendTo(n),r=$('').appendTo(a),o=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(r);if(e.contentSummary.length)for(var l=0;l",{text:e.contentSummary[l]}));else a.find("ul").remove();if(this.$deleteActionRadios=a.find("input[type=radio]"),this.$deleteSubmitBtn=Craft.ui.createSubmitButton({class:"disabled",label:this._submitBtnLabel(!1),spinner:!0}).appendTo(r),Array.isArray(this.userId)){s=["and"];for(var h=0;hthis.biggestId&&(this.biggestId=l)}if(this.isVisible()?this.initialize():window.setTimeout(this.initializeIfVisible.bind(this),500),this.settings.minRows&&this.rowCount0},initialize:function(){var t=this;if(this.initialized)return!1;this.initialized=!0,this.removeListener(Garnish.$win,"resize");var e=this.$table.parent(".input");if(e.length&&this.$table.width()>e.width()&&e.css("overflow-x","auto"),this.$addRowBtn=this.$table.next(".add"),this.updateAddRowButton(),this.addListener(this.$addRowBtn,"activate","addRow"),this.settings.lazyInitRows)this.addListener(this.$tbody,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(e){var i=$(e.target),s=i.closest("tr");if(s.length&&!s.data("editable-table-row")){var n=i.hasClass("editable-table-preview")?i.next():null;t.createRowObj(s),setTimeout((function(){n&&!n.is(":focus")&&n.trigger("focus")}),100)}}));else for(var i=this.$tbody.children(),s=0;s tbody > tr"),e=0;ethis.settings.minRows},deleteRow:function(t){this.canDeleteRow()?(this.sorter.removeItems(t.$tr),t.$tr.remove(),this.rowCount--,this.updateAllRows(),this.updateAddRowButton(),0===this.rowCount?(this.$table.addClass("hidden"),this.$addRowBtn.trigger("focus")):this.$tbody.find(":focusable").last().trigger("focus"),this.settings.onDeleteRow(t.$tr),t.destroy()):this.updateStatusMessage()},canAddRow:function(){return!!this.settings.allowAdd&&(!this.settings.maxRows||this.rowCount",{"data-id":e});for(var l in i)if(i.hasOwnProperty(l)){var h,d=i[l],c=void 0!==n[l]?n[l]:"";if("heading"===d.type)h=$(" | ",{scope:"row",class:d.class,html:c});else{var u=s+"["+e+"]["+l+"]";switch(h=$(" | ",{class:"".concat(d.class," ").concat(d.type,"-cell"),width:d.width}),Craft.inArray(d.type,Craft.EditableTable.textualColTypes)&&h.addClass("textual"),d.code&&h.addClass("code"),d.type){case"checkbox":$('').append(Craft.ui.createCheckbox({name:u,value:d.value||"1",checked:!!c})).appendTo(h);break;case"color":Craft.ui.createColorInput({name:u,value:"object"!==t(c)?c:null,small:!0}).appendTo(h);break;case"date":Craft.ui.createDateInput({name:u,value:c}).appendTo(h);break;case"lightswitch":Craft.ui.createLightswitch({name:u,value:d.value||"1",on:!!c,small:!0}).appendTo(h);break;case"select":Craft.ui.createSelect({name:u,options:d.options,value:c||function(){for(var t in d.options)if(d.options.hasOwnProperty(t)&&d.options[t].default)return void 0!==d.options[t].value?d.options[t].value:t;return null}(),class:"small"}).appendTo(h);break;case"time":Craft.ui.createTimeInput({name:u,value:c}).appendTo(h);break;case"email":case"url":Craft.ui.createTextInput({name:u,value:"object"!==t(c)?c:null,type:d.type,placeholder:d.placeholder||null}).appendTo(h);break;default:$("",{name:u,rows:d.rows||1,val:"object"!==t(c)?c:null,placeholder:d.placeholder}).appendTo(h)}}h.appendTo(o)}return a&&$(" | ",{class:"thin action"}).append($("",{class:"move icon",title:Craft.t("app","Reorder"),role:"button",type:"button"})).appendTo(o),r&&$(" | ",{class:"thin action"}).append($("",{class:"delete icon",title:Craft.t("app","Delete"),type:"button"})).appendTo(o),o}}),Craft.EditableTable.Row=Garnish.Base.extend({table:null,id:null,niceTexts:null,$tr:null,$tds:null,tds:null,$textareas:null,$deleteBtn:null,init:function(t,e){this.table=t,this.$tr=$(e),this.$tds=this.$tr.children(),this.tds=[],this.id=this.$tr.attr("data-id"),this.$tr.data("editable-table-row",this);var i=parseInt(this.id.substring(this.table.settings.rowIdPrefix.length));i>this.table.biggestId&&(this.table.biggestId=i),this.$textareas=$(),this.niceTexts=[];var s,n,a,r,o={},l=0;for(s in this.table.columns)if(this.table.columns.hasOwnProperty(s)){if(n=this.table.columns[s],a=this.tds[s]=this.$tds[l],Craft.inArray(n.type,Craft.EditableTable.textualColTypes)){$(".editable-table-preview",a).remove();var h=$("textarea",a);this.$textareas=this.$textareas.add(h),this.addListener(h,"focus","onTextareaFocus"),this.addListener(h,"mousedown","ignoreNextTextareaFocus"),this.niceTexts.push(new Garnish.NiceText(h,{onHeightChange:this.onTextareaHeightChange.bind(this)})),this.addListener(h,"keypress",{tdIndex:l,type:n.type},"handleKeypress"),this.addListener(h,"input",{type:n.type},"validateValue"),h.trigger("input"),"multiline"!==n.type&&this.addListener(h,"paste",{tdIndex:l,type:n.type},"handlePaste"),o[s]=h}else"checkbox"===n.type&&(r=$('input[type="checkbox"]',a),n.radioMode&&(void 0===this.table.radioCheckboxes[s]&&(this.table.radioCheckboxes[s]=[]),this.table.radioCheckboxes[s].push(r[0]),this.addListener(r,"change",{colId:s},"onRadioCheckboxChange")),n.toggle&&this.addListener(r,"change",{colId:s},(function(t){this.applyToggleCheckbox(t.data.colId)})));$(a).hasClass("disabled")||this.addListener(a,"click",{td:a},(function(t){t.target===t.data.td&&$(t.data.td).find("textarea,input,select,.lightswitch").focus()})),l++}for(s in this.onTextareaHeightChange(),this.table.columns)this.table.columns.hasOwnProperty(s)&&"checkbox"===(n=this.table.columns[s]).type&&n.toggle&&this.applyToggleCheckbox(s);for(s in this.table.columns)this.table.columns.hasOwnProperty(s)&&(!(n=this.table.columns[s]).autopopulate||void 0===o[n.autopopulate]||o[s].val()||o[n.autopopulate].val()||new Craft.HandleGenerator(o[s],o[n.autopopulate],{allowNonAlphaStart:!0}));var d=this.$tr.children().last().find(".delete");this.addListener(d,"click","deleteRow");var c=this.$tr.find("input,textarea,select,.lightswitch");this.addListener(c,"focus",(function(t){$(t.currentTarget).closest("td:not(.disabled)").addClass("focus")})),this.addListener(c,"blur",(function(t){$(t.currentTarget).closest("td").removeClass("focus")}))},onTextareaFocus:function(t){this.onTextareaHeightChange();var e=$(t.currentTarget);e.data("ignoreNextFocus")?e.data("ignoreNextFocus",!1):window.setTimeout((function(){Craft.selectFullValue(e)}),0)},onRadioCheckboxChange:function(t){if(t.currentTarget.checked)for(var e=0;et&&(t=this.niceTexts[e].height);this.$textareas.css("min-height",t);var i=this.$textareas.filter(":visible").first().parent().height();i>t&&this.$textareas.css("min-height",i)},deleteRow:function(){this.table.deleteRow(this)}},{numericKeyCodes:[9,8,37,38,39,40,45,91,46,190,48,49,50,51,52,53,54,55,56,57]})},8468:function(){Craft.ElementActionTrigger=Garnish.Base.extend({maxLevels:null,newChildUrl:null,$trigger:null,$selectedItems:null,triggerEnabled:!0,init:function(t){$.isPlainObject(t)||(t={}),void 0!==t.batch&&(t.bulk=t.batch,delete t.batch),Object.defineProperty(t,"batch",{get:function(){return this.bulk},set:function(t){this.bulk=t}}),this.setSettings(t,Craft.ElementActionTrigger.defaults),this.$trigger=$("#"+t.type.replace(/[\[\]\\]+/g,"-")+"-actiontrigger"),this.settings.activate&&(this.$trigger.data("custom-handler",!0),"FORM"===this.$trigger.prop("nodeName")?this.addListener(this.$trigger,"submit","handleTriggerActivation"):this.addListener(this.$trigger,"activate","handleTriggerActivation")),this.updateTrigger(),Craft.elementIndex.on("selectionChange",this.updateTrigger.bind(this))},updateTrigger:function(){0!==Craft.elementIndex.getSelectedElements().length&&(this.validateSelection()?this.enableTrigger():this.disableTrigger())},validateSelection:function(){return this.$selectedItems=Craft.elementIndex.getSelectedElements(),!(!this.settings.bulk&&this.$selectedItems.length>1)&&(!this.settings.requireId||!this.$selectedItems.is('[data-id=""]'))&&("function"!=typeof this.settings.validateSelection||this.settings.validateSelection(this.$selectedItems))},enableTrigger:function(){this.triggerEnabled||(this.$trigger.removeClass("disabled").removeAttr("aria-disabled"),this.triggerEnabled=!0)},disableTrigger:function(){this.triggerEnabled&&(this.$trigger.addClass("disabled").attr("aria-disabled","true"),this.triggerEnabled=!1)},handleTriggerActivation:function(){this.triggerEnabled&&this.settings.activate(this.$selectedItems)}},{defaults:{type:null,bulk:!0,requireId:!0,validateSelection:null,activate:null}})},5049:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=a(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var s=0,n=function(){};return{s:n,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function i(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function s(){"use strict";s=function(){return e};var e={},i=Object.prototype,n=i.hasOwnProperty,a=Object.defineProperty||function(t,e,i){t[e]=i.value},r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",l=r.asyncIterator||"@@asyncIterator",h=r.toStringTag||"@@toStringTag";function d(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(t){d=function(t,e,i){return t[e]=i}}function c(t,e,i,s){var n=e&&e.prototype instanceof f?e:f,r=Object.create(n.prototype),o=new x(s||[]);return a(r,"_invoke",{value:w(t,i,o)}),r}function u(t,e,i){try{return{type:"normal",arg:t.call(e,i)}}catch(t){return{type:"throw",arg:t}}}e.wrap=c;var p={};function f(){}function g(){}function m(){}var v={};d(v,o,(function(){return this}));var b=Object.getPrototypeOf,$=b&&b(b(P([])));$&&$!==i&&n.call($,o)&&(v=$);var C=m.prototype=f.prototype=Object.create(v);function _(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function y(e,i){function s(a,r,o,l){var h=u(e[a],e,r);if("throw"!==h.type){var d=h.arg,c=d.value;return c&&"object"==t(c)&&n.call(c,"__await")?i.resolve(c.__await).then((function(t){s("next",t,o,l)}),(function(t){s("throw",t,o,l)})):i.resolve(c).then((function(t){d.value=t,o(d)}),(function(t){return s("throw",t,o,l)}))}l(h.arg)}var r;a(this,"_invoke",{value:function(t,e){function n(){return new i((function(i,n){s(t,e,i,n)}))}return r=r?r.then(n,n):n()}})}function w(t,e,i){var s="suspendedStart";return function(n,a){if("executing"===s)throw new Error("Generator is already running");if("completed"===s){if("throw"===n)throw a;return{value:void 0,done:!0}}for(i.method=n,i.arg=a;;){var r=i.delegate;if(r){var o=S(r,i);if(o){if(o===p)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if("suspendedStart"===s)throw s="completed",i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);s="executing";var l=u(t,e,i);if("normal"===l.type){if(s=i.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(s="completed",i.method="throw",i.arg=l.arg)}}}function S(t,e){var i=t.iterator[e.method];if(void 0===i){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method))return p;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var s=u(i,t.iterator,e.arg);if("throw"===s.type)return e.method="throw",e.arg=s.arg,e.delegate=null,p;var n=s.arg;return n?n.done?(e[t.resultName]=n.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):n:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function P(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,s=function e(){for(;++i=0;--s){var a=this.tryEntries[s],r=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var o=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(o&&l){if(this.prev=0;--i){var s=this.tryEntries[i];if(s.tryLoc<=this.prev&&n.call(s,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),T(i),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var s=i.completion;if("throw"===s.type){var n=s.arg;T(i)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:P(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=void 0),p}},e}function n(t,e,i,s,n,a,r){try{var o=t[a](r),l=o.value}catch(t){return void i(t)}o.done?e(l):Promise.resolve(l).then(s,n)}function a(t,e){if(t){if("string"==typeof t)return r(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{class:"revision-spinner spinner hidden",title:Craft.t("app","Saving")}).appendTo(r),this.$statusIcon=$("",{class:"revision-status ".concat(this.isFullPage?"invisible":"hidden")}).appendTo(r),this.$statusMessage=$("",{class:"revision-status-message visually-hidden","aria-live":"polite"}).appendTo(r),this.$expandSiteStatusesBtn=$(".expand-status-btn"),this.settings.canEditMultipleSites&&this.addListener(this.$expandSiteStatusesBtn,"click","expandSiteStatuses"),this.settings.previewTargets.length&&this.isFullPage){this.settings.enablePreview&&this.addListener(this.$previewBtn,"click","openPreview");var o=this.$container.find(".preview-btn-container");if(1===this.settings.previewTargets.length){var l=(s=this.settings.previewTargets,n=1,function(t){if(Array.isArray(t))return t}(s)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(s,n)||a(s,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];this.createPreviewLink(l).addClass("view-btn btn").attr("aria-label",Craft.t("app","View")).appendTo(o)}else this.createShareMenu(o)}this.settings.revisionId||(this.isFullPage&&Craft.edition===Craft.Pro&&(this.$activityContainer=this.$container.find(".activity-container"),this._checkActivity()),this.$container.data("serializer",(function(){return i.serializeForm(!0)})),this.$container.data("initialSerializedValue",this.serializeForm(!0)),Garnish.requestAnimationFrame((function(){i.$container.data("initialSerializedValue",i.serializeForm(!0))})),this.isFullPage&&this.addListener(this.$container,"submit","handleSubmit"),this.settings.isProvisionalDraft?this.initForProvisionalDraft():this.settings.draftId&&!this.settings.isUnpublishedDraft?this.initForDraft():this.settings.canSaveCanonical||this.addListener(this.$container,"submit.saveShortcut",(function(t){t.saveShortcut&&(t.preventDefault(),i.createDraft(),i.removeListener(i.$container,"submit.saveShortcut"))})),this.listenForChanges(),this.addListener(this.$statusIcon,"click",(function(){i.showStatusHud(i.$statusIcon)})),this.handleDismissibleTips(),this.isFullPage&&Craft.messageReceiver&&Craft.broadcaster.addEventListener("message",(function(t){if("saveDraft"===t.data.event&&t.data.canonicalId===i.settings.canonicalId&&(t.data.draftId===i.settings.draftId||t.data.isProvisionalDraft&&!i.settings.draftId)||"saveElement"===t.data.event&&t.data.id===i.settings.canonicalId&&!i.settings.draftId)Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload();else if("deleteDraft"===t.data.event&&t.data.canonicalId===i.settings.canonicalId&&t.data.draftId===i.settings.draftId){var e=new URL(window.location.href);e.searchParams.delete("draftId"),e.href!==document.location.href?window.location.href=e:(Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload())}})),this.activityTooltips={},this.isFullPage&&Craft.ui.setFocusOnErrorSummary(this.$container))},_createQueue:function(){var t=this,e=new Craft.Queue;return e.on("beforeRun",(function(){t.showSpinner()})),e.on("afterRun",(function(){t.hideSpinner()})),e},get namespace(){return this.isFullPage?null:this.slideout.namespace},namespaceInputName:function(t){return Craft.namespaceInputName(t,this.namespace)},namespaceId:function(t){return Craft.namespaceId(t,this.namespace)},get listeningForChanges(){return!!this.formObserver},get pauseLevel(){var t,e;return null!==(t=null===(e=this.formObserver)||void 0===e?void 0:e._pauseLevel)&&void 0!==t?t:0},listenForChanges:function(){var t=this;this.formObserver||(this.formObserver=new Craft.FormObserver(this.$container,(function(){t.checkForm()})))},stopListeningForChanges:function(){if(this.formObserver)return this.formObserver.destroy(),void(this.formObserver=null)},pause:function(){var t;null===(t=this.formObserver)||void 0===t||t.pause()},resume:function(){var t;null===(t=this.formObserver)||void 0===t||t.resume()},initForProvisionalDraft:function(){var t=this,e=this.$container.find(".discard-changes-btn");if(!e.length){var i,s,n;this.isFullPage?(i=$("#content").height(),s=Garnish.$win.scrollTop(),n=Craft.cp.$noticeContainer):n=this.$container.find(".so-notice");var a=$("",{class:"draft-notice"}).append($("",{class:"draft-icon","aria-hidden":"true","data-icon":"edit"})).append($("",{text:Craft.t("app","Showing your unsaved changes.")})).appendTo(n);if(e=$("",{type:"button",class:"discard-changes-btn btn",text:Craft.t("app","Discard")}).appendTo(a),this.isFullPage){var r=$("#content").height()-i;if(Garnish.$win.scrollTop(s+r),Garnish.$win.scrollTop()===s){Craft.cp.$contentContainer.css("pointer-events","none"),$("#content-header").css("min-height","auto");var o=n.height();n.css({height:o-r,overflow:"hidden"}).velocity({height:o},"fast",(function(){$("#content-header").css("min-height",""),n.css({height:"",overflow:""}),setTimeout((function(){Craft.cp.$contentContainer.css("pointer-events","")}),300)}))}}}this.addListener(e,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(t){t.stopPropagation()})),this.addListener(e,"click",(function(){confirm(Craft.t("app","Are you sure you want to discard your changes?"))&&t.queue.unshift((function(){return new Promise((function(e,i){t.isFullPage?Craft.submitForm(t.$container,{action:"elements/delete-draft",redirect:t.settings.hashedCpEditUrl,params:{draftId:t.settings.draftId,provisional:1}}):Craft.sendActionRequest("POST","elements/delete-draft",{data:{elementId:t.settings.canonicalId,draftId:t.settings.draftId,provisional:1}}).then((function(e){Craft.cp.displaySuccess(e.data.message),t.slideout.close()})).catch(i)}))}))}))},initForDraft:function(){var t=this;this.createEditMetaBtn(),this.settings.canSaveCanonical&&Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0,alt:!0},(function(){Craft.submitForm(t.$container,{action:"elements/apply-draft",redirect:t.settings.hashedCpEditUrl})}),0)},expandSiteStatuses:function(){var t=this;this.removeListener(this.$expandSiteStatusesBtn,"click"),this.$expandSiteStatusesBtn.velocity({opacity:0},"fast",(function(){t.$expandSiteStatusesBtn.remove()}));var e=this.$container.find(".enabled-for-site-".concat(this.settings.siteId,"-field"));if(this.$siteStatusPane=e.parent(),this.settings.revisionId)this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));else{e.addClass("nested");var i=Craft.ui.createLightswitchField({label:Craft.t("app","Enabled for all sites"),name:this.namespaceInputName("enabled")}).insertBefore(e);i.find("label").css("font-weight","bold"),this.$globalLightswitch=i.find(".lightswitch"),this.settings.revisionId||this._showField(i);var s=Object.values(this.settings.siteStatuses),n=s.includes(!0),a=s.includes(!1),r=n&&a?"-":n?"1":"",o=encodeURIComponent(this.namespaceInputName("enabledForSite[".concat(this.settings.siteId,"]")))+"="+(this.settings.enabledForSite?"1":"");this.$siteLightswitches=e.find(".lightswitch").on("change",this._updateGlobalStatus.bind(this)),this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));for(var l=encodeURIComponent(this.namespaceInputName("enabled"))+"=".concat(r),h=0;h",{text:Craft.t("app","Add a site..."),class:"visually-hidden",id:s}),o=Craft.ui.createSelect({options:[{label:Craft.t("app","Add a site…")}].concat((t=i.map((function(t){return{label:t.name,value:t.id}})),function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||a(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())),labelledBy:s}).addClass("fullwidth");this.$additionalSiteField=Craft.ui.createField(o,{}).addClass("nested add").appendTo(this.$siteStatusPane),n.prependTo(this.$additionalSiteField);var l=o.find("select");l.on("change",(function(){var t=parseInt(l.val()),i=Craft.sites.find((function(e){return e.id===t}));if(i){var s=e.settings.additionalSites.find((function(t){return t.siteId==i.id}));e._createSiteStatusField(i,s.enabledByDefault),e._updateGlobalStatus(),l.val("").find('option[value="'.concat(t,'"]')).remove(),null===e.newSiteIds&&(e.newSiteIds=[]),e.siteIds.push(t),e.newSiteIds.push(t),1===l.find("option").length&&e._removeField(e.$additionalSiteField)}})),this._showField(this.$additionalSiteField)}},showStatusHud:function(t){var e;this.failed?(e=''.concat(this._saveFailMessage()," "),this.httpError&&(e+=''.concat(Craft.escapeHtml(this.httpError)," ")),400===this.httpStatus&&(e+=''.concat(Craft.t("app","Refresh"),""))):e="".concat(this._saveSuccessMessage()," ");var i=new Garnish.HUD(t,e,{hudClass:"hud revision-status-hud",onHide:function(){i.destroy()}});i.$mainContainer.find(".refresh-btn").on("click",(function(){window.location.reload()}))},_saveSuccessMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes have been stored."):Craft.t("app","The draft has been saved.")},_saveFailMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes could not be stored."):Craft.t("app","The draft could not be saved.")},spinners:function(){return this.preview?this.$spinner.add(this.preview.$spinner):this.$spinner},showSpinner:function(){this.spinners().removeClass("hidden")},hideSpinner:function(){this.spinners().addClass("hidden")},statusIcons:function(){return this.preview?this.$statusIcon.add(this.preview.$statusIcon):this.$statusIcon},statusMessage:function(){return this.preview?this.$statusMessage.add(this.preview.$statusMessage):this.$statusMessage},createEditMetaBtn:function(){var t=this.$container.find(".context-btngroup");this.$editMetaBtn=$("",{type:"button",class:"btn edit icon","aria-expanded":"false","aria-label":Craft.t("app","Edit draft settings"),title:Craft.t("app","Edit draft settings")}).appendTo(t),t.find(".btngroup-btn-last").removeClass("btngroup-btn-last"),this.addListener(this.$editMetaBtn,"click","showMetaHud")},createPreviewLink:function(t,e){var i=this,s=$("",{href:this.getTokenizedPreviewUrl(t.url,null,!1),text:e||Craft.t("app","View"),target:"_blank",data:{targetUrl:t.url,targetLabel:t.label}});return this.addListener(s,"click",(function(){setTimeout((function(){i.activatePreviewToken()}),1)})),this.previewLinks.push(s),s},updatePreviewLinks:function(){var t=this;this.previewLinks.forEach((function(e){t.updatePreviewLinkHref(e),t.activatedPreviewToken&&t.removeListener(e,"click")}))},updatePreviewLinkHref:function(t){t.attr("href",this.getTokenizedPreviewUrl(t.data("targetUrl"),null,!1))},activatePreviewToken:function(){this.settings.isLive||(this.activatedPreviewToken=!0,this.updatePreviewLinks())},createShareMenu:function(t){var e=this,i=$("",{type:"button",class:"view-btn btn menubtn",text:Craft.t("app","View")}).appendTo(t),s=$("",{class:"menu"}).appendTo(t),n=$("").appendTo(s);this.settings.previewTargets.forEach((function(t){$("").append(e.createPreviewLink(t,t.label)).appendTo(n)})),new Garnish.MenuBtn(i)},getPreviewTokenParams:function(){var t={elementType:this.settings.elementType,canonicalId:this.settings.canonicalId,siteId:this.settings.siteId,revisionId:this.settings.revisionId,previewToken:this.settings.previewToken};return this.settings.draftId&&!this.settings.isProvisionalDraft&&(t.draftId=this.settings.draftId),t},getPreviewToken:function(){var t=this;return this.previewTokenQueue.push((function(){return new Promise((function(e,i){t.activatedPreviewToken?e(t.settings.previewToken):Craft.sendActionRequest("POST","preview/create-token",{data:t.getPreviewTokenParams()}).then((function(){t.activatePreviewToken(),e(t.settings.previewToken)})).catch(i)}))}))},getTokenizedPreviewUrl:function(t,e,i){var s=this;void 0===i&&(i=!0);var n={};if(!e&&this.settings.isLive||(n[e||"x-craft-preview"]=Craft.randomString(10)),this.settings.siteToken&&(n[Craft.siteToken]=this.settings.siteToken),this.settings.isLive){var a=Craft.getUrl(t,n);return i?new Promise((function(t){t(a)})):a}if(!this.settings.previewToken)throw"Missing preview token";n[Craft.tokenParam]=this.settings.previewToken;var r=Craft.getUrl(t,n);if(this.activatedPreviewToken)return i?new Promise((function(t){t(r)})):r;if(i)return new Promise((function(t,e){s.getPreviewToken().then((function(){t(r)})).catch(e)}));var o=this.getPreviewTokenParams();return o.redirect=r,Craft.getActionUrl("preview/create-token",o)},getPreview:function(){var t=this;return this.preview||(this.preview=new Craft.Preview(this),this.enableAutosave||(this.preview.on("open",(function(){t.enableAutosave=!0,t.checkForm()})),this.preview.on("close",(function(){t.enableAutosave=!1;var e=t.statusIcons();e.hasClass("checkmark-icon")&&e.addClass("hidden")}))),this.preview.on("beforeOpen",(function(){var e;null===(e=t.formObserver)||void 0===e||e.pause()})),this.preview.on("close",(function(){var e;null===(e=t.formObserver)||void 0===e||e.resume(),t.scrollY&&(window.scrollTo(0,t.scrollY),t.scrollY=null)}))),this.preview},openPreview:(o=s().mark((function t(){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Garnish.hasAttr(this.$previewBtn,"aria-disabled")){t.next=2;break}return t.abrupt("return");case 2:return this.$previewBtn.attr("aria-disabled",!0),this.$previewBtn.addClass("loading"),t.prev=4,t.next=7,this.checkForm();case 7:return this.openingPreview=!0,t.next=10,this.ensureIsDraftOrRevision(!0);case 10:this.scrollY=window.scrollY,this.getPreview().open();case 12:return t.prev=12,this.$previewBtn.removeAttr("aria-disabled"),this.$previewBtn.removeClass("loading"),this.openingPreview=!1,t.finish(12);case 17:case"end":return t.stop()}}),t,this,[[4,,12,17]])})),l=function(){var t=this,e=arguments;return new Promise((function(i,s){var a=o.apply(t,e);function r(t){n(a,i,s,r,l,"next",t)}function l(t){n(a,i,s,r,l,"throw",t)}r(void 0)}))},function(){return l.apply(this,arguments)}),ensureIsDraftOrRevision:function(t){var e=this;return new Promise((function(i,s){if(e.settings.draftId||e.settings.revisionId)i();else{if(t&&e.serializeForm(!0)===e.$container.data("initialSerializedValue"))return void i();e.createDraft().then(i).catch(s)}}))},serializeForm:function(t){var e=this.$container.serialize();if(this.isPreviewActive()&&(e=e.replace("__PREVIEW_FIELDS__=1",this.preview.$editor.serialize())),t&&!this.settings.isUnpublishedDraft){var i=encodeURIComponent(this.namespaceInputName("action")),s=encodeURIComponent(this.namespaceInputName("redirect"));e=(e=e.replace(new RegExp("&".concat(Craft.escapeRegex(i),"=[^&]*")),"")).replace(new RegExp("&".concat(Craft.escapeRegex(s),"=[^&]*")),"")}return e},checkForm:function(t){var e=this;return this.queue.push((function(){return new Promise((function(i,s){if(e.settings.revisionId)i();else if(void 0!==e.$container.data("initialSerializedValue")){var n=e.serializeForm(!0);t||n!==(e.lastSerializedValue||e.$container.data("initialSerializedValue"))?e.enableAutosave&&e.settings.canCreateDrafts?e.saveDraft(n).then(i).catch((function(t){console.warn("Couldn’t save draft:",t),s(t)})):e.updateFieldLayout(n).then(i).catch((function(t){console.warn("Couldn’t update field layout:",t),s(t)})):i()}else setTimeout((function(){e.checkForm(t).then(i).catch(s)}),500)}))}))},isPreviewActive:function(){return this.preview&&this.preview.isActive},createDraft:function(){var t=this;return this.queue.push((function(){return new Promise((function(e,i){t.saveDraft(t.serializeForm(!0)).then(e).catch(i)}))}))},saveDraft:function(t){var e=this;return new Promise((function(s,n){if(e.submittingForm)n("Form already being submitted.");else{e.lastSerializedValue=t,e.failed=!1,e.httpStatus=null,e.httpError=null,e.cancelToken=axios.CancelToken.source(),e.statusIcons().velocity("stop").css("opacity","").removeClass("hidden invisible checkmark-icon alert-icon fade-out").addClass("hidden"),e.statusMessage().empty(),e.$saveMetaBtn&&e.$saveMetaBtn.addClass("active");var a=[],r=e.prepareData(t,e.settings.isUnpublishedDraft?null:function(t,e){e.length&&a.push(decodeURIComponent(e[0].split("=")[0]))}),o=i({},e.namespaceInputName("visibleLayoutElements"),e.settings.visibleLayoutElements);!e.settings.isProvisionalDraft&&e.settings.draftId||(o[e.namespaceInputName("provisional")]=1);var l=e.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");l&&(o[e.namespaceInputName("selectedTab")]=l),r+="&".concat($.param(o)),Craft.sendActionRequest("POST","elements/save-draft",{cancelToken:e.cancelToken.token,headers:e._saveHeaders,data:r}).then((function(i){e._afterSaveDraft(),e._afterUpdateFieldLayout(t,l,i);var n=!e.settings.draftId;n&&(e.settings.isProvisionalDraft=!0,e.$revisionLabel.append($("",{text:" — ".concat(Craft.t("app","Edited"))}))),e.isFullPage&&(i.data.title&&e.$container.find(".screen-title").text(i.data.title),i.data.docTitle&&(document.title=i.data.docTitle)),e.settings.isProvisionalDraft||(e.$revisionLabel.text(i.data.draftName),e.settings.draftName=i.data.draftName);var r=e.$revisionBtn.data("menubtn")?e.$revisionBtn.data("menubtn").menu:null;for(var o in e.newSiteIds&&(r||(e.$revisionBtn.removeClass("disabled").addClass("menubtn"),new Garnish.MenuBtn(e.$revisionBtn),(r=e.$revisionBtn.data("menubtn").menu).$container.removeClass("hidden")),e.newSiteIds.forEach((function(t){var i=r.$options.filter("[data-site-id=".concat(t,"]")),s=e.settings.additionalSites.find((function(e){return e.siteId==t}));s&&void 0!==s.enabledByDefault&&!s.enabledByDefault||i.find(".status").removeClass("disabled").addClass("enabled"),i.parent().removeClass("hidden").closest(".site-group").removeClass("hidden")})),r.$container.find(".revision-hr").removeClass("hidden"),e.newSiteIds=null),e.settings.isProvisionalDraft?n&&(e.$container.find("input.action-input").attr("value","elements/apply-draft"),e.settings.elementId=i.data.elementId,e.settings.draftId=i.data.draftId,e.settings.isLive=!1,e.previewToken=null,e.initForProvisionalDraft()):r&&(r.$options.filter(".sel").find(".draft-name").text(i.data.draftName),r.$options.filter(".sel").find(".draft-meta").text(i.data.creator?Craft.t("app","Saved {timestamp} by {creator}",{timestamp:i.data.timestamp,creator:i.data.creator}):Craft.t("app","Saved {timestamp}",{timestamp:i.data.timestamp}))),i.data.previewTargets&&JSON.stringify(i.data.previewTargets)!==JSON.stringify(e.settings.previewTargets)&&e.updatePreviewTargets(i.data.previewTargets),n&&(e.updatePreviewLinks(),e.trigger("createProvisionalDraft")),e.$nameTextInput&&e.checkMetaValues(),i.data.duplicatedElements)o!=e.settings.canonicalId&&i.data.duplicatedElements.hasOwnProperty(o)&&(e.duplicatedElements[o]=i.data.duplicatedElements[o]);for(var h=i.data.modifiedAttributes.map((function(t){return t=e.namespaceInputName(t),['[name="'.concat(t,'"]'),'[name^="'.concat(t,'["]')]})).flat().concat(a.map((function(t){return'[name="'.concat(t,'"]')}))).join(","),d=e.$contentContainer.find(h).parents().filter(".flex-fields > .field:not(:has(> .status-badge))").add(e.$sidebar.find(h).closest(".field:not(:has(> .status-badge))")),c=0;c",{class:"status-badge modified",title:Craft.t("app","This field has been modified.")}).append($("",{class:"visually-hidden",html:Craft.t("app","This field has been modified.")})));e.settings.updatedTimestamp=i.data.updatedTimestamp,e.settings.canonicalUpdatedTimestamp=i.data.canonicalUpdatedTimestamp,e.afterUpdate(t),Craft.broadcaster&&Craft.broadcaster.postMessage({pageId:Craft.pageId,event:"saveDraft",canonicalId:e.settings.canonicalId,draftId:e.settings.draftId,isProvisionalDraft:e.settings.isProvisionalDraft}),s()})).catch((function(t){e._afterSaveDraft(),e.ignoreFailedRequest||(e.failed=!0,t&&t.response&&(e.httpStatus=t.response.status,e.httpError=t.response.data?t.response.data.message:null),e._showFailStatus(),n(t)),e.ignoreFailedRequest=!1}))}}))},_afterSaveDraft:function(){this.$saveMetaBtn&&this.$saveMetaBtn.removeClass("active")},_showFailStatus:function(){this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden checkmark-icon").addClass("alert-icon"),this.setStatusMessage(this._saveFailMessage())},updateFieldLayout:function(t){var e=this;return new Promise((function(s,n){if(e.submittingForm)n("Form already being submitted.");else{e.lastSerializedValue=t,e.cancelToken=axios.CancelToken.source();var a=[],r=e.prepareData(t,e.settings.isUnpublishedDraft?null:function(t,e){e.length&&a.push(decodeURIComponent(e[0].split("=")[0]))}),o=i({},e.namespaceInputName("visibleLayoutElements"),e.settings.visibleLayoutElements);e.settings.isProvisionalDraft&&(o[e.namespaceInputName("provisional")]=1);var l=e.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");l&&(o[e.namespaceInputName("selectedTab")]=l),r+="&".concat($.param(o)),Craft.sendActionRequest("POST","elements/update-field-layout",{cancelToken:e.cancelToken.token,headers:e._saveHeaders,data:r}).then((function(i){e._afterUpdateFieldLayout(t,l,i),s()})).catch((function(t){e._afterSaveDraft(),e.ignoreFailedRequest||(e.failed=!0,t&&t.response&&(e.httpStatus=t.response.status,e.httpError=t.response.data?t.response.data.message:null),e._showFailStatus(),n(t)),e.ignoreFailedRequest=!1}))}}))},prepareData:function(t,e){t=Craft.findDeltaData(this.$container.data("initialSerializedValue"),t,this.$container.data("delta-names"),e,this.$container.data("initial-delta-values"),this.$container.data("modified-delta-names")),t=this.swapDuplicatedElementIds(t);var i={};return this.settings.draftId&&(i[this.namespaceInputName("draftId")]=this.settings.draftId,this.settings.isProvisionalDraft&&(i[this.namespaceInputName("provisional")]=1)),null!==this.settings.draftName&&(i[this.namespaceInputName("draftName")]=this.settings.draftName),$.isEmptyObject(i)||(t+="&".concat($.param(i))),t},get _saveHeaders(){var t={"content-type":"application/x-www-form-urlencoded"};return this.namespace&&(t["X-Craft-Namespace"]=this.namespace),t},swapDuplicatedElementIds:function(t){var e=this,i=Object.keys(this.duplicatedElements).join("|");if(""===i)return t;var s=encodeURIComponent("["),n=encodeURIComponent("]"),a=this.namespaceInputName("fields");for(a=this.isFullPage?Craft.escapeRegex(a):encodeURIComponent(a);t!==(t=t.replace(new RegExp("(&".concat(a).concat(s,"[^=]+").concat(n).concat(s,")(").concat(i,")(").concat(n,")"),"g"),(function(t,i,s,n){return e._filterFieldInputName(i)?i+e.duplicatedElements[s]+n:t})).replace(new RegExp("&(".concat(a).concat(s,"[^=]+)=(").concat(i,")\\b"),"g"),(function(t,i,a){return!e._filterFieldInputName(i)||i.match(new RegExp("".concat(s,"(enabled|sortOrder|type|typeId)").concat(n,"$")))?t:"&".concat(i,"=").concat(e.duplicatedElements[a])}))););return t},_filterFieldInputName:function(t){var e=encodeURIComponent("["),i=encodeURIComponent("]"),s=t.match(new RegExp("(\\bfields|".concat(e,"fields").concat(i,")").concat(e,".+?").concat(i),"g"));if(!s)throw"Unexpected input name: ".concat(t);var n=s[s.length-1].match(new RegExp("(?:\\bfields|".concat(e,"fields").concat(i,")").concat(e,"(.+?)").concat(i)))[1];return Craft.fieldsWithoutContent.includes(n)},updatePreviewTargets:function(t){var e=this;t.forEach((function(t){var i=e.settings.previewTargets.find((function(e){return e.label===t.label}));i&&(i.url=t.url);var s=e.previewLinks.find((function(e){return e.data("targetLabel")===t.label}));s&&(s.data("targetUrl",t.url),e.updatePreviewLinkHref(s))}))},_afterUpdateFieldLayout:function(t,i,s){var n,a=this.serializeForm(!0)===t,r=this.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id"),o=$(),l={},h=!1,d=e(s.data.missingElements);try{for(d.s();!(n=d.n()).done;){var c=n.value,u=this.$contentContainer.children('[data-layout-tab="'.concat(c.uid,'"]'));u.length||(u=$("",{id:this.namespaceId(c.id),class:"flex-fields","data-id":c.id,"data-layout-tab":c.uid}),c.id!==i&&u.addClass("hidden"),u.appendTo(this.$contentContainer)),o=o.add(u);var p,f=e(c.elements);try{for(f.s();!(p=f.n()).done;){var g=p.value;if(!1!==g.html){if(l[c.uid]||(l[c.uid]=[]),l[c.uid].push(g.uid),"string"==typeof g.html){var m=u.children('[data-layout-element="'.concat(g.uid,'"]')),v=$(g.html);m.length?m.replaceWith(v):v.appendTo(u),Craft.initUiElements(v),h=!0}}else{var b=u.children('[data-layout-element="'.concat(g.uid,'"]'));if(!b.length||!Garnish.hasAttr(b,"data-layout-element-placeholder")){var C=$("",{class:"hidden","data-layout-element":g.uid,"data-layout-element-placeholder":""});b.length?b.replaceWith(C):C.appendTo(u),h=!0}}}}catch(t){f.e(t)}finally{f.f()}}}catch(t){d.e(t)}finally{d.f()}var _,y=this.$contentContainer.children("[data-layout-tab]").not(o).not('[data-layout-tab=""]');if(y.length&&(y.remove(),h=!0),o.filter(":not(.hidden)").length||o.first().removeClass("hidden"),this.settings.visibleLayoutElements=l,this.isFullPage?(Craft.cp.updateTabs(s.data.tabs),_=Craft.cp.tabManager):(this.slideout.updateTabs(s.data.tabs),_=this.slideout.tabManager),i&&r&&i!==r){var w=_.$tabs.filter('[data-id="'.concat(r,'"]'));w.length?_.selectTab(w):_.selectTab(_.$tabs.first())}Craft.appendHeadHtml(s.data.headHtml),Craft.appendBodyHtml(s.data.bodyHtml),h&&(s.data.initialDeltaValues&&Object.assign(this.$container.data("initial-delta-values"),s.data.initialDeltaValues),a&&(this.lastSerializedValue=this.serializeForm(!0))),this.handleDismissibleTips()},afterUpdate:function(t){this.$container.data("initialSerializedValue",t),this.$container.data("initial-delta-values",{});var e=this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden").addClass("checkmark-icon");this.setStatusMessage(this._saveSuccessMessage()),Craft.autosaveDrafts||e.velocity("stop").velocity({opacity:0},{delay:2e3,complete:function(){e.addClass("hidden")}}),this.trigger("update")},setStatusMessage:function(t){this.statusIcons().attr("title",t),this.statusMessage().empty().append($("",{class:"visually-hidden",text:t}))},showMetaHud:function(){this.metaHud?this.metaHud.show():(this.createMetaHud(),this.onMetaHudShow()),Garnish.isMobileBrowser(!0)||this.$nameTextInput.trigger("focus")},createMetaHud:function(){var t=$(""),e=$(' ").appendTo(t),i=$('').appendTo(e);this.$nameTextInput=$('').appendTo(i).val(this.settings.draftName);var s=$('').appendTo(t);$('').appendTo(s),this.$saveMetaBtn=$("",{type:"submit",class:"btn submit disabled","aria-disabled":"true",text:Craft.t("app","Save")}).appendTo(s),this.metaHud=new Garnish.HUD(this.$editMetaBtn,t,{onSubmit:this.saveMeta.bind(this)}),this.addListener(this.$nameTextInput,"input","checkMetaValues"),this.metaHud.on("show",this.onMetaHudShow.bind(this)),this.metaHud.on("hide",this.onMetaHudHide.bind(this)),this.metaHud.on("escape",this.onMetaHudEscape.bind(this))},onMetaHudShow:function(){this.$editMetaBtn.addClass("active"),this.$editMetaBtn.attr("aria-expanded","true")},onMetaHudHide:function(){this.$editMetaBtn.removeClass("active"),this.$editMetaBtn.attr("aria-expanded","false"),Garnish.focusIsInside(this.metaHud.$body)&&this.$editMetaBtn.trigger("focus")},onMetaHudEscape:function(){this.$nameTextInput.val(this.settings.draftName)},checkMetaValues:function(){return this.$nameTextInput.val()&&this.$nameTextInput.val()!==this.settings.draftName?(this.$saveMetaBtn.removeClass("disabled"),this.$saveMetaBtn.removeAttr("aria-disabled"),!0):(this.$saveMetaBtn.addClass("disabled"),this.$saveMetaBtn.attr("aria-disabled","true"),!1)},shakeMetaHud:function(){Garnish.shake(this.metaHud.$hud)},saveMeta:function(){var t=this;return new Promise((function(e,i){if(!t.checkMetaValues())return t.shakeMetaHud(),void i();t.settings.draftName=t.$nameTextInput.val(),t.metaHud.hide(),t.checkForm(!0).then(e).catch(i)}))},handleSubmit:function(t){var e=this;if(t.preventDefault(),t.stopPropagation(),!this.submittingForm)if(!this.settings.draftId||this.settings.isUnpublishedDraft||this.settings.isProvisionalDraft||void 0!==t.autosave&&!t.autosave||!(t.saveShortcut||t.customTrigger&&"elements/save-draft"===t.customTrigger.data("action"))||!this.enableAutosave){this.submittingForm=!0,Craft.cp.$confirmUnloadForms=Craft.cp.$confirmUnloadForms.not(this.$container),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.trigger("beforeSubmit");var i=this.prepareData(this.serializeForm(!1));if(this.isFullPage){this.stopListeningForChanges();var s=Craft.createForm(i);s.appendTo(Garnish.$bod),s.submit()}else this.slideout.showSubmitSpinner(),Craft.sendActionRequest("POST",null,{headers:this._saveHeaders,data:i}).then((function(t){e.slideout.handleSubmitResponse(t)})).catch((function(t){e.slideout.handleSubmitError(t)})).finally((function(){e.submittingForm=!1,e.slideout.hideSubmitSpinner()}))}else this.checkForm(!0)},handleDismissibleTips:function(){var t=this;this.addListener(this.tipDismissBtn,"click",(function(e){t.hideTip(e)}))},getHiddenTipsUids:function(){return Craft.getLocalStorage("dismissedTips",[])},setHiddenTipsUids:function(t){Craft.setLocalStorage("dismissedTips",t)},hideTip:function(t){var e=t.target;if(e){var i=$(e).closest(".readable");if(i.length){var s=i.data("layout-element");if(i.remove(),"undefined"!=typeof Storage){var n=this.getHiddenTipsUids();n.includes(s)||(n.push(s),this.setHiddenTipsUids(n))}}}},_checkActivity:function(){var t=this;this.queue.push((function(){return new Promise((function(e,i){Craft.sendActionRequest("POST","elements/recent-activity",{params:{dontExtendSession:1},data:{elementType:t.settings.elementType,elementId:t.settings.canonicalId,draftId:t.settings.draftId,siteId:t.settings.siteId,provisional:t.settings.isProvisionalDraft}}).then((function(i){var s=i.data,n=null;if(t.activityTooltips&&(n=Object.values(t.activityTooltips).find((function(t){return t.$trigger[0]===document.activeElement}))),t.$activityContainer.html("").attr("role","region").attr("aria-label",Craft.t("app","Recent Activity")),s.activity.length){$("",{class:"visually-hidden",text:Craft.t("app","Recent Activity")}).appendTo(t.$activityContainer);for(var a=$("").appendTo(t.$activityContainer),r=0;r").appendTo(a),h=$("",{type:"button",class:"activity-btn","aria-label":Craft.t("app","{name} active, more info",{name:o.userName}),"aria-expanded":"false"}).appendTo(l),d=$(o.userThumb).addClass("elementthumb").css("z-index",s.activity.length-r).appendTo(h);d.find("img,svg").attr("role","presentation"),Craft.cp.elementThumbLoader.load(l),d.find("title").remove(),void 0===t.activityTooltips[o.userId]?t.activityTooltips[o.userId]=new Craft.Tooltip(h,o.message):(t.activityTooltips[o.userId].$trigger=h,t.activityTooltips[o.userId].message=o.message,t.activityTooltips[o.userId]===n&&t.activityTooltips[o.userId].$trigger.focus())}}for(var c=function(){var e=p[u];s.activity.find((function(t){return t.userId==e}))||t.activityTooltips[e].hide()},u=0,p=Object.keys(t.activityTooltips);u",{class:"hidden",name:t.namespaceInputName(e),value:i.settings.saveParams[e]}).appendTo(i.$container)}))}))})),this.on("submit",(function(t){if(Craft.broadcaster&&Craft.broadcaster.postMessage({event:"saveElement",id:t.response.data.element.id}),i.settings.onSaveElement){var e=Object.assign({},t.response.data,t.response.data.element);delete e.element,delete e.modelName,delete e.message,i.settings.onSaveElement(e)}Craft.Preview.refresh()}))},getParams:function(){var t={};return this.settings.elementType&&(t.elementType=this.settings.elementType),this.settings.elementId?t.elementId=this.settings.elementId:this.$element&&this.$element.data("id")&&(t.elementId=this.$element.data("id")),this.settings.draftId?t.draftId=this.settings.draftId:this.$element&&this.$element.data("draft-id")?t.draftId=this.$element.data("draft-id"):this.settings.revisionId?t.revisionId=this.settings.revisionId:this.$element&&this.$element.data("revision-id")&&(t.revisionId=this.$element.data("revision-id")),this.settings.siteId?t.siteId=this.settings.siteId:this.$element&&this.$element.data("site-id")&&(t.siteId=this.$element.data("site-id")),this.settings.prevalidate&&(t.prevalidate=1),t},handleSubmit:function(t){this.$container.data("elementEditor").handleSubmit(t)}},{defaults:{elementId:null,draftId:null,revisionId:null,elementType:null,siteId:null,prevalidate:!1,saveParams:{},onSaveElement:null,validators:[]}})},7998:function(){Craft.ElementFieldSettings=Garnish.Base.extend({allowMultipleSources:null,$maintainHierarchyField:null,$maintainHierarchyInput:null,$sourcesField:null,$sourceSelect:null,$branchLimitField:null,$maxRelationsField:null,$minRelationsField:null,init:function(t,e,i,s,n,a){this.allowMultipleSources=t,this.$maintainHierarchyField=$("#".concat(e)),this.$maintainHierarchyInput=this.$maintainHierarchyField.find('input[type="checkbox"]'),this.$sourcesField=$("#".concat(i)),this.allowMultipleSources||(this.$sourceSelect=this.$sourcesField.find("select")),this.$branchLimitField=$("#".concat(s)),this.$minRelationsField=$("#".concat(n)),this.$maxRelationsField=$("#".concat(a)),this.updateLimitFields(),this.addListener(this.$maintainHierarchyInput,"change","updateLimitFields"),this.allowMultipleSources?this.$sourcesField.find("[type=checkbox]").each(function(t,e){this.addListener($(e),"change","updateMaintainHierarchyField")}.bind(this)):this.addListener(this.$sourceSelect,"change","updateMaintainHierarchyField"),this.updateMaintainHierarchyField()},updateLimitFields:function(){!this.$maintainHierarchyField.hasClass("hidden")&&this.$maintainHierarchyInput.is(":checked")?(this.$minRelationsField.addClass("hidden"),this.$maxRelationsField.addClass("hidden"),this.$branchLimitField.removeClass("hidden")):(this.$branchLimitField.addClass("hidden"),this.$minRelationsField.removeClass("hidden"),this.$maxRelationsField.removeClass("hidden"))},updateMaintainHierarchyField:function(){var t;if(this.allowMultipleSources){var e=this.$sourcesField.find('[type="checkbox"]:checked');t=1===e.length&&e.data("structure-id")}else t=this.$sourceSelect.children("option:selected").data("structure-id");t?this.$maintainHierarchyField.removeClass("hidden"):this.$maintainHierarchyField.addClass("hidden"),this.updateLimitFields()}})},8895:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);ii&&n",{sizes:e.attr("data-sizes"),srcset:e.attr("data-srcset"),alt:e.attr("data-alt")||""});this.addListener(i,"load,abort,error","loadNext"),i.appendTo(e),picturefill({elements:[i[0]]})}}}else this.deactivate()},loadNextIfRemoved:function(){return!(!this.container||document.body.contains(this.container)||(this.loadNext(),0))}})},4233:function(){Craft.ElevatedSessionForm=Garnish.Base.extend({$form:null,inputs:null,init:function(t,e){if(this.$form=$(t),void 0!==e){this.inputs=[],e=$.makeArray(e);for(var i=0;i=Craft.ElevatedSessionManager.minSafeElevatedSessionTimeout?e.callback():e.showPasswordModal()})).catch((function(){e.fetchingTimeout=!1}))},showPasswordModal:function(){var t=this;if(this.passwordModal)this.passwordModal.show();else{var e=$(''),i=$(''+Craft.t("app","Enter your password to continue.")+" ").appendTo(e),s=$('').appendTo(i),n=$(' ').appendTo(s),a=$(' ').appendTo(n),r=$(" | ").appendTo(n),o=$(' ').appendTo(a);this.$passwordInput=$(' ').appendTo(o),this.$submitBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Submit"),spinner:!0}).appendTo(r),this.$errorPara=$(' ').appendTo(i),this.passwordModal=new Garnish.Modal(e,{closeOtherModals:!1,onFadeIn:function(){setTimeout(t.focusPasswordInput.bind(t),100)},onFadeOut:function(){t.$passwordInput.val("")}}),new Craft.PasswordInput(this.$passwordInput,{onToggleInput:function(e){t.$passwordInput=e}}),this.addListener(this.$passwordInput,"input","validatePassword"),this.addListener(e,"submit","submitPassword")}},focusPasswordInput:function(){Garnish.isMobileBrowser(!0)||this.$passwordInput.trigger("focus")},validatePassword:function(){return this.$passwordInput.val().length>=6?(this.$submitBtn.removeClass("disabled"),!0):(this.$submitBtn.addClass("disabled"),!1)},submitPassword:function(t){var e=this;if(t&&t.preventDefault(),this.validatePassword()){this.$submitBtn.addClass("loading"),this.clearLoginError();var i={currentPassword:this.$passwordInput.val()};Craft.sendActionRequest("POST","users/start-elevated-session",{data:i}).then((function(t){e.$submitBtn.removeClass("loading"),e.passwordModal.hide(),e.callback()})).catch((function(t){var i=t.response;e.$submitBtn.removeClass("loading"),e.showPasswordError(i.data.message||Craft.t("app","Incorrect password.")),Garnish.shake(e.passwordModal.$container),e.focusPasswordInput()}))}},showPasswordError:function(t){null==t&&(t=Craft.t("app","A server error occurred.")),this.$errorPara.text(t),this.passwordModal.updateSizeAndPosition()},clearLoginError:function(){this.showPasswordError("")}},{minSafeElevatedSessionTimeout:5}),Craft.elevatedSessionManager=new Craft.ElevatedSessionManager},1402:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i ');var r="new-entry-menu-"+Craft.randomString(10);if(a){var o="index"===s.settings.context?Craft.t("app","New entry"):Craft.t("app","New {section} entry",{section:a.name}),l="index"===s.settings.context?Craft.t("app","New entry in the {section} section",{section:a.name}):o,h="index"===s.settings.context?"link":null;s.$newEntryBtn=Craft.ui.createButton({label:o,ariaLabel:l,spinner:!0,role:h}).addClass("submit add icon").appendTo(s.$newEntryBtnGroup),s.addListener(s.$newEntryBtn,"click mousedown",(function(t){if("index"===s.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)){var e={};i&&(e.type=i),window.open(Craft.getUrl("entries/".concat(a.handle,"/new"),e))}else"click"===t.type&&s._createEntry(a.id,i)})),s.publishableSections.length>1&&(n=$(" ",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":r,"data-disclosure-trigger":"","aria-label":Craft.t("app","New entry, choose a section")}).appendTo(s.$newEntryBtnGroup))}else s.$newEntryBtn=n=Craft.ui.createButton({label:Craft.t("app","New entry"),ariaLabel:Craft.t("app","New entry, choose a section"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",r).attr("data-disclosure-trigger","").appendTo(s.$newEntryBtnGroup);if(s.addButton(s.$newEntryBtnGroup),n){var d,c=$(" ",{id:r,class:"menu menu--disclosure"}).appendTo(s.$newEntryBtnGroup),u=$(" ").appendTo(c),p=function(e,i){var s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!s){if(Array.isArray(e)||(s=function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){s&&(e=s);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(e)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}(s.publishableSections);try{var f=function(){var t=d.value,e="index"===s.settings.context?"link":"button";if("index"===s.settings.context&&-1!==$.inArray(s.siteId,t.sites)||"index"!==s.settings.context&&t!==a){var i=$(" ").appendTo(u),r=$(" ",{role:"button"===e?"button":null,href:Craft.getUrl("entries/".concat(t.handle,"/new")),type:"button"===e?"button":null,text:Craft.t("app","New {section} entry",{section:t.name})}).appendTo(i);s.addListener(r,"activate",(function(){n.data("trigger").hide(),s._createEntry(t.id)})),"button"===e&&s.addListener(r,"keydown",(function(e){e.keyCode===Garnish.SPACE_KEY&&(e.preventDefault(),n.data("trigger").hide(),s._createEntry(t.id))}))}};for(p.s();!(d=p.n()).done;)f()}catch(t){p.e(t)}finally{p.f()}new Garnish.DisclosureMenu(n)}}(),"index"===this.settings.context)){var n="entries";e&&(n+="/"+e),Craft.setPath(n)}},_createEntry:function(t,e){var i=this;if(this.$newEntryBtn.hasClass("loading"))console.warn("New entry creation already in progress.");else{var s=this.publishableSections.find((function(e){return e.id===t}));if(!s)throw"Invalid section ID: ".concat(t);this.$newEntryBtn.addClass("loading"),Craft.sendActionRequest("POST","entries/create",{data:{siteId:this.siteId,section:s.handle,type:e}}).then((function(t){var e=t.data;"index"===i.settings.context?document.location.href=Craft.getUrl(e.cpEditUrl,{fresh:1}):Craft.createElementEditor(i.elementType,{siteId:i.siteId,elementId:e.entry.id,draftId:e.entry.draftId,params:{fresh:1}}).on("submit",(function(){i.clearSearch(),i.setSelectedSortAttribute("dateCreated","desc"),i.selectElementAfterUpdate(e.entry.id),i.updateElements()}))})).finally((function(){i.$newEntryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Entry",Craft.EntryIndex)},8201:function(){Craft.FieldLayoutDesigner=Garnish.Base.extend({$container:null,$configInput:null,$tabContainer:null,$newTabBtn:null,$sidebar:null,$libraryToggle:null,$selectedLibrary:null,$fieldLibrary:null,$uiLibrary:null,$uiLibraryElements:null,$fieldSearch:null,$clearFieldSearchBtn:null,$fieldGroups:null,$fields:null,tabGrid:null,elementDrag:null,_config:null,init:function(t,e){var i=this;this.$container=$(t),this.setSettings(e,Craft.FieldLayoutDesigner.defaults),this.$configInput=this.$container.children("input[data-config-input]"),this._config=JSON.parse(this.$configInput.val()),this._config.tabs||(this._config.tabs=[]);var s=this.$container.children(".fld-workspace");this.$tabContainer=s.children(".fld-tabs"),this.$newTabBtn=s.children(".fld-new-tab-btn"),this.$sidebar=this.$container.children(".fld-sidebar"),this.$fieldLibrary=this.$selectedLibrary=this.$sidebar.children(".fld-field-library");var n=this.$fieldLibrary.children(".search");this.$fieldSearch=n.children("input"),this.$clearFieldSearchBtn=n.children(".clear"),this.$fieldGroups=this.$sidebar.find(".fld-field-group"),this.$fields=this.$fieldGroups.children(".fld-element"),this.$uiLibrary=this.$sidebar.children(".fld-ui-library"),this.$uiLibraryElements=this.$uiLibrary.children(),this.tabGrid=new Craft.Grid(this.$tabContainer,{itemSelector:".fld-tab",minColWidth:264,fillMode:"grid",snapToGrid:24});for(var a=this.$tabContainer.children(),r=0;r \n \n \n \n')).appendTo(this.$tabContainer);this.tabGrid.addItems(e),this.tabDrag.addItems(e),this.initTab(e).updatePositionInConfig()}}},get config(){return this._config},set config(t){this._config=t,this.$configInput.val(JSON.stringify(t))},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)}},{defaults:{customizableTabs:!0,customizableUi:!0},createSlideout:function createSlideout(contents,js){var $body=$("",{class:"fld-element-settings-body"});$("",{class:"fields",html:contents}).appendTo($body);var $footer=$("",{class:"fld-element-settings-footer"});$("",{class:"flex-grow"}).appendTo($footer);var $cancelBtn=Craft.ui.createButton({label:Craft.t("app","Close"),spinner:!0}).appendTo($footer);Craft.ui.createSubmitButton({class:"secondary",label:Craft.t("app","Apply"),spinner:!0}).appendTo($footer);var $contents=$body.add($footer),slideout=new Craft.Slideout($contents,{containerElement:"form",containerAttributes:{action:"",method:"post",novalidate:"",class:"fld-element-settings"}});return slideout.on("open",(function(){Garnish.requestAnimationFrame((function(){slideout.$container.find(".text:first").trigger("focus")}))})),$cancelBtn.on("click",(function(){slideout.close()})),js&&eval(js),Craft.initUiElements(slideout.$container),slideout}}),Craft.FieldLayoutDesigner.Tab=Garnish.Base.extend({designer:null,uid:null,$container:null,slideout:null,destroyed:!1,init:function(t,e){this.designer=t,this.$container=e,this.$container.data("fld-tab",this),this.uid=this.$container.data("uid"),this.uid||(this.uid=Craft.uuid(),this.config={uid:this.uid,name:this.$container.find(".tabs .tab span").text(),elements:[]},this.$container.data("settings-namespace",this.designer.$container.data("new-tab-settings-namespace").replace(/\bTAB_UID\b/g,this.uid)),this.$container.data("settings-html",this.designer.$container.data("new-tab-settings-html").replace(/\bTAB_UID\b/g,this.uid).replace(/\bTAB_NAME\b/g,this.config.name)),this.$container.data("settings-js",this.designer.$container.data("new-tab-settings-js").replace(/\bTAB_UID\b/g,this.uid))),this.designer.settings.customizableTabs&&(this.settingsNamespace=this.$container.data("settings-namespace"),this.createMenu());for(var i=this.$container.children(".fld-tabcontent").children(),s=0;s').insertAfter(e).append($("").append($("").append($("",{"data-action":"settings",text:Craft.t("app","Settings")}))).append($("").append($("",{"data-action":"remove",text:Craft.t("app","Remove")})))).append($(" ")).append($("").append($("").append($("",{"data-action":"moveLeft",text:Craft.t("app","Move to the left")}))).append($("").append($("",{"data-action":"moveRight",text:Craft.t("app","Move to the right")}))));var i=new Garnish.MenuBtn(e,{onOptionSelect:this.onTabOptionSelect.bind(this)});i.menu.on("show",(function(){t.$container.prev(".fld-tab").length?i.menu.$container.find("[data-action=moveLeft]").removeClass("disabled"):i.menu.$container.find("[data-action=moveLeft]").addClass("disabled"),t.$container.next(".fld-tab").length?i.menu.$container.find("[data-action=moveRight]").removeClass("disabled"):i.menu.$container.find("[data-action=moveRight]").addClass("disabled")}))},onTabOptionSelect:function(t){if(this.designer.settings.customizableTabs)switch($(t).data("action")){case"settings":this.slideout?this.slideout.open():this.createSettings();break;case"remove":this.destroy();break;case"moveLeft":var e=this.$container.prev(".fld-tab");e.length&&(this.$container.insertBefore(e),this.updatePositionInConfig());break;case"moveRight":var i=this.$container.next(".fld-tab");i.length&&(this.$container.insertAfter(i),this.updatePositionInConfig())}},createSettings:function(){var t=this,e=this.$container.data("settings-html"),i=this.$container.data("settings-js");this.slideout=Craft.FieldLayoutDesigner.createSlideout(e,i),this.slideout.$container.on("submit",(function(e){e.preventDefault(),t.applySettings()}))},applySettings:function(){var t=this;if(this.slideout.$container.find('[name$="[name]"]').val()){var e=this.slideout.$container.find("button[type=submit]").addClass("loading"),i=$.extend({},this.config);delete i.elements,Craft.sendActionRequest("POST","fields/apply-layout-tab-settings",{data:{config:i,settingsNamespace:this.settingsNamespace,settings:this.slideout.$container.serialize()}}).then((function(e){t.updateConfig((function(t){return $.extend(e.data.config,{elements:t.elements})}));var i=t.$container.find(".tabs .tab span"),s=i.children(".fld-indicator");e.data.hasConditions?s.length||i.append($("",{class:"fld-indicator",title:Craft.t("app","This tab is conditional"),"aria-label":Craft.t("app","This tab is conditional"),"data-icon":"condition",role:"img"})):s.length&&s.remove(),t.slideout.close()})).catch((function(t){Craft.cp.displayError(),console.error(t)})).finally((function(){e.removeClass("loading"),t.slideout.close()}))}else Craft.cp.displayError(Craft.t("app","You must specify a tab name."))},initElement:function(t){return new Craft.FieldLayoutDesigner.Element(this,t)},get index(){var t=this;return this.designer.config.tabs.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.designer.config.tabs.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid,elements:[]},this.config=e),e},set config(t){if(!this.destroyed){t.name&&t.name!==this.config.name&&this.$container.find(".tabs .tab span").text(t.name);var e=this.designer.config,i=this.index;if(-1!==i)e.tabs[i]=t;else{var s=$.inArray(this.$container[0],this.$container.parent().children(".fld-tab"));e.tabs.splice(s,0,t)}this.designer.config=e}},updateConfig:function(t){if(!this.destroyed){var e=t(this.config);!1!==e&&(this.config=e)}},updatePositionInConfig:function(){var t=this;this.destroyed||this.designer.updateConfig((function(e){var i=t.config,s=t.index,n=$.inArray(t.$container[0],t.$container.parent().children(".fld-tab"));return-1!==s&&e.tabs.splice(s,1),e.tabs.splice(n,0,i),e}))},destroy:function(){var t=this;if(!this.destroyed){this.destroyed=!0,this.designer.updateConfig((function(e){var i=t.index;return-1!==i&&(e.tabs.splice(i,1),e)}));for(var e=this.$container.find(".fld-element"),i=0;i",{class:"hidden"}),this.$editBtn=$("",{role:"button",tabindex:0,class:"settings icon",title:Craft.t("app","Edit")});var a=function(){i.slideout?i.slideout.open():i.createSettings(s,n)};this.$editBtn.on("click",a),this.$container.on("dblclick",a)}this.initUi(),this.$container.attr("data-keywords",null),this.$container.attr("data-settings-html",null)},initUi:function(){var t=this;this.hasCustomWidth&&new Craft.SlidePicker(this.config.width||100,{min:25,max:100,step:25,valueLabel:function(t){return Craft.t("app","{pct} width",{pct:"".concat(t,"%")})},onChange:function(e){t.updateConfig((function(t){return t.width=e,t}))}}).$container.appendTo(this.$container),this.hasSettings&&this.$editBtn.appendTo(this.$container)},createSettings:function(t,e){var i=this,s=(this.$container.data("settings-js")||"").replace(/\bELEMENT_UID\b/g,this.uid);if(this.slideout=Craft.FieldLayoutDesigner.createSlideout(t,s),this.slideout.$container.on("submit",(function(t){t.preventDefault(),i.applySettings()})),this.requirable){var n=this.slideout.$container.find(".fields:first");Craft.ui.createLightswitchField({label:Craft.t("app","Required"),name:"".concat(this.settingsNamespace,"[required]"),on:e}).prependTo(n)}this.trigger("createSettings")},applySettings:function(){var t=this,e=this.slideout.$container.find("button[type=submit]").addClass("loading");Craft.sendActionRequest("POST","fields/apply-layout-element-settings",{data:{config:this.config,settingsNamespace:this.settingsNamespace,settings:this.slideout.$container.serialize()}}).then((function(e){t.config=e.data.config,t.$editBtn.detach(),t.$container.html($(e.data.selectorHtml).html()),t.initUi()})).catch((function(t){Craft.cp.displayError(),console.error(t)})).finally((function(){e.removeClass("loading"),t.updateRequiredClass(),t.slideout.close()}))},updateRequiredClass:function(){this.requirable&&(this.config.required?this.$container.addClass("fld-required"):this.$container.removeClass("fld-required"))},get index(){var t=this,e=this.tab.config;return void 0===e?-1:e.elements.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.tab.config.elements.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid},this.config=e),e},set config(t){var e=this.tab.config,i=this.index;if(-1!==i)e.elements[i]=t;else{var s=$.inArray(this.$container[0],this.$container.parent().children(".fld-element"));e.elements.splice(s,0,t)}this.tab.config=e},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)},updatePositionInConfig:function(){var t=this;this.tab.updateConfig((function(e){var i=t.config,s=t.index,n=$.inArray(t.$container[0],t.$container.parent().children(".fld-element"));return-1!==s&&e.elements.splice(s,1),e.elements.splice(n,0,i),e}))},destroy:function(){var t=this;this.tab.updateConfig((function(e){var i=t.index;return-1!==i&&(e.elements.splice(i,1),e)})),this.tab.designer.elementDrag.removeItems(this.$container),this.$container.remove(),this.isField&&this.tab.designer.removeFieldByHandle(this.attribute),this.base()}}),Craft.FieldLayoutDesigner.BaseDrag=Garnish.Drag.extend({designer:null,$insertion:null,showingInsertion:!1,$caboose:null,init:function(t,e){this.designer=t,this.base(this.findItems(),e)},onDragStart:function(){this.base(),this.$insertion=this.createInsertion(),this.$caboose=this.createCaboose(),this.$items=$().add(this.$items.add(this.$caboose)),Garnish.$bod.addClass("dragging")},removeCaboose:function(){this.$items=this.$items.not(this.$caboose),this.$caboose.remove()},swapDraggeeWithInsertion:function(){this.$insertion.insertBefore(this.$draggee),this.$draggee.detach(),this.$items=$().add(this.$items.not(this.$draggee).add(this.$insertion)),this.showingInsertion=!0},swapInsertionWithDraggee:function(){this.$insertion.replaceWith(this.$draggee),this.$items=$().add(this.$items.not(this.$insertion).add(this.$draggee)),this.showingInsertion=!1},setMidpoints:function(){for(var t=0;t div.fld-tab")},onDragStart:function(){this.base(),this.swapDraggeeWithInsertion(),this.setMidpoints()},swapDraggeeWithInsertion:function(){this.base(),this.designer.tabGrid.removeItems(this.$draggee),this.designer.tabGrid.addItems(this.$insertion)},swapInsertionWithDraggee:function(){this.base(),this.designer.tabGrid.removeItems(this.$insertion),this.designer.tabGrid.addItems(this.$draggee)},onDrag:function(){this.checkForNewClosestItem(),this.base()},onDragStop:function(){this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:"hidden"}),this.$draggee.data("fld-tab").updatePositionInConfig()},createCaboose:function(){var t=$('').appendTo(this.designer.$tabContainer);return this.designer.tabGrid.addItems(t),t},removeCaboose:function(){this.base(),this.designer.tabGrid.removeItems(this.$caboose)},createInsertion:function(){var t=this.$draggee.find(".tab");return $('\n\n'))}}),Craft.FieldLayoutDesigner.ElementDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({draggingLibraryElement:!1,draggingField:!1,originalTab:null,onDragStart:function(){this.base(),this.draggingLibraryElement=this.$draggee.hasClass("unused"),this.draggingField=this.$draggee.hasClass("fld-field"),this.draggingLibraryElement&&!this.draggingField&&this.$draggee.css({display:this.draggeeDisplay,visibility:"visible"}),this.draggingLibraryElement?this.originalTab=null:(this.originalTab=this.$draggee.closest(".fld-tab").data("fld-tab"),this.swapDraggeeWithInsertion()),this.setMidpoints()},onDrag:function(){this.isDraggeeMandatory()||this.isHoveringOverTab()?this.checkForNewClosestItem():this.showingInsertion&&(this.$insertion.remove(),this.$items=$().add(this.$items.not(this.$insertion)),this.showingInsertion=!1,this.designer.tabGrid.refreshCols(!0),this.setMidpoints()),this.base()},isDraggeeMandatory:function(){return Garnish.hasAttr(this.$draggee,"data-mandatory")},isHoveringOverTab:function(){for(var t=0;t .fld-tab > .fld-tabcontent"),i=0;i").appendTo(e[i]));return t},createInsertion:function(){return $(''))},onDragStop:function(){var t=this.showingInsertion;if(t){if(this.draggingLibraryElement){var e=this.$draggee.clone().removeClass("unused");this.draggingField&&(this.$draggee.css({visibility:"inherit",display:"field"}).addClass("hidden"),0===this.$draggee.siblings(".fld-field:not(.hidden)").length&&this.$draggee.closest(".fld-field-group").addClass("hidden")),this.$draggee=e,this.addItems(e)}}else if(!this.draggingLibraryElement){var i=this.draggingField?this.designer.$fields.filter('[data-attribute="'.concat(this.$draggee.data("attribute"),'"]:first')):this.designer.$uiLibraryElements.filter('[data-type="'.concat(this.$draggee.data("type"),'"]:first'));this.draggingField&&(i.removeClass("hidden"),i.closest(".fld-field-group").removeClass("hidden")),this.$draggee.data("fld-element").destroy(),this.$draggee=i}if(this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:this.draggingField||t?"hidden":"visible"}),t){var s,n=this.$draggee.closest(".fld-tab").data("fld-tab");if(this.draggingLibraryElement)s=n.initElement(this.$draggee);else if(s=this.$draggee.data("fld-element"),n!==this.originalTab){var a=s.config;this.originalTab.updateConfig((function(t){var e=s.index;return-1!==e&&(t.elements.splice(e,1),t)})),this.$draggee.data("fld-element").tab=n,s.config=a}s.updatePositionInConfig()}}})},3347:function(){Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(t){switch(this.$toggle=$(t),this.$toggle.data("fieldtoggle")&&(console.warn("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"===this.type||"fieldset"===this.type?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),this.type){case"link":this.addListener(this.$toggle,"click","onToggleChange");break;case"fieldset":this.addListener(this.$toggle.find("input"),"change","onToggleChange");break;default:this.addListener(this.$toggle,"change","onToggleChange"),this.onToggleChange()}},normalizeTargetSelector:function(t){return t&&!t.match(/^[#\.]/)&&(t="#"+t),t},getType:function(){var t=this.$toggle.prop("nodeName");if("INPUT"===t&&"checkbox"===this.$toggle.attr("type")||"checkbox"===this.$toggle.attr("role")||"switch"===this.$toggle.attr("role"))return"checkbox";switch(t){case"SELECT":return Garnish.hasAttr(this.$toggle,"data-boolean-menu")?"booleanMenu":"select";case"A":return"link";default:return"fieldset"}},findTargets:function(){"select"===this.type||"fieldset"===this.type?this._$target=$(this.normalizeTargetSelector(this.targetPrefix+this.getToggleVal())):(this.targetSelector&&(this._$target=$(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=$(this.reverseTargetSelector)))},getToggleVal:function(){switch(this.type){case"checkbox":return void 0!==this.$toggle.prop("checked")?this.$toggle.prop("checked"):"true"===this.$toggle.attr("aria-checked");case"booleanMenu":var t=this.$toggle.data("boolean");if(void 0!==t)return t;var e=this.$toggle.val();return e&&"0"!==e;default:var i;return null==(i="fieldset"===this.type?this.$toggle.find("input:checked:first").val():Garnish.getInputPostVal(this.$toggle))?null:i.replace(/[^\w]+/g,"-")}},onToggleChange:function(){"select"===this.type||"fieldset"===this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):(this.findTargets(),"link"===this.type?this.onToggleChange._show=this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show)},showTarget:function(t){var e=this;if(t&&t.length){if(this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),"select"!==this.type&&"fieldset"!==this.type){"link"===this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded"));for(var i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(t)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i").append(this.$container.clone()).serialize(),this._formData},pause:function(){this._pauseLevel++},resume:function(){if(0===this._pauseLevel)throw"Craft.FormObserver::resume() should only be called after pause().";this._pauseLevel--,this.isActive&&this.checkForm()},destroy:function(){this._mutationObserver.disconnect(),delete this._mutationObserver,this.base()}})},9478:function(){Craft.Grid=Garnish.Base.extend({$container:null,$items:null,items:null,totalCols:null,colGutterDrop:null,colPctWidth:null,possibleItemColspans:null,possibleItemPositionsByColspan:null,itemPositions:null,itemColspansByPosition:null,layouts:null,layout:null,itemHeights:null,leftPadding:null,_refreshingCols:!1,_refreshColsAfterRefresh:!1,_forceRefreshColsAfterRefresh:!1,init:function(t,e){var i=this;this.$container=$(t),this.$container.data("grid")&&(console.warn("Double-instantiating a grid on an element"),this.$container.data("grid").destroy()),this.$container.data("grid",this),this.setSettings(e,Craft.Grid.defaults),this.handleContainerHeightProxy=function(){i.refreshCols(!1,!0)},this.$items=this.$container.children(this.settings.itemSelector),this.setItems(),this.refreshCols(!0,!1),Garnish.$doc.ready((function(){i.refreshCols(!1,!1)}))},addItems:function(t){this.$items=$().add(this.$items.add(t)),this.setItems(),this.refreshCols(!0,!0)},removeItems:function(t){this.$items=$().add(this.$items.not(t)),this.setItems(),this.refreshCols(!0,!0)},resetItemOrder:function(){this.$items=$().add(this.$items),this.setItems(),this.refreshCols(!0,!0)},setItems:function(){for(this.setItems._={},this.items=[],this.setItems._.i=0;this.setItems._.ithis.totalCols&&(this.refreshCols._.totalCols=Math.floor((this.$container.width()-20)/this.settings.minColWidth)),this.settings.maxCols&&this.refreshCols._.totalCols>this.settings.maxCols&&(this.refreshCols._.totalCols=this.settings.maxCols)),0===this.refreshCols._.totalCols&&(this.refreshCols._.totalCols=1),!0===t||this.totalCols!==this.refreshCols._.totalCols){if(this.totalCols=this.refreshCols._.totalCols,this.colGutterDrop=this.settings.gutter*(this.totalCols-1)/this.totalCols,this.removeListener(this.$container,"resize"),"grid"===this.settings.fillMode)for(this.refreshCols._.itemIndex=0;this.refreshCols._.itemIndexthis.refreshCols._.tallestItemHeight&&(this.refreshCols._.tallestItemHeight=this.refreshCols._.itemHeight),this.refreshCols._.colIndex++;for(this.settings.snapToGrid&&(this.refreshCols._.remainder=this.refreshCols._.tallestItemHeight%this.settings.snapToGrid,this.refreshCols._.remainder&&(this.refreshCols._.tallestItemHeight+=this.settings.snapToGrid-this.refreshCols._.remainder)),this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.ithis.totalCols&&(this.refreshCols._.minColspan=this.totalCols),this.refreshCols._.maxColspan>this.totalCols&&(this.refreshCols._.maxColspan=this.totalCols),this.refreshCols._.colspan=this.refreshCols._.minColspan;this.refreshCols._.colspan<=this.refreshCols._.maxColspan;this.refreshCols._.colspan++)for(this.refreshCols._.$item.css("width",this.getItemWidthCss(this.refreshCols._.colspan)),this.itemHeightsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=this.refreshCols._.$item.outerHeight(),this.possibleItemColspans[this.refreshCols._.item].push(this.refreshCols._.colspan),this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=[],this.refreshCols._.positionLeft?(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=0):this.refreshCols._.positionRight?(this.refreshCols._.minPosition=this.totalCols-this.refreshCols._.colspan,this.refreshCols._.maxPosition=this.refreshCols._.minPosition):(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=this.totalCols-this.refreshCols._.colspan),this.refreshCols._.position=this.refreshCols._.minPosition;this.refreshCols._.position<=this.refreshCols._.maxPosition;this.refreshCols._.position++)this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan].push(this.refreshCols._.position);for(this.refreshCols._.colHeights=[],this.refreshCols._.i=0;this.refreshCols._.i=0;this.refreshCols._.i--)this.refreshCols._.layoutTotalCols[this.refreshCols._.i]!==this.refreshCols._.highestTotalCols&&this.layouts.splice(this.refreshCols._.i,1);for(this.refreshCols._.layoutHeights=[],this.refreshCols._.i=0;this.refreshCols._.i0&&(this.positionItems._.top+=this.settings.gutter),this.items[this.positionItems._.i].css("top",this.positionItems._.top),this.positionItems._.col=this.layout.positions[this.positionItems._.i];this.positionItems._.col<=this.positionItems._.endingCol;this.positionItems._.col++)this.positionItems._.colHeights[this.positionItems._.col]=this.positionItems._.top+this.itemHeightsByColspan[this.positionItems._.i][this.layout.colspans[this.positionItems._.i]]}this.$container.height(Math.max.apply(null,this.positionItems._.colHeights)),delete this.positionItems._},onItemResize:function(t){this.onItemResize._={},t.stopPropagation(),this.onItemResize._.item=$.inArray(t.currentTarget,this.$items),-1!==this.onItemResize._.item&&(this.onItemResize._.newHeight=this.items[this.onItemResize._.item].outerHeight(),this.onItemResize._.newHeight!==this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]&&(this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]=this.onItemResize._.newHeight,this.positionItems(!1))),delete this.onItemResize._},onRefreshCols:function(){this.trigger("refreshCols"),this.settings.onRefreshCols()},destroy:function(){this.$container.removeData("grid"),this.base()}},{defaults:{itemSelector:".item",cols:null,maxCols:null,minColWidth:320,gutter:14,fillMode:"top",colClass:"col",snapToGrid:null,onRefreshCols:$.noop}}),Craft.Grid.LayoutGenerator=Garnish.Base.extend({grid:null,_:null,init:function(t){this.grid=t},createLayouts:function(t,e,i,s,n){for(this._={},this._.c=0;this._.c/g,"");e=(e=e.replace(/['"‘’“”\[\]\(\)\{\}:]/g,"")).toLowerCase(),e=Craft.asciiString(e),this.settings.allowNonAlphaStart||(e=e.replace(/^[^a-z]+/,""));var i=Craft.filterArray(e.split(/[^a-z0-9]+/));if(e="","snake"===Craft.handleCasing)return i.join("_");for(var s=0;s').appendTo(this.$container));var t={url:Craft.getActionUrl(this.settings.uploadAction),formData:this.settings.postParameters,fileInput:this.$container.find(this.settings.fileInputSelector),paramName:this.settings.uploadParamName};void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),t.events={},t.events.fileuploadstart=this._onUploadStart.bind(this),t.events.fileuploadprogressall=this._onUploadProgress.bind(this),t.events.fileuploaddone=this._onUploadComplete.bind(this),t.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(null,this.$container,t),this.initButtons()},initButtons:function(){var t=this;this.$container.find(this.settings.uploadButtonSelector).on("click",(function(e){t.$container.find(t.settings.fileInputSelector).trigger("click")})),this.$container.find(this.settings.deleteButtonSelector).on("click",(function(e){confirm(Craft.t("app","Are you sure you want to delete this image?"))&&($(e.currentTarget).parent().append(' '),Craft.sendActionRequest("POST",t.settings.deleteAction,{data:t.settings.postParameters}).then((function(e){var i=e.data;t.refreshImage(i)})))}))},refreshImage:function(t){$(this.settings.containerSelector).replaceWith(t.html),this.settings.onAfterRefreshImage(t),this.initImageUpload()},_onUploadStart:function(t){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=parseInt(e.loaded/e.total*100,10);this.progressBar.setProgressPercentage(i)},_onUploadComplete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e.result.error?Craft.cp.displayError(e.result.error):($(e.result.html),this.refreshImage(e.result)),this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.$container.removeClass("uploading"))},_onUploadFailure:function(t){var e,i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=s.response(),a=(null==n||null===(e=n.jqXHR)||void 0===e?void 0:e.responseJSON)||{},r=a.message,o=a.filename;o=o||(null==s||null===(i=s.files)||void 0===i?void 0:i[0].name),r||(r=o?Craft.t("app","Upload failed for “{filename}”.",{filename:o}):Craft.t("app","Upload failed.")),Craft.cp.displayError(r),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")}},{defaults:{postParameters:{},uploadAction:"",deleteAction:"",fileInputSelector:"",onAfterRefreshImage:$.noop,containerSelector:null,uploadButtonSelector:null,deleteButtonSelector:null,uploadParamName:"files"}})},657:function(){Craft.InfoIcon=Garnish.Base.extend({$container:null,$icon:null,$liveRegion:null,content:null,hud:null,init:function(t){var e=this;if(this.$icon=$(t),this.$liveRegion=$(" ",{role:"status",class:"visually-hidden"}),this.$icon.data("infoicon")?(console.warn("Double-instantiating an info icon on an element"),this.content=this.$icon.data("infoicon").content,this.$icon.data("infoicon").destroy()):(this.content=this.$icon.html(),this.$icon.html("").attr({tabindex:0,role:"button",type:"button","aria-label":Craft.t("app","More info")}).wrap($(" ",{class:"infoicon-container"})),this.$container=this.$icon.parent(),this.$container.append(this.$liveRegion)),this.$icon.data("infoicon",this),this.$icon[0].previousSibling&&this.$icon[0].previousSibling.nodeType===Node.TEXT_NODE&&!this.$icon.parent().hasClass("nowrap")){var i=this.$icon[0].previousSibling.nodeValue.match(/[^\s\-]+\s*$/);i&&(this.$icon[0].previousSibling.nodeValue=this.$icon[0].previousSibling.nodeValue.substring(0,i.index),$(" ",{class:"nowrap",html:i[0].replace(/\s+$/,"")+" "}).insertAfter(this.$icon[0].previousSibling).append(this.$icon))}this.addListener(this.$icon,"click",(function(t){t.preventDefault(),t.stopPropagation(),e.showHud()})),this.addListener(this.$icon,"keydown",(function(t){e.hud&&e.hud.showing||![Garnish.SPACE_KEY,Garnish.RETURN_KEY].includes(t.keyCode)||(t.preventDefault(),t.stopPropagation(),e.showHud())}))},showHud:function(t){var e=this;this.hud?this.hud.show():(this.hud=new Garnish.HUD(this.$icon,this.content,{hudClass:"hud info-hud",closeOtherHUDs:!1,onShow:function(){Garnish.uiLayerManager.registerShortcut(Garnish.SPACE_KEY,(function(){e.hud.hide()})),e.$liveRegion.html(""),setTimeout((function(){e.$liveRegion.html(e.content)}),200)},onHide:function(){e.$liveRegion.html("")}}),Craft.initUiElements(this.hud.$body))},destroy:function(){this.$icon.removeData("infoicon"),this.base()}})},4487:function(){Craft.LightSwitch=Garnish.Base.extend({settings:null,$outerContainer:null,$innerContainer:null,$input:null,small:!1,on:!1,indeterminate:!1,dragger:null,dragStartMargin:null,init:function(t,e){if(this.$outerContainer=$(t),this.$outerContainer.data("lightswitch")&&(console.warn("Double-instantiating a lightswitch on an element"),this.$outerContainer.data("lightswitch").destroy()),this.$outerContainer.data("lightswitch",this),this.small=this.$outerContainer.hasClass("small"),this.setSettings(e,Craft.LightSwitch.defaults),this.$innerContainer=this.$outerContainer.find(".lightswitch-container:first"),this.$input=this.$outerContainer.find("input:first"),!this.$input.prop("disabled")){this.on=this.$outerContainer.hasClass("on"),this.indeterminate=this.$outerContainer.hasClass("indeterminate"),this.addListener(this.$outerContainer,"mousedown","_onMouseDown"),this.addListener(this.$outerContainer,"keydown","_onKeyDown"),this.dragger=new Garnish.BaseDrag(this.$outerContainer,{axis:Garnish.X_AXIS,ignoreHandleSelector:null,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)});var i=this.$outerContainer.parent(".lightswitch-inner-container");i.length&&(this.addListener(i.children('span[data-toggle="off"]'),"click",this.turnOff),this.addListener(i.children('span[data-toggle="on"]'),"click",this.turnOn))}},turnOn:function(t){var e=!this.on;if(this.on=!0,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,0);else{var i={};i["margin-"+Craft.left]=0,this.$innerContainer.velocity("stop").velocity(i,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(this.settings.value),this.$outerContainer.addClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","true"),e&&!0!==t&&this.onChange()},turnOff:function(t){var e=this.on||this.indeterminate;if(this.on=!1,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,this._getOffMargin());else{var i={};i["margin-"+Craft.left]=this._getOffMargin(),this.$innerContainer.velocity("stop").velocity(i,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(""),this.$outerContainer.removeClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","false"),e&&!0!==t&&this.onChange()},turnIndeterminate:function(t){var e=!this.indeterminate;this.on=!1,this.indeterminate=!0,this.$outerContainer.addClass("dragging");var i={};i["margin-"+Craft.left]=this._getOffMargin()/2,this.$innerContainer.velocity("stop").velocity(i,Craft.LightSwitch.animationDuration,this._onSettle.bind(this)),this.$input.val(this.settings.indeterminateValue),this.$outerContainer.removeClass("on"),this.$outerContainer.addClass("indeterminate"),this.$outerContainer.attr("aria-checked","mixed"),e&&!0!==t&&this.onChange()},toggle:function(){this.indeterminate||!this.on?this.turnOn():this.turnOff()},onChange:function(){this.trigger("change"),this.settings.onChange(this.on),this.$outerContainer.trigger("change")},_onMouseDown:function(){this.addListener(Garnish.$doc,"mouseup","_onMouseUp")},_onMouseUp:function(){this.removeListener(Garnish.$doc,"mouseup"),this.dragger.dragging||this.toggle()},_onKeyDown:function(t){switch(t.keyCode){case Garnish.SPACE_KEY:this.toggle(),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?this.turnOn():this.turnOff(),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?this.turnOff():this.turnOn(),t.preventDefault()}},_getMargin:function(){return parseInt(this.$innerContainer.css("margin-"+Craft.left))},_onDragStart:function(){this.$outerContainer.addClass("dragging"),this.dragStartMargin=this._getMargin()},_onDrag:function(){var t;(t="ltr"===Craft.orientation?this.dragStartMargin+this.dragger.mouseDistX:this.dragStartMargin-this.dragger.mouseDistX) 0&&(t=0),this.$innerContainer.css("margin-"+Craft.left,t)},_onDragStop:function(){this._getMargin()>this._getOffMargin()/2?this.turnOn():this.turnOff()},_onSettle:function(){this.$outerContainer.removeClass("dragging")},destroy:function(){this.$outerContainer.removeData("lightswitch"),this.base(),this.dragger.destroy()},_getOffMargin:function(){return this.small?-10:-12}},{animationDuration:100,defaults:{value:"1",indeterminateValue:"-",onChange:$.noop}})},6966:function(){Craft.Listbox=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,selectedOptionIndex:null,init:function(t,e){var i=this;this.$container=$(t),this.setSettings(e,Craft.Listbox.defaults),this.$container.data("listbox")&&(console.warn("Double-instantiating a listbox on an element"),this.$container.data("listbox").destroy()),this.$container.data("listbox",this),this.$options=this.$container.find("button,[role=option]"),this.$selectedOption=this.$options.filter("[aria-pressed=true],[aria-selected=true]").removeAttr("aria-selected").attr("aria-pressed","true"),this.$selectedOption.length?this.selectedOptionIndex=this.$options.index(this.$selectedOption):this.$selectedOption=null,this.addListener(this.$options,"click",(function(t){i.select(i.$options.index($(t.currentTarget))),t.preventDefault()}))},select:function(t){t<0||t>=this.$options.length||t===this.selectedOptionIndex||(this.$selectedOption&&this.$selectedOption.removeClass(this.settings.selectedClass).attr("aria-pressed","false"),this.$selectedOption=this.$options.eq(t).addClass(this.settings.selectedClass).attr("aria-pressed","true"),this.selectedOptionIndex=t,this.settings.onChange(this.$selectedOption,t),this.trigger("change",{$selectedOption:this.$selectedOption,selectedOptionIndex:t}))},disable:function(){this.base(),this.$container.attr("aria-disabled","true")},enable:function(){this.base(),this.$container.removeAttr("aria-disabled")},destroy:function(){this.$container.removeData("listbox"),this.base()}},{defaults:{selectedClass:"active",focusClass:"focus",onChange:$.noop}})},5080:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i"),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.LivePreview.defaultEditorWidth),this.addListener(this.$trigger,"activate","toggle"),Craft.cp.on("beforeSaveShortcut",(function(){e.inPreviewMode&&e.moveFieldsBack()})),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewContainer=$("",{class:"lp-preview-container"}).appendTo(Garnish.$bod),this.$iframeContainer=$("",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$editorContainer=$("",{class:"lp-editor-container"}).appendTo(Garnish.$bod);var e=$("",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var i=$("",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(e);$("",{class:"flex-grow"}).appendTo(e);var s=$("",{type:"button",class:"btn submit",text:Craft.t("app","Save")}).appendTo(e);this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(i,"click","exit"),this.addListener(s,"click","save")}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];for(var n=$(this.settings.fields),a=0;awindow.scrollTo('+this._scrollX+", "+this._scrollY+");<\/script>",s=$('');this.$iframe?s.insertBefore(this.$iframe):s.appendTo(this.$iframeContainer),this.addListener(s,"load",(function(){this.$iframe&&this.$iframe.remove(),this.$iframe=s,this._slideInOnIframeLoad&&(this.slideIn(),this._slideInOnIframeLoad=!1),this.removeListener(s,"load")})),Garnish.requestAnimationFrame((function(){s[0].contentWindow.document.open(),s[0].contentWindow.document.write(i),s[0].contentWindow.document.close(),e.onResponse()}))},handleError:function(){this.onResponse()},onResponse:function(){this.loading=!1,this.checkAgain&&(this.checkAgain=!1,this.updateIframe())},_getClone:function(t){var e=t.clone();return Garnish.copyInputValues(t,e),e.attr("id",""),e.find("[id]").attr("id",""),e},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$previewContainer.addClass("dragging")},_onDrag:function(){"ltr"===Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths(),this.trigger("drag")},_onDragStop:function(){this.$previewContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)},destroy:function(){var t=this;Craft.Preview.instances=Craft.Preview.instances.filter((function(e){return e!==t})),this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],defaults:{trigger:".livepreviewbtn",fields:null,extraFields:null,previewUrl:null,previewAction:null,previewParams:{}},getActive:function(){var e,i=function(e,i){var s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!s){if(Array.isArray(e)||(s=function(e,i){if(e){if("string"==typeof e)return t(e,i);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){s&&(e=s);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(e)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}(Craft.LivePreview.instances);try{for(i.s();!(e=i.n()).done;){var s=e.value;if(s.inPreviewMode)return s}}catch(t){i.e(t)}finally{i.f()}}}),Craft.LivePreview.init=function(t){Craft.livePreview=new Craft.LivePreview(t)}},7439:function(){Craft.PasswordInput=Garnish.Base.extend({$passwordWrapper:null,$passwordInput:null,$textInput:null,$currentInput:null,$showPasswordToggle:null,showingPassword:null,init:function(t,e){this.$passwordInput=$(t),this.$passwordWrapper=this.$passwordInput.parent(".passwordwrapper"),this.settings=$.extend({},Craft.PasswordInput.defaults,e),this.$passwordInput.data("passwordInput")&&(console.warn("Double-instantiating a password input on an element"),this.$passwordInput.data("passwordInput").destroy()),this.$passwordInput.data("passwordInput",this),this.$showPasswordToggle=$(''),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.initInputFocusEvents(this.$passwordInput),this.addListener(this.$showPasswordToggle,"click","onClick"),this.hidePassword(),this.addListener(this.$passwordWrapper.closest("form"),"submit","hidePassword")},setCurrentInput:function(t){this.$currentInput&&(t.insertAfter(this.$currentInput),this.$currentInput.detach(),t.trigger("focus"),t.val(this.$currentInput.val())),this.$currentInput=t,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(t){this.$showPasswordToggle.text(t)},initInputFocusEvents:function(t){this.addListener(t,"focus",(function(){this.$passwordWrapper.addClass("focus")})),this.addListener(t,"blur",(function(){this.$passwordWrapper.removeClass("focus")}))},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr({type:"text",autocapitalize:"off"}),this.initInputFocusEvents(this.$textInput)),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("app","Hide")),this.showingPassword=!0)},hidePassword:function(){!1!==this.showingPassword&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("app","Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.removeClass("invisible"):this.$showPasswordToggle.addClass("invisible")},onClick:function(t){if(this.$currentInput[0].setSelectionRange){var e=this.$currentInput[0].selectionStart,i=this.$currentInput[0].selectionEnd;this.togglePassword(),this.$currentInput[0].setSelectionRange(e,i)}else this.togglePassword()},destroy:function(){this.$passwordInput.removeData("passwordInput"),this.base()}},{defaults:{onToggleInput:$.noop}})},5328:function(){function t(t,i){var s="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!s){if(Array.isArray(t)||(s=function(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}(t))||i&&t&&"number"==typeof t.length){s&&(t=s);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){s=s.call(t)},n:function(){var t=s.next();return o=t.done,t},e:function(t){l=!0,r=t},f:function(){try{o||null==s.return||s.return()}finally{if(l)throw r}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i",{type:"hidden",name:"__PREVIEW_FIELDS__",value:"1"}),this.$fieldPlaceholder=$(""),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.Preview.defaultEditorWidth),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewWrapper=$("",{role:"dialog","aria-modal":"true","aria-labelledby":"lp-preview-heading"}).appendTo(Garnish.$bod),this.$modalLabel=$("",{id:"lp-preview-heading",class:"visually-hidden",html:Craft.t("app","Preview")}).appendTo(this.$previewWrapper),this.$editorContainer=$("",{class:"lp-editor-container"}).appendTo(this.$previewWrapper),this.$previewContainer=$("",{class:"lp-preview-container",id:"lp-preview-container"}).appendTo(this.$previewWrapper),this.$notifier=$("",{class:"visually-hidden","aria-live":"assertive"}).appendTo(this.$previewContainer);var i=$("",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var s=$("",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(i);if($("",{class:"flex-grow"}).appendTo(i),this.$spinner=$("",{class:"spinner hidden",title:Craft.t("app","Saving")}).appendTo(i),this.$statusIcon=$("",{class:"invisible"}).appendTo(i),this.$statusMessage=$("",{class:"visually-hidden","aria-live":"polite"}).appendTo(i),this.$previewSkipLink=$("",{class:"skip-link btn",href:"#lp-preview-container",html:e}).appendTo(i),Craft.Pro){if(this.$previewHeader=$("",{class:"lp-preview-header"}).appendTo(this.$previewContainer),this.elementEditor.settings.previewTargets.length>1){this.$targetBtn=$("",{type:"button",class:"btn menubtn",text:this.elementEditor.settings.previewTargets[0].label}).appendTo(this.$previewHeader),this.$targetMenu=$("",{class:"menu lp-target-menu"}).insertAfter(this.$targetBtn);for(var n,a=$("",{class:"padded"}).appendTo(this.$targetMenu),r=0;r").appendTo(a),$("",{data:{target:r},text:this.elementEditor.settings.previewTargets[r].label,class:0===r?"sel":null}).appendTo(n);new Garnish.MenuBtn(this.$targetBtn,{onOptionSelect:function(e){t.switchTarget($(e).data("target"))}}),$('').appendTo(this.$previewHeader)}this._buildDeviceTypeFieldset(),$('').appendTo(this.$previewHeader);var o=$('').appendTo(this.$previewHeader);this.$orientationBtn=$("",{type:"button",class:"btn disabled","data-icon":"rotate","aria-disabled":"true",text:Craft.t("app","Rotate"),"aria-label":Craft.t("app","Rotate")}).appendTo(o),this.addListener(this.$orientationBtn,"click","switchOrientation"),this.$refreshBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Refresh"),"data-icon":"refresh"}).appendTo(o),this.addListener(this.$refreshBtn,"click",(function(){t.updateIframe(!1,!0)})),this.deviceOrientation=Craft.getLocalStorage("LivePreview.orientation")}this.$iframeContainer=$("",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$devicePreviewContainer=$("",{class:"lp-device-preview-container"}).appendTo(this.$iframeContainer),this.$deviceMask=$("",{class:"lp-device-mask"}).appendTo(this.$iframeContainer),this.$bumperLink=$("",{class:"skip-link btn lp-preview-container__bumper-link",html:e,href:"#lp-preview-container"}),this.$bumperLink.appendTo(this.$previewContainer),this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(s,"click","close"),this.addListener(this.$statusIcon,"click",(function(){t.elementEditor.showStatusHud(t.$statusIcon)}))}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];var l=$("#content .field").not($("#content .field .field"));if(l.length){this.$tempInput.insertBefore(l.get(0));for(var h=0;h",{class:"btngroup lp-device-type","aria-label":Craft.t("app","Device type")}).appendTo(this.$previewHeader),$("",{type:"button",class:"btn lp-device-type-btn--desktop active",title:Craft.t("app","Desktop"),"aria-label":Craft.t("app","Desktop"),"aria-pressed":"true",data:{width:"",height:"",deviceType:"desktop"}}).appendTo(this.$deviceTypeContainer),$("",{type:"button",class:"btn lp-device-type-btn--tablet",title:Craft.t("app","Tablet"),"aria-label":Craft.t("app","Tablet"),"aria-pressed":"false",data:{width:768,height:1024,deviceType:"tablet"}}).appendTo(this.$deviceTypeContainer),$("",{type:"button",class:"btn lp-device-type-btn--phone",title:Craft.t("app","Mobile"),"aria-label":Craft.t("app","Mobile"),"aria-pressed":"false",data:{width:375,height:667,deviceType:"phone"}}).appendTo(this.$deviceTypeContainer),this.deviceBtnGroup=new Craft.Listbox(this.$deviceTypeContainer,{onChange:function(e){t.switchDeviceType(e)}})},_activeTarget:function(){return this.elementEditor.settings.previewTargets[this.activeTarget]},_autoRefresh:function(){var t=this._activeTarget();return void 0===a(t.refresh)||!!t.refresh},switchTarget:function(t){this.activeTarget=t,this.$targetBtn.text(this.elementEditor.settings.previewTargets[t].label),this.$targetMenu.find("a.sel").removeClass("sel"),this.$targetMenu.find("a").eq(t).addClass("sel"),this.updateIframe(!0),this.trigger("switchTarget",{previewTarget:this.elementEditor.settings.previewTargets[t]})},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(){var t=this;this.isActive&&!this.isVisible&&($("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){t.trigger("slideIn"),Garnish.$win.trigger("resize")})),this.$previewContainer.show().velocity("stop").animateRight(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration)),this.isVisible=!0,Garnish.uiLayerManager.addLayer(this.$previewWrapper),Garnish.hideModalBackgroundLayers(),Craft.setFocusWithin(this.$previewWrapper),Craft.trapFocusWithin(this.$previewWrapper),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.close()})))},close:function(){var t=this;this.isActive&&this.isVisible&&(this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$tempInput.detach(),this.moveFieldsBack(),Garnish.prefersReducedMotion()?this.$shade.velocity("fadeOut"):this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){for(var e=0;e",{class:"lp-preview",frameborder:0,src:e,title:Craft.t("app","Preview")});i.$iframe?i.$iframe.replaceWith(n):n.appendTo(i.$devicePreviewContainer),i._useIframeResizer()?(t||null===i.iframeHeight||(n.height(i.iframeHeight),i.$iframeContainer.scrollTop(i.scrollTop),i.$iframeContainer.scrollLeft(i.scrollLeft)),iFrameResize($.extend({checkOrigin:!1,scrolling:!0,onInit:function(t){i.iframeLoaded=!0,i.iframeHeight=null,i.scrollTop=null,i.scrollLeft=null,t.scrolling="no"}},Craft.previewIframeResizerOptions||{}),n[0])):n.on("load",(function(){i.iframeLoaded=!0,!t&&s&&(null!==i.scrollTop&&$(n[0].contentWindow.document).scrollTop(i.scrollTop),null!==i.scrollLeft&&$(n[0].contentWindow.document).scrollLeft(i.scrollLeft))})),i.url=e,i.$iframe=n,i._devicePreviewIsActive()&&i.updateDevicePreview(),i.trigger("afterUpdateIframe",{previewTarget:i.elementEditor.settings.previewTargets[i.activeTarget],$iframe:i.$iframe}),i.slideIn()})):this.slideIn()},_devicePreviewIsActive:function(){return"desktop"!==this.currentDeviceType},_updateNotifier:function(){var t=this;this.$notifier.html="";var e="desktop"===this.currentDeviceType?"Previewing {type} device":"Previewing {type} device in {orientation}",i={type:this._getDeviceTypeTranslation(this.currentDeviceType)};"desktop"!==this.currentDeviceType&&(i=s(s({},i),{orientation:this._getDeviceOrientationTranslation(this.deviceOrientation)}));var n=Craft.t("app",e,i);setTimeout((function(){t.$notifier.text(n)}),200)},switchDeviceType:function(t){this.$iframeContainer.removeClass("lp-iframe-container--rotating");var e=t.data("deviceType");if(e===this.currentDeviceType)return!1;this.currentDeviceType=e,this.deviceWidth=t.data("width"),this.deviceHeight=t.data("height"),"desktop"===this.currentDeviceType?(this.$orientationBtn.addClass("disabled").attr("aria-disabled","true"),this.$iframeContainer.removeClass("lp-iframe-container--has-device-preview")):(this.$orientationBtn.removeClass("disabled").removeAttr("aria-disabled"),this.$iframeContainer.addClass("lp-iframe-container--has-device-preview")),"tablet"===this.currentDeviceType?this.$iframeContainer.addClass("lp-iframe-container--tablet"):this.$iframeContainer.removeClass("lp-iframe-container--tablet"),this._updateNotifier(),"desktop"!==this.currentDeviceType&&this.updateDevicePreview()},switchOrientation:function(){var t=this;if(!this._devicePreviewIsActive())return!1;this.deviceOrientation&&"portrait"!==this.deviceOrientation?this.deviceOrientation="portrait":this.deviceOrientation="landscape",Craft.setLocalStorage("LivePreview.orientation",this.deviceOrientation),this.$iframeContainer.addClass("lp-iframe-container--rotating"),this.updateDevicePreview(),this._updateNotifier(),setTimeout((function(){t.$iframeContainer.removeClass("lp-iframe-container--rotating")}),300)},updateDevicePreview:function(){var t=1,e=1,i=1,s=this.$previewContainer.height()-50-48,n=this.$previewContainer.width()-48,a=this.deviceMaskDimensions[this.currentDeviceType].height,r=this.deviceMaskDimensions[this.currentDeviceType].width;"landscape"===this.deviceOrientation?(n').appendTo(Garnish.$bod),this.base(this.$container,$.extend({resizable:!0},i)),this.$container&&(this.$container.velocity("stop"),this.$container.show().css("opacity",1),this.$shade.velocity("stop"),this.$shade.show().css("opacity",1),Garnish.setFocusWithin(this.$container)),this.$bumperButtonStart=Craft.ui.createButton({html:Craft.t("app","Close Preview"),class:"skip-link"}),this.addListener(this.$bumperButtonStart,"click",(function(){s.hide()})),this.$bumperButtonEnd=this.$bumperButtonStart.clone(!0),this.loadAsset(t,i.startingWidth,i.startingHeight)},_onHide:function(){return Craft.PreviewFileModal.openInstance=null,this.elementSelect?this.elementSelect.focusItem(this.elementSelect.$focusedItem):this.$triggerElement&&this.$triggerElement.length&&this.$triggerElement.trigger("focus"),this.$shade.remove(),this.destroy()},_addBumperButtons:function(){this.$container.prepend(this.$bumperButtonStart).append(this.$bumperButtonEnd)},_addModalName:function(){var t="preview-heading";$("",{class:"visually-hidden",id:t,text:Craft.t("app","Preview file")}).prependTo(this.$container),this.$container.attr("aria-labelledby",t)},selfDestruct:function(){var t=Craft.PreviewFileModal.openInstance;return t.hide(),t.$shade.remove(),t.destroy(),Craft.PreviewFileModal.openInstance=null,Craft.focalPoint.destruct(),Craft.focalPoint=null,!0},loadAsset:function(t,e,i){var s=this;this.assetId=t,this.$container.empty(),this.loaded=!1,this.desiredHeight=null,this.desiredWidth=null;var n=.66*Garnish.$win.height(),a=Math.min(n/3*4,Garnish.$win.width()-2*this.settings.minGutter);if(n=a/4*3,e&&i){var r=e/i;a=Math.min(e,Garnish.$win.width()-2*this.settings.minGutter),(a=(n=Math.min(a/r,Garnish.$win.height()-2*this.settings.minGutter))*r)>Math.min(e,Garnish.$win.width()-2*this.settings.minGutter)&&(n=(a=Math.min(e,Garnish.$win.width()-2*this.settings.minGutter))/r)}this._resizeContainer(a,n),this.$spinner=$('').appendTo(this.$container);var o=this.$container.height()/2-this.$spinner.height()/2+"px",l=this.$container.width()/2-this.$spinner.width()/2+"px";this.$spinner.css({left:l,top:o,position:"absolute"}),this.requestId++;var h={assetId:t,requestId:this.requestId},d=function(){s.$container.removeClass("loading"),s.$spinner.remove(),s.loaded=!0};Craft.sendActionRequest("POST","assets/preview-file",{data:h}).then((function(t){if(d(),t.data.requestId==s.requestId){if(!t.data.previewHtml)return s.$container.addClass("zilch"),s.$container.append($("",{text:Craft.t("app","No preview available.")})),void s._addBumperButtons();s.$container.removeClass("zilch"),s.$container.attr("data-asset-id",s.assetId),s.$container.append(t.data.previewHtml),s._addBumperButtons(),s._addModalName(),Craft.appendHeadHtml(t.data.headHtml),Craft.appendBodyHtml(t.data.bodyHtml)}})).catch((function(t){var e=t.response;d(),Craft.cp.displayError(e.data.message),s.hide()}))},_resizeContainer:function(t,e){this.$container.css({width:t,"min-width":t,"max-width":t,height:e,"min-height":e,"max-height":e,top:(Garnish.$win.height()-e)/2,left:(Garnish.$win.width()-t)/2})}},{defaultSettings:{startingWidth:null,startingHeight:null}})},872:function(){Craft.ProgressBar=Garnish.Base.extend({$progressBar:null,$innerProgressBar:null,$progressBarStatus:null,_itemCount:0,_processedItemCount:0,_displaySteps:!1,init:function(t,e){e&&(this._displaySteps=!0),this.$progressBar=$('').appendTo(t),this.$innerProgressBar=$('').appendTo(this.$progressBar),this.$progressBarStatus=$('').insertAfter(this.$progressBar),this.resetProgressBar()},resetProgressBar:function(){this.setProgressPercentage(100),this.$progressBar.addClass("pending"),this.setItemCount(1),this.setProcessedItemCount(0),this.$progressBarStatus.html(""),this._displaySteps&&this.$progressBar.addClass("has-status")},hideProgressBar:function(){this.$progressBar.addClass("hidden"),this.$progressBarStatus.addClass("hidden")},showProgressBar:function(){this.$progressBar.removeClass("hidden"),this.$progressBarStatus.removeClass("hidden")},setItemCount:function(t){this._itemCount=t},incrementItemCount:function(t){this._itemCount+=t},setProcessedItemCount:function(t){this._processedItemCount=t},incrementProcessedItemCount:function(t){this._processedItemCount+=t},updateProgressBar:function(){this._itemCount=Math.max(this._itemCount,1);var t=Math.min(100,Math.round(100*this._processedItemCount/this._itemCount));this.setProgressPercentage(t),this._displaySteps&&this.$progressBarStatus.html(this._processedItemCount+" / "+this._itemCount)},setProgressPercentage:function(t,e){0===t?this.$progressBar.addClass("pending"):(this.$progressBar.removeClass("pending"),e?this.$innerProgressBar.velocity("stop").velocity({width:t+"%"},"fast"):this.$innerProgressBar.velocity("stop").width(t+"%"))}})},1396:function(){Craft.PromptHandler=Garnish.Base.extend({modal:null,$modalContainerDiv:null,$prompt:null,$promptApplyToRemainingContainer:null,$promptApplyToRemainingCheckbox:null,$promptApplyToRemainingLabel:null,$pomptChoices:null,_prompts:[],_promptBatchCallback:$.noop,_promptBatchReturnData:[],_promptBatchNum:0,resetPrompts:function(){this._prompts=[],this._promptBatchCallback=$.noop,this._promptBatchReturnData=[],this._promptBatchNum=0},addPrompt:function(t){this._prompts.push(t)},getPromptCount:function(){return this._prompts.length},showBatchPrompts:function(t){this._promptBatchCallback=t,this._promptBatchReturnData=[],this._promptBatchNum=0,this._showNextPromptInBatch()},_showNextPromptInBatch:function(){var t=this._prompts[this._promptBatchNum].prompt,e=this._prompts.length-(this._promptBatchNum+1);this._showPrompt(t.message,t.choices,this._handleBatchPromptSelection.bind(this),e,t.modalSettings)},_handleBatchPromptSelection:function(t,e){var i=this._prompts[this._promptBatchNum],s=this._prompts.length-(this._promptBatchNum+1),n=$.extend(i,{choice:t});this._promptBatchReturnData.push(n),s?(this._promptBatchNum++,e?this._handleBatchPromptSelection(t,!0):this._showNextPromptInBatch()):"function"==typeof this._promptBatchCallback&&this._promptBatchCallback(this._promptBatchReturnData)},_showPrompt:function(t,e,i,s,n){this._promptCallback=i,null===this.modal&&(this.modal=new Garnish.Modal(Object.assign({closeOtherModals:!1},n))),null===this.$modalContainerDiv&&(this.$modalContainerDiv=$('').addClass().appendTo(Garnish.$bod)),this.$prompt=$('').appendTo(this.$modalContainerDiv.empty()),this.$promptMessage=$('').appendTo(this.$prompt),this.$promptChoices=$('').appendTo(this.$prompt),this.$promptApplyToRemainingContainer=$('').appendTo(this.$prompt).hide(),this.$promptApplyToRemainingCheckbox=$('').appendTo(this.$promptApplyToRemainingContainer),this.$promptApplyToRemainingLabel=$("").appendTo(this.$promptApplyToRemainingContainer),this.$promptButtons=$('').appendTo(this.$prompt),this.modal.setContainer(this.$modalContainerDiv),this.$promptMessage.html(t);for(var a=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$promptButtons),r=$("",{type:"submit",class:"btn submit disabled",text:Craft.t("app","OK")}).appendTo(this.$promptButtons),o=0;o ").appendTo(this.$promptChoices).find("input");this.addListener(l,"click",(function(){r.removeClass("disabled")}))}this.addListener(r,"activate",(function(t){var e=$(t.currentTarget).parents(".modal").find("input[name=promptAction]:checked").val(),i=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice(e,i)})),this.addListener(a,"activate",(function(){var t=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice("cancel",t)})),s&&(this.$promptApplyToRemainingContainer.show(),this.$promptApplyToRemainingLabel.html(" "+Craft.t("app","Apply this to the {number} remaining conflicts?",{number:s}))),this.modal.show(),this.modal.removeListener(Garnish.Modal.$shade,"click"),this.addListener(Garnish.Modal.$shade,"click","_cancelPrompt")},_selectPromptChoice:function(t,e){var i=this;this.$prompt.fadeOut("fast",(function(){i.modal.hide(),i._promptCallback(t,e)}))},_cancelPrompt:function(){this._selectPromptChoice("cancel",!0)}})},8960:function(){Craft.Queue=Garnish.Base.extend({running:!1,paused:!1,pausedForVisibility:!1,jobs:null,get length(){return this.jobs.length},get isPaused(){return this.paused||this.pausedForVisibility},init:function(){var t=this;this.jobs=[],Garnish.$doc.on("visibilitychange",(function(){t.pausedForVisibility&&Craft.isVisible()&&(t.pausedForVisibility=!1,t._resume())}))},push:function(t){return this._add(t,"push")},unshift:function(t){return this._add(t,"unshift")},pause:function(){this.paused||(this.paused=!0,this.pausedForVisibility||this.trigger("pause"))},resume:function(){this.paused&&(this.paused=!1,this._resume())},_add:function(t,e){var i=this;return new Promise((function(s,n){i.jobs[e]((function(){return new Promise((function(e,i){t().then((function(t){s(t),e()})).catch((function(t){n(t),i()}))}))})),i.running||(i.trigger("beforeRun"),i.running=!0,i._exec())}))},clear:function(){this.jobs.length=0},_exec:function(){var t=this;if(!this.jobs.length)return this.running=!1,void this.trigger("afterRun");this.pausedForVisibility||Craft.isVisible()||(this.pausedForVisibility=!0,this.paused||this.trigger("pause")),this.paused||this.pausedForVisibility||(this.trigger("beforeExec"),this.jobs.shift()().finally((function(){t.trigger("afterExec"),t._exec()})))},_resume:function(){this.isPaused||(this.trigger("resume"),this._exec())}}),Craft.queue=new Craft.Queue},4070:function(){!function(t){Craft.SlidePicker=Garnish.Base.extend({min:null,max:null,totalSteps:null,value:null,label:null,describedBy:null,$container:null,$buttons:null,init:function(e,i){var s=this;this.setSettings(i,Craft.SlidePicker.defaults),this.$container=t("",{class:"slide-picker",role:"slider",tabindex:0}),this.refresh(),this.setValue(e,!1),this.addListener(this.$container,"keydown",(function(t){switch(t.keyCode){case Garnish.UP_KEY:s.setValue(s.value+s.settings.step),t.preventDefault();break;case Garnish.DOWN_KEY:s.setValue(s.value-s.settings.step),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?s.setValue(s.value+s.settings.step):s.setValue(s.value-s.settings.step),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?s.setValue(s.value-s.settings.step):s.setValue(s.value+s.settings.step),t.preventDefault();break;case Garnish.HOME_KEY:s.setValue(s.min),t.preventDefault();break;case Garnish.END_KEY:s.setValue(s.max),t.preventDefault()}}))},refresh:function(){var e=this;if(this.min=this._min(),this.max=this._max(),this.totalSteps=(this.max-this.min)/this.settings.step,this.label=this.settings.label,this.describedBy=this.settings.describedBy,!Number.isInteger(this.totalSteps))throw"Invalid SlidePicker config";this.$buttons&&this.$buttons.remove(),this.$container.attr("aria-valuemin",this.min),this.$container.attr("aria-valuemax",this.max),this.label&&this.$container.attr("aria-label",this.label),this.describedBy&&this.$container.attr("aria-describedby",this.describedBy),this.$buttons=t();for(var i=this.min;i<=this.max;i+=this.settings.step)this.$buttons=this.$buttons.add(t("",{title:this.settings.valueLabel(i),data:{value:i}}));if(this.$buttons.appendTo(this.$container),null!==this.value){var s=this.value;this.value=null,this.setValue(s,!1)}this.addListener(this.$buttons,"mouseover",(function(i){e.$buttons.removeClass("active-hover last-active-hover"),t(i.currentTarget).addClass("active-hover last-active-hover").prevAll().addClass("active-hover")})),this.addListener(this.$buttons,"mouseout",(function(){e.$buttons.removeClass("active-hover")})),this.addListener(this.$buttons,"click",(function(i){e.setValue(t.data(i.currentTarget,"value")),i.stopPropagation(),e.$container.focus()}))},setValue:function(t,e){if(t=Math.max(Math.min(t,this.max),this.min),this.value!==(this.value=t)){this.$container.attr({"aria-valuenow":this.value,"aria-valuetext":this.settings.valueLabel(this.value)}),this.$buttons.removeClass("last-active active");var i=this.$buttons.eq((this.value-this.min)/this.settings.step);i.add(i.prevAll()).addClass("active"),i.addClass("last-active"),!1!==e&&this.settings.onChange(t)}},_min:function(){return"function"==typeof this.settings.min?this.settings.min():this.settings.min},_max:function(){return"function"==typeof this.settings.max?this.settings.max():this.settings.max}},{defaults:{min:0,max:100,step:10,valueLabel:null,onChange:t.noop}})}(jQuery)},5763:function(){Craft.SlideRuleInput=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,$input:null,value:null,startPositionX:null,init:function(t,e){var i=this;this.setSettings(e,Craft.SlideRuleInput.defaultSettings),this.value=0,this.graduationsMin=-70,this.graduationsMax=70,this.slideMin=-45,this.slideMax=45,this.$container=$("#"+t),this.$overlay=$('').appendTo(this.$container),this.$cursor=$('').appendTo(this.$container),this.$graduations=$('').appendTo(this.$container),this.$graduationsUl=$("").appendTo(this.$graduations),this.$container.attr({role:"slider",tabindex:"0","aria-valuemin":this.slideMin,"aria-valuemax":this.slideMax,"aria-valuenow":"0","aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:0})});for(var s=this.graduationsMin;s<=this.graduationsMax;s++){var n=$(''+s+" ").appendTo(this.$graduationsUl);s%5==0&&n.addClass("main-graduation"),0===s&&n.addClass("selected")}this.$options=this.$container.find(".graduation"),this.addListener(this.$container,"resize",this._handleResize.bind(this)),this.addListener(this.$container,"tapstart",this._handleTapStart.bind(this)),this.addListener(Garnish.$bod,"tapmove",this._handleTapMove.bind(this)),this.addListener(Garnish.$bod,"tapend",this._handleTapEnd.bind(this)),this.addListener(this.$container,"keydown",this._handleKeypress.bind(this)),setTimeout((function(){i.graduationsCalculatedWidth=10*(i.$options.length-1),i.$graduationsUl.css("left",-i.graduationsCalculatedWidth/2+i.$container.width()/2)}),50)},_handleResize:function(){var t=this.valueToPosition(this.value);this.$graduationsUl.css("left",t)},_handleKeypress:function(t){var e=parseInt(this.$container.attr("aria-valuenow"),10);switch(t.keyCode){case Garnish.UP_KEY:case Garnish.RIGHT_KEY:this.setValue(e+1);break;case Garnish.DOWN_KEY:case Garnish.LEFT_KEY:this.setValue(e-1);break;case Garnish.PAGE_UP_KEY:this.setValue(e+10);break;case Garnish.PAGE_DOWN_KEY:this.setValue(e-10);break;case Garnish.HOME_KEY:this.setValue(this.slideMin);break;case Garnish.END_KEY:this.setValue(this.slideMax)}this.onChange()},_handleTapStart:function(t,e){t.preventDefault(),this.startPositionX=e.position.x,this.startLeft=this.$graduationsUl.position().left,this.dragging=!0,this.onStart()},_handleTapMove:function(t,e){if(this.dragging){t.preventDefault();var i=this.startPositionX-e.position.x,s=this.startLeft-i,n=this.positionToValue(s);this.setValue(n),this.onChange()}},setValue:function(t){var e=this.valueToPosition(t);tthis.slideMax&&(t=this.slideMax,e=this.valueToPosition(t)),this.$graduationsUl.css("left",e),t>=this.slideMin&&t<=this.slideMax&&(this.$options.removeClass("selected"),$.each(this.$options,(function(e,i){$(i).data("graduation")>0&&$(i).data("graduation")<=t&&$(i).addClass("selected"),$(i).data("graduation")<0&&$(i).data("graduation")>=t&&$(i).addClass("selected"),0==$(i).data("graduation")&&$(i).addClass("selected")}))),this.$container.attr({"aria-valuenow":t,"aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:parseInt(t,10)})}),this.value=t},_handleTapEnd:function(t){this.dragging&&(t.preventDefault(),this.dragging=!1,this.onEnd())},positionToValue:function(t){var e=-1*this.graduationsMin,i=-1*(this.graduationsMin-this.graduationsMax);return(this.$graduations.width()/2+-1*t)/this.graduationsCalculatedWidth*i-e},valueToPosition:function(t){var e=-1*this.graduationsMin,i=-1*(this.graduationsMin-this.graduationsMax);return-((t+e)*this.graduationsCalculatedWidth/i-this.$graduations.width()/2)},onStart:function(){"function"==typeof this.settings.onChange&&this.settings.onStart(this)},onChange:function(){"function"==typeof this.settings.onChange&&this.settings.onChange(this)},onEnd:function(){"function"==typeof this.settings.onChange&&this.settings.onEnd(this)},defaultSettings:{onStart:$.noop,onChange:$.noop,onEnd:$.noop}})},5759:function(){!function(t){Craft.Slideout=Garnish.Base.extend({$outerContainer:null,$container:null,$shade:null,isOpen:!1,useMobileStyles:null,init:function(e,i){this.setSettings(i,Craft.Slideout.defaults),this.$outerContainer=t("",{class:"slideout-container hidden"}),this.$container=t("<".concat(this.settings.containerElement,"/>"),this.settings.containerAttributes).attr("data-slideout","").addClass("slideout").append(e).data("slideout",this).appendTo(this.$outerContainer),Garnish.addModalAttributes(this.$outerContainer),Craft.trapFocusWithin(this.$container),this.settings.autoOpen&&this.open()},open:function(){var e=this;if(!this.isOpen){this.setTriggerElement(document.activeElement),this._cancelTransitionListeners();var i=Craft.Preview.getActive()||Craft.LivePreview.getActive();if(this.useMobileStyles=i||Craft.useMobileStyles(),this.$outerContainer.removeClass("so-mobile so-lp"),this.$container.removeClass("so-mobile so-lp"),i?(this.$outerContainer.addClass("so-lp"),this.$container.addClass("so-lp")):this.useMobileStyles&&this.$container.addClass("so-mobile"),i||!this.useMobileStyles?(this.$shade||(this.$shade=t(''),this.settings.closeOnShadeClick&&this.addListener(this.$shade,"click",(function(t){t.stopPropagation(),e.close()}))),this.$shade.appendTo(Garnish.$bod).show()):this.$shade&&(this.$shade.remove(),delete this.$shade),this.$outerContainer.appendTo(Garnish.$bod).removeClass("hidden"),i){this.updateWidthsForPreviewPane(i);var s=function(){e.isOpen&&e.updateWidthsForPreviewPane(i)};i.on("drag",s),i.on("beforeClose",(function(){i.off("drag",s)}))}this.useMobileStyles?this.$container.css("top","100vh").css(Garnish.ltr?"left":"right",""):this.$container.css("top","").css(Garnish.ltr?"left":"right","100vw"),this.$container.one("transitionend.slideout",(function(){Craft.setFocusWithin(e.$container)})),this.$shade&&(this.$shade[0].offsetWidth,this.$shade.addClass("so-visible")),this.$container[0].offsetWidth,Craft.Slideout.addPanel(this),this.enable(),Garnish.uiLayerManager.addLayer(this.$outerContainer),Garnish.hideModalBackgroundLayers(),this.settings.closeOnEsc&&Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){e.close()})),this.isOpen=!0,this.trigger("open")}},updateWidthsForPreviewPane:function(t){var e=t.$editorContainer.width()-1;this.$shade&&this.$shade.width(e),this.$outerContainer.css("width","calc(".concat(e,"px - var(--m) * 2)"))},setTriggerElement:function(t){this.settings.triggerElement=t},close:function(){var t=this;this.isOpen&&(this.trigger("beforeClose"),this.disable(),this.isOpen=!1,this._cancelTransitionListeners(),this.$shade&&this.$shade.removeClass("so-visible").one("transitionend.slideout",(function(){t.$shade.hide()})),Craft.Slideout.removePanel(this),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$container.one("transitionend.slideout",(function(){t.$outerContainer.addClass("hidden"),t.trigger("close")})),this.settings.triggerElement&&this.settings.triggerElement.focus())},_cancelTransitionListeners:function(){this.$shade&&this.$shade.off("transitionend.slideout"),this.$container.off("transitionend.slideout")},destroy:function(){this.$shade&&(this.$shade.remove(),this.$shade=null),this.$outerContainer.remove(),this.$outerContainer=null,this.$container=null,this.base()}},{defaults:{containerElement:"div",containerAttributes:{},autoOpen:!0,closeOnEsc:!0,closeOnShadeClick:!0,triggerElement:null},openPanels:[],addPanel:function(t){Craft.Slideout.openPanels.unshift(t),t.useMobileStyles?t.$container.css("top",0):Craft.Slideout.updateStyles()},removePanel:function(t){Craft.Slideout.openPanels=Craft.Slideout.openPanels.filter((function(e){return e!==t})),t.useMobileStyles?t.$container.css("top","100vh"):(t.$container.css(Garnish.ltr?"left":"right","100vw"),Craft.Slideout.updateStyles())},updateStyles:function(){var t=Craft.Slideout.openPanels.length;Craft.Slideout.openPanels.forEach((function(e,i){e.$container.css(Garnish.ltr?"left":"right","".concat((t-i)/t*50,"vw"))})),0!==t?Garnish.$bod.addClass("no-scroll"):Garnish.$bod.removeClass("no-scroll")}})}(jQuery)},5185:function(){Craft.SlugGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),Craft.limitAutoSlugsToAscii&&(t=Craft.asciiString(t,this.settings.charMap)),Craft.allowUppercaseInSlug||(t=t.toLowerCase());var e=Craft.filterArray(XRegExp.matchChain(t,[XRegExp("[\\p{L}\\p{N}\\p{M}]+")]));return e.length?e.join(Craft.slugWordSeparator):""}})},8030:function(){Craft.Structure=Garnish.Base.extend({id:null,$container:null,state:null,structureDrag:null,init:function(t,e,i){this.id=t,this.$container=$(e),this.setSettings(i,Craft.Structure.defaults),this.$container.data("structure")&&(console.warn("Double-instantiating a structure on an element"),this.$container.data("structure").destroy()),this.$container.data("structure",this),this.state={},this.settings.storageKey&&$.extend(this.state,Craft.getLocalStorage(this.settings.storageKey,{})),void 0===this.state.collapsedElementIds&&(this.state.collapsedElementIds=[]);for(var s=this.$container.find("ul").prev(".row"),n=0;n').prependTo(a);-1!==$.inArray(a.children(".element").data("id"),this.state.collapsedElementIds)&&r.addClass("collapsed"),this.initToggle(o)}this.settings.sortable&&(this.structureDrag=new Craft.StructureDrag(this,this.settings.maxLevels)),this.settings.newChildUrl&&this.initNewChildMenus(this.$container.find(".add"))},initToggle:function(t){var e=this;t.on("click",(function(t){var i=$(t.currentTarget).closest("li"),s=i.children(".row").find(".element:first").data("id"),n=$.inArray(s,e.state.collapsedElementIds);i.hasClass("collapsed")?(i.removeClass("collapsed"),-1!==n&&e.state.collapsedElementIds.splice(n,1)):(i.addClass("collapsed"),-1===n&&e.state.collapsedElementIds.push(s)),e.settings.storageKey&&Craft.setLocalStorage(e.settings.storageKey,e.state)}))},initNewChildMenus:function(t){this.addListener(t,"click","onNewChildMenuClick")},onNewChildMenuClick:function(t){var e=$(t.currentTarget);if(!e.data("menubtn")){var i=e.parent().children(".element").data("id"),s=Craft.getUrl(this.settings.newChildUrl,"parentId="+i);$('").insertAfter(e),new Garnish.MenuBtn(e).showMenu()}},getIndent:function(t){return Craft.Structure.baseIndent+(t-1)*Craft.Structure.nestedIndent},addElement:function(t){var e=$('').appendTo(this.$container),i=$('').appendTo(e);if(i.append(t),this.settings.sortable&&(i.append(' '),this.structureDrag.addItems(e)),this.settings.newChildUrl){var s=$(' ').appendTo(i);this.initNewChildMenus(s)}i.css("margin-bottom",-30),i.velocity({"margin-bottom":0},"fast")},removeElement:function(t){var e,i=this,s=t.parent().parent();this.settings.sortable&&this.structureDrag.removeItems(s),s.siblings().length||(e=s.parent()),s.css("visibility","hidden").velocity({marginBottom:-s.height()},"fast",(function(){s.remove(),void 0!==e&&i._removeUl(e)}))},_removeUl:function(t){t.siblings(".row").children(".toggle").remove(),t.remove()},destroy:function(){this.$container.removeData("structure"),this.base()}},{baseIndent:8,nestedIndent:35,defaults:{storageKey:null,sortable:!1,newChildUrl:null,maxLevels:null}})},3096:function(){Craft.StructureDrag=Garnish.Drag.extend({structure:null,maxLevels:null,draggeeLevel:null,$helperLi:null,$targets:null,draggeeHeight:null,init:function(t,e){this.structure=t,this.maxLevels=e,this.$insertion=$(' ');var i=this.structure.$container.find("li");this.base(i,{handle:".element:first, .move:first",helper:this.getHelper.bind(this)})},getHelper:function(t){this.$helperLi=t;var e=$(' ').append(t);return t.css("padding-"+Craft.left,this.$draggee.css("padding-"+Craft.left)),t.find(".move").removeAttr("title"),e},onDragStart:function(){var t=this;this.$targets=$(),this.findTargets(this.structure.$container),this.draggeeLevel=0;var e=this.$draggee;do{this.draggeeLevel++,e=e.find("> ul > li")}while(e.length);this.draggeeHeight=this.$draggee.height(),this.$draggee.velocity({height:0},"fast",(function(){t.$draggee.addClass("hidden")})),this.base(),this.addListener(Garnish.$doc,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&this.cancelDrag()}))},findTargets:function(t){for(var e=t.children().not(this.$draggee),i=0;i =this._.targetOffset.top+5&&this._.targetYDiff=this._.closestTargetOffset.top+this._.closestTargetHeight-5,this._.$nextTargetLi&&this._.nextTargetLevel==this._.closestTargetLevel)this._.hoveringBetweenRows?(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel-1)&&this.$insertion.insertAfter(this._.$closestTargetLi):(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover");else if(this._.$nextTargetLi&&this._.nextTargetLevel>this._.closestTargetLevel)(!this.maxLevels||this.maxLevels>=this._.nextTargetLevel+this.draggeeLevel-1)&&(this._.hoveringBetweenRows?this.$insertion.insertBefore(this._.$nextTargetLi):(this._.$closestTarget.addClass("draghover"),this.$insertion.appendTo(this._.$closestTargetLi.children("ul"))));else if(this._.hoveringBetweenRows){for(this._.draggeeX=this.mouseX-this.targetItemMouseDiffX,"rtl"===Craft.orientation&&(this._.draggeeX+=this.$helperLi.width()),this._.$parentLis=this._.$closestTarget.parentsUntil(this.structure.$container,"li"),this._.$closestParentLi=null,this._.closestParentLiXDiff=null,this._.closestParentLevel=null,this._.i=0;this._.i=this._.parentLevel+this.draggeeLevel-1)&&(!this._.$closestParentLi||this._.parentLiXDiff=this._.nextTargetLevel))&&(this._.$closestParentLi=this._.$parentLi,this._.closestParentLiXDiff=this._.parentLiXDiff,this._.closestParentLevel=this._.parentLevel);this._.$closestParentLi&&this.$insertion.insertAfter(this._.$closestParentLi)}else(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover")},cancelDrag:function(){this.$insertion.remove(),this._.$closestTarget&&this._.$closestTarget.removeClass("draghover"),this.onMouseUp()},onDragStop:function(){var t=this;if(this._.$closestTarget&&(this.$insertion.parent().length||this._.$closestTarget.hasClass("draghover"))){var e,i;if(this.$draggee.siblings().length||(e=this.$draggee.parent()),this.$insertion.parent().length){var s=this.$insertion.next().add(this.$insertion.prev());-1===$.inArray(this.$draggee[0],s)?(this.$insertion.replaceWith(this.$draggee),i=!0):(this.$insertion.remove(),i=!1)}else{var n=this._.$closestTargetLi.children("ul");if(e&&n.length&&n[0]===e[0])i=!1;else{if(n.length)this._.$closestTargetLi.hasClass("collapsed")&&this._.$closestTarget.children(".toggle").trigger("click");else{var a=$('').prependTo(this._.$closestTarget);this.structure.initToggle(a),n=$("").appendTo(this._.$closestTargetLi)}this.$draggee.appendTo(n),i=!0}}if(this._.$closestTarget.removeClass("draghover"),i){e&&this.structure._removeUl(e);var r,o=this.$draggee.parentsUntil(this.structure.$container,"li").length+1;o!=this.$draggee.data("level")&&(1==this.$draggee.data("level")?((r={})["padding-"+Craft.left]=38,this.$helperLi.velocity(r,"fast")):1==o&&((r={})["padding-"+Craft.left]=Craft.Structure.baseIndent,this.$helperLi.velocity(r,"fast")),this.setLevel(this.$draggee,o));var l=this.$draggee.children(".row").children(".element"),h={structureId:this.structure.id,elementId:l.data("id"),siteId:l.data("site-id"),prevId:this.$draggee.prev().children(".row").children(".element").data("id"),parentId:this.$draggee.parent("ul").parent("li").children(".row").children(".element").data("id")};Craft.sendActionRequest("POST","structures/move-element",{data:h}).then((function(t){Craft.cp.displaySuccess(Craft.t("app","New order saved."))}))}}this.$draggee.velocity("stop").removeClass("hidden").velocity({height:this.draggeeHeight},"fast",(function(){t.$draggee.css("height","auto")})),this.returnHelpersToDraggees(),this.base()},setLevel:function(t,e){t.data("level",e);var i=this.structure.getIndent(e),s={};s["margin-"+Craft.left]="-"+i+"px",s["padding-"+Craft.left]=i+"px",this.$draggee.children(".row").css(s);for(var n=t.children("ul").children(),a=0;athis._draggeeLevelDelta&&(this._draggeeLevelDelta=n),e=e.add(i),i=i.next()}if(this.draggingLastElements=!i.length,this.maxLevels&&this.draggingLastElements&&this.tableView.getMorePending()){this._loadingDraggeeLevelDelta=!0;var a=this._getAjaxBaseData(this.$targetItem);Craft.sendActionRequest("POST","structures/get-element-level-delta",{data:a}).then((function(e){t._loadingDraggeeLevelDelta=!1,t.dragging&&(t._draggeeLevelDelta=e.data.delta,t.drag(!1))}))}return e},getHelper:function(t){var e=$('').appendTo(Garnish.$bod),i=$('').appendTo(e),s=$('').appendTo(i),n=$("").appendTo(s);t.appendTo(n),this._$firstRowCells=this.tableView.$elementContainer.children("tr:first").children();for(var a=t.children(),r=0;r th > .toggle");if(!c.hasClass("expanded")){c.addClass("expanded");var u=this.tableView._createSpinnerRowAfter(h);this.tableView.elementSelect&&this.tableView.elementSelect.removeItems(this.$targetItem),this.removeItems(this.$targetItem),this.$targetItem.remove(),this.tableView._totalVisible--}break}h=h.prev()}Craft.sendActionRequest("POST","structures/move-element",{data:l}).then((function(e){Craft.cp.displaySuccess(Craft.t("app","New position saved.")),t.onPositionChange(),u&&u.parent().length&&(u.remove(),t.tableView._expandElement(c,!0)),Craft.cp.runQueue()})).catch((function(e){e.response,Craft.cp.displayError(Craft.t("app","A server error occurred.")),t.tableView.elementIndex.updateElements()}))}},onSortChange:function(){this.tableView.elementSelect&&this.tableView.elementSelect.resetItemOrder(),this._positionChanged=!0,this.base()},onPositionChange:function(){var t=this;Garnish.requestAnimationFrame((function(){t.trigger("positionChange"),t.settings.onPositionChange()}))},onReturnHelpersToDraggees:function(){if(this._$firstRowCells.css("width",""),this.draggingLastElements&&this.tableView.getMorePending()){this.tableView._totalVisible+=this.newDraggeeIndexes[0]-this.oldDraggeeIndexes[0];var t=this.$draggee.last().nextAll();t.length&&(this.removeItems(t),t.remove(),this.tableView.maybeLoadMore())}this.base()},_getLevelBounds:function(t,e){if(e&&e.length?this._getLevelBounds._minLevel=e.data("level"):this._getLevelBounds._minLevel=1,t&&t.length?this._getLevelBounds._maxLevel=t.data("level")+1:this._getLevelBounds._maxLevel=1,this.maxLevels){if(1!=this._getLevelBounds._minLevel&&this._getLevelBounds._minLevel+this._draggeeLevelDelta>this.maxLevels)return!1;this._getLevelBounds._maxLevel+this._draggeeLevelDelta>this.maxLevels&&(this._getLevelBounds._maxLevel=this.maxLevels-this._draggeeLevelDelta,this._getLevelBounds._maxLevelthis._targetLevelBounds.max&&(this._updateIndent._indentationDist-=this._updateIndent._targetLevel-this._targetLevelBounds.max,this._updateIndent._targetLevel=this._targetLevelBounds.max),this._targetLevel!==(this._targetLevel=this._updateIndent._targetLevel)&&this._updateAncestorsBeforeRepaint(),this._updateIndent._targetLevelMouseDiff=this._updateIndent._mouseDist-this._updateIndent._indentationDist*Craft.StructureTableSorter.LEVEL_INDENT,this._updateIndent._magnetImpact=Math.round(this._updateIndent._targetLevelMouseDiff/15),Math.abs(this._updateIndent._magnetImpact)>Craft.StructureTableSorter.MAX_GIVE&&(this._updateIndent._magnetImpact=(this._updateIndent._magnetImpact>0?1:-1)*Craft.StructureTableSorter.MAX_GIVE),this._updateIndent._closestLevelMagnetIndent=this._getLevelIndent(this._targetLevel)+this._updateIndent._magnetImpact,this.helpers[0].css("margin-"+Craft.left,this._updateIndent._closestLevelMagnetIndent+this._helperMargin),this._$titleHelperCell.css("width",this._titleHelperCellOuterWidth-this._updateIndent._closestLevelMagnetIndent)},_getLevelIndent:function(t){return(t-1)*Craft.StructureTableSorter.LEVEL_INDENT},_getAjaxBaseData:function(t){return{structureId:this.structureId,elementId:t.data("id"),siteId:t.find(".element:first").data("site-id")}},_getAncestors:function(t,e){if(this._getAncestors._ancestors=[],0!=e)for(this._getAncestors._level=e,this._getAncestors._$prevRow=t.prev();this._getAncestors._$prevRow.length&&!(this._getAncestors._$prevRow.data("level") th > .toggle:first").remove();for(this._updateAncestors._newAncestors=this._getAncestors(this.$targetItem,this._targetLevel),this._updateAncestors._i=0;this._updateAncestors._i').insertAfter(this._updateAncestors._$ancestor.find("> th .move:first"))}this._ancestors=this._updateAncestors._newAncestors,delete this._updateAncestors._i,delete this._updateAncestors._$ancestor,delete this._updateAncestors._newAncestors}},{HELPER_MARGIN:0,LEVEL_INDENT:44,MAX_GIVE:22,defaults:{onPositionChange:$.noop}})},53:function(){function t(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,i)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}(t,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i tbody > tr[data-id="'.concat(e.data.id,'"]'));if(i.length){var s={elementType:t.elementIndex.elementType,source:t.elementIndex.sourceKey,id:e.data.id,siteId:t.elementIndex.siteId};Craft.sendActionRequest("POST","element-indexes/element-table-html",{data:s}).then((function(t){for(var e=t.data,s=0;s th[data-titlecell] .element").replaceWith(e.elementHtml),e.attributeHtml)e.attributeHtml.hasOwnProperty(a)&&n.find('> td[data-attr="'.concat(a,'"]')).html(e.attributeHtml[a])}Craft.cp.elementThumbLoader.load(i)}))}}},Craft.messageReceiver.addEventListener("message",this._broadcastListener))},initTableHeaders:function(){var e,i;if("structure"===this.elementIndex.viewMode)e="structure",i="asc";else{var s=t(this.elementIndex.getSortAttributeAndDirection(),2);e=s[0],i=s[1]}for(var n=this.$table.children("thead").children().children("[data-attribute]"),a=0;a1&&void 0!==arguments[1]&&arguments[1];t.addClass("orderable");var i=t.html(),s=this.$tableCaption.find("[data-sort-instructions]"),n=$("",{id:"".concat(this.elementIndex.idPrefix,"-").concat(t.attr("data-attribute")),type:"button","aria-pressed":"false"}).html(i);s.length&&n.attr("aria-describedby",s.attr("id")),e?(n.attr("aria-pressed","true"),n.on("click",this._handleSelectedSortHeaderClick.bind(this))):n.on("click",this._handleUnselectedSortHeaderClick.bind(this)),t.empty().append(n)},isVerticalList:function(){return!0},getTotalVisible:function(){return this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee:this._totalVisible},setTotalVisible:function(t){this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee=t:this._totalVisible=t},getMorePending:function(){return this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee:this._morePending},setMorePending:function(t){this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee=t:this._morePending=this._morePendingPostStructureTableDraggee=t},getLoadMoreParams:function(){var t=this.base();return this._isStructureTableDraggingLastElements()&&(t.criteria.positionedAfter=this.structureTableSort.$targetItem.data("id")),t},appendElements:function(t){this.base(t),this.structureTableSort&&this.structureTableSort.addItems(t),Craft.cp.updateResponsiveTables()},_collapseElement:function(t,e){if(!e&&!t.hasClass("expanded"))return!1;t.removeClass("expanded"),t.attr("aria-expanded","false");for(var i=t.parent().parent(),s=i.data("id"),n=i.data("level"),a=i.next();a.length;){if(!Garnish.hasAttr(a,"data-spinnerrow")){if(a.data("level")<=n)break;this.elementSelect&&this.elementSelect.removeItems(a),this.structureTableSort&&this.structureTableSort.removeItems(a),this._totalVisible--}var r=a.next();a.remove(),a=r}this.elementIndex.instanceState.collapsedElementIds||(this.elementIndex.instanceState.collapsedElementIds=[]),this.elementIndex.instanceState.collapsedElementIds.push(s),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds),this.maybeLoadMore()},_expandElement:function(t,e){var i=this;if(!e&&t.hasClass("expanded"))return!1;if(t.addClass("expanded"),t.attr("aria-expanded","true"),this.elementIndex.instanceState.collapsedElementIds){var s=t.parent().parent(),n=s.data("id"),a=$.inArray(n,this.elementIndex.instanceState.collapsedElementIds);if(-1!==a){this.elementIndex.instanceState.collapsedElementIds.splice(a,1),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds);var r=this._createSpinnerRowAfter(s),o=$.extend(!0,{},this.settings.params);o.criteria.descendantOf=n,Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:o}).then((function(t){if(r.parent().length){var e=$(t.data.html),s=i._totalVisible+e.length,n=i.settings.batchSize&&e.length===i.settings.batchSize;if(n){var a=r.nextAll();i.elementSelect&&i.elementSelect.removeItems(a),i.structureTableSort&&i.structureTableSort.removeItems(a),a.remove(),s-=a.length}else n=i._morePending;r.replaceWith(e),i.thumbLoader.load(e),(i.elementIndex.actions||i.settings.selectable)&&(i.elementSelect.addItems(e.filter(":not(.disabled)")),i.elementIndex.updateActionTriggers()),i.structureTableSort&&i.structureTableSort.addItems(e),Craft.appendHeadHtml(t.data.headHtml),Craft.appendBodyHtml(t.data.bodyHtml),Craft.cp.updateResponsiveTables(),i.setTotalVisible(s),i.setMorePending(n),i.maybeLoadMore()}})).catch((function(t){Craft.cp.displayError(),r.parent().length}))}}},_createSpinnerRowAfter:function(t){return $(' | ').insertAfter(t)},_isStructureTableDraggingLastElements:function(){return this.structureTableSort&&this.structureTableSort.dragging&&this.structureTableSort.draggingLastElements},_handleSelectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var i="asc"===this.elementIndex.getSelectedSortDirection()?"desc":"asc";this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortDirection(i),this._handleSortHeaderClick(t,e)}},_handleUnselectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var i=e.attr("data-attribute");this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortAttribute(i),this._handleSortHeaderClick(t,e)}},_handleSortHeaderClick:function(t,e){this.$selectedSortHeader&&this.$selectedSortHeader.removeClass("ordered asc desc"),e.addClass("ordered loading"),this.elementIndex.updateElements(),this.elementIndex.setIndexAvailable()},_updateScreenReaderStatus:function(){var e,i;if("structure"===this.elementIndex.viewMode)e="structure",i="asc";else{var s=t(this.elementIndex.getSortAttributeAndDirection(),2);e=s[0],i=s[1]}var n=this.elementIndex.getSortLabel(e);if(n){var a="asc"===i?Craft.t("app","Ascending"):Craft.t("app","Descending"),r=Craft.t("app","Table {name} sorted by {attribute}, {direction}",{name:this.$table.attr("data-name"),attribute:n,direction:a});this.$statusMessage.empty(),this.$statusMessage.text(r)}},_updateTableAttributes:function(t,e){var i=t.closest("tr");for(var s in e)e.hasOwnProperty(s)&&i.children('[data-attr="'+s+'"]:first').html(e[s])},destroy:function(){this._broadcastListener&&(Craft.messageReceiver.removeEventListener("message",this._broadcastListener),delete this._broadcastListener),this.base()}})},7745:function(){Craft.Tabs=Garnish.Base.extend({$container:null,$tablist:null,$menuBtn:null,$tabs:null,$firstTab:null,$lastTab:null,$selectedTab:null,$focusableTab:null,menu:null,init:function(t){var e=this;this.$container=$(t),this.$tablist=this.$container.find('> [role="tablist"]:first'),this.$tabs=this.$tablist.find('> [role="tab"]'),this.$firstTab=this.$tabs.first(),this.$lastTab=this.$tabs.last(),this.$selectedTab=this.$tabs.filter(".sel:first"),this.$focusableTab=this.$tabs.filter("[tabindex=0]:first"),this.$menuBtn=this.$container.find("> .menubtn:first").menubtn(),this.menu=this.$menuBtn.data("menubtn").menu,this.$container.data("tabs")&&(console.warn("Double-instantiating a tab manager on an element"),this.$container.data("tabs").destroy()),this.$container.data("tabs",this);for(var i=0;i1&&void 0!==arguments[1])||arguments[1],i=this._getTab(t);if(i[0]!==this.$selectedTab[0]){this.deselectTab(),this.$selectedTab=i.addClass("sel").attr("aria-selected","true"),this.makeTabFocusable(i),e&&i.trigger("focus"),this.scrollToTab(i),this.menu.$options.removeClass("sel"),this.menu.$options.filter('[data-id="'.concat(i.data("id"),'"]')).addClass("sel"),this.trigger("selectTab",{$tab:i}),$("#content").trigger("scroll");var s=i.closest(".slideout-container");s.length&&s.find(".so-content").trigger("scroll")}},deselectTab:function(){var t=this.$selectedTab.removeClass("sel").attr("aria-selected","false");this.$selectedTab=null,this.trigger("deselectTab",{$tab:t})},makeTabFocusable:function(t){var e=this._getTab(t);e[0]!==this.$focusableTab[0]&&(this.$focusableTab.attr("tabindex","-1"),this.$focusableTab=e.attr("tabindex","0"))},scrollToTab:function(t){var e=this._getTab(t),i=this.$tablist.scrollLeft(),s=e.offset().left-this.$tablist.offset().left,n=!1;if(s<0)n=i+s-24;else{var a=e.outerWidth(),r=this.$tablist.prop("clientWidth");s+a>r&&(n=i+(s-(r-a))+24)}!1!==n&&this.$tablist.scrollLeft(n)},updateMenuBtn:function(){Math.floor(this.$tablist.prop("scrollWidth")-48)>this.$container.prop("clientWidth")?(this.$tablist.addClass("scrollable"),this.$menuBtn.removeClass("hidden")):(this.$tablist.removeClass("scrollable"),this.$menuBtn.addClass("hidden"))},_getTab:function(t){if(t instanceof jQuery)return t;if(t instanceof HTMLElement)return $(t);if("string"!=typeof t)throw"Invalid tab ID";var e=this.$tabs.filter('[data-id="'.concat(t,'"]'));if(!e.length)throw"Invalid tab ID: ".concat(t);return e},destroy:function(){this.$container.removeData("tabs"),this.base()}})},5074:function(){Craft.TagSelectInput=Craft.BaseElementSelectInput.extend({searchTimeout:null,searchMenu:null,$container:null,$elementsContainer:null,$elements:null,$addTagInput:null,$spinner:null,_ignoreBlur:!1,init:function(t){var e=this;if(!$.isPlainObject(t)){for(var i={},s=["id","name","tagGroupId","sourceElementId"],n=0;n').appendTo(Garnish.$bod),a=$("").appendTo(s),r=0;r").appendTo(a),$('').appendTo(i).text(e.data.tags[r].title).data("id",e.data.tags[r].id).addClass(e.data.tags[r].exclude?"disabled":"");e.data.exactMatch||(i=$("").appendTo(a),$('').appendTo(i).text(n.search)),a.find("a:not(.disabled):first").addClass("hover"),t.searchMenu=new Garnish.Menu(s,{attachToElement:t.$addTagInput,onOptionSelect:t.selectTag.bind(t)}),t.addListener(s,"mousedown",(function(){t._ignoreBlur=!0})),t.searchMenu.show()})).catch((function(e){e.response,t.searchMenu&&t.killSearchMenu(),t.$spinner.addClass("hidden")}))}else this.$spinner.addClass("hidden")},selectTag:function(t){var e=this,i=$(t);if(!i.hasClass("disabled")){var s=i.data("id"),n=i.text(),a=$("",{class:"element small removable","data-id":s,"data-site-id":this.settings.targetSiteId,"data-label":n,"data-editable":"1"}).appendTo(this.$elementsContainer),r=$("",{type:"hidden",name:this.settings.name+"[]",value:s}).appendTo(a);$("",{class:"delete icon",title:Craft.t("app","Remove"),type:"button","aria-label":Craft.t("app","Remove {label}",{label:n})}).appendTo(a);var o=$("",{class:"label"}).appendTo(a);if($("",{class:"title",text:n}).appendTo(o),this.$elements=this.$elements.add(a),this.addElements(a),this.killSearchMenu(),this.$addTagInput.val(""),this.$addTagInput.trigger("focus"),!s){a.addClass("loading disabled");var l={groupId:this.settings.tagGroupId,title:n};Craft.sendActionRequest("POST","tags/create-tag",{data:l}).then((function(t){a.attr("data-id",t.data.id),r.val(t.data.id),a.removeClass("loading disabled")})).catch((function(t){t.response,e.removeElement(a),Craft.cp.displayError(Craft.t("app","A server error occurred."))}))}}},killSearchMenu:function(){this.searchMenu.hide(),this.searchMenu.destroy(),this.searchMenu=null}},{defaults:{tagGroupId:null}})},3958:function(){Craft.ThumbsElementIndexView=Craft.BaseElementIndexView.extend({getElementContainer:function(){return this.$container.children("ul")}})},1592:function(){Craft.ui={createButton:function(t){var e=$("",{type:t.type||"button",class:"btn"});return t.id&&e.attr("id",t.id),t.class&&e.addClass(t.class),t.ariaLabel&&e.attr("aria-label",t.ariaLabel),t.role&&e.attr("role",t.role),t.html?e.html(t.html):t.label?e.append($('').text(t.label)):e.addClass("btn-empty"),t.toggle&&e.attr("aria-expanded","false"),t.controls&&e.attr("aria-controls",t.controls),t.spinner&&e.append($('')),e},createSubmitButton:function(t){var e=this.createButton(Object.assign({},t,{type:"submit",label:t.label||Craft.t("app","Submit")}));return e.addClass("submit"),e},createTextInput:function(t){t=$.extend({autocomplete:!1},t);var e=$("",{attr:{class:"text",type:t.type||"text",inputmode:t.inputmode,id:t.id,size:t.size,name:t.name,value:t.value,maxlength:t.maxlength,autofocus:this.getAutofocusValue(t.autofocus),autocomplete:"boolean"==typeof t.autocomplete?t.autocomplete?"on":"off":t.autocomplete,disabled:this.getDisabledValue(t.disabled),readonly:t.readonly,title:t.title,placeholder:t.placeholder,step:t.step,min:t.min,max:t.max}});return t.class&&e.addClass(t.class),t.placeholder&&e.addClass("nicetext"),"password"===t.type&&e.addClass("password"),t.disabled&&e.addClass("disabled"),t.size||e.addClass("fullwidth"),t.showCharsLeft&&t.maxlength&&e.attr("data-show-chars-left").css("padding-"+("ltr"===Craft.orientation?"right":"left"),7.2*t.maxlength.toString().length+14+"px"),(t.placeholder||t.showCharsLeft)&&new Garnish.NiceText(e),"password"===t.type?$('').append(e):e},createTextField:function(t){return t.id||(t.id="text"+Math.floor(1e9*Math.random())),this.createField(this.createTextInput(t),t)},createCopyTextInput:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),i=t.buttonId||"".concat(e,"-btn"),s=$("",{class:"copytext"}),n=this.createTextInput($.extend({},t,{readonly:!0})).appendTo(s);return $("",{type:"button",id:i,class:"btn","data-icon":"clipboard",title:Craft.t("app","Copy to clipboard"),"aria-label":Craft.t("app","Copy to clipboard")}).appendTo(s).on("click",(function(){n[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),s.trigger("copy"),n[0].setSelectionRange(0,0)})),s},createCopyTextBtn:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),i=t.value,s=$("",{class:"copytextbtn-wrapper"}),n=$("",{id:e,class:"copytextbtn",role:"button",title:Craft.t("app","Copy to clipboard"),tabindex:"0"}).appendTo(s);t.class&&n.addClass(t.class);var a=$("",{value:i,readonly:!0,size:i.length,tabindex:"-1","aria-hidden":"true",class:"visually-hidden"}).insertBefore(n);$("",{text:i,class:"copytextbtn__value"}).appendTo(n),$("",{class:"visually-hidden",text:Craft.t("app","Copy to clipboard")}).appendTo(n),$("",{class:"copytextbtn__icon","data-icon":"clipboard","aria-hidden":"true"}).appendTo(n);var r=function(){a[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),n.trigger("copy"),a[0].setSelectionRange(0,0),n.focus()};return n.on("activate",(function(){r()})),n.on("keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(r(),t.preventDefault())})),s},createCopyTextField:function(t){return t.id||(t.id="copytext"+Math.floor(1e9*Math.random())),this.createField(this.createCopyTextInput(t),t)},createCopyTextPrompt:function(t){var e=$("",{class:"modal fitted"}),i=$("",{class:"body"}).appendTo(e);this.createCopyTextField($.extend({size:Math.max(Math.min(t.value.length,50),25)},t)).appendTo(i);var s=i.find("label");s.length>0&&s.attr("id")&&e.attr("aria-labelledby",s.attr("id"));var n=new Garnish.Modal(e,{closeOtherModals:!1});return e.on("copy",(function(){n.hide()})),e},createTextarea:function(t){var e=$("",{class:"text",rows:t.rows||2,cols:t.cols||50,id:t.id,name:t.name,maxlength:t.maxlength,autofocus:t.autofocus&&!Garnish.isMobileBrowser(!0),disabled:!!t.disabled,placeholder:t.placeholder,html:t.value});return t.showCharsLeft&&e.attr("data-show-chars-left",""),t.class&&e.addClass(t.class),t.size||e.addClass("fullwidth"),e},createTextareaField:function(t){return t.id||(t.id="textarea"+Math.floor(1e9*Math.random())),this.createField(this.createTextarea(t),t)},createSelect:function(t){var e=$("",{class:"select"});t.class&&e.addClass(t.class);var i=$("",{id:t.id,name:t.name,autofocus:t.autofocus&&Garnish.isMobileBrowser(!0),disabled:t.disabled,"data-target-prefix":t.targetPrefix,"aria-labelledby":t.labelledBy}).appendTo(e);if($.isPlainObject(t.options)){var s=[];for(var n in t.options)if(t.options.hasOwnProperty(n)){var a=t.options[n];$.isPlainObject(a)?void 0!==a.optgroup?s.push(a):s.push({label:a.label,value:void 0!==a.value?a.value:n,disabled:void 0!==a.disabled&&a.disabled}):s.push({label:a,value:n})}t.options=s}for(var r=null,o=0;o",{label:l.optgroup}).appendTo(i):$("",{value:l.value,selected:l.value==t.value,disabled:void 0!==l.disabled&&l.disabled,html:l.label}).appendTo(r||i)}return t.toggle&&(i.addClass("fieldtoggle"),new Craft.FieldToggle(i)),e},createSelectField:function(t){return t.id||(t.id="select"+Math.floor(1e9*Math.random())),this.createField(this.createSelect(t),t)},createCheckbox:function(t){var e=t.id||"checkbox"+Math.floor(1e9*Math.random()),i=$("",{type:"checkbox",value:void 0!==t.value?t.value:"1",id:e,class:"checkbox",name:t.name,checked:t.checked?"checked":null,autofocus:this.getAutofocusValue(t.autofocus),disabled:this.getDisabledValue(t.disabled),"data-target":t.toggle,"data-reverse-target":t.reverseToggle});t.class&&i.addClass(t.class),(t.toggle||t.reverseToggle)&&(i.addClass("fieldtoggle"),new Craft.FieldToggle(i));var s=$("",{for:e,html:t.label});return t.name&&(t.name.length<3||"[]"!==t.name.slice(-2))?$([$("",{type:"hidden",name:t.name,value:""})[0],i[0],s[0]]):$([i[0],s[0]])},createCheckboxField:function(t){t.id||(t.id="checkbox"+Math.floor(1e9*Math.random()));var e=$('',{id:"".concat(t.id,"-field")});return t.first&&e.addClass("first"),t.instructions&&e.addClass("has-instructions"),this.createCheckbox(t).appendTo(e),t.instructions&&$('').text(t.instructions).appendTo(e),e},createCheckboxSelect:function(t){var e,i,s=$('');t.class&&s.addClass(t.class),t.showAllOption?(e=t.allValue||"*",i=t.values==e,$("").appendTo(s).append(this.createCheckbox({id:t.id,class:"all",label:""+(t.allLabel||Craft.t("app","All"))+"",name:t.name,value:e,checked:i,autofocus:t.autofocus}))):i=!1;for(var n=0;n").appendTo(s).append(this.createCheckbox({label:a.label,name:t.name?t.name+"[]":null,value:a.value,checked:i||(t.values||[]).includes(a.value),disabled:i}))}return new Garnish.CheckboxSelect(s),s},createCheckboxSelectField:function(t){return t.fieldset=!0,t.id||(t.id="checkboxselect"+Math.floor(1e9*Math.random())),this.createField(this.createCheckboxSelect(t),t)},createLightswitch:function(t){var e=t.value||"1",i=t.indeterminateValue||"-",s=$("",{type:"button",class:"lightswitch","data-value":e,"data-indeterminate-value":i,id:t.id,role:"switch","aria-checked":t.on?"true":t.indeterminate?"mixed":"false","aria-labelledby":t.labelId,"data-target":t.toggle,"data-reverse-target":t.reverseToggle});return t.on?s.addClass("on"):t.indeterminate&&s.addClass("indeterminate"),t.small&&s.addClass("small"),t.disabled&&s.addClass("disabled"),$('').appendTo(s),t.name&&$("",{type:"hidden",name:t.name,value:t.on?e:t.indeterminate?i:"",disabled:t.disabled}).appendTo(s),(t.toggle||t.reverseToggle)&&(s.addClass("fieldtoggle"),new Craft.FieldToggle(s)),new Craft.LightSwitch(s,{onChange:t.onChange||$.noop}),s},createLightswitchField:function(t){return t.id||(t.id="lightswitch"+Math.floor(1e9*Math.random())),t.labelId||(t.labelId="".concat(t.id,"-label")),this.createField(this.createLightswitch(t),t).addClass("lightswitch-field")},createColorInput:function(t){var e=t.id||"color"+Math.floor(1e9*Math.random()),i=t.containerId||e+"-container",s=t.name||null,n=t.value||null,a=t.small||!1,r=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("",{id:i,class:"flex color-container"}),h=$("",{class:"color static"+(a?" small":"")}).appendTo(l),d=($("",{class:"color-preview",style:t.value?{backgroundColor:t.value}:null}).appendTo(h),$("",{class:"color-input-container"}).append($("",{class:"color-hex-indicator light code","aria-hidden":"true",text:"#"})).appendTo(l));return this.createTextInput({id:e,name:s,value:Craft.ltrim(n,"#"),size:10,class:"color-input",autofocus:r,disabled:o,"aria-label":Craft.t("app","Color hex value")}).appendTo(d),new Craft.ColorInput(l),l},createColorField:function(t){return t.fieldset=!0,o,t.id||(t.id="color"+Math.floor(1e9*Math.random())),this.createField(this.createColorInput(t),t)},createDateInput:function(t){var e=Garnish.isMobileBrowser(),i=(t.id||"date"+Math.floor(1e9*Math.random()))+"-date",s=t.name||null,n=s?s+"[date]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,r=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("",{class:"datewrapper"}),h=this.createTextInput({id:i,type:e?"date":"text",class:!(!e||a)&&"empty-value",name:n,value:a?e?a.toISOString().split("T")[0]:Craft.formatDate(a):"",placeholder:" ",autocomplete:!1,autofocus:r,disabled:o}).appendTo(l);return $('').appendTo(l),s&&$("",{type:"hidden",name:s+"[timezone]",val:Craft.timezone}).appendTo(l),e?h.datetimeinput():h.datepicker($.extend({defaultDate:a||new Date},Craft.datepickerOptions)),t.hasOuterContainer?l:$('').append(l).datetime()},createDateField:function(t){return t.id||(t.id="date"+Math.floor(1e9*Math.random())),this.createField(this.createDateInput(t),t)},createDateRangePicker:function(t){var e=new Date,i=new Date(e.getFullYear(),e.getMonth(),e.getDate());t=$.extend({class:"",options:["today","thisWeek","thisMonth","thisYear","past7Days","past30Days","past90Days","pastYear"],onChange:$.noop,selected:null,startDate:null,endDate:null},t);var s,n,a=$("",{class:"menu"}),r=$("",{class:"padded"}).appendTo(a),o=$("").addClass("sel").text(Craft.t("app","All")).data("handle","all");$("").append(o).appendTo(r);for(var l=0;l"),u=$("",{text:s.label}).data("handle",h).data("startDate",s.startDate).data("endDate",s.endDate).data("startTime",s.startDate?s.startDate.getTime():null).data("endTime",s.endDate?s.endDate.getTime():null);t.selected&&h==t.selected&&(n=u[0]),c.append(u),c.appendTo(r)}$(" ").appendTo(a);var p=$("",{class:"flex flex-nowrap padded"}).appendTo(a),f=this.createDateField({label:Craft.t("app","From")}).appendTo(p).find("input"),g=this.createDateField({label:Craft.t("app","To")}).appendTo(p).find("input"),m=f.add(g);m.on("keyup",(function(t){t.keyCode===Garnish.ESC_KEY&&$(this).data("datepicker")&&$(this).data("datepicker").dpDiv.is(":visible")&&t.stopPropagation()})),f.data("datepicker")&&f.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()})),g.data("datepicker")&&g.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()}));var v=new Garnish.Menu(a,{onOptionSelect:function(e){var i=$(e);C.text(i.text()),v.setPositionRelativeToAnchor(),a.find(".sel").removeClass("sel"),i.addClass("sel"),f.hasClass("hasDatepicker")?(f.datepicker("setDate",i.data("startDate")),g.datepicker("setDate",i.data("endDate"))):(f.val(i.data("startDate")),g.val(i.data("endDate"))),t.onChange(i.data("startDate")||null,i.data("endDate")||null,i.data("handle"))}});m.on("change",(function(){var e=null,i=null;if(f.hasClass("hasDatepicker"))e=f.datepicker("getDate"),i=g.datepicker("getDate");else{var s=f.val();""!==s&&(e=new Date(Date.parse(s)));var n=g.val();""!==n&&(i=new Date(Date.parse(n)))}for(var o,l=e?e.getTime():null,h=i?i.getTime():null,d=r.find("a"),c=!1,u=0;u",{type:"button",class:b,"data-icon":"date",text:Craft.t("app","All")});if(new Garnish.MenuBtn(C,v),n&&v.selectOption(n),t.startDate)if(f.hasClass("hasDatepicker"))f.datepicker("setDate",t.startDate);else{var _=t.startDate.getTimezoneOffset(),y=new Date(t.startDate.getTime()-60*_*1e3);f.val(y.toISOString().split("T")[0])}if(t.endDate)if(g.hasClass("hasDatepicker"))g.datepicker("setDate",t.endDate);else{var w=t.endDate.getTimezoneOffset(),S=new Date(t.endDate.getTime()-60*w*1e3);g.val(S.toISOString().split("T")[0])}return(t.startDate||t.endDate)&&m.trigger("change"),C},createTimeInput:function(t){var e=Garnish.isMobileBrowser(),i=(t.id||"time"+Math.floor(1e9*Math.random()))+"-time",s=t.name||null,n=s?s+"[time]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,r=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("",{class:"timewrapper"}),h=this.createTextInput({id:i,type:e?"time":"text",class:!(!e||a)&&"empty-value",name:n,placeholder:" ",autocomplete:!1,autofocus:r,disabled:o}).appendTo(l);return $('').appendTo(l),s&&$("",{type:"hidden",name:s+"[timezone]",val:Craft.timezone}).appendTo(l),e?(a&&h.val(a.toISOString().split("T")[1]),h.datetimeinput()):(h.timepicker(Craft.timepickerOptions),a&&h.timepicker("setTime",3600*a.getHours()+60*a.getMinutes()+a.getSeconds())),t.hasOuterContainer?l:$('').append(l).datetime()},createTimeField:function(t){return t.id||(t.id="time"+Math.floor(1e9*Math.random())),this.createField(this.createTimeInput(t),t)},createField:function(t,e){var i=e.label&&"__blank__"!==e.label?e.label:null,s=$(e.fieldset?"":"",{class:"field",id:e.fieldId||(e.id?e.id+"-field":null)});if(e.first&&s.addClass("first"),e.fieldClass&&s.addClass(e.fieldClass),i&&e.fieldset&&$("",{text:i,class:"visually-hidden","data-label":i}).appendTo(s),i){var n=$('').appendTo(s);$(e.fieldset?"":"",{id:e.labelId||(e.id?"".concat(e.id,"-").concat(e.fieldset?"legend":"label"):null),class:e.required?"required":null,for:!e.fieldset&&e.id||null,text:i}).appendTo(n)}if(e.instructions&&$('').text(e.instructions).appendTo(s),$('').append(t).appendTo(s),e.tip){var a=$('');$('').appendTo(a),$('').text(Craft.t("app","Tip")+": ").appendTo(a),$("").text(e.tip).appendTo(a),a.appendTo(s)}if(e.warning){var r=$('');$('').appendTo(r),$('').text(Craft.t("app","Warning")+": ").appendTo(r),$("").text(e.warning).appendTo(r),r.appendTo(s)}return e.errors&&this.addErrorsToField(s,e.errors),s},createErrorList:function(t,e){var i=$('');return e&&i.attr("id",e),t&&this.addErrorsToList(i,t),i},addErrorsToList:function(t,e){for(var i=0;i").text(e[i].replaceAll("*","")).appendTo(t)},addErrorsToField:function(t,e){if(e){t.addClass("has-errors"),t.children(".input").addClass("errors");var i=t.attr("id"),s="";i&&(s=i.replace(new RegExp("(-field)$"),"-errors"));var n=t.children("ul.errors");n.length||(n=this.createErrorList(null,s).appendTo(t)),this.addErrorsToList(n,e)}},clearErrorsFromField:function(t){t.removeClass("has-errors"),t.children(".input").removeClass("errors"),t.children("ul.errors").remove()},clearErrorSummary:function(t){t.prev(".error-summary").remove()},setFocusOnErrorSummary:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",s=t.find(".error-summary");s.length>0&&(s.trigger("focus"),s.find("a").on("click",(function(s){0==$(s.currentTarget).hasClass("cross-site-validate")&&(s.preventDefault(),e.anchorSummaryErrorToField(s.currentTarget,t,i))})))},findErrorsContainerByErrorKey:function(t,e,i){i=this._getPreppedNamespace(i);var s,n,a=e.split(/[\[\]\.]/).filter((function(t){return t}));if(void 0!==a[0])if(void 0===a[2])s=new RegExp("^".concat(i,"fields-").concat(a[0],".*-errors"));else{s=new RegExp("^".concat(i,"fields-").concat(a[0],".*-"));for(var r=Math.ceil(a.length/2)-1,o=0,l=0;l1&&void 0!==a[a.length-2]?n[a[a.length-2]]:n[0]),$(n)},anchorSummaryErrorToField:function(t,e,i){var s=$(t).attr("data-field-error-key");if(s){var n=this.findErrorsContainerByErrorKey(e,s,i);if(n){var a=this.findTabAnchorForField(n,e,i);a&&"false"==a.attr("aria-selected")&&a.click();var r=n.parents(".collapsed, .is-collapsed");if(r.length>0)for(var o=r.length;o>0;o--){var l=$(r[o-1]);null!=l.data("block")?l.data("block").expand():l.find(".titlebar").trigger("doubletap")}var h=n.parents(".field:first");h.is(":visible")?h.attr("tabindex","-1").trigger("focus"):setTimeout((function(){h.attr("tabindex","-1").trigger("focus")}),201)}}},findTabAnchorForField:function(t,e,i){i=this._getPreppedNamespace(i);var s=t.parents("div[id^=".concat(i,'tab][role="tabpanel"]')),n=e.find('[role="tablist"]').find('a[href="#'+s.attr("id")+'"]');return $(n)},getAutofocusValue:function(t){return t&&!Garnish.isMobileBrowser(!0)?"autofocus":null},getDisabledValue:function(t){return t?"disabled":null},_getPreppedNamespace:function(t){return""!==t?t+="-":t}}},1752:function(){function t(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,i)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?e(t,i):void 0}}(t,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);ii.settings.maxFileSize&&(i._rejectedFiles.size.push("“"+t.name+"”"),n=!1),n&&"function"==typeof i.settings.canAddMoreFiles&&!i.settings.canAddMoreFiles(i._validFileCounter)&&(i._rejectedFiles.limit.push("“"+t.name+"”"),n=!1),n&&(i._validFileCounter++,e.submit()),++i._totalFileCounter===e.originalFiles.length&&(i._totalFileCounter=0,i._validFileCounter=0,i.processErrorMessages())})),!0},destroy:function(){var e=this;this.uploader.fileupload("instance")&&this.uploader.fileupload("destroy"),this.$element.off("fileuploadadd",this._onFileAdd),Object.entries(this.events).forEach((function(i){var s=t(i,2),n=s[0],a=s[1];e.$element.off(n,a)}))}},{defaults:{autoUpload:!1,sequentialUploads:!0,maxFileSize:Craft.maxUploadSize,createAction:"assets/upload",replaceAction:"assets/replace-file",deleteAction:"assets/delete-asset"}})},7e3:function(){Craft.UriFormatGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).toLowerCase(),t=(t=(t=Craft.asciiString(t)).replace(/^[^a-z]+/,"")).replace(/[^a-z0-9]+$/,"");var e=Craft.filterArray(t.split(/[^a-z0-9]+/)).join(Craft.slugWordSeparator);return e&&this.settings.suffix&&(e+=this.settings.suffix),e}})},8654:function(){Craft.UserIndex=Craft.BaseElementIndex.extend({init:function(t,e,i){this.on("selectSource",this.updateUrl.bind(this)),this.base(t,e,i)},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSourceSlug)for(var t=0;ti.parts.length&&(s.parts.length=i.parts.length)}else{var r=[];for(n=0;n=0;--n){var a=this.tryEntries[n],r=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var o=s.call(a,"catchLoc"),l=s.call(a,"finallyLoc");if(o&&l){if(this.prev=0;--i){var n=this.tryEntries[i];if(n.tryLoc<=this.prev&&s.call(n,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),T(i),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var s=i.completion;if("throw"===s.type){var n=s.arg;T(i)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:P(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=void 0),p}},t}function s(t,e,i,s,n,a,r){try{var o=t[a](r),l=o.value}catch(t){return void i(t)}o.done?e(l):Promise.resolve(l).then(s,n)}function n(t){return function(){var e=this,i=arguments;return new Promise((function(n,a){var r=t.apply(e,i);function o(t){s(r,n,a,o,l,"next",t)}function l(t){s(r,n,a,o,l,"throw",t)}o(void 0)}))}}function a(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=o(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var s=0,n=function(){};return{s:n,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return r=t.done,t},e:function(t){l=!0,a=t},f:function(){try{r||null==i.return||i.return()}finally{if(l)throw a}}}}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){if(t){if("string"==typeof t)return l(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i'.concat(Craft.t("app","More…"),''),tabManager:null,enableQueue:!0,totalJobs:0,jobInfo:null,displayedJobInfo:null,displayedJobInfoUnchanged:1,trackJobProgressTimeout:null,trackingJobProgress:!1,jobProgressCancelToken:null,jobProgressIcon:null,checkingForUpdates:!1,forcingRefreshOnUpdatesCheck:!1,includingDetailsOnUpdatesCheck:!1,checkForUpdatesCallbacks:null,resizeTimeout:null,init:function(){var t=this;this.elementThumbLoader=new Craft.ElementThumbLoader,0!==Craft.remainingSessionTime&&(this.authManager=new Craft.AuthManager),this.$nav=e()("#nav"),this.$navToggle=e()("#primary-nav-toggle"),this.$globalSidebar=e()("#global-sidebar"),this.$globalContainer=e()("#global-container"),this.$mainContainer=e()("#main-container"),this.$alerts=e()("#alerts"),this.$crumbs=e()("#crumbs"),this.$breadcrumbList=e()(".breadcrumb-list"),this.$breadcrumbItems=e()(".breadcrumb-list li"),this.$notificationContainer=e()("#notifications"),this.$main=e()("#main"),this.$primaryForm=e()("#main-form"),this.$headerContainer=e()("#header-container"),this.$header=e()("#header"),this.$mainContent=e()("#main-content"),this.$details=e()("#details"),this.$sidebarContainer=e()("#sidebar-container"),this.$sidebarToggle=e()("#sidebar-toggle"),this.$sidebar=e()("#sidebar"),this.$contentContainer=e()("#content-container"),this.$collapsibleTables=e()("table.collapsible"),this.isMobile=Garnish.isMobileBrowser(),this.updateContentHeading();for(var i=this.$details.find(".meta > .field > .instructions"),s=0;s",{class:"info",html:n.children().html()}).appendTo(a),n.remove()}if(!this.isMobile&&this.$header.length&&(this.addListener(Garnish.$win,"scroll","updateFixedHeader"),this.updateFixedHeader()),Garnish.$doc.ready((function(){t.addListener(Garnish.$win,"resize",(function(e){if(e.target===window){t.handleWindowResize(),clearTimeout(t.resizeTimeout);var i=t;t.resizeTimeout=setTimeout((function(){i.setSidebarNavAttributes()}),100)}})),t.handleWindowResize(),t.setSidebarNavAttributes(),Garnish.requestAnimationFrame(t.initSpecialForms.bind(t))})),this.$alerts.length&&this.initAlerts(),this.addListener(this.$navToggle,"click","toggleNav"),this.addListener(this.$sidebarToggle,"click","toggleSidebar"),this.$primaryForm.length||(this.$primaryForm=e()("form[data-saveshortcut]:first")),this.$primaryForm.length&&Garnish.hasAttr(this.$primaryForm,"data-saveshortcut")&&function(){var e=[],i=t.$primaryForm.data("actions");if(void 0===i)e.push([{keyCode:Garnish.S_KEY,ctrl:!0},{redirect:t.$primaryForm.data("saveshortcut-redirect"),retainScroll:Garnish.hasAttr(t.$primaryForm,"saveshortcut-scroll")}]);else for(var s=0;s",{class:"visually-hidden",html:Craft.t("app","Unread messages")}),c.addClass("unread").append(h)),this.addListener(c,"click",(function(){if(d)d.show();else{var t="";Craft.announcements.forEach((function(e){t+='')+'"+" ".concat(e.body," ")+" "})),d=new Garnish.HUD(c,''.concat(Craft.t("app","Announcements"),'').concat(t," "),{onShow:function(){c.addClass("active")},onHide:function(){c.removeClass("active")}}),e()("a",d.$main).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===e()(this).attr("target")&&e()(this).attr("rel","noopener").attr("target","_blank")})),u&&(c.removeClass("unread"),h.remove(),Craft.sendActionRequest("POST","users/mark-announcements-as-read",{data:{ids:Craft.announcements.map((function(t){return t.id}))}}))}}))}var p=document.getElementById("footer");p&&new IntersectionObserver((function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,n,a=[],r=!0,o=!1;try{for(i=i.call(t);!(r=(s=i.next()).done)&&(a.push(s.value),!e||a.length!==e);r=!0);}catch(t){o=!0,n=t}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}return a}}(t,e)||o(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,1)[0];e.target.classList.toggle("stuck",e.intersectionRatio<1)}),{rootMargin:"0px 0px -1px 0px",threshold:[1]}).observe(p),this.elementThumbLoader.load(e()("#user-info")),this.elementThumbLoader.load(this.$mainContent)},get $contentHeader(){var t=e()("#content-header");return t.length?t:e()("",{id:"content-header",class:"pane-header"}).prependTo(e()("#content"))},get $noticeContainer(){var t=e()("#content-notice");return t.length?t:e()('').attr("role","status").prependTo(this.$contentHeader)},initSpecialForms:function(){var t=this;if(this.$confirmUnloadForms=e()("form[data-confirm-unload]"),this.$deltaForms=e()("form[data-delta]"),this.$confirmUnloadForms.length){for(var i=this.$confirmUnloadForms.add(this.$deltaForms),s=function(e){var s=i.eq(e);if(!s.data("initialSerializedValue")){var n=s.data("serializer")||function(){return s.serialize()};s.data("initialSerializedValue",n())}t.addListener(s,"submit",(function(t){if(Garnish.hasAttr(s,"data-confirm-unload")&&this.removeListener(Garnish.$win,"beforeunload"),Garnish.hasAttr(s,"data-delta")){t.preventDefault();var e=s.data("serializer")||function(){return s.serialize()},i=Craft.findDeltaData(s.data("initialSerializedValue"),e(),s.data("delta-names"),null,s.data("initial-delta-values"),s.data("modified-delta-names"));Craft.createForm(i).appendTo(Garnish.$bod).submit()}}))},n=0;n a"):void 0},get $selectedTab(){return this.tabManager?this.tabManager.$selectedTab:void 0},get selectedTabIndex(){return this.tabManager?this.tabManager.$tabs.index(this.tabManager.$selectedTab):void 0},get $focusableTab(){return this.tabManager?this.tabManager.$focusableTab:void 0},selectTab:function(t){this.tabManager&&this.tabManager.selectTab(t)},deselectTab:function(){this.tabManager&&this.tabManager.deselectTab()},handleWindowResize:function(){this.updateResponsiveTables(),this.handleBreadcrumbVisibility()},breadcrumbItemsWrap:function(){if(this.$breadcrumbItems[0]){this.$breadcrumbList.css("ltr"===Craft.orientation?"margin-right":"margin-left","");for(var t=this.$breadcrumbList[0].getBoundingClientRect().width,e=0,i=this.$breadcrumbList.find("li"),s=0;s0&&(void 0===this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._check=!0:(this.updateResponsiveTables._isCollapsed=this.updateResponsiveTables._$table.hasClass("collapsed"),this.updateResponsiveTables._containerWidth>this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._isCollapsed&&(this.updateResponsiveTables._$table.removeClass("collapsed"),this.updateResponsiveTables._check=!0):this.updateResponsiveTables._isCollapsed||(this.updateResponsiveTables._check=!0)),this.updateResponsiveTables._check&&this.updateResponsiveTables._$table.width()-30>this.updateResponsiveTables._containerWidth&&this.updateResponsiveTables._$table.addClass("collapsed"),this.updateResponsiveTables._$table.data("lastContainerWidth",this.updateResponsiveTables._containerWidth))},updateFixedHeader:function(){if(!this.isMobile)if(this.$main.length&&this.$headerContainer[0].getBoundingClientRect().top<0){var t=this.$headerContainer.height();this.fixedHeader||(this.$contentContainer.css("min-height","calc(100vh - "+(t+14+48-1)+"px)"),this.$headerContainer.height(t),Garnish.$bod.addClass("fixed-header"),this.fixedHeader=!0),this._setFixedTopPos(this.$sidebar,t),this._setFixedTopPos(this.$details,t)}else this.fixedHeader&&(this.$headerContainer.height("auto"),Garnish.$bod.removeClass("fixed-header"),this.$contentContainer.css("min-height",""),this.$sidebar.removeClass("fixed").css("top",""),this.$details.removeClass("fixed").css("top",""),this.fixedHeader=!1)},_setFixedTopPos:function(t,e){t.length&&this.$contentContainer.length&&(t.outerHeight()>=this.$contentContainer.outerHeight()?t.removeClass("fixed").css("top",""):t.addClass("fixed").css("top",Math.min(e+14,Math.max(this.$mainContent[0].getBoundingClientRect().top,document.documentElement.clientHeight-t.outerHeight()))+"px"))},displayNotification:function(t,e,i){var s=new Craft.CP.Notification(t,e,i);return this.trigger("displayNotification",{notificationType:t,message:e,notification:s}),s},displayNotice:function(t,e){return this.displayNotification("notice",t,Object.assign({icon:"info",iconLabel:Craft.t("app","Notice")},e))},displaySuccess:function(t,e){return this.displayNotification("success",t,Object.assign({icon:"check",iconLabel:Craft.t("app","Success")},e))},displayError:function(t,e){return t&&"object"!==r(t)||(e=t,t=Craft.t("app","A server error occurred.")),this.displayNotification("error",t,Object.assign({icon:"alert",iconLabel:Craft.t("app","Error")},e))},fetchAlerts:function(){return Craft.queue.push((function(){return new Promise((function(t,e){var i={path:Craft.path};Craft.sendActionRequest("POST","app/get-cp-alerts",{data:i}).then((function(e){var i=e.data;t(i.alerts)})).catch(e)}))}))},displayAlerts:function(t){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.$alerts.remove(),Array.isArray(t)&&t.length){this.$alerts=e()('').prependTo(e()("#page-container"));var s,n=a(t);try{for(n.s();!(s=n.n()).done;){var r=s.value;e().isPlainObject(r)||(r={content:r,showIcon:!0});var o=r.content;r.showIcon&&(o=' ').concat(o)),e()("- ".concat(o,"
")).appendTo(this.$alerts)}}catch(t){n.e(t)}finally{n.f()}if(i){var l=this.$alerts.outerHeight();this.$alerts.css("margin-top",-l).velocity({"margin-top":0},"fast")}this.initAlerts()}},initAlerts:function(){for(var t=this,s=this.$alerts.find('a[class^="shun:"]'),a=0;a a:not(.sel)");t.length&&Craft.queue.push((function(){return new Promise((function(i,s){Craft.sendActionRequest("POST","app/get-utilities-badge-count").then((function(s){var n=s.data,a=t.children(".badge"),r=t.children("[data-notification]");n.badgeCount?(a.length||(a=e()('').appendTo(t)),r.length||(r=e()('').appendTo(t)),a.text(n.badgeCount),r.text(Craft.t("app","{num, number} {num, plural, =1{notification} other{notifications}}",{num:n.badgeCount}))):a.length&&r.length&&(a.remove(),r.remove()),i()})).catch(s)}))}))},runQueue:function(){var t=this;this.enableQueue&&(Craft.runQueueAutomatically?Craft.queue.push((function(){return new Promise((function(e,i){Craft.sendActionRequest("POST","queue/run").then((function(){t.trackJobProgress(!1,!0),e()})).catch(i)}))})):this.trackJobProgress(!1,!0))},trackJobProgress:function(t,e){this.trackJobProgressTimeout&&!e||!this.enableQueue||(this.cancelJobTracking(),t?(!0===t&&(t=this.getNextJobDelay()),this.trackJobProgressTimeout=setTimeout(this._trackJobProgressInternal.bind(this),t)):this._trackJobProgressInternal())},getNextJobDelay:function(){return Math.min(6e4,500*this.displayedJobInfoUnchanged)},_trackJobProgressInternal:function(){var t=this;this.trackingJobProgress=!0,Craft.queue.push(n(i().mark((function e(){var s,n;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.trackingJobProgress){e.next=2;break}return e.abrupt("return");case 2:return Craft.broadcaster&&Craft.broadcaster.postMessage({event:"beforeTrackJobProgress"}),t.jobProgressCancelToken=axios.CancelToken.source(),e.prev=4,e.next=7,Craft.sendActionRequest("POST","queue/get-job-info?limit=50&dontExtendSession=1",{cancelToken:t.jobProgressCancelToken.token});case 7:n=e.sent,s=n.data,e.next=15;break;case 11:if(e.prev=11,e.t0=e.catch(4),!t.trackingJobProgress){e.next=15;break}throw e.t0;case 15:return e.prev=15,t.trackingJobProgress=!1,t.trackJobProgressTimeout=null,t.jobProgressCancelToken=null,e.finish(15);case 20:t.setJobData(s),t.jobInfo.length&&t.trackJobProgress(!0),Craft.broadcaster&&Craft.broadcaster.postMessage({event:"trackJobProgress",jobData:s});case 23:case"end":return e.stop()}}),e,null,[[4,11,15,20]])}))))},setJobData:function(t){this.totalJobs=t.total,this.setJobInfo(t.jobs)},setJobInfo:function(t){if(this.enableQueue){this.jobInfo=t;var e=this.displayedJobInfo;this.displayedJobInfo=this.getDisplayedJobInfo(),e&&this.displayedJobInfo&&e.id===this.displayedJobInfo.id&&e.progress===this.displayedJobInfo.progress&&e.progressLabel===this.displayedJobInfo.progressLabel&&e.status===this.displayedJobInfo.status?this.displayedJobInfoUnchanged++:this.displayedJobInfoUnchanged=1,this.updateJobIcon(),this.trigger("setJobInfo")}},cancelJobTracking:function(){this.trackingJobProgress=!1,this.trackJobProgressTimeout&&(clearTimeout(this.trackJobProgressTimeout),this.trackJobProgressTimeout=null),this.jobProgressCancelToken&&this.jobProgressCancelToken.cancel()},getDisplayedJobInfo:function(){if(!this.enableQueue)return null;for(var t=[Craft.CP.JOB_STATUS_RESERVED,Craft.CP.JOB_STATUS_FAILED,Craft.CP.JOB_STATUS_WAITING],e=0;e",{class:"notification","data-type":this.type}).appendTo(Craft.cp.$notificationContainer);var a=e()('').appendTo(this.$container);if(this.settings.icon){var r=e()("",{class:"notification-icon","data-icon":this.settings.icon}).appendTo(a);this.settings.iconLabel?r.attr({"aria-label":this.settings.iconLabel,role:"img"}):r.attr("aria-hidden","true")}var o=e()('').appendTo(a);e()("",{class:"notification-message",text:this.message}).appendTo(o);var l=e()("").appendTo(this.$container);this.$closeBtn=e()("",{type:"button",class:"notification-close-btn","aria-label":Craft.t("app","Close"),"data-icon":"remove"}).appendTo(l),this.settings.details&&e()('').append(this.settings.details).appendTo(o).find("button,input").length&&(this.originalActiveElement=document.activeElement,this.$container.attr("tabindex","-1").focus(),this.addListener(this.$container,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&n.close()}))),this.$container.css({opacity:0,"margin-bottom":this._negMargin()}).velocity({opacity:1,"margin-bottom":0},{duration:"fast"}),Craft.initUiElements(this.$container),this.addListener(this.$closeBtn,"click","close"),Craft.notificationDuration&&this._initDelayedClose()},_initDelayedClose:function(){var t=this;this._preventDelayedClose||(Craft.isVisible()?(this.delayedClose(),this.$container.on("keypress keyup change focus click mousedown mouseup",(function(e){e.target!=t.$closeBtn[0]&&(t.$container.off("keypress keyup change focus click mousedown mouseup"),t.preventDelayedClose())}))):Garnish.$doc.one("visibilitychange",(function(){t._initDelayedClose()})))},_negMargin:function(){return"-".concat(this.$container.outerHeight()+12,"px")},close:function(){var t=this;this.closing||(this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.closing=!0,this.originalActiveElement&&document.activeElement&&(document.activeElement===this.$container[0]||e().contains(this.$container[0],document.activeElement))&&e()(this.originalActiveElement).focus(),this.$container.velocity({opacity:0,"margin-bottom":this._negMargin()},{duration:"fast",complete:function(){t.destroy()}}))},delayedClose:function(){var t=this;this.closeTimeout=setTimeout((function(){t.close()}),Craft.notificationDuration),this.$container.one("mouseover",(function(){clearTimeout(t.closeTimeout),t.closeTimeout=null,t.$container.on("mouseout",(function(e){e.target==t.$container[0]&&(t.$container.off("mouseout"),t.delayedClose())}))}))},preventDelayedClose:function(){this._preventDelayedClose=!0,this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.$container.off("mouseover mouseout")},destroy:function(){this.$container.remove(),this.base()}}),Garnish.$scrollContainer=Garnish.$win,Craft.cp=new Craft.CP;var h=Garnish.Base.extend({$li:null,$a:null,$label:null,$progressLabel:null,progress:null,failMode:!1,_$bgCanvas:null,_$staticCanvas:null,_$hoverCanvas:null,_$failCanvas:null,_staticCtx:null,_hoverCtx:null,_canvasSize:null,_arcPos:null,_arcRadius:null,_lineWidth:null,_arcStartPos:0,_arcEndPos:0,_arcStartStepSize:null,_arcEndStepSize:null,_arcStep:null,_arcStepTimeout:null,_arcAnimateCallback:null,_progressBar:null,init:function(){this.$li=e()("").appendTo(Craft.cp.$nav.children("ul")),this.$a=e()("",{id:"job-icon",href:Craft.canAccessQueueManager?Craft.getUrl("utilities/queue-manager"):null}).appendTo(this.$li),this.$canvasContainer=e()('').appendTo(this.$a);var t=e()('').appendTo(this.$a);this.$label=e()("").appendTo(t),this.$progressLabel=e()('').appendTo(t).hide();var i=window.devicePixelRatio>1?2:1;this._canvasSize=18*i,this._arcPos=this._canvasSize/2,this._arcRadius=7*i,this._lineWidth=3*i,this._$bgCanvas=this._createCanvas("bg","#61666b"),this._$staticCanvas=this._createCanvas("static","#d7d9db"),this._$hoverCanvas=this._createCanvas("hover","#fff"),this._$failCanvas=this._createCanvas("fail","#da5a47").hide(),this._staticCtx=this._$staticCanvas[0].getContext("2d"),this._hoverCtx=this._$hoverCanvas[0].getContext("2d"),this._drawArc(this._$bgCanvas[0].getContext("2d"),0,1),this._drawArc(this._$failCanvas[0].getContext("2d"),0,1)},setDescription:function(t,e){this.$a.attr("title",t),this.$label.text(t),e?this.$progressLabel.text(e).show():this.$progressLabel.hide()},setProgress:function(t){0==t?(this._$staticCanvas.hide(),this._$hoverCanvas.hide()):(this._$staticCanvas.show(),this._$hoverCanvas.show(),this.progress&&t>this.progress?this._animateArc(0,t/100):this._setArc(0,t/100)),this.progress=t},complete:function(){var t=this;this._animateArc(0,1,(function(){t._$bgCanvas.velocity("fadeOut"),t._animateArc(1,1,(function(){t.$a.remove(),t.destroy()}))}))},showFailMode:function(t){this.failMode||(this.failMode=!0,this.progress=null,this._$bgCanvas.hide(),this._$staticCanvas.hide(),this._$hoverCanvas.hide(),this._$failCanvas.show(),this.setDescription(t))},hideFailMode:function(){this.failMode&&(this.failMode=!1,this._$bgCanvas.show(),this._$staticCanvas.show(),this._$hoverCanvas.show(),this._$failCanvas.hide())},_createCanvas:function(t,i){var s=e()('').appendTo(this.$canvasContainer),n=s[0].getContext("2d");return n.strokeStyle=i,n.lineWidth=this._lineWidth,n.lineCap="round",s},_setArc:function(t,e){this._arcStartPos=t,this._arcEndPos=e,this._drawArc(this._staticCtx,t,e),this._drawArc(this._hoverCtx,t,e)},_drawArc:function(t,e,i){t.clearRect(0,0,this._canvasSize,this._canvasSize),t.beginPath(),t.arc(this._arcPos,this._arcPos,this._arcRadius,(1.5+2*e)*Math.PI,(1.5+2*i)*Math.PI),t.stroke(),t.closePath()},_animateArc:function(t,e,i){this._arcStepTimeout&&clearTimeout(this._arcStepTimeout),this._arcStep=0,this._arcStartStepSize=(t-this._arcStartPos)/10,this._arcEndStepSize=(e-this._arcEndPos)/10,this._arcAnimateCallback=i,this._takeNextArcStep()},_takeNextArcStep:function(){this._setArc(this._arcStartPos+this._arcStartStepSize,this._arcEndPos+this._arcEndStepSize),this._arcStep++,this._arcStep<10?this._arcStepTimeout=setTimeout(this._takeNextArcStep.bind(this),50):this._arcAnimateCallback&&this._arcAnimateCallback()}});__webpack_require__(3778),__webpack_require__(6617),__webpack_require__(9482),__webpack_require__(3352),__webpack_require__(691),__webpack_require__(1519),__webpack_require__(501),__webpack_require__(2318),__webpack_require__(4755),__webpack_require__(8468),__webpack_require__(5049),__webpack_require__(7998),__webpack_require__(4233),__webpack_require__(9699),__webpack_require__(1402),__webpack_require__(8201),__webpack_require__(7606),__webpack_require__(9712),__webpack_require__(3347),__webpack_require__(9478),__webpack_require__(2387),__webpack_require__(7966),__webpack_require__(657),__webpack_require__(4487),__webpack_require__(6966),__webpack_require__(5080),__webpack_require__(7439),__webpack_require__(5328),__webpack_require__(6419),__webpack_require__(872),__webpack_require__(1396),__webpack_require__(4070),__webpack_require__(5763),__webpack_require__(5185),__webpack_require__(8030),__webpack_require__(3096),__webpack_require__(3331),__webpack_require__(53),__webpack_require__(5074),__webpack_require__(3958),Craft.Tooltip=Garnish.Base.extend({_$trigger:null,_message:null,hud:null,$p:null,hoverTimeout:null,triggerHit:!1,shownViaHover:!1,init:function(t,i){var s=this;this.$trigger=e()(t),this.message=i,"BUTTON"!==this.$trigger[0].tagName&&"button"!==this.$trigger.attr("role")&&console.error("Toggletip buttons need to be elements."),this.addListener(Garnish.$bod,"mousemove",(function(t){s.triggerHit!==(s.triggerHit=Garnish.hitTest(t.pageX,t.pageY,s._$trigger))&&(s.triggerHit?s.showing||(s.hoverTimeout=setTimeout((function(){s.show(),s.shownViaHover=!0}),500)):(clearTimeout(s.hoverTimeout),s.shownViaHover&&s.hide()))}))},get showing(){return this.hud&&this.hud.showing},get $trigger(){return this._$trigger},set $trigger(t){var e=this;this._$trigger&&this.removeAllListeners(this._$trigger),this._$trigger=t,this._$trigger.on("blur",(function(){e.hide()})),this._$trigger.on("activate",(function(){e.showing&&e.shownViaHover?e.shownViaHover=!1:e.toggle(),e._$trigger.focus()})),this.hud&&(this.hud.$trigger=t,this.hud.showing&&this.hud.updateSizeAndPosition(!0))},get message(){return this._message},set message(t){this._message=t,this.$p&&this.$p.text(t)},show:function(t){var i=this;this.shownViaHover=!1,this.showing||(this.$trigger.attr("aria-expanded","true"),this.hud?this.hud.show():(this.$p=e()("",{text:this._message}),this.hud=new Craft.Tooltip.HUD(this._$trigger,this.$p,{hudClass:"hud tooltip-hud",withShade:!1,onShow:function(){i.onShow()},onHide:function(){i.onHide()}})))},hide:function(){this.showing&&(this.$trigger.attr("aria-expanded","false"),this.hud&&this.hud.hide())},toggle:function(){this.showing?this.hide():this.show()},onShow:function(){clearTimeout(this.hoverTimeout),this.$p.text(this.message)},onHide:function(){clearTimeout(this.hoverTimeout),this.$p.text("")}}),Craft.Tooltip.HUD=Garnish.HUD.extend({init:function(t,e,i){this.base(t,e,i),this.$hud.attr("role","status")},showContainer:function(){this.$hud.removeClass("visually-hidden")},hideContainer:function(){this.$hud.addClass("visually-hidden")}}),__webpack_require__(1752),__webpack_require__(7e3),__webpack_require__(8654)}()})();
//# sourceMappingURL=cp.js.map
\ No newline at end of file
diff --git a/src/web/assets/cp/dist/cp.js.LICENSE.txt b/src/web/assets/cp/dist/cp.js.LICENSE.txt
new file mode 100644
index 00000000000..ae386fb79c9
--- /dev/null
+++ b/src/web/assets/cp/dist/cp.js.LICENSE.txt
@@ -0,0 +1 @@
+/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
diff --git a/src/web/assets/cp/dist/cp.js.map b/src/web/assets/cp/dist/cp.js.map
index 2d5ab739913..74345aab67b 100644
--- a/src/web/assets/cp/dist/cp.js.map
+++ b/src/web/assets/cp/dist/cp.js.map
@@ -1 +1 @@
-{"version":3,"file":"cp.js","mappings":"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","sources":["webpack:///./js/Accordion.js","webpack:///./js/AddressesInput.js","webpack:///./js/AdminTable.js","webpack:///./js/AssetImageEditor.js","webpack:///./js/AssetIndex.js","webpack:///./js/AssetMover.js","webpack:///./js/AssetSelectInput.js","webpack:///./js/AssetSelectorModal.js","webpack:///./js/AssetsFieldSettings.js","webpack:///./js/AuthManager.js","webpack:///./js/BaseElementIndex.js","webpack:///./js/BaseElementIndexView.js","webpack:///./js/BaseElementSelectInput.js","webpack:///./js/BaseElementSelectorModal.js","webpack:///./js/BaseInputGenerator.js","webpack:///./js/BaseUploader.js","webpack:///./js/CategoryIndex.js","webpack:///./js/CategorySelectInput.js","webpack:///./js/Chart.js","webpack:///./js/ColorInput.js","webpack:///./js/CpScreenSlideout.js","webpack:///./js/Craft.js","webpack:///./js/CustomizeSourcesModal.js","webpack:///./js/DataTableSorter.js","webpack:///./js/DeleteUserModal.js","webpack:///./js/DynamicGenerator.js","webpack:///./js/EditableTable.js","webpack:///./js/ElementActionTrigger.js","webpack:///./js/ElementEditor.js","webpack:///./js/ElementEditorSlideout.js","webpack:///./js/ElementFieldSettings.js","webpack:///./js/ElementThumbLoader.js","webpack:///./js/ElevatedSessionForm.js","webpack:///./js/ElevatedSessionManager.js","webpack:///./js/EntryIndex.js","webpack:///./js/FieldLayoutDesigner.js","webpack:///./js/FieldToggle.js","webpack:///./js/Grid.js","webpack:///./js/HandleGenerator.js","webpack:///./js/ImageUpload.js","webpack:///./js/InfoIcon.js","webpack:///./js/LightSwitch.js","webpack:///./js/Listbox.js","webpack:///./js/LivePreview.js","webpack:///./js/PasswordInput.js","webpack:///./js/Preview.js","webpack:///./js/PreviewFileModal.js","webpack:///./js/ProgressBar.js","webpack:///./js/PromptHandler.js","webpack:///./js/Queue.js","webpack:///./js/SlidePicker.js","webpack:///./js/SlideRuleInput.js","webpack:///./js/Slideout.js","webpack:///./js/SlugGenerator.js","webpack:///./js/Structure.js","webpack:///./js/StructureDrag.js","webpack:///./js/StructureTableSorter.js","webpack:///./js/TableElementIndexView.js","webpack:///./js/Tabs.js","webpack:///./js/TagSelectInput.js","webpack:///./js/ThumbsElementIndexView.js","webpack:///./js/UI.js","webpack:///./js/Uploader.js","webpack:///./js/UriFormatGenerator.js","webpack:///./js/UserIndex.js","webpack:///./js/VolumeFolderSelectorModal.js","webpack:///./css/charts.scss?4afb","webpack:///./css/craft.scss?1b58","webpack:///../../../../../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../../../../../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///external var \"jQuery\"","webpack:///./js/CP.js","webpack:///./js/Tooltip.js"],"sourcesContent":["/** global: Craft */\n/** global: Garnish */\n/**\n * Accordion\n */\nCraft.Accordion = Garnish.Base.extend({\n $trigger: null,\n targetSelector: null,\n\n _$target: null,\n\n init: function (trigger) {\n this.$trigger = $(trigger);\n\n // Is this already an accordion trigger?\n if (this.$trigger.data('accordion')) {\n console.warn('Double-instantiating an accordion trigger on an element');\n this.$trigger.data('accordion').destroy();\n }\n\n this.$trigger.data('accordion', this);\n this.targetSelector = this.$trigger.attr('aria-controls')\n ? `#${this.$trigger.attr('aria-controls')}`\n : null;\n\n if (this.targetSelector) {\n this._$target = $(this.targetSelector);\n }\n\n this.addListener(this.$trigger, 'click', 'onTriggerClick');\n this.addListener(this.$trigger, 'keypress', (event) => {\n const key = event.keyCode;\n\n if (key === Garnish.SPACE_KEY || key === Garnish.RETURN_KEY) {\n event.preventDefault();\n this.onTriggerClick();\n }\n });\n },\n\n onTriggerClick: function () {\n const isOpen = this.$trigger.attr('aria-expanded') === 'true';\n\n if (isOpen) {\n this.hideTarget(this._$target);\n } else {\n this.showTarget(this._$target);\n }\n },\n\n showTarget: function ($target) {\n if ($target && $target.length) {\n this.showTarget._currentHeight = $target.height();\n\n $target.removeClass('hidden');\n\n this.$trigger\n .removeClass('collapsed')\n .addClass('expanded')\n .attr('aria-expanded', 'true');\n\n for (let i = 0; i < $target.length; i++) {\n (($t) => {\n if ($t.prop('nodeName') !== 'SPAN') {\n $t.height('auto');\n this.showTarget._targetHeight = $t.height();\n $t.css({\n height: this.showTarget._currentHeight,\n overflow: 'hidden',\n });\n\n $t.velocity('stop');\n\n $t.velocity(\n {height: this.showTarget._targetHeight},\n Garnish.getUserPreferredAnimationDuration('fast'),\n function () {\n $t.css({\n height: '',\n overflow: '',\n });\n }\n );\n }\n })($target.eq(i));\n }\n\n delete this.showTarget._targetHeight;\n delete this.showTarget._currentHeight;\n\n // Trigger a resize event in case there are any grids in the target that need to initialize\n Garnish.$win.trigger('resize');\n }\n },\n\n hideTarget: function ($target) {\n if ($target && $target.length) {\n this.$trigger\n .removeClass('expanded')\n .addClass('collapsed')\n .attr('aria-expanded', 'false');\n\n for (let i = 0; i < $target.length; i++) {\n (($t) => {\n if ($t.hasClass('hidden')) {\n return;\n }\n if ($t.prop('nodeName') === 'SPAN') {\n $t.addClass('hidden');\n } else {\n $t.css('overflow', 'hidden');\n $t.velocity('stop');\n $t.velocity(\n {height: 0},\n Garnish.getUserPreferredAnimationDuration('fast'),\n function () {\n $t.addClass('hidden');\n }\n );\n }\n })($target.eq(i));\n }\n }\n },\n\n destroy: function () {\n this.$trigger.removeData('accordion');\n this.base();\n },\n});\n","/** global: Craft */\n\n/**\n * AddressInput class\n */\nCraft.AddressesInput = Garnish.Base.extend(\n {\n $container: null,\n $addBtn: null,\n $addBtnItem: null,\n $cards: null,\n\n init: function (container, settings) {\n this.$container = $(container);\n this.setSettings(settings, Craft.AddressesInput.defaults);\n\n // Is this already an address input?\n if (this.$container.data('addresses')) {\n console.warn('Double-instantiating an address input on an element');\n this.$container.data('addresses').destroy();\n }\n\n this.$container.data('addresses', this);\n\n this.$addBtn = this.$container.find('.address-cards__add-btn');\n this.$addBtnItem = this.$addBtn.closest('li');\n this.$cards = this.$container.find('> .address-card');\n\n for (let i = 0; i < this.$cards.length; i++) {\n this.initCard(this.$cards.eq(i));\n }\n\n this.updateAddButton();\n\n this.addListener(this.$addBtn, 'click', () => {\n this.createAddress();\n });\n },\n\n initCard: function ($card) {\n this.addListener($card, 'click', (ev) => {\n if (!$(ev.target).closest('.menubtn').length) {\n this.editAddress($card);\n }\n });\n\n const $actionBtn = $card.find('.menubtn').disclosureMenu();\n if ($actionBtn.length) {\n const menu = $actionBtn.data('trigger');\n const $menu = menu.$container;\n\n // Activate edit button\n const $editBtn = $menu.find('[data-action=\"edit\"]');\n this.addListener($editBtn, 'click', (ev) => {\n ev.stopPropagation();\n this.editAddress($card);\n });\n\n // Activate delete button\n const $deleteBtn = $menu.find('[data-action=\"delete\"]');\n this.addListener($deleteBtn, 'click', (ev) => {\n ev.preventDefault();\n ev.stopPropagation();\n if (\n confirm(\n Craft.t('app', 'Are you sure you want to delete this address?')\n )\n ) {\n this.$addBtn.addClass('loading');\n const addressId = $card.data('id');\n const draftId = $card.data('draft-id');\n Craft.sendActionRequest('POST', 'elements/delete', {\n data: {\n elementId: addressId,\n draftId: draftId,\n },\n })\n .then(() => {\n $card.remove();\n $menu.remove();\n menu.destroy();\n this.$cards = this.$cards.not($card);\n this.updateAddButton();\n\n this.trigger('deleteAddress', {\n addressId,\n draftId,\n });\n })\n .finally(() => {\n this.$addBtn.removeClass('loading');\n });\n }\n });\n }\n },\n\n editAddress: function ($card, settings) {\n const slideout = Craft.createElementEditor(\n 'craft\\\\elements\\\\Address',\n $card,\n settings\n );\n\n slideout.on('submit', (ev) => {\n this.trigger('saveAddress', {\n data: ev.data,\n });\n\n Craft.sendActionRequest('POST', 'addresses/card-html', {\n data: {\n addressId: ev.data.id,\n },\n }).then((response) => {\n const $newCard = $(response.data.html);\n if ($card) {\n $card.replaceWith($newCard);\n this.$cards = this.$cards.not($card);\n } else {\n $newCard.insertBefore(this.$addBtnItem);\n }\n Craft.initUiElements($newCard);\n this.initCard($newCard);\n this.$cards = this.$cards.add($newCard);\n this.updateAddButton();\n });\n });\n },\n\n updateAddButton: function () {\n if (this.canCreateAddress()) {\n this.$addBtn.removeClass('hidden');\n } else {\n this.$addBtn.addClass('hidden');\n }\n },\n\n canCreateAddress: function () {\n return (\n !this.settings.maxAddresses ||\n this.$cards.length < this.settings.maxAddresses\n );\n },\n\n createAddress: function () {\n if (!this.canCreateAddress()) {\n throw 'No more addresses can be created.';\n }\n\n this.$addBtn.addClass('loading');\n\n Craft.sendActionRequest('POST', 'elements/create', {\n data: {\n elementType: 'craft\\\\elements\\\\Address',\n ownerId: this.settings.ownerId,\n },\n })\n .then((ev) => {\n this.editAddress(null, {\n elementId: ev.data.element.id,\n draftId: ev.data.element.draftId,\n });\n })\n .finally(() => {\n this.$addBtn.removeClass('loading');\n });\n },\n\n destroy: function () {\n this.$container.removeData('addresses');\n this.base();\n },\n },\n {\n ownerId: null,\n defaults: {\n maxAddresses: null,\n },\n }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Admin table class\n */\nCraft.AdminTable = Garnish.Base.extend(\n {\n settings: null,\n totalItems: null,\n sorter: null,\n\n $noItems: null,\n $table: null,\n $tbody: null,\n $deleteBtns: null,\n\n init: function (settings) {\n this.setSettings(settings, Craft.AdminTable.defaults);\n\n if (!this.settings.allowDeleteAll) {\n this.settings.minItems = 1;\n }\n\n this.$noItems = $(this.settings.noItemsSelector);\n this.$table = $(this.settings.tableSelector);\n this.$tbody = this.$table.children('tbody');\n this.totalItems = this.$tbody.children().length;\n\n if (this.settings.sortable) {\n this.sorter = new Craft.DataTableSorter(this.$table, {\n onSortChange: this.reorderItems.bind(this),\n });\n }\n\n this.$deleteBtns = this.$table.find('.delete:not(.disabled)');\n this.addListener(this.$deleteBtns, 'click', 'handleDeleteBtnClick');\n this.addListener(this.$deleteBtns, 'keydown', (event) => {\n if (\n event.keyCode === Garnish.SPACE_KEY ||\n event.keyCode === Garnish.RETURN_KEY\n ) {\n event.preventDefault();\n this.handleDeleteBtnClick(event);\n }\n });\n\n this.updateUI();\n },\n\n addRow: function (row) {\n if (this.settings.maxItems && this.totalItems >= this.settings.maxItems) {\n // Sorry pal.\n return;\n }\n\n var $row = $(row).appendTo(this.$tbody),\n $deleteBtn = $row.find('.delete');\n\n if (this.settings.sortable) {\n this.sorter.addItems($row);\n }\n\n this.$deleteBtns = this.$deleteBtns.add($deleteBtn);\n\n this.addListener($deleteBtn, 'click', 'handleDeleteBtnClick');\n this.totalItems++;\n\n this.updateUI();\n },\n\n reorderItems: function () {\n if (!this.settings.sortable) {\n return;\n }\n\n // Get the new field order\n var ids = [];\n\n for (var i = 0; i < this.sorter.$items.length; i++) {\n var id = $(this.sorter.$items[i]).attr(this.settings.idAttribute);\n ids.push(id);\n }\n\n // Send it to the server\n var data = {\n ids: JSON.stringify(ids),\n };\n\n Craft.sendActionRequest('POST', this.settings.reorderAction, {data})\n .then((response) => {\n this.onReorderItems(ids);\n Craft.cp.displaySuccess(\n Craft.t('app', this.settings.reorderSuccessMessage)\n );\n })\n .catch(({response}) => {\n Craft.cp.displayError(\n Craft.t('app', this.settings.reorderFailMessage)\n );\n });\n },\n\n handleDeleteBtnClick: function (event) {\n if (this.settings.minItems && this.totalItems <= this.settings.minItems) {\n // Sorry pal.\n return;\n }\n\n var $row = $(event.target).closest('tr');\n\n if (this.confirmDeleteItem($row)) {\n this.deleteItem($row);\n }\n },\n\n confirmDeleteItem: function ($row) {\n if (!this.settings.confirmDeleteMessage) {\n return true;\n }\n\n var name = this.getItemName($row);\n return confirm(\n Craft.t('app', this.settings.confirmDeleteMessage, {name})\n );\n },\n\n deleteItem: function ($row) {\n var data = {\n id: this.getItemId($row),\n };\n\n Craft.sendActionRequest('POST', this.settings.deleteAction, {data})\n .then((response) => this.handleDeleteItemSuccess(response.data, $row))\n .catch(({response}) =>\n this.handleDeleteItemFailure(response.data, $row)\n );\n },\n\n handleDeleteItemFailure: function (data, $row) {\n var id = this.getItemId($row),\n name = this.getItemName($row);\n\n Craft.cp.displayError(\n Craft.t('app', this.settings.deleteFailMessage, {name})\n );\n },\n\n handleDeleteItemSuccess: function (data, $row) {\n var id = this.getItemId($row),\n name = this.getItemName($row);\n\n if (this.sorter) {\n this.sorter.removeItems($row);\n }\n\n $row.remove();\n this.totalItems--;\n this.updateUI();\n this.onDeleteItem(id);\n\n if (this.settings.deleteSuccessMessage) {\n Craft.cp.displaySuccess(\n Craft.t('app', this.settings.deleteSuccessMessage, {name})\n );\n }\n },\n\n onReorderItems: function (ids) {\n this.settings.onReorderItems(ids);\n },\n\n onDeleteItem: function (id) {\n this.settings.onDeleteItem(id);\n },\n\n getItemId: function ($row) {\n return $row.attr(this.settings.idAttribute);\n },\n\n getItemName: function ($row) {\n return Craft.escapeHtml($row.attr(this.settings.nameAttribute));\n },\n\n updateUI: function () {\n // Show the \"No Whatever Exists\" message if there aren't any\n if (this.totalItems === 0) {\n this.$table.hide();\n this.$noItems.removeClass('hidden');\n } else {\n this.$table.show();\n this.$noItems.addClass('hidden');\n }\n\n // Disable the sort buttons if there's only one row\n if (this.settings.sortable) {\n var $moveButtons = this.$table.find('.move');\n\n if (this.totalItems === 1) {\n $moveButtons.addClass('disabled');\n } else {\n $moveButtons.removeClass('disabled');\n }\n }\n\n // Disable the delete buttons if we've reached the minimum items\n if (this.settings.minItems && this.totalItems <= this.settings.minItems) {\n this.$deleteBtns.addClass('disabled');\n } else {\n this.$deleteBtns.removeClass('disabled');\n }\n\n // Hide the New Whatever button if we've reached the maximum items\n if (this.settings.newItemBtnSelector) {\n if (\n this.settings.maxItems &&\n this.totalItems >= this.settings.maxItems\n ) {\n $(this.settings.newItemBtnSelector).addClass('hidden');\n } else {\n $(this.settings.newItemBtnSelector).removeClass('hidden');\n }\n }\n },\n },\n {\n defaults: {\n tableSelector: null,\n noItemsSelector: null,\n newItemBtnSelector: null,\n idAttribute: 'data-id',\n nameAttribute: 'data-name',\n sortable: false,\n allowDeleteAll: true,\n minItems: 0,\n maxItems: null,\n reorderAction: null,\n deleteAction: null,\n reorderSuccessMessage: Craft.t('app', 'New order saved.'),\n reorderFailMessage: Craft.t('app', 'Couldn’t save new order.'),\n confirmDeleteMessage: Craft.t(\n 'app',\n 'Are you sure you want to delete “{name}”?'\n ),\n deleteSuccessMessage: Craft.t('app', '“{name}” deleted.'),\n deleteFailMessage: Craft.t('app', 'Couldn’t delete “{name}”.'),\n onReorderItems: $.noop,\n onDeleteItem: $.noop,\n },\n }\n);\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Asset image editor class\n */\n\nCraft.AssetImageEditor = Garnish.Modal.extend(\n {\n // jQuery objects\n $body: null,\n $footer: null,\n $imageTools: null,\n $buttons: null,\n $cancelBtn: null,\n $replaceBtn: null,\n $saveBtn: null,\n $focalPointBtn: null,\n $editorContainer: null,\n $straighten: null,\n $croppingCanvas: null,\n $spinner: null,\n $constraintContainer: null,\n $constraintRadioInputs: null,\n $customConstraints: null,\n\n // FabricJS objects\n canvas: null,\n image: null,\n viewport: null,\n focalPoint: null,\n grid: null,\n croppingCanvas: null,\n clipper: null,\n croppingRectangle: null,\n cropperHandles: null,\n cropperGrid: null,\n croppingShade: null,\n\n // Image state attributes\n imageStraightenAngle: 0,\n viewportRotation: 0,\n originalWidth: 0,\n originalHeight: 0,\n imageVerticeCoords: null,\n zoomRatio: 1,\n\n // Editor state attributes\n animationInProgress: false,\n currentView: '',\n assetId: null,\n cacheBust: null,\n draggingCropper: false,\n scalingCropper: false,\n draggingFocal: false,\n previousMouseX: 0,\n previousMouseY: 0,\n shiftKeyHeld: false,\n editorHeight: 0,\n editorWidth: 0,\n cropperState: false,\n scaleFactor: 1,\n flipData: {},\n focalPointState: false,\n maxImageSize: null,\n lastLoadedDimensions: null,\n imageIsLoading: false,\n mouseMoveEvent: null,\n croppingConstraint: false,\n constraintOrientation: 'landscape',\n showingCustomConstraint: false,\n saving: false,\n\n // Rendering proxy functions\n renderImage: null,\n renderCropper: null,\n\n _queue: null,\n\n init: function (assetId, settings) {\n this._queue = new Craft.Queue();\n\n this.cacheBust = Date.now();\n\n this.setSettings(settings, Craft.AssetImageEditor.defaults);\n\n if (this.settings.allowDegreeFractions === null) {\n this.settings.allowDegreeFractions = Craft.isImagick;\n }\n\n if (Garnish.prefersReducedMotion()) {\n this.settings.animationDuration = 1;\n }\n\n this.assetId = assetId;\n this.flipData = {x: 0, y: 0};\n\n // Build the modal\n this.$container = $(\n ''\n ).appendTo(Garnish.$bod);\n this.$body = $('').appendTo(this.$container);\n this.$footer = $(' |