www.animefwiw.com
Open in
urlscan Pro
104.17.247.119
Public Scan
Submitted URL: http://animefwiw.com/products/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-917...
Effective URL: https://www.animefwiw.com/products/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-917...
Submission: On October 28 via api from US — Scanned from CA
Effective URL: https://www.animefwiw.com/products/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-917...
Submission: On October 28 via api from US — Scanned from CA
Form analysis
7 forms found in the DOM<form>
<input name="variant_id" type="hidden" value="${data.variants[0].id}">
<button type="button" class="product-snippet__quick-shop-icon" role="addToCart" data-quick-shop="${data.handle}" data-track-product-id="${data.id}" data-track="click" data-track-content="add_to_cart" data-track-source="quick_shop">
<svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"></path>
</svg>
</button>
</form>
<form role="spz-product-formacc02d31-4861-4fd4-9a08-4bfe571f5e46">
<div class="product-info-body-inner product-info-body-z-index" id="product-info-body-inner-container">
<h1 class="product-info-title m-0 leading-1.25 type-heading-font-family break-words product-title-color "> Harry Potter Slytherin House Ugly Christmas Sweater </h1>
<spz-render class="mt-4 lg:mt-5 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="product-info-prices" layout="container" manual="" i-spzhtml-layout="container" style="height: auto;">
<template> ${function() { const variantData = data.variant ||
{"id":"142b5a3e-4cff-445b-ad08-9171b725a440","product_id":"acc02d31-4861-4fd4-9a08-4bfe571f5e46","title":"S","weight_unit":"kg","inventory_quantity":999,"sku":"animefwiw-24071232601-S","barcode":"","position":1,"option1":"S","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":39,"min_quantity":1}],"weight":"0","compare_at_price":"49","price":"39","retail_price":"49","available":true,"url":"\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-9171b725a440","available_quantity":999999999,"options":[{"name":"Size","value":"S"}],"off_ratio":20,"flashsale_info":[],"sales":2};
const saveType = "amount"; const productLabelDiscountOn = false; return ` <div class="flex items-center justify-between">
<div spz-if="${!variantData.price}" class="mr-2 text-2xl leading-1.2 font-semibold color-price flex items-center">
<spz-currency class="mr-2" container-class="product-info__header_price" value="${data.product.price_min}" layout="container"></spz-currency>
<span class="flex" spz-if="${!variantData.price && data.product.price_min < data.product.price_max}"> - <spz-currency class="ml-2" container-class="product-info__header_price" value="${data.product.price_max}"
layout="container"></spz-currency></span>
</div>
<div spz-else="" class="flex items-center flex-wrap">
<spz-currency class="mr-2" container-class="product-info__header_price" value="${variantData.price}" layout="container"></spz-currency>
<spz-currency class="leading-1.2 color-compare-price line-through mr-2 lg:body-plus-2" container-class="product-info__header_compare-at-price" layout="container" value="${variantData.compare_at_price}"
spz-if="${+variantData.price < +variantData.compare_at_price}"></spz-currency>
<div spz-if="${productLabelDiscountOn && variantData.off_ratio > 0}" class="product-info-saved-label inline-block color-save-price whitespace-nowrap font-semibold"> ${saveType == 'percentage' ?
`<span>-${variantData.off_ratio}%</span>` : `<span>-</span><spz-currency class="inline-block" value="${variantData.compare_at_price - variantData.price}" layout="container"></spz-currency>` } </div>
</div>
</div> `; }()} </template>
<div class="flex items-center justify-between">
<div class="flex items-center flex-wrap" spz-else="">
<spz-currency class="mr-2 i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" container-class="product-info__header_price" value="39" layout="container" i-spzhtml-layout="container">
<div class="money product-info__header_price">$39.00</div>
</spz-currency><spz-currency class="leading-1.2 color-compare-price line-through mr-2 lg:body-plus-2 i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" container-class="product-info__header_compare-at-price"
layout="container" value="49" spz-if="true" i-spzhtml-layout="container">
<div class="money product-info__header_compare-at-price">$49.00</div>
</spz-currency>
</div>
</div>
</spz-render>
<div class="flex mt-2">
<div class="text-xs leading-1.3 color-custom-label-text product-info-custom-label bg-custom-label rounded-sm">Buy 2 Item Get Extra 5%off</div>
<div class="text-xs leading-1.3 color-custom-label-text product-info-custom-label bg-custom-label rounded-sm">Free Shipping Over $60</div>
</div>
<div class="plugin-discount-wrap empty-hidden" role="[theme-seat-for-plugin]">
<div class="bootstrap">
<div class="plugin__wrappers d-flex flex-column"></div>
</div>
</div>
<spz-variants class="product-info__variants flex flex-col items-start i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" layout="container" id="product-info-variants" src="script:product-json" switch-slide="[]"
slide="product-detail-images" manual="" interference="" select-soldout-suffix=" - Sold out" interact="hover" inherit-url-variant="" @sizemouseout="product-info-selected-variant-option1.rerender(data=event, redo=true);"
@sizemouseover="product-info-selected-variant-option1.rerender(data=event, redo=true);" i-spzhtml-layout="container">
<fieldset class="product-info__variants_content mx-0 mt-4 lg:mt-5 max-w-full min-w-[0px]" name="Size" style="width: 100%;">
<legend class="w-full m-0 p-0 flex items-center product-info__variants_title" data-keyword="size:
s" style="overflow: hidden;">
<span class="lg:body-plus-2 font-semibold leading-1.25 flex-shrink-0">Size: </span>
<spz-render class="product-info-selected-variant-option-text inline-block color-body-70 leading-1.3125 lg:body-minus-2 flex-grow flex items-center min-w-[0px] i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout"
id="product-info-selected-variant-option1" layout="container" manual="" i-spzhtml-layout="container" style="height: 18px;">
<template> ${function(){ const optName = "Size"; const optionValue = data.originData.selectData ? data.originData.selectData[optName].value : data.originData.value; const optionValueText = optionValue ? (optionValue) : ''; return `<span
class="inline-block truncate max-w-full" title="${optionValueText}">${optionValueText}</span>`; }()} </template>
<span class="inline-block truncate max-w-full">S</span></spz-render>
<a onclick="openSizeModal()" class="size_guide_btn " data-toggle="modal" data-target="#size_guide_modal" data-product_id="acc02d31-4861-4fd4-9a08-4bfe571f5e46" href="javascript:void"><img src="https://static.staticdj.com/oss/operation/ab4f520a75bf23c2b60ce852095f3308.png" alt="size guide"> Size Guide </a>
<script>
function openSizeModal() {
document.documentElement.style.overflow = 'hidden'
}
</script>
</legend>
<div class="flex flex-wrap product-info-variant-container ">
<div class="relative mt-3 mr-3">
<input type="radio" option="S" id="product-info-variant-S-0" class="pointer-events-auto" name="product-info-variant-Size" value="S" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);" checked="">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">S</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="M" id="product-info-variant-M-1" class="pointer-events-auto" name="product-info-variant-Size" value="M" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">M</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="L" id="product-info-variant-L-2" class="pointer-events-auto" name="product-info-variant-Size" value="L" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">L</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="XL" id="product-info-variant-XL-3" class="pointer-events-auto" name="product-info-variant-Size" value="XL" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">XL</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="2XL" id="product-info-variant-2XL-4" class="pointer-events-auto" name="product-info-variant-Size" value="2XL" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">2XL</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="3XL" id="product-info-variant-3XL-5" class="pointer-events-auto" name="product-info-variant-Size" value="3XL" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">3XL</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="4XL" id="product-info-variant-4XL-6" class="pointer-events-auto" name="product-info-variant-Size" value="4XL" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">4XL</span>
</label>
</div>
<div class="relative mt-3 mr-3">
<input type="radio" option="5XL" id="product-info-variant-5XL-7" class="pointer-events-auto" name="product-info-variant-Size" value="5XL" form="product-info-body"
@input-debounced="product-info-selected-variant-option1.rerender(data=event, redo=true);">
<label class="product-info-variant-option relative flex items-center break-words flex-shrink-0 overflow-hidden
rounded-sm
" data-type="text">
<span class="break-words text-center">5XL</span>
</label>
</div>
</div>
</fieldset>
<spz-render id="product-variant-option1-error-tip" manual="" layout="container" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
<template> ${function(){ const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data); return `<div class="product-info__variants-tips font-bold">${tipText}</div>` }()} </template>
</spz-render>
</spz-variants>
<style id="app-parakeet-style">
#app-parakeet *,
#app-parakeet :after,
#app-parakeet :before,
.plugin-parakeet *,
.plugin-parakeet :after,
.plugin-parakeet :before {
border: 0 solid #e5e7eb;
box-sizing: border-box
}
#app-parakeet :after,
#app-parakeet :before,
.plugin-parakeet :after,
.plugin-parakeet :before {
--tw-content: ""
}
#app-parakeet html,
.plugin-parakeet html {
-webkit-text-size-adjust: 100%;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
line-height: 1.5;
tab-size: 4
}
#app-parakeet body,
.plugin-parakeet body {
line-height: inherit;
margin: 0
}
#app-parakeet hr,
.plugin-parakeet hr {
border-top-width: 1px;
color: inherit;
height: 0
}
#app-parakeet abbr:where([title]),
.plugin-parakeet abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted
}
#app-parakeet h1,
#app-parakeet h2,
#app-parakeet h3,
#app-parakeet h4,
#app-parakeet h5,
#app-parakeet h6,
.plugin-parakeet h1,
.plugin-parakeet h2,
.plugin-parakeet h3,
.plugin-parakeet h4,
.plugin-parakeet h5,
.plugin-parakeet h6 {
font-size: inherit;
font-weight: inherit
}
#app-parakeet a,
.plugin-parakeet a {
color: inherit;
text-decoration: inherit
}
#app-parakeet b,
#app-parakeet strong,
.plugin-parakeet b,
.plugin-parakeet strong {
font-weight: bolder
}
#app-parakeet code,
#app-parakeet kbd,
#app-parakeet pre,
#app-parakeet samp,
.plugin-parakeet code,
.plugin-parakeet kbd,
.plugin-parakeet pre,
.plugin-parakeet samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
font-size: 1em
}
#app-parakeet small,
.plugin-parakeet small {
font-size: 80%
}
#app-parakeet sub,
#app-parakeet sup,
.plugin-parakeet sub,
.plugin-parakeet sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: initial
}
#app-parakeet sub,
.plugin-parakeet sub {
bottom: -.25em
}
#app-parakeet sup,
.plugin-parakeet sup {
top: -.5em
}
#app-parakeet table,
.plugin-parakeet table {
border-collapse: collapse;
border-color: inherit;
text-indent: 0
}
#app-parakeet button,
#app-parakeet input,
#app-parakeet optgroup,
#app-parakeet select,
#app-parakeet textarea,
.plugin-parakeet button,
.plugin-parakeet input,
.plugin-parakeet optgroup,
.plugin-parakeet select,
.plugin-parakeet textarea {
color: inherit;
font-family: inherit;
font-size: 100%;
font-weight: inherit;
line-height: inherit;
margin: 0;
padding: 0
}
#app-parakeet button,
#app-parakeet select,
.plugin-parakeet button,
.plugin-parakeet select {
text-transform: none
}
#app-parakeet [type=button],
#app-parakeet [type=reset],
#app-parakeet [type=submit],
#app-parakeet button,
.plugin-parakeet [type=button],
.plugin-parakeet [type=reset],
.plugin-parakeet [type=submit],
.plugin-parakeet button {
-webkit-appearance: button;
background-color: initial;
background-image: none
}
#app-parakeet :-moz-focusring,
.plugin-parakeet :-moz-focusring {
outline: auto
}
#app-parakeet :-moz-ui-invalid,
.plugin-parakeet :-moz-ui-invalid {
box-shadow: none
}
#app-parakeet progress,
.plugin-parakeet progress {
vertical-align: initial
}
#app-parakeet ::-webkit-inner-spin-button,
#app-parakeet ::-webkit-outer-spin-button,
.plugin-parakeet ::-webkit-inner-spin-button,
.plugin-parakeet ::-webkit-outer-spin-button {
height: auto
}
#app-parakeet [type=search],
.plugin-parakeet [type=search] {
-webkit-appearance: textfield;
outline-offset: -2px
}
#app-parakeet ::-webkit-search-decoration,
.plugin-parakeet ::-webkit-search-decoration {
-webkit-appearance: none
}
#app-parakeet ::-webkit-file-upload-button,
.plugin-parakeet ::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit
}
#app-parakeet summary,
.plugin-parakeet summary {
display: list-item
}
#app-parakeet blockquote,
#app-parakeet dd,
#app-parakeet dl,
#app-parakeet figure,
#app-parakeet h1,
#app-parakeet h2,
#app-parakeet h3,
#app-parakeet h4,
#app-parakeet h5,
#app-parakeet h6,
#app-parakeet hr,
#app-parakeet p,
#app-parakeet pre,
.plugin-parakeet blockquote,
.plugin-parakeet dd,
.plugin-parakeet dl,
.plugin-parakeet figure,
.plugin-parakeet h1,
.plugin-parakeet h2,
.plugin-parakeet h3,
.plugin-parakeet h4,
.plugin-parakeet h5,
.plugin-parakeet h6,
.plugin-parakeet hr,
.plugin-parakeet p,
.plugin-parakeet pre {
margin: 0
}
#app-parakeet fieldset,
.plugin-parakeet fieldset {
margin: 0;
padding: 0
}
#app-parakeet legend,
.plugin-parakeet legend {
padding: 0
}
#app-parakeet menu,
#app-parakeet ol,
#app-parakeet ul,
.plugin-parakeet menu,
.plugin-parakeet ol,
.plugin-parakeet ul {
list-style: none;
margin: 0;
padding: 0
}
#app-parakeet textarea,
.plugin-parakeet textarea {
resize: vertical
}
#app-parakeet input::-webkit-input-placeholder,
#app-parakeet textarea::-webkit-input-placeholder,
.plugin-parakeet input::-webkit-input-placeholder,
.plugin-parakeet textarea::-webkit-input-placeholder {
color: #9ca3af;
opacity: 1
}
#app-parakeet input::placeholder,
#app-parakeet textarea::placeholder,
.plugin-parakeet input::placeholder,
.plugin-parakeet textarea::placeholder {
color: #9ca3af;
opacity: 1
}
#app-parakeet [role=button],
#app-parakeet button,
.plugin-parakeet [role=button],
.plugin-parakeet button {
cursor: pointer
}
#app-parakeet :disabled,
.plugin-parakeet :disabled {
cursor: default
}
#app-parakeet audio,
#app-parakeet canvas,
#app-parakeet embed,
#app-parakeet iframe,
#app-parakeet img,
#app-parakeet object,
#app-parakeet svg,
#app-parakeet video,
.plugin-parakeet audio,
.plugin-parakeet canvas,
.plugin-parakeet embed,
.plugin-parakeet iframe,
.plugin-parakeet img,
.plugin-parakeet object,
.plugin-parakeet svg,
.plugin-parakeet video {
display: block;
vertical-align: middle
}
#app-parakeet img,
#app-parakeet video,
.plugin-parakeet img,
.plugin-parakeet video {
height: auto;
max-width: 100%
}
#app-parakeet *,
#app-parakeet :after,
#app-parakeet :before,
.plugin-parakeet *,
.plugin-parakeet :after,
.plugin-parakeet :before {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgba(59, 130, 246, .5);
--tw-ring-offset-shadow: 0 0 transparent;
--tw-ring-shadow: 0 0 transparent;
--tw-shadow: 0 0 transparent;
--tw-shadow-colored: 0 0 transparent;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia:
}
#app-parakeet ::-webkit-backdrop,
.plugin-parakeet ::-webkit-backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgba(59, 130, 246, .5);
--tw-ring-offset-shadow: 0 0 transparent;
--tw-ring-shadow: 0 0 transparent;
--tw-shadow: 0 0 transparent;
--tw-shadow-colored: 0 0 transparent;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia:
}
#app-parakeet ::backdrop,
.plugin-parakeet ::backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgba(59, 130, 246, .5);
--tw-ring-offset-shadow: 0 0 transparent;
--tw-ring-shadow: 0 0 transparent;
--tw-shadow: 0 0 transparent;
--tw-shadow-colored: 0 0 transparent;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia:
}
#app-parakeet .pk-pointer-events-none,
.plugin-parakeet .pk-pointer-events-none {
pointer-events: none
}
#app-parakeet .pk-absolute,
.plugin-parakeet .pk-absolute {
position: absolute
}
#app-parakeet .pk-relative,
.plugin-parakeet .pk-relative {
position: relative
}
#app-parakeet .pk-top-0,
.plugin-parakeet .pk-top-0 {
top: 0
}
#app-parakeet .pk-left-0,
.plugin-parakeet .pk-left-0 {
left: 0
}
#app-parakeet .pk--top-3,
.plugin-parakeet .pk--top-3 {
top: -.75rem
}
#app-parakeet .pk--right-3,
.plugin-parakeet .pk--right-3 {
right: -.75rem
}
#app-parakeet .pk-z-\[9999\],
.plugin-parakeet .pk-z-\[9999\] {
z-index: 9999
}
#app-parakeet .pk-my-6,
.plugin-parakeet .pk-my-6 {
margin-bottom: 1.5rem;
margin-top: 1.5rem
}
#app-parakeet .pk-mx-1,
.plugin-parakeet .pk-mx-1 {
margin-left: .25rem;
margin-right: .25rem
}
#app-parakeet .pk--mx-4,
.plugin-parakeet .pk--mx-4 {
margin-left: -1rem;
margin-right: -1rem
}
#app-parakeet .pk-my-0,
.plugin-parakeet .pk-my-0 {
margin-bottom: 0;
margin-top: 0
}
#app-parakeet .pk-ml-\[10px\],
.plugin-parakeet .pk-ml-\[10px\] {
margin-left: 10px
}
#app-parakeet .pk-mr-\[10px\],
.plugin-parakeet .pk-mr-\[10px\] {
margin-right: 10px
}
#app-parakeet .pk-mb-4,
.plugin-parakeet .pk-mb-4 {
margin-bottom: 1rem
}
#app-parakeet .pk-mr-2\.5,
.plugin-parakeet .pk-mr-2\.5 {
margin-right: .625rem
}
#app-parakeet .pk-mr-2,
.plugin-parakeet .pk-mr-2 {
margin-right: .5rem
}
#app-parakeet .pk-ml-1\.5,
.plugin-parakeet .pk-ml-1\.5 {
margin-left: .375rem
}
#app-parakeet .pk-ml-1,
.plugin-parakeet .pk-ml-1 {
margin-left: .25rem
}
#app-parakeet .pk-mb-3,
.plugin-parakeet .pk-mb-3 {
margin-bottom: .75rem
}
#app-parakeet .pk-mb-2\.5,
.plugin-parakeet .pk-mb-2\.5 {
margin-bottom: .625rem
}
#app-parakeet .pk-mb-2,
.plugin-parakeet .pk-mb-2 {
margin-bottom: .5rem
}
#app-parakeet .pk-mt-2,
.plugin-parakeet .pk-mt-2 {
margin-top: .5rem
}
#app-parakeet .\!pk-mt-7,
.plugin-parakeet .\!pk-mt-7 {
margin-top: 1.75rem !important
}
#app-parakeet .pk-ml-2,
.plugin-parakeet .pk-ml-2 {
margin-left: .5rem
}
#app-parakeet .pk--mt-0\.5,
.plugin-parakeet .pk--mt-0\.5 {
margin-top: -.125rem
}
#app-parakeet .pk--mb-1\.5,
.plugin-parakeet .pk--mb-1\.5 {
margin-bottom: -.375rem
}
#app-parakeet .pk--mt-0,
.plugin-parakeet .pk--mt-0 {
margin-top: 0
}
#app-parakeet .pk--mb-1,
.plugin-parakeet .pk--mb-1 {
margin-bottom: -.25rem
}
#app-parakeet .\!pk-mb-0,
.plugin-parakeet .\!pk-mb-0 {
margin-bottom: 0 !important
}
#app-parakeet .pk-ml-3,
.plugin-parakeet .pk-ml-3 {
margin-left: .75rem
}
#app-parakeet .pk-ml-auto,
.plugin-parakeet .pk-ml-auto {
margin-left: auto
}
#app-parakeet .pk-mr-4,
.plugin-parakeet .pk-mr-4 {
margin-right: 1rem
}
#app-parakeet .pk--mt-1\.5,
.plugin-parakeet .pk--mt-1\.5 {
margin-top: -.375rem
}
#app-parakeet .pk--ml-2,
.plugin-parakeet .pk--ml-2 {
margin-left: -.5rem
}
#app-parakeet .pk--mt-1,
.plugin-parakeet .pk--mt-1 {
margin-top: -.25rem
}
#app-parakeet .pk-mt-3,
.plugin-parakeet .pk-mt-3 {
margin-top: .75rem
}
#app-parakeet .pk-block,
.plugin-parakeet .pk-block {
display: block
}
#app-parakeet .pk-inline-block,
.plugin-parakeet .pk-inline-block {
display: inline-block
}
#app-parakeet .pk-flex,
.plugin-parakeet .pk-flex {
display: flex
}
#app-parakeet .pk-grid,
.plugin-parakeet .pk-grid {
display: grid
}
#app-parakeet .pk-h-4\.5,
.plugin-parakeet .pk-h-4\.5 {
height: 1.125rem
}
#app-parakeet .pk-h-4,
.plugin-parakeet .pk-h-4 {
height: 1rem
}
#app-parakeet .pk-h-11\.5,
.plugin-parakeet .pk-h-11\.5 {
height: 2.875rem
}
#app-parakeet .pk-h-11,
.plugin-parakeet .pk-h-11 {
height: 2.75rem
}
#app-parakeet .pk-h-full,
.plugin-parakeet .pk-h-full {
height: 100%
}
#app-parakeet .pk-h-18,
.plugin-parakeet .pk-h-18 {
height: 4.5rem
}
#app-parakeet .pk-h-23,
.plugin-parakeet .pk-h-23 {
height: 5.75rem
}
#app-parakeet .pk-h-20,
.plugin-parakeet .pk-h-20 {
height: 5rem
}
#app-parakeet .pk-w-4\.5,
.plugin-parakeet .pk-w-4\.5 {
width: 1.125rem
}
#app-parakeet .pk-w-4,
.plugin-parakeet .pk-w-4 {
width: 1rem
}
#app-parakeet .pk-w-full,
.plugin-parakeet .pk-w-full {
width: 100%
}
#app-parakeet .pk-w-11,
.plugin-parakeet .pk-w-11 {
width: 2.75rem
}
#app-parakeet .pk-w-18,
.plugin-parakeet .pk-w-18 {
width: 4.5rem
}
#app-parakeet .pk-w-23,
.plugin-parakeet .pk-w-23 {
width: 5.75rem
}
#app-parakeet .pk-w-20,
.plugin-parakeet .pk-w-20 {
width: 5rem
}
#app-parakeet .pk-w-fit,
.plugin-parakeet .pk-w-fit {
width: -webkit-fit-content;
width: fit-content
}
#app-parakeet .pk-min-w-\[46px\],
.plugin-parakeet .pk-min-w-\[46px\] {
min-width: 46px
}
#app-parakeet .pk-min-w-0,
.plugin-parakeet .pk-min-w-0 {
min-width: 0
}
#app-parakeet .pk-max-w-\[50vw\],
.plugin-parakeet .pk-max-w-\[50vw\] {
max-width: 50vw
}
#app-parakeet .pk-flex-none,
.plugin-parakeet .pk-flex-none {
flex: none
}
#app-parakeet .pk-flex-1,
.plugin-parakeet .pk-flex-1 {
flex: 1 1 0%
}
#app-parakeet .pk-cursor-pointer,
.plugin-parakeet .pk-cursor-pointer {
cursor: pointer
}
#app-parakeet .pk-cursor-text,
.plugin-parakeet .pk-cursor-text {
cursor: text
}
#app-parakeet .pk-select-none,
.plugin-parakeet .pk-select-none {
-webkit-user-select: none;
user-select: none
}
#app-parakeet .pk-appearance-none,
.plugin-parakeet .pk-appearance-none {
-webkit-appearance: none;
appearance: none
}
#app-parakeet .pk-grid-flow-col,
.plugin-parakeet .pk-grid-flow-col {
grid-auto-flow: column
}
#app-parakeet .pk-grid-rows-\[auto\,auto\,auto\,auto\],
.plugin-parakeet .pk-grid-rows-\[auto\,auto\,auto\,auto\] {
grid-template-rows: auto auto auto auto
}
#app-parakeet .pk-flex-col,
.plugin-parakeet .pk-flex-col {
flex-direction: column
}
#app-parakeet .pk-flex-wrap,
.plugin-parakeet .pk-flex-wrap {
flex-wrap: wrap
}
#app-parakeet .pk-items-center,
.plugin-parakeet .pk-items-center {
align-items: center
}
#app-parakeet .pk-justify-center,
.plugin-parakeet .pk-justify-center {
justify-content: center
}
#app-parakeet .pk-gap-4,
.plugin-parakeet .pk-gap-4 {
gap: 1rem
}
#app-parakeet .pk-gap-x-3,
.plugin-parakeet .pk-gap-x-3 {
column-gap: .75rem
}
#app-parakeet .pk-gap-y-4,
.plugin-parakeet .pk-gap-y-4 {
row-gap: 1rem
}
#app-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]),
.plugin-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]) {
--tw-space-y-reverse: 0;
margin-bottom: calc(1rem*var(--tw-space-y-reverse));
margin-top: calc(1rem*(1 - var(--tw-space-y-reverse)))
}
#app-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]),
.plugin-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]) {
--tw-space-y-reverse: 0;
margin-bottom: calc(1.25rem*var(--tw-space-y-reverse));
margin-top: calc(1.25rem*(1 - var(--tw-space-y-reverse)))
}
#app-parakeet .pk-self-center,
.plugin-parakeet .pk-self-center {
align-self: center
}
#app-parakeet .pk-overflow-hidden,
.plugin-parakeet .pk-overflow-hidden {
overflow: hidden
}
#app-parakeet .pk-truncate,
.plugin-parakeet .pk-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
#app-parakeet .pk-break-words,
.plugin-parakeet .pk-break-words {
overflow-wrap: break-word
}
#app-parakeet .pk-break-all,
.plugin-parakeet .pk-break-all {
word-break: break-all
}
#app-parakeet .pk-rounded-full,
.plugin-parakeet .pk-rounded-full {
border-radius: 9999px
}
#app-parakeet .pk-rounded-md,
.plugin-parakeet .pk-rounded-md {
border-radius: .375rem
}
#app-parakeet .pk-rounded,
.plugin-parakeet .pk-rounded {
border-radius: .25rem
}
#app-parakeet .pk-rounded-\[3px\],
.plugin-parakeet .pk-rounded-\[3px\] {
border-radius: 3px
}
#app-parakeet .pk-border-\[5px\],
.plugin-parakeet .pk-border-\[5px\] {
border-width: 5px
}
#app-parakeet .pk-border-2,
.plugin-parakeet .pk-border-2 {
border-width: 2px
}
#app-parakeet .pk-border,
.plugin-parakeet .pk-border {
border-width: 1px
}
#app-parakeet .pk-border-0,
.plugin-parakeet .pk-border-0 {
border-width: 0
}
#app-parakeet .pk-border-solid,
.plugin-parakeet .pk-border-solid {
border-style: solid
}
#app-parakeet .pk-border-dashed,
.plugin-parakeet .pk-border-dashed {
border-style: dashed
}
#app-parakeet .pk-border-transparent,
.plugin-parakeet .pk-border-transparent {
border-color: transparent
}
#app-parakeet .pk-border-\[\#333\],
.plugin-parakeet .pk-border-\[\#333\] {
--tw-border-opacity: 1;
border-color: rgba(51, 51, 51, var(--tw-border-opacity))
}
#app-parakeet .pk-border-\[\#DB393A\],
.plugin-parakeet .pk-border-\[\#DB393A\] {
--tw-border-opacity: 1;
border-color: rgba(219, 57, 58, var(--tw-border-opacity))
}
#app-parakeet .pk-border-\[\#D1D1D1\],
.plugin-parakeet .pk-border-\[\#D1D1D1\] {
--tw-border-opacity: 1;
border-color: rgba(209, 209, 209, var(--tw-border-opacity))
}
#app-parakeet .pk-border-\[\#d9d9d9\],
.plugin-parakeet .pk-border-\[\#d9d9d9\] {
--tw-border-opacity: 1;
border-color: rgba(217, 217, 217, var(--tw-border-opacity))
}
#app-parakeet .pk-border-t-white,
.plugin-parakeet .pk-border-t-white {
--tw-border-opacity: 1;
border-top-color: rgba(255, 255, 255, var(--tw-border-opacity))
}
#app-parakeet .pk-bg-\[\#E6E6E6\]\/40,
.plugin-parakeet .pk-bg-\[\#E6E6E6\]\/40 {
background-color: hsla(0, 0%, 90%, .4)
}
#app-parakeet .pk-bg-white,
.plugin-parakeet .pk-bg-white {
--tw-bg-opacity: 1;
background-color: rgba(255, 255, 255, var(--tw-bg-opacity))
}
#app-parakeet .pk-bg-transparent,
.plugin-parakeet .pk-bg-transparent {
background-color: initial
}
#app-parakeet .pk-bg-\[\#fdfdfd\],
.plugin-parakeet .pk-bg-\[\#fdfdfd\] {
--tw-bg-opacity: 1;
background-color: rgba(253, 253, 253, var(--tw-bg-opacity))
}
#app-parakeet .pk-bg-\[\#F6F6F7\],
.plugin-parakeet .pk-bg-\[\#F6F6F7\] {
--tw-bg-opacity: 1;
background-color: rgba(246, 246, 247, var(--tw-bg-opacity))
}
#app-parakeet .pk-object-contain,
.plugin-parakeet .pk-object-contain {
object-fit: contain
}
#app-parakeet .pk-object-cover,
.plugin-parakeet .pk-object-cover {
object-fit: cover
}
#app-parakeet .pk-object-center,
.plugin-parakeet .pk-object-center {
object-position: center
}
#app-parakeet .pk-py-2,
.plugin-parakeet .pk-py-2 {
padding-bottom: .5rem;
padding-top: .5rem
}
#app-parakeet .pk-px-3,
.plugin-parakeet .pk-px-3 {
padding-left: .75rem;
padding-right: .75rem
}
#app-parakeet .pk-px-5,
.plugin-parakeet .pk-px-5 {
padding-left: 1.25rem;
padding-right: 1.25rem
}
#app-parakeet .pk-px-4,
.plugin-parakeet .pk-px-4 {
padding-left: 1rem;
padding-right: 1rem
}
#app-parakeet .pk-py-1\.5,
.plugin-parakeet .pk-py-1\.5 {
padding-bottom: .375rem;
padding-top: .375rem
}
#app-parakeet .pk-py-1,
.plugin-parakeet .pk-py-1 {
padding-bottom: .25rem;
padding-top: .25rem
}
#app-parakeet .pk-py-3\.5,
.plugin-parakeet .pk-py-3\.5 {
padding-bottom: .875rem;
padding-top: .875rem
}
#app-parakeet .pk-py-3,
.plugin-parakeet .pk-py-3 {
padding-bottom: .75rem;
padding-top: .75rem
}
#app-parakeet .pk-pt-2,
.plugin-parakeet .pk-pt-2 {
padding-top: .5rem
}
#app-parakeet .pk-pb-1,
.plugin-parakeet .pk-pb-1 {
padding-bottom: .25rem
}
#app-parakeet .pk-pl-4,
.plugin-parakeet .pk-pl-4 {
padding-left: 1rem
}
#app-parakeet .pk-pr-10\.5,
.plugin-parakeet .pk-pr-10\.5 {
padding-right: 2.625rem
}
#app-parakeet .pk-pr-10,
.plugin-parakeet .pk-pr-10 {
padding-right: 2.5rem
}
#app-parakeet .\!pk-text-\[13px\],
.plugin-parakeet .\!pk-text-\[13px\] {
font-size: 13px !important
}
#app-parakeet .\!pk-text-\[14px\],
.plugin-parakeet .\!pk-text-\[14px\] {
font-size: 14px !important
}
#app-parakeet .\!pk-text-\[15px\],
.plugin-parakeet .\!pk-text-\[15px\] {
font-size: 15px !important
}
#app-parakeet .pk-text-\[14px\],
.plugin-parakeet .pk-text-\[14px\] {
font-size: 14px
}
#app-parakeet .pk-text-sm,
.plugin-parakeet .pk-text-sm {
font-size: .875rem;
line-height: 1.25rem
}
#app-parakeet .pk-text-xs,
.plugin-parakeet .pk-text-xs {
font-size: .75rem;
line-height: 1rem
}
#app-parakeet .pk-text-\[15px\],
.plugin-parakeet .pk-text-\[15px\] {
font-size: 15px
}
#app-parakeet .\!pk-text-\[16px\],
.plugin-parakeet .\!pk-text-\[16px\] {
font-size: 16px !important
}
#app-parakeet .pk-font-semibold,
.plugin-parakeet .pk-font-semibold {
font-weight: 600
}
#app-parakeet .pk-font-medium,
.plugin-parakeet .pk-font-medium {
font-weight: 500
}
#app-parakeet .pk-leading-none,
.plugin-parakeet .pk-leading-none {
line-height: 1
}
#app-parakeet .pk-leading-5,
.plugin-parakeet .pk-leading-5 {
line-height: 1.25rem
}
#app-parakeet .pk-leading-\[0px\],
.plugin-parakeet .pk-leading-\[0px\] {
line-height: 0px
}
#app-parakeet .pk-text-\[\#DB393A\],
.plugin-parakeet .pk-text-\[\#DB393A\] {
--tw-text-opacity: 1;
color: rgba(219, 57, 58, var(--tw-text-opacity))
}
#app-parakeet .pk-text-\[\#7A7A7A\],
.plugin-parakeet .pk-text-\[\#7A7A7A\] {
--tw-text-opacity: 1;
color: rgba(122, 122, 122, var(--tw-text-opacity))
}
#app-parakeet .pk-text-\[\#d2d5d8\],
.plugin-parakeet .pk-text-\[\#d2d5d8\] {
--tw-text-opacity: 1;
color: rgba(210, 213, 216, var(--tw-text-opacity))
}
#app-parakeet .pk-text-\[\#93989D\],
.plugin-parakeet .pk-text-\[\#93989D\] {
--tw-text-opacity: 1;
color: rgba(147, 152, 157, var(--tw-text-opacity))
}
#app-parakeet .pk-text-\[\#292929\]\/75,
.plugin-parakeet .pk-text-\[\#292929\]\/75 {
color: rgba(41, 41, 41, .75)
}
#app-parakeet .pk-text-opacity-80,
.plugin-parakeet .pk-text-opacity-80 {
--tw-text-opacity: 0.8
}
#app-parakeet .pk-opacity-0,
.plugin-parakeet .pk-opacity-0 {
opacity: 0
}
#app-parakeet .pk-shadow-\[0px_4px_18px_rgb\(0_0_0_\/_10\%\)\],
.plugin-parakeet .pk-shadow-\[0px_4px_18px_rgb\(0_0_0_\/_10\%\)\] {
--tw-shadow: 0px 4px 18px rgba(0, 0, 0, .1);
--tw-shadow-colored: 0px 4px 18px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow)
}
#app-parakeet .pk-outline-none,
.plugin-parakeet .pk-outline-none {
outline: 2px solid transparent;
outline-offset: 2px
}
#app-parakeet .pk-ring-2,
.plugin-parakeet .pk-ring-2 {
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 transparent)
}
#app-parakeet .pk-ring-\[\#333\],
.plugin-parakeet .pk-ring-\[\#333\] {
--tw-ring-opacity: 1;
--tw-ring-color: rgba(51, 51, 51, var(--tw-ring-opacity))
}
#app-parakeet .pk-ring-offset-2,
.plugin-parakeet .pk-ring-offset-2 {
--tw-ring-offset-width: 2px
}
#app-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::-webkit-input-placeholder,
.plugin-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::-webkit-input-placeholder {
--tw-text-opacity: 1;
color: rgba(147, 152, 157, var(--tw-text-opacity))
}
#app-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::placeholder,
.plugin-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::placeholder {
--tw-text-opacity: 1;
color: rgba(147, 152, 157, var(--tw-text-opacity))
}
#app-parakeet .last\:pk-mb-0:last-child,
.plugin-parakeet .last\:pk-mb-0:last-child {
margin-bottom: 0
}
#app-parakeet .hover\:pk-bg-\[\#f6f6f7\]:hover,
.plugin-parakeet .hover\:pk-bg-\[\#f6f6f7\]:hover {
--tw-bg-opacity: 1;
background-color: rgba(246, 246, 247, var(--tw-bg-opacity))
}
#app-parakeet .focus\:pk-border-\[\#333\]:focus,
.plugin-parakeet .focus\:pk-border-\[\#333\]:focus {
--tw-border-opacity: 1;
border-color: rgba(51, 51, 51, var(--tw-border-opacity))
}
@media (min-width:768px) {
#app-parakeet .md\:pk-max-w-\[33vw\],
.plugin-parakeet .md\:pk-max-w-\[33vw\] {
max-width: 33vw
}
#app-parakeet .md\:pk-text-base,
.plugin-parakeet .md\:pk-text-base {
font-size: 1rem;
line-height: 1.5rem
}
#app-parakeet .md\:pk-text-sm,
.plugin-parakeet .md\:pk-text-sm {
font-size: .875rem;
line-height: 1.25rem
}
}
@media (min-width:1024px) {
#app-parakeet .lg\:pk-px-8,
.plugin-parakeet .lg\:pk-px-8 {
padding-left: 2rem;
padding-right: 2rem
}
}
.TooltipIconLarge-module_large_tooltip__gzcyR {
align-items: center;
background: #fff;
border-radius: 6px;
box-shadow: 0 4px 36px 0 rgba(51, 51, 51, .08) !important;
box-sizing: border-box;
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 8px !important;
padding: 8px !important;
width: 136px
}
.TooltipIconLarge-module_large_tooltip_img__rpH1F {
border-radius: 3px;
height: 120px !important;
width: 120px !important
}
@media (max-width:959px) {
.TooltipIconLarge-module_large_tooltip__gzcyR {
width: 104px !important
}
.TooltipIconLarge-module_large_tooltip_img__rpH1F {
border-radius: 3px;
height: 88px !important;
width: 88px !important
}
}
.Dropdown-module_dropdown-label__8sSmb[\:has\(select\:focus\)] {
border: 1px solid #333 !important
}
.Dropdown-module_dropdown-label__8sSmb:has(select:focus) {
border: 1px solid #333 !important
}
.Text-module_text-label__8sMmT[\:has\(input\:focus\)] {
border: 1px solid #333
}
.Text-module_text-label__8sMmT:has(input:focus) {
border: 1px solid #333
}
.Text-module_text_preview_contaniner__X8vAR {
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 20px;
margin-top: 20px
}
.Text-module_font_color_area__Zch0o,
.Text-module_font_family_area__BUzEb,
.Text-module_font_size_area__KmeEO {
align-items: flex-start;
display: flex;
flex-direction: column;
gap: 12px;
width: 100%
}
.Text-module_preview_item_label__akFsR {
color: rgba(51, 51, 51, .9);
font-size: 15px;
line-height: 130%
}
.Text-module_color_block_wrapper__0K3rY {
align-items: flex-start;
align-self: stretch;
display: flex;
flex-wrap: wrap;
gap: 4px;
width: 100%
}
.Text-module_color_block__8LhBv {
align-items: center;
border-radius: 6px;
box-sizing: border-box;
cursor: pointer;
display: flex;
height: 52px;
justify-content: center;
padding: 0;
width: 52px
}
.Text-module_font_family_select_wrapper__N-f37 {
border: 1px solid rgba(51, 51, 51, .12) !important;
border-radius: 4px;
overflow: hidden;
position: relative;
width: 100%
}
.Text-module_font_family_select__otjrz {
-webkit-appearance: none;
appearance: none;
background: #fff;
border: none !important;
color: #333 !important;
cursor: pointer;
font-size: 14px !important;
font-weight: 500 !important;
height: 100%;
line-height: 130% !important;
overflow: hidden;
padding: 14px 42px 14px 16px !important;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%
}
.Text-module_arrow_down_icon__GZiHO {
cursor: pointer;
position: absolute;
right: 16px;
top: 16px
}
.Text-module_font_size_wrapper__TRp3a {
-webkit-tap-highlight-color: #fff;
align-items: center;
background: #fff;
border: 1px solid rgba(51, 51, 51, .12) !important;
border-radius: 4px;
box-sizing: border-box;
display: flex;
gap: 10px;
height: 44px;
outline: none;
padding: 5px 39px 5px 16px;
position: relative;
width: 120px
}
.Text-module_input_up__huYER {
cursor: pointer;
position: absolute;
right: 5px;
top: 3px
}
.Text-module_input_up__huYER:hover rect {
fill: #dbdddf
}
.Text-module_input_up__huYER:active rect {
fill: #c9ccd0
}
.Text-module_input_down__g1FF8 {
cursor: pointer;
position: absolute;
right: 5px;
top: 23px
}
.Text-module_input_down__g1FF8:active rect {
fill: #c9ccd0
}
.Text-module_font_size_input__fMl0u {
-webkit-appearance: none !important;
appearance: none !important;
font-size: 14px !important;
font-weight: 500 !important;
height: 100%;
line-height: 130% !important;
outline: none !important;
width: 100%
}
.Checkbox-module_checkbox_img__wHiW3 {
border-radius: 3px;
height: 52px !important;
margin-left: 8px;
width: 52px
}
.Checkbox-module_checkbox_img_default__S0ISH {
align-items: center;
background-color: #f5f5f5;
border-radius: 3px;
display: flex;
height: 52px !important;
justify-content: center;
margin-left: 8px;
width: 52px
}
.Checkbox-module_checkbox_row__MJZge {
align-items: stretch !important;
display: flex !important;
flex-wrap: wrap !important;
gap: 12px !important;
margin-left: 0 !important;
width: 100% !important
}
.Checkbox-module_checkbox_row__MJZge>label {
background: #fff !important;
border: 1px solid #e6e6e6 !important;
border-radius: 6px !important;
box-sizing: border-box !important;
display: flex !important;
flex-direction: column !important;
flex-wrap: wrap !important;
margin-bottom: 0 !important;
min-height: 125px !important;
padding: 8px 8px 10px !important;
width: 118px !important
}
.Checkbox-module_checkbox_row__MJZge>.Checkbox-module_label_checked__YpN49 {
background: #fff !important;
border: 1px solid #333 !important;
border-radius: 6px !important
}
.Checkbox-module_checkbox_row__MJZge>label * {
margin: 0 !important
}
.Checkbox-module_checkbox_row__MJZge>label>svg {
margin-bottom: 8px !important
}
.Checkbox-module_checkbox_row__MJZge>label>span {
margin-top: 5px !important
}
.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,
.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH {
height: 66px !important;
object-fit: contain;
width: 66px !important
}
@media (max-width:959px) {
.Checkbox-module_checkbox_row__MJZge>label {
min-height: 111px !important;
width: 106px !important
}
.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,
.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH {
height: 52px !important;
object-fit: contain;
width: 52px !important
}
}
.common-module_flex__7RXvG {
display: flex
}
.common-module_flex_center_y__ZWb6u {
align-items: center;
display: flex
}
.common-module_toast__WjP9V {
background: rgba(51, 51, 51, .9) !important;
border-radius: 8px;
display: inline-block !important;
max-width: 263px;
padding: 20px 24px !important;
right: 50% !important;
text-align: center;
transform: translate(50%, 120px);
width: -webkit-max-content !important;
width: max-content !important;
z-index: 10000 !important
}
.common-module_toast__WjP9V .rc-notification-notice {
background: none !important;
box-shadow: none;
margin: 0;
padding: 0
}
.common-module_toast__WjP9V .rc-notification-notice-content {
background: none !important;
color: #fff;
font-size: 14px;
font-weight: 500;
line-height: 18px;
padding: 0
}
.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body {
padding: 24px
}
.common-module_ap-dialog-title__-GIOw {
color: #222;
font-size: 24px;
font-weight: 600;
line-height: 130%
}
.common-module_ap-dialog-body__5yegi {
color: #222;
font-family: inherit;
font-size: 15px;
font-weight: 400;
line-height: 130%;
margin-top: 16px
}
.common-module_app-dialog-footer__qYGkd {
display: flex;
justify-content: flex-end;
margin-top: 40px
}
.common-module_ap-button__RhZvx {
border: 1px solid rgba(51, 51, 51, .12);
border-radius: 6px;
cursor: pointer;
font-family: inherit;
font-size: 15px;
min-width: 84px;
outline: none !important;
padding: 8px 16px
}
.common-module_app-parakeet-dialog--wrapper__YIL3t {
align-items: center;
display: flex;
justify-content: center
}
.common-module_ap-button-no__f3AQV {
background: #fff;
color: #333
}
.common-module_ap-button-ok__-Dglc {
background: #333;
color: #fff;
margin-left: 12px
}
.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close {
opacity: 1 !important;
padding: 0 !important;
top: 24px
}
.common-module_clone-lower-canvas__8Uh2v {
pointer-events: none;
touch-action: none;
-webkit-user-select: none;
user-select: none;
width: 100%
}
@media (min-width:768px) {
.common-module_app-parakeet-dialog__UWDmu {
width: 580px !important
}
.common-module_app-parakeet-dialog__UWDmu .rc-dialog-content {
border-radius: 8px
}
}
@media (max-width:767px) {
.common-module_app-parakeet-dialog__UWDmu {
margin: 0 16px !important;
width: 100% !important
}
.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body {
padding: 16px
}
.common-module_ap-button__RhZvx {
font-size: 15px
}
.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close {
right: 16px !important;
top: 16px
}
.common-module_toast__WjP9V {
left: 50% !important;
top: 50% !important;
transform: translateY(-50%) translateX(-50%) !important
}
}
.advanced-cropper-line-wrapper--north,
.advanced-cropper-line-wrapper--south {
height: 12px;
width: 100%
}
.advanced-cropper-line-wrapper--north {
cursor: n-resize
}
.advanced-cropper-line-wrapper--south {
cursor: s-resize
}
.advanced-cropper-line-wrapper--east,
.advanced-cropper-line-wrapper--west {
height: 100%;
width: 12px
}
.advanced-cropper-line-wrapper--east {
cursor: e-resize
}
.advanced-cropper-line-wrapper--west {
cursor: w-resize
}
.advanced-cropper-line-wrapper--disabled {
cursor: auto
}
.advanced-cropper-line-wrapper__content {
position: absolute
}
.advanced-cropper-line-wrapper__content--east,
.advanced-cropper-line-wrapper__content--west {
height: 100%
}
.advanced-cropper-line-wrapper__content--north,
.advanced-cropper-line-wrapper__content--south {
width: 100%
}
.advanced-cropper-line-wrapper__content--east {
left: 50%;
transform: translateX(-100%)
}
.advanced-cropper-line-wrapper__content--west {
right: 50%;
transform: translateX(100%)
}
.advanced-cropper-line-wrapper__content--north {
top: 50%
}
.advanced-cropper-line-wrapper__content--south {
bottom: 50%
}
.advanced-cropper-handler-wrapper {
height: 30px;
position: absolute;
transform: translate(-50%, -50%);
width: 30px
}
.advanced-cropper-handler-wrapper__draggable {
align-items: center;
display: flex;
height: 100%;
justify-content: center;
width: 100%
}
.advanced-cropper-handler-wrapper--west-north {
cursor: nw-resize
}
.advanced-cropper-handler-wrapper--north {
cursor: n-resize
}
.advanced-cropper-handler-wrapper--east-north {
cursor: ne-resize
}
.advanced-cropper-handler-wrapper--east {
cursor: e-resize
}
.advanced-cropper-handler-wrapper--east-south {
cursor: se-resize
}
.advanced-cropper-handler-wrapper--south {
cursor: s-resize
}
.advanced-cropper-handler-wrapper--west-south {
cursor: sw-resize
}
.advanced-cropper-handler-wrapper--west {
cursor: w-resize
}
.advanced-cropper-handler-wrapper--disabled {
cursor: auto
}
.advanced-cropper-bounding-box {
height: 100%;
position: relative;
width: 100%
}
.advanced-cropper-bounding-box__handler-wrapper {
position: absolute
}
.advanced-cropper-bounding-box__handler-wrapper--east,
.advanced-cropper-bounding-box__handler-wrapper--west {
height: 100%;
top: 50%;
transform: translateY(-50%)
}
.advanced-cropper-bounding-box__handler-wrapper--north,
.advanced-cropper-bounding-box__handler-wrapper--south {
left: 50%;
transform: translateX(-50%);
width: 100%
}
.advanced-cropper-bounding-box__handler-wrapper--west,
.advanced-cropper-bounding-box__handler-wrapper--west-north,
.advanced-cropper-bounding-box__handler-wrapper--west-south {
left: 0
}
.advanced-cropper-bounding-box__handler-wrapper--east,
.advanced-cropper-bounding-box__handler-wrapper--east-north,
.advanced-cropper-bounding-box__handler-wrapper--east-south {
left: 100%
}
.advanced-cropper-bounding-box__handler-wrapper--east-north,
.advanced-cropper-bounding-box__handler-wrapper--north,
.advanced-cropper-bounding-box__handler-wrapper--west-north {
top: 0
}
.advanced-cropper-bounding-box__handler-wrapper--east-south,
.advanced-cropper-bounding-box__handler-wrapper--south,
.advanced-cropper-bounding-box__handler-wrapper--west-south {
top: 100%
}
.advanced-cropper-bounding-box__handler {
position: absolute
}
.advanced-cropper-bounding-box__handler--west-north {
left: 0;
top: 0
}
.advanced-cropper-bounding-box__handler--north {
left: 50%;
top: 0
}
.advanced-cropper-bounding-box__handler--east-north {
left: 100%;
top: 0
}
.advanced-cropper-bounding-box__handler--east {
left: 100%;
top: 50%
}
.advanced-cropper-bounding-box__handler--east-south {
left: 100%;
top: 100%
}
.advanced-cropper-bounding-box__handler--south {
left: 50%;
top: 100%
}
.advanced-cropper-bounding-box__handler--west-south {
left: 0;
top: 100%
}
.advanced-cropper-bounding-box__handler--west {
left: 0;
top: 50%
}
.advanced-cropper-bounding-box__line {
position: absolute
}
.advanced-cropper-bounding-box__line--north,
.advanced-cropper-bounding-box__line--south {
left: 0;
transform: translateY(-50%)
}
.advanced-cropper-bounding-box__line--north {
top: 0
}
.advanced-cropper-bounding-box__line--south {
top: 100%
}
.advanced-cropper-bounding-box__line--east,
.advanced-cropper-bounding-box__line--west {
top: 0;
transform: translateX(-50%)
}
.advanced-cropper-bounding-box__line--west {
left: 0
}
.advanced-cropper-bounding-box__line--east {
left: 100%
}
.advanced-cropper-artificial-transition {
will-change: transform
}
.advanced-cropper-background-image {
max-width: none !important;
pointer-events: none;
position: absolute;
transform-origin: center;
-webkit-user-select: none;
user-select: none
}
.advanced-cropper-canvas {
display: none
}
.advanced-cropper-source {
height: 1px;
opacity: 0;
position: absolute;
visibility: hidden;
width: 1px
}
.advanced-cropper-fade {
display: flex;
flex-direction: column;
opacity: 0;
transition: .5s;
visibility: hidden
}
.advanced-cropper-fade--visible {
opacity: 1;
visibility: visible
}
.advanced-cropper-wrapper__fade {
flex-grow: 1;
min-height: 0
}
.advanced-cropper-stencil-grid {
border-collapse: collapse;
display: table;
opacity: 0;
table-layout: fixed;
transition: opacity .3s
}
.advanced-cropper-stencil-grid--visible {
opacity: 1
}
.advanced-cropper-stencil-grid__row {
display: table-row
}
.advanced-cropper-stencil-grid__cell {
border: 1px solid;
display: table-cell;
height: 1%;
width: 1%
}
.advanced-cropper-stencil-grid__cell--top {
border-top-color: transparent
}
.advanced-cropper-stencil-grid__cell--left {
border-left-color: transparent
}
.advanced-cropper-stencil-grid__cell--right {
border-right-color: transparent
}
.advanced-cropper-stencil-grid__cell--bottom {
border-bottom-color: transparent
}
.advanced-cropper-stencil-overlay {
-webkit-backface-visibility: hidden;
box-shadow: 0 0 0 1000px currentColor;
box-sizing: initial;
height: 100%;
pointer-events: none;
position: absolute;
width: 100%
}
.advanced-cropper-stencil-wrapper {
will-change: transform
}
.advanced-cropper-boundary {
direction: ltr;
position: relative;
-webkit-user-select: none;
user-select: none
}
.advanced-cropper-boundary__content {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%
}
.advanced-cropper-boundary__stretcher {
max-height: 100%;
max-width: 100%;
pointer-events: none;
position: relative
}
.advanced-cropper-circle-stencil {
-webkit-backface-visibility: hidden;
box-sizing: initial;
height: 100%;
position: absolute;
-webkit-transform-style: preserve-3d;
width: 100%
}
.advanced-cropper-circle-stencil__overlay {
border-radius: 50%;
overflow: hidden
}
.advanced-cropper-circle-stencil__preview {
border-radius: 50%
}
.advanced-cropper-circle-stencil__draggable-area,
.advanced-cropper-circle-stencil__grid,
.advanced-cropper-circle-stencil__overlay,
.advanced-cropper-circle-stencil__preview {
height: 100%;
position: absolute;
width: 100%
}
.advanced-cropper-circle-stencil--movable {
cursor: move
}
.advanced-cropper-rectangle-stencil {
-webkit-backface-visibility: hidden;
box-sizing: border-box;
-webkit-transform-style: preserve-3d
}
.advanced-cropper-rectangle-stencil,
.advanced-cropper-rectangle-stencil__draggable-area,
.advanced-cropper-rectangle-stencil__grid,
.advanced-cropper-rectangle-stencil__overlay,
.advanced-cropper-rectangle-stencil__preview {
height: 100%;
position: absolute;
width: 100%
}
.advanced-cropper-rectangle-stencil--movable {
cursor: move
}
.advanced-cropper-simple-line {
background: none;
border-width: 0
}
.advanced-cropper-simple-line--north,
.advanced-cropper-simple-line--south {
height: 0;
width: 100%
}
.advanced-cropper-simple-line--east,
.advanced-cropper-simple-line--west {
height: 100%;
width: 0
}
.advanced-cropper-simple-line--east {
border-right-width: 1px
}
.advanced-cropper-simple-line--west {
border-left-width: 1px
}
.advanced-cropper-simple-line--south {
border-bottom-width: 1px
}
.advanced-cropper-simple-line--north {
border-top-width: 1px
}
.advanced-cropper-simple-handler {
display: block
}
.advanced-cropper-preview {
box-sizing: border-box;
display: flex;
flex-direction: column;
overflow: hidden;
position: relative
}
.advanced-cropper-preview__content {
left: 50%;
overflow: hidden;
position: absolute;
top: 50%;
transform: translate(-50%, -50%)
}
.advanced-cropper-preview__image {
display: none;
max-width: none !important;
pointer-events: none;
position: absolute;
transform-origin: center;
-webkit-user-select: none;
user-select: none
}
.advanced-cropper-preview__image--visible {
display: block
}
.advanced-cropper-preview__boundary {
flex-grow: 1;
min-height: 0;
min-width: 0
}
.cropper-preview-wrapper__fade {
flex-grow: 1;
min-height: 0;
width: 100%
}
.advanced-cropper {
background: #000;
color: #fff;
display: flex;
flex-direction: column;
max-height: 100%;
overflow: hidden;
position: relative
}
.advanced-cropper__boundary {
flex-grow: 1;
min-height: 0;
min-width: 0
}
.advanced-cropper__background-wrapper,
.advanced-cropper__wrapper {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0
}
.advanced-cropper__stencil-wrapper {
position: absolute
}
.advanced-cropper * {
box-sizing: border-box
}
.advanced-cropper-simple-handler {
background: currentColor;
height: 10px;
width: 10px
}
.advanced-cropper-simple-line {
border-color: hsla(0, 0%, 100%, .3);
border-style: solid;
transition: border .5s
}
.advanced-cropper-simple-line--hover {
border-color: #fff
}
.advanced-cropper-circle-stencil__preview {
border: 2px solid hsla(0, 0%, 100%, .2)
}
.advanced-cropper-stencil-overlay {
color: rgba(0, 0, 0, .5)
}
.advanced-cropper-stencil-grid {
color: hsla(0, 0%, 100%, .4)
}
.ImageCropper-module_cropper_container__uvTtt {
border-radius: 6px 6px 0 0;
max-height: 544px;
max-width: 800px;
min-width: 600px
}
.ImageCropper-module_cropper_container__uvTtt * {
box-sizing: border-box
}
.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-line {
border-color: #599bff
}
.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-handler {
border: 1px solid #599bff
}
.ImageCropper-module_cropper_container__uvTtt .advanced-cropper__background-wrapper {
overflow: hidden
}
.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-stencil-overlay {
box-shadow: 0 0 0 1000px rgba(34, 34, 34, .7)
}
.ImageCropper-module_copper_wrapper__Wpn9E {
border-radius: 6px 6px 0 0;
max-height: 602px
}
.ImageCropper-module_cropper_footer__Rk-w5 {
align-items: center;
display: flex;
height: 56px;
justify-content: space-between;
padding: 0 12px
}
.ImageCropper-module_footer_button__BdQgl {
background: #fff;
border: 1px solid rgba(51, 51, 51, .12);
border-radius: 6px;
color: #333;
cursor: pointer;
font-family: inherit;
font-size: 16px;
font-weight: 500;
line-height: 130%;
outline: none !important;
padding: 8px 16px;
text-align: center
}
.ImageCropper-module_footer_button__BdQgl+.ImageCropper-module_footer_button__BdQgl {
margin-left: 12px
}
.ImageCropper-module_operate_box__QJJAG {
align-items: center;
display: flex;
margin-left: 22px
}
.ImageCropper-module_icon__0Sh-o {
cursor: pointer
}
.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o {
margin-left: 32px;
margin-right: 28px
}
.ImageCropper-module_mock_line__-0jep {
background: rgba(51, 51, 51, .12);
border-radius: 3px;
flex-shrink: 0;
height: 19px;
margin-right: 18px;
width: 2px
}
.ImageCropper-module_cropper_type_wrapper__7wTON {
align-items: center;
border-radius: 4px;
box-sizing: border-box;
cursor: pointer;
display: flex;
font-size: 0;
gap: 10px;
height: 28px;
padding: 6px 10px;
position: relative
}
.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n,
.ImageCropper-module_cropper_type_wrapper__7wTON:hover {
background: #eee
}
.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n .ImageCropper-module_cropper_type_arrow__6-sTm {
transform: rotate(180deg);
transition: .2s ease-in
}
.ImageCropper-module_cropper_select_list__Q9Msa {
align-items: flex-start;
background: #fff;
border-radius: 6px;
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, .08);
box-sizing: border-box;
display: flex;
flex-wrap: wrap;
height: 112px;
justify-content: space-between;
left: 50%;
padding: 6px;
position: relative;
position: absolute;
top: -120px;
transform: translateX(-50%);
width: 74px
}
.ImageCropper-module_cropper_select_list_arrow__GPSms {
bottom: -4px;
left: 50%;
position: absolute;
transform: translateX(-50%)
}
.ImageCropper-module_shape_icon__d0xAo {
align-items: center;
cursor: pointer;
display: flex;
height: 28px;
justify-content: center;
margin-bottom: 8px;
width: 28px
}
.ImageCropper-module_shape_icon__d0xAo.ImageCropper-module_active__c3F6n {
background: #e8f1ff;
border-radius: 4px;
color: #3e85ee
}
@media screen and (max-width:959px) {
.ImageCropper-module_cropper_container__uvTtt {
height: auto;
max-height: 610px;
min-width: auto
}
.ImageCropper-module_cropper_footer__Rk-w5 {
height: 50px;
padding: 0 10px
}
.ImageCropper-module_operate_box__QJJAG {
align-items: center;
margin-left: 0
}
.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o {
margin-left: 36px
}
.ImageCropper-module_cropper_footer__Rk-w5 {
font-size: 15px
}
.ImageCropper-module_footer_button__BdQgl {
line-height: 17px
}
}
.ImageCropper-module_preview_circle__M21xU {
border: none
}
.ImageCropper-module_preview_heart__ePRoZ {
background: transparent;
background: url(https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg);
background-repeat: no-repeat;
background-size: 100% 100%;
position: relative
}
.ImageCropper-module_preview_star__f2pmG {
background: transparent;
background: url(https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg);
background-repeat: no-repeat;
background-size: 100% 100%;
position: relative
}
.ImageCropper-module_overlay_rect_radius__q1iPj {
border-radius: 28px
}
.ImageCropper-module_overlay_ellipse__F-yu5 {
border-radius: 50%;
height: 100%;
left: 50%;
position: absolute;
transform: translateX(-50%);
width: 50%
}
.ImageCropper-module_hidden_canvas__l7EU7 {
display: none
}
.ImageCropper-module_ml0__wrtDc {
margin-left: 0
}
.Upload-module_upload_dialog__jV-WW {
border-radius: 8px;
left: 50%;
margin: 0 !important;
padding: 0 !important;
position: absolute !important;
top: 50%;
transform: translateX(-50%) translateY(-50%);
width: auto !important
}
.Upload-module_upload_dialog__jV-WW .rc-dialog-body {
display: block;
padding: 0
}
.Upload-module_upload_large__9rjsH {
border-radius: 8px;
height: 228px;
margin-bottom: 6px;
width: 100%
}
.Upload-module_large_content__PoxTi {
align-items: flex-start;
display: inline-flex;
flex-direction: column;
gap: 8px
}
.Upload-module_large_img__Xguu1 {
align-items: center;
display: flex;
flex-direction: column;
gap: 4px;
width: 100%
}
.Upload-module_large_img__Xguu1 p {
color: #333;
font-style: normal;
font-weight: 600;
width: 100%
}
.Upload-module_large_img__Xguu1 p span {
color: #477bff;
font-weight: 600;
position: relative
}
.Upload-module_large_img__Xguu1 p span:after {
background-color: #477bff;
bottom: 3px;
content: "";
height: 1px;
left: 0;
position: absolute;
width: 100%
}
.Upload-module_large_tips__TOH6I {
align-items: flex-start;
display: flex;
flex-direction: column;
gap: 4px
}
.Upload-module_upload_tips__8XVTP {
align-items: center;
color: rgba(51, 51, 51, .8);
display: flex;
font-size: 13px !important;
font-style: normal;
font-weight: 400;
gap: 6px
}
.Upload-module_upload_tips_dot__GLSmQ {
background-color: #5c5c5c;
border-radius: 50%;
display: inline-block;
height: 3px;
width: 3px
}
.Tab-module_parakeet_comp_tab__Zx-vZ {
display: flex;
font-weight: 600;
margin-bottom: 16px
}
.Tab-module_tab_item__tBdan {
border: none;
color: rgba(51, 51, 51, .7);
cursor: pointer;
flex: 1;
font-size: 18px;
height: 35px;
line-height: 130%;
position: relative;
text-align: center
}
.Tab-module_tab_item__tBdan:after {
background-color: hsla(0, 0%, 90%, .6);
bottom: -2px;
content: "";
height: 2px;
left: 0;
position: absolute;
width: 100%
}
.Tab-module_tab_item__tBdan:first-child:after {
border-radius: 2px 0 0 2px
}
.Tab-module_tab_item__tBdan:last-child:after {
border-radius: 0 2px 2px 0
}
.Tab-module_tab_item_active__6rfwe {
color: #333;
height: 34px
}
.Tab-module_tab_item_active__6rfwe:after {
background-color: #333;
border-radius: 1px !important;
bottom: -3px !important;
content: "";
height: 3px !important;
left: 0;
position: absolute;
width: 100%
}
@media screen and (max-width:959px) {
.Tab-module_parakeet_comp_tab__Zx-vZ {
padding: 0 16px
}
.eva .parakeet_comp_tab {
padding: 0
}
.hero .parakeet_comp_tab,
.nova .parakeet_comp_tab,
.wind .parakeet_comp_tab {
margin-top: 26px
}
.flash .parakeet_comp_tab {
margin-top: 26px;
padding: 0 8px
}
.flash #app-parakeet {
padding: 0 10px
}
.dj_skin_body .parakeet_comp_tab {
margin-top: 26px
}
}
.DesignOperator-module_parakeet_comp_tab__Ekj1e {
display: flex;
font-weight: 600;
margin-bottom: 16px
}
.DesignOperator-module_tabs__kDJ51 {
border: none !important;
border-radius: 0 0 8px 8px
}
.DesignOperator-module_app_parakeet_operator__lL4U1 {
box-sizing: border-box
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list {
background-color: hsla(0, 0%, 90%, .4);
display: flex;
padding: 5px;
width: 100%
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab {
background: none;
border-radius: 4px;
display: flex;
flex: 1;
height: 30px;
justify-content: center
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active {
background-color: #fff;
color: #333
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active .rc-tabs-tab-btn {
color: #333
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-btn {
align-items: center;
color: rgba(51, 51, 51, .6);
display: flex;
font-size: 16px;
font-weight: 500 !important
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-ink-bar {
display: none
}
.DesignOperator-module_tab_item_active__8Mzpg {
border: none;
color: #333;
height: 34px;
position: relative
}
.DesignOperator-module_tab_panel__cumuu {
background-color: #fdfdfd
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled {
flex: unset;
margin: 0 18px
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-child {
margin-right: 22px
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:nth-child(5) {
margin-left: 22px
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled:hover {
background-color: #fff
}
@media screen and (max-width:959px) {
.DesignOperator-module_tab_panel__cumuu {
align-items: center;
display: flex;
height: auto;
min-height: 108px
}
.DesignOperator-module_tab_panel__cumuu>div {
width: 100%
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .icon-custom {
scale: .8
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-of-type {
flex: unset;
margin: 0 8px 0 3px
}
.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list div:nth-last-child(2) {
flex: unset;
margin: 0 3px 0 8px
}
}
.SizeOperator-module_input__lSSD5 {
background: #fff;
border: 1px solid rgba(51, 51, 51, .12);
border-radius: 4px;
display: flex;
font-size: 14px;
height: 33px;
margin-left: 12px;
outline: none !important;
padding: 6px 24px 6px 12px
}
.SizeOperator-module_suffix__kFdZc {
position: relative
}
.SizeOperator-module_suffix__kFdZc:after {
color: rgba(51, 51, 51, .4);
content: "px";
display: block;
font-size: 16px;
font-weight: 400;
line-height: 16px;
position: absolute;
right: 6px;
top: 6px
}
.SizeOperator-module_input_controller__pl-h0 {
width: 88px
}
.SizeOperator-module_label__4U5QN {
color: #333;
font-size: 15px;
font-weight: 400;
line-height: 130%;
width: 50px
}
.SizeOperator-module_tab_content__SYACz {
padding: 20px 24px
}
.SizeOperator-module_tip__-z7-F {
color: rgba(51, 51, 51, .5);
font-size: 15px;
font-weight: 400;
line-height: 130%;
margin-left: 16px;
text-align: center
}
.SizeOperator-module_tab_content_item__yRWHu {
margin-top: 12px
}
@media screen and (max-width:959px) {
.SizeOperator-module_tip__-z7-F {
font-size: 14px
}
.SizeOperator-module_tab_content__SYACz {
padding: 0 16px
}
.SizeOperator-module_input__lSSD5 {
margin-left: 8px
}
.SizeOperator-module_tip__-z7-F {
margin-left: 12px
}
.SizeOperator-module_label__4U5QN {
font-size: 14px
}
.SizeOperator-module_suffix__kFdZc:after {
top: 7px
}
}
.RotateOperator-module_operate_rotate__DbNrD {
display: flex;
height: 118px;
padding: 32px 16px 28px
}
.RotateOperator-module_slider__RyqmW {
margin: 32px 33px 0 22px
}
.RotateOperator-module_slider__RyqmW .rc-slider-handle {
box-shadow: 0 0 0 5px #fff !important;
height: 20px;
margin-top: -8px;
opacity: 1;
position: relative;
width: 20px;
z-index: 10
}
.RotateOperator-module_slider__RyqmW .rc-slider-handle:after {
background: #fff;
border-radius: 4px;
box-shadow: 0 2px 10px rgba(34, 34, 34, .06);
color: #292929;
content: attr(aria-valuenow);
display: none;
font-size: 16px;
font-weight: 400;
left: 50%;
line-height: 120%;
padding: 4px 10px;
position: absolute;
top: -37px;
transform: translateX(-50%)
}
.RotateOperator-module_slider__RyqmW .rc-slider-handle-dragging,
.RotateOperator-module_slider__RyqmW .rc-slider-handle:active {
box-shadow: 0 0 0 5px #fff !important
}
.RotateOperator-module_slider__RyqmW .rc-slider-handle:active:after {
display: block !important
}
.RotateOperator-module_slider__RyqmW .rc-slider-mark {
top: -34px;
z-index: 5
}
.RotateOperator-module_slider__RyqmW .rc-slider-mark-text {
color: #333;
font-size: 15px;
font-weight: 500;
line-height: 120%
}
.RotateOperator-module_slider__RyqmW .rc-slider-step {
background: hsla(0, 0%, 90%, .8)
}
.RotateOperator-module_slider__RyqmW .rc-slider-dot:nth-child(3) {
background-color: #333 !important;
z-index: 3
}
@media screen and (max-width:959px) {
.RotateOperator-module_slider__RyqmW .rc-slider-mark-text {
font-size: 14px
}
.RotateOperator-module_operate_rotate__DbNrD {
height: 108px;
padding: 32px 2px 20px
}
.RotateOperator-module_slider__RyqmW .rc-slider-mark {
top: -38px;
z-index: 5
}
.RotateOperator-module_slider__RyqmW {
margin: 32px 22px 0
}
}
.rc-slider {
border-radius: 6px;
height: 14px;
padding: 5px 0;
position: relative;
touch-action: none;
width: 100%
}
.rc-slider,
.rc-slider * {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
box-sizing: border-box
}
.rc-slider-rail {
background-color: #e9e9e9;
width: 100%
}
.rc-slider-rail,
.rc-slider-track {
border-radius: 6px;
height: 4px;
position: absolute
}
.rc-slider-track {
background-color: #abe2fb
}
.rc-slider-handle {
background-color: #fff;
border: 2px solid #96dbfa;
border-radius: 50%;
cursor: pointer;
cursor: -webkit-grab;
cursor: grab;
height: 14px;
margin-top: -5px;
opacity: .8;
position: absolute;
touch-action: pan-x;
width: 14px
}
.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging {
border-color: #57c5f7;
box-shadow: 0 0 0 5px #96dbfa
}
.rc-slider-handle:focus {
box-shadow: none;
outline: none
}
.rc-slider-handle.focus-visible {
border-color: #2db7f5;
box-shadow: 0 0 0 3px #96dbfa
}
.rc-slider-handle:focus-visible {
border-color: #2db7f5;
box-shadow: 0 0 0 3px #96dbfa
}
.rc-slider-handle-click-focused:focus {
border-color: #96dbfa;
box-shadow: unset
}
.rc-slider-handle:hover {
border-color: #57c5f7
}
.rc-slider-handle:active {
border-color: #57c5f7;
box-shadow: 0 0 5px #57c5f7;
cursor: -webkit-grabbing;
cursor: grabbing
}
.rc-slider-mark {
font-size: 12px;
left: 0;
position: absolute;
top: 18px;
width: 100%
}
.rc-slider-mark-text {
color: #999;
cursor: pointer;
display: inline-block;
position: absolute;
text-align: center;
vertical-align: middle
}
.rc-slider-mark-text-active {
color: #666
}
.rc-slider-step {
background: transparent;
height: 4px;
pointer-events: none;
position: absolute;
width: 100%
}
.rc-slider-dot {
background-color: #fff;
border: 2px solid #e9e9e9;
border-radius: 50%;
bottom: -2px;
cursor: pointer;
height: 8px;
position: absolute;
vertical-align: middle;
width: 8px
}
.rc-slider-dot-active {
border-color: #96dbfa
}
.rc-slider-dot-reverse {
margin-right: -4px
}
.rc-slider-disabled {
background-color: #e9e9e9
}
.rc-slider-disabled .rc-slider-track {
background-color: #ccc
}
.rc-slider-disabled .rc-slider-dot,
.rc-slider-disabled .rc-slider-handle {
background-color: #fff;
border-color: #ccc;
box-shadow: none;
cursor: not-allowed
}
.rc-slider-disabled .rc-slider-dot,
.rc-slider-disabled .rc-slider-mark-text {
cursor: not-allowed !important
}
.rc-slider-vertical {
height: 100%;
padding: 0 5px;
width: 14px
}
.rc-slider-vertical .rc-slider-rail {
height: 100%;
width: 4px
}
.rc-slider-vertical .rc-slider-track {
bottom: 0;
left: 5px;
width: 4px
}
.rc-slider-vertical .rc-slider-handle {
margin-left: -5px;
margin-top: 0;
touch-action: pan-y
}
.rc-slider-vertical .rc-slider-mark {
height: 100%;
left: 18px;
top: 0
}
.rc-slider-vertical .rc-slider-step {
height: 100%;
width: 4px
}
.rc-slider-vertical .rc-slider-dot {
margin-left: -2px
}
.rc-slider-tooltip-zoom-down-appear,
.rc-slider-tooltip-zoom-down-enter {
animation-duration: .3s;
animation-fill-mode: both;
animation-play-state: paused;
display: block !important
}
.rc-slider-tooltip-zoom-down-leave {
animation-duration: .3s;
animation-fill-mode: both;
animation-play-state: paused;
display: block !important
}
.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,
.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active {
animation-name: rcSliderTooltipZoomDownIn;
animation-play-state: running
}
.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active {
animation-name: rcSliderTooltipZoomDownOut;
animation-play-state: running
}
.rc-slider-tooltip-zoom-down-appear,
.rc-slider-tooltip-zoom-down-enter {
animation-timing-function: cubic-bezier(.23, 1, .32, 1);
transform: scale(0)
}
.rc-slider-tooltip-zoom-down-leave {
animation-timing-function: cubic-bezier(.755, .05, .855, .06)
}
@keyframes rcSliderTooltipZoomDownIn {
0% {
opacity: 0;
transform: scale(0);
transform-origin: 50% 100%
}
to {
transform: scale(1);
transform-origin: 50% 100%
}
}
@keyframes rcSliderTooltipZoomDownOut {
0% {
transform: scale(1);
transform-origin: 50% 100%
}
to {
opacity: 0;
transform: scale(0);
transform-origin: 50% 100%
}
}
.rc-slider-tooltip {
left: -9999px;
position: absolute;
top: -9999px;
visibility: visible
}
.rc-slider-tooltip,
.rc-slider-tooltip * {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
box-sizing: border-box
}
.rc-slider-tooltip-hidden {
display: none
}
.rc-slider-tooltip-placement-top {
padding: 4px 0 8px
}
.rc-slider-tooltip-inner {
background-color: #6c6c6c;
border-radius: 6px;
box-shadow: 0 0 4px #d9d9d9;
color: #fff;
font-size: 12px;
height: 24px;
line-height: 1;
min-width: 24px;
padding: 6px 2px;
text-align: center;
text-decoration: none
}
.rc-slider-tooltip-arrow {
border-color: transparent;
border-style: solid;
height: 0;
position: absolute;
width: 0
}
.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow {
border-top-color: #6c6c6c;
border-width: 4px 4px 0;
bottom: 4px;
left: 50%;
margin-left: -4px
}
.OrderOperator-module_operate_order__Dy31o {
display: flex;
height: 118px;
margin: 6px 0
}
.OrderOperator-module_img_item__M6EFs {
align-items: center;
display: flex;
flex-direction: column
}
.OrderOperator-module_img_item__M6EFs+.OrderOperator-module_img_item__M6EFs {
margin-left: 20px
}
.OrderOperator-module_img__dEUmr {
border-radius: 4px;
height: 60px;
object-fit: cover;
width: 60px
}
.OrderOperator-module_img_item__M6EFs:last-child {
margin-right: 28px
}
.OrderOperator-module_img_item__M6EFs:first-child {
margin-left: 28px
}
.OrderOperator-module_sortable__AqKYO {
align-items: center;
display: flex;
overflow-x: auto
}
.OrderOperator-module_icon__P5csN {
cursor: pointer;
margin-top: 8px
}
.OrderOperator-module_item_drag__6ZxO- {
background: #fdfdfd;
border: 1px solid #e6e6e6;
border-radius: 6px;
box-shadow: 0 2px 10px rgba(34, 34, 34, .08);
padding: 0 4px
}
.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_img_item__M6EFs {
height: 64px;
width: 64px
}
.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_index__-E8wZ {
visibility: visible !important
}
.OrderOperator-module_index__-E8wZ {
color: rgba(51, 51, 51, .6);
font-size: 12px;
font-weight: 500;
line-height: 12px;
margin: 3px 0;
visibility: hidden
}
.OrderOperator-module_index_show__-H0q8 {
visibility: visible !important
}
@media (max-width:959px) {
.OrderOperator-module_img_item__M6EFs:last-child {
margin-right: 0
}
.OrderOperator-module_sortable__AqKYO {
padding-right: 20px
}
.OrderOperator-module_img_item__M6EFs:first-child {
margin-left: 20px
}
.OrderOperator-module_operate_order__Dy31o {
height: 108px
}
}
.rc-tabs-dropdown {
background: #fefefe;
border: 1px solid #000;
max-height: 200px;
overflow: auto;
position: absolute
}
.rc-tabs-dropdown-hidden {
display: none
}
.rc-tabs-dropdown-menu {
list-style: none;
margin: 0;
padding: 0
}
.rc-tabs-dropdown-menu-item {
padding: 4px 8px
}
.rc-tabs-dropdown-menu-item-selected {
background: red
}
.rc-tabs-dropdown-menu-item-disabled {
cursor: not-allowed;
opacity: .3
}
.rc-tabs-content {
display: flex;
width: 100%
}
.rc-tabs-content-holder {
flex: auto
}
.rc-tabs-content-animated {
transition: margin .3s
}
.rc-tabs-tabpane {
flex: none;
width: 100%
}
.rc-tabs {
display: flex
}
.rc-tabs-bottom,
.rc-tabs-top {
flex-direction: column
}
.rc-tabs-bottom .rc-tabs-ink-bar,
.rc-tabs-top .rc-tabs-ink-bar {
height: 3px
}
.rc-tabs-top .rc-tabs-ink-bar {
bottom: 0
}
.rc-tabs-bottom .rc-tabs-nav {
order: 1
}
.rc-tabs-bottom .rc-tabs-content {
order: 0
}
.rc-tabs-bottom .rc-tabs-ink-bar {
top: 0
}
.rc-tabs-left.rc-tabs-editable .rc-tabs-tab,
.rc-tabs-right.rc-tabs-editable .rc-tabs-tab {
padding-right: 32px
}
.rc-tabs-left .rc-tabs-nav-wrap,
.rc-tabs-right .rc-tabs-nav-wrap {
flex-direction: column
}
.rc-tabs-left .rc-tabs-ink-bar,
.rc-tabs-right .rc-tabs-ink-bar {
width: 3px
}
.rc-tabs-left .rc-tabs-nav,
.rc-tabs-right .rc-tabs-nav {
flex-direction: column;
min-width: 50px
}
.rc-tabs-left .rc-tabs-nav-list,
.rc-tabs-left .rc-tabs-nav-operations,
.rc-tabs-right .rc-tabs-nav-list,
.rc-tabs-right .rc-tabs-nav-operations {
flex: 1 0 auto;
flex-direction: column
}
.rc-tabs-left .rc-tabs-ink-bar {
right: 0
}
.rc-tabs-right .rc-tabs-nav {
order: 1
}
.rc-tabs-right .rc-tabs-content {
order: 0
}
.rc-tabs-right .rc-tabs-ink-bar {
left: 0
}
.rc-tabs-dropdown-rtl,
.rc-tabs-rtl {
direction: rtl
}
.rc-tabs {
border: 1px solid gray;
font-size: 14px;
overflow: hidden
}
.rc-tabs-nav {
display: flex;
flex: none;
position: relative
}
.rc-tabs-nav-measure,
.rc-tabs-nav-wrap {
display: inline-block;
display: flex;
flex: auto;
overflow: hidden;
position: relative;
transform: translate(0);
white-space: nowrap
}
.rc-tabs-nav-measure-ping-left:before,
.rc-tabs-nav-measure-ping-right:after,
.rc-tabs-nav-wrap-ping-left:before,
.rc-tabs-nav-wrap-ping-right:after {
bottom: 0;
content: "";
position: absolute;
top: 0
}
.rc-tabs-nav-measure-ping-left:before,
.rc-tabs-nav-wrap-ping-left:before {
border-left: 1px solid red;
left: 0
}
.rc-tabs-nav-measure-ping-right:after,
.rc-tabs-nav-wrap-ping-right:after {
border-right: 1px solid red;
right: 0
}
.rc-tabs-nav-measure-ping-bottom:after,
.rc-tabs-nav-measure-ping-top:before,
.rc-tabs-nav-wrap-ping-bottom:after,
.rc-tabs-nav-wrap-ping-top:before {
content: "";
left: 0;
position: absolute;
right: 0
}
.rc-tabs-nav-measure-ping-top:before,
.rc-tabs-nav-wrap-ping-top:before {
border-top: 1px solid red;
top: 0
}
.rc-tabs-nav-measure-ping-bottom:after,
.rc-tabs-nav-wrap-ping-bottom:after {
border-top: 1px solid red;
bottom: 0
}
.rc-tabs-nav-list {
display: flex;
position: relative;
transition: transform .3s
}
.rc-tabs-nav-operations {
display: flex
}
.rc-tabs-nav-operations-hidden {
pointer-events: none;
position: absolute;
visibility: hidden
}
.rc-tabs-nav-more {
background: rgba(255, 0, 0, .1);
border: 1px solid blue
}
.rc-tabs-nav-add {
background: rgba(0, 255, 0, .1);
border: 1px solid green
}
.rc-tabs-tab {
align-items: center;
background: hsla(0, 0%, 100%, .5);
border: 0;
cursor: pointer;
display: flex;
font-size: 20px;
font-weight: lighter;
margin: 0;
outline: none;
position: relative
}
.rc-tabs-tab-btn,
.rc-tabs-tab-remove {
background: transparent;
border: 0
}
.rc-tabs-tab-btn {
font-weight: inherit;
line-height: 32px
}
.rc-tabs-tab-remove:hover {
color: red
}
.rc-tabs-tab-active {
font-weight: bolder
}
.rc-tabs-ink-bar {
background: red;
pointer-events: none;
position: absolute
}
.rc-tabs-ink-bar-animated {
transition: all .3s
}
.rc-tabs-extra-content {
flex: none
}
.DesignUpload-module_design_upload__rei3k {
display: flex;
height: 584px
}
.DesignUpload-module_pointer__Aud8c {
cursor: pointer
}
.DesignUpload-module_loading__4cg3s {
transform: scale(.6)
}
.Design-module_app_parakeet_design__container__FrvSK * {
box-sizing: border-box
}
.Design-module_app_parakeet_design__container__FrvSK {
border: 2px solid hsla(0, 0%, 90%, .6);
border-radius: 8px;
display: none
}
.Design-module_app_parakeet_design__container__FrvSK .canvas-container canvas {
border-radius: 8px
}
.Design-module_show__WZcJY {
display: block !important
}
.Design-module_border_dash__-6wEJ {
border-style: dashed !important
}
.Design-module_hidden__35G87 {
display: none !important
}
.Design-module_upload__d0XVy {
align-items: center;
background-color: #fdfdfd;
border-radius: 8px;
display: flex;
justify-content: center
}
.Design-module_upload_dialog__fCkjQ {
border-radius: 8px;
left: 50%;
margin: 0 !important;
padding: 0 !important;
position: absolute !important;
top: 50%;
transform: translateX(-50%) translateY(-50%);
width: auto !important
}
.Design-module_preview_img__B65MY {
max-height: 100%;
max-height: 544px;
max-width: 100%
}
.Design-module_footer__YubKC {
height: 56px
}
.Design-module_app_parakeet_design__container__FrvSK .Design-module_upload_dialog__fCkjQ {
margin: 0 !important
}
.Design-module_upload_dialog__fCkjQ .rc-dialog-body {
padding: 0
}
@media screen and (max-width:959px) {
.Design-module_wrapper__WGJzH {
padding: 0 16px
}
.eva .parakeet-design--wrapper {
padding: 0
}
.flash .parakeet-design--wrapper {
padding: 0 8px
}
}
.rc-dialog {
margin: 10px;
position: relative;
width: auto
}
.rc-dialog-wrap {
-webkit-overflow-scrolling: touch;
bottom: 0;
left: 0;
outline: 0;
overflow: auto;
position: fixed;
right: 0;
top: 0;
z-index: 1050
}
.rc-dialog-title {
font-size: 14px;
font-weight: 700;
line-height: 21px;
margin: 0
}
.rc-dialog-content {
background-clip: padding-box;
background-color: #fff;
border: none;
border-radius: 6px 6px;
position: relative
}
.rc-dialog-close {
background: transparent;
border: 0;
color: #000;
cursor: pointer;
filter: alpha(opacity=20);
font-size: 21px;
font-weight: 700;
line-height: 1;
opacity: .2;
position: absolute;
right: 20px;
text-decoration: none;
text-shadow: 0 1px 0 #fff;
top: 12px
}
.rc-dialog-close-x:after {
content: "×"
}
.rc-dialog-close:hover {
filter: alpha(opacity=100);
opacity: 1;
text-decoration: none
}
.rc-dialog-header {
background: #fff;
border-bottom: 1px solid #e9e9e9;
border-radius: 5px 5px 0 0;
color: #666;
padding: 13px 20px 14px
}
.rc-dialog-body {
padding: 20px
}
.rc-dialog-footer {
border-radius: 0 0 5px 5px;
border-top: 1px solid #e9e9e9;
padding: 10px 20px;
text-align: right
}
.rc-dialog-zoom-appear,
.rc-dialog-zoom-enter {
animation-duration: .3s;
animation-fill-mode: both;
animation-play-state: paused;
animation-timing-function: cubic-bezier(.08, .82, .17, 1);
opacity: 0
}
.rc-dialog-zoom-leave {
animation-duration: .3s;
animation-fill-mode: both;
animation-play-state: paused;
animation-timing-function: cubic-bezier(.6, .04, .98, .34)
}
.rc-dialog-zoom-appear.rc-dialog-zoom-appear-active,
.rc-dialog-zoom-enter.rc-dialog-zoom-enter-active {
animation-name: rcDialogZoomIn;
animation-play-state: running
}
.rc-dialog-zoom-leave.rc-dialog-zoom-leave-active {
animation-name: rcDialogZoomOut;
animation-play-state: running
}
@keyframes rcDialogZoomIn {
0% {
opacity: 0;
transform: scale(0)
}
to {
opacity: 1;
transform: scale(1)
}
}
@keyframes rcDialogZoomOut {
0% {
transform: scale(1)
}
to {
opacity: 0;
transform: scale(0)
}
}
@media (min-width:768px) {
.rc-dialog {
margin: 30px auto;
width: 600px
}
}
.rc-dialog-mask {
background-color: #373737;
background-color: rgba(55, 55, 55, .6);
bottom: 0;
filter: alpha(opacity=50);
height: 100%;
left: 0;
position: fixed;
right: 0;
top: 0;
z-index: 1050
}
.rc-dialog-mask-hidden {
display: none
}
.rc-dialog-fade-appear,
.rc-dialog-fade-enter {
opacity: 0
}
.rc-dialog-fade-appear,
.rc-dialog-fade-enter,
.rc-dialog-fade-leave {
animation-duration: .3s;
animation-fill-mode: both;
animation-play-state: paused;
animation-timing-function: cubic-bezier(.55, 0, .55, .2)
}
.rc-dialog-fade-appear.rc-dialog-fade-appear-active,
.rc-dialog-fade-enter.rc-dialog-fade-enter-active {
animation-name: rcDialogFadeIn;
animation-play-state: running
}
.rc-dialog-fade-leave.rc-dialog-fade-leave-active {
animation-name: rcDialogFadeOut;
animation-play-state: running
}
@keyframes rcDialogFadeIn {
0% {
opacity: 0
}
to {
opacity: 1
}
}
@keyframes rcDialogFadeOut {
0% {
opacity: 1
}
to {
opacity: 0
}
}
.rc-notification {
align-items: flex-end;
display: flex;
max-height: 100vh;
overflow-y: auto;
padding: 10px;
position: fixed;
z-index: 1000
}
.rc-notification-top,
.rc-notification-topLeft,
.rc-notification-topRight {
flex-direction: column;
top: 0
}
.rc-notification-topRight {
right: 0
}
.rc-notification-notice {
background: #fff;
border: 0 solid transparent;
border-radius: 3px 3px;
box-shadow: 0 0 10px rgba(0, 0, 0, .2);
box-sizing: border-box;
display: block;
line-height: 1.5;
margin: 12px 0;
position: relative;
width: auto
}
.rc-notification-notice-content {
padding: 7px 20px 7px 10px
}
.rc-notification-notice-closable .rc-notification-notice-content {
padding-right: 20px
}
.rc-notification-notice-close {
color: #000;
cursor: pointer;
filter: alpha(opacity=20);
font-size: 16px;
font-weight: 700;
line-height: 1;
opacity: .2;
outline: none;
position: absolute;
right: 5px;
text-decoration: none;
text-shadow: 0 1px 0 #fff;
top: 3px
}
.rc-notification-notice-close-x:after {
content: "×"
}
.rc-notification-notice-close:hover {
filter: alpha(opacity=100);
opacity: 1;
text-decoration: none
}
.rc-notification-fade {
overflow: hidden;
transition: all .3s
}
.rc-notification-fade-appear-start {
opacity: 0;
transform: translateX(100%)
}
.rc-notification-fade-appear-active {
opacity: 1;
transform: translateX(0)
}
.index-module_preview_wrap__wyD3z {
background-color: #fff;
height: 100%;
left: 0;
pointer-events: auto;
position: absolute;
top: 0;
width: 100%
}
.index-module_upload_dialog__zsPoE {
border-radius: 8px;
left: 50%;
margin: 0 !important;
padding: 0 !important;
position: absolute !important;
top: 50%;
transform: translateX(-50%) translateY(-50%);
width: auto !important
}
.index-module_upload_dialog__zsPoE .rc-dialog-body {
padding: 0
}
.index-module_canvas-container-fixed__KUEdU {
border-radius: 6px;
box-shadow: 0 1px 10px 0 rgba(0, 0, 0, .2);
left: 0;
pointer-events: none;
position: fixed !important;
top: 1px;
transition: opacity .5s;
z-index: 1031
}
.index-module_canvas-container-fixed__KUEdU .lower-canvas,
.index-module_canvas-container-fixed__KUEdU .upper-canvas {
height: 100% !important;
width: 100% !important
}
</style>
<style>
@font-face {
font-family: 'Bakbak One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('https://fonts.gstatic.com/s/bakbakone/v6/zOL54pXAl6RI-p_ardnu-cNkvg.woff2') format('woff2');
}
</style>
<div id="app-parakeet" data-product-id="acc02d31-4861-4fd4-9a08-4bfe571f5e46"></div>
<script id="app-parakeet-1539149753700">
window.appparakeet_data = ""
window.appparakeet_variants = [{
"id": "142b5a3e-4cff-445b-ad08-9171b725a440",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "S",
"weight_unit": "kg",
"inventory_quantity": 999,
"sku": "animefwiw-24071232601-S",
"barcode": "",
"position": 1,
"option1": "S",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-9171b725a440",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "S"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "fb1536f9-f97b-45d6-8942-f79f25a5c993",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "M",
"weight_unit": "kg",
"inventory_quantity": 999,
"sku": "animefwiw-24071232601-M",
"barcode": "",
"position": 2,
"option1": "M",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=fb1536f9-f97b-45d6-8942-f79f25a5c993",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "M"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "8eeb2db1-6c1b-4d3a-9569-e9efd0ab474d",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "L",
"weight_unit": "kg",
"inventory_quantity": 1000,
"sku": "animefwiw-24071232601-L",
"barcode": "",
"position": 3,
"option1": "L",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=8eeb2db1-6c1b-4d3a-9569-e9efd0ab474d",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "L"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "11b51649-4333-4334-abb1-1a03f8282082",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "XL",
"weight_unit": "kg",
"inventory_quantity": 1000,
"sku": "animefwiw-24071232601-XL",
"barcode": "",
"position": 4,
"option1": "XL",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=11b51649-4333-4334-abb1-1a03f8282082",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "XL"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "20e4a0a2-48ea-45f9-b083-99b23e23bb43",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "2XL",
"weight_unit": "kg",
"inventory_quantity": 1000,
"sku": "animefwiw-24071232601-2XL",
"barcode": "",
"position": 5,
"option1": "2XL",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=20e4a0a2-48ea-45f9-b083-99b23e23bb43",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "2XL"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "0e4f9d2b-46b4-49bc-abd4-d3411893b444",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "3XL",
"weight_unit": "kg",
"inventory_quantity": 999,
"sku": "animefwiw-24071232601-3XL",
"barcode": "",
"position": 6,
"option1": "3XL",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=0e4f9d2b-46b4-49bc-abd4-d3411893b444",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "3XL"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "37dc79b5-3d52-41c4-ad1a-df5c60fb355b",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "4XL",
"weight_unit": "kg",
"inventory_quantity": 1000,
"sku": "animefwiw-24071232601-4XL",
"barcode": "",
"position": 7,
"option1": "4XL",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=37dc79b5-3d52-41c4-ad1a-df5c60fb355b",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "4XL"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}, {
"id": "54beb3f8-919a-4119-bdbc-f96d77bec04b",
"product_id": "acc02d31-4861-4fd4-9a08-4bfe571f5e46",
"title": "5XL",
"weight_unit": "kg",
"inventory_quantity": 1000,
"sku": "animefwiw-24071232601-5XL",
"barcode": "",
"position": 8,
"option1": "5XL",
"option2": "",
"option3": "",
"note": "",
"image": null,
"wholesale_price": [{
"price": 39,
"min_quantity": 1
}],
"weight": "0",
"compare_at_price": "49",
"price": "39",
"retail_price": "49",
"available": true,
"url": "\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=54beb3f8-919a-4119-bdbc-f96d77bec04b",
"available_quantity": 999999999,
"options": [{
"name": "Size",
"value": "5XL"
}],
"off_ratio": 20,
"flashsale_info": [],
"sales": 2
}]
window.appparakeet_images = [{
"src": "\/\/img.fantaskycdn.com\/a1fe70ed96fc496618bbb46a6645fb63.jpeg",
"path": "a1fe70ed96fc496618bbb46a6645fb63.jpeg",
"width": 1200,
"height": 1200,
"alt": "",
"aspect_ratio": 1
}]
try {
setTimeout(() => {
console.log('/*********** app parakeet start **** 24.5.14 ****************/');
if (window.appparakeet_data && window.appparakeet_data.length) {
let addBtn = document.querySelector('[data-track-source=add_to_cart]');
let buyBtn = document.querySelector('[data-track-source=buy_now]');
let paypalBtn = document.querySelector('#paypal-express-button-container');
if (addBtn && !addBtn.getAttribute('disabled')) {
addBtn.setAttribute('disabled', 'disabled');
}
if (buyBtn && !buyBtn.getAttribute('disabled')) {
buyBtn.setAttribute('disabled', 'disabled');
}
if (paypalBtn && !paypalBtn.getAttribute('disabled')) {
paypalBtn.setAttribute('disabled', 'disabled');
}
setTimeout(() => {
if (addBtn) {
addBtn.disabled = null;
}
if (buyBtn) {
buyBtn.disabled = null;
}
if (paypalBtn) {
paypalBtn.disabled = null;
}
console.log('/***************** app parakeet end ************************/');
}, 1500);
}
}, 50)
} catch (error) {
console.log(error);
}
//**app-parakeet.js-start**//
! function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? t(require("jsdom"), require("jsdom/lib/jsdom/living/generated/utils"), require("jsdom/lib/jsdom/utils"), require("sortablejs")) : "function" == typeof define && define.amd ? define(
["jsdom", "jsdom/lib/jsdom/living/generated/utils", "jsdom/lib/jsdom/utils", "sortablejs"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).require$$0, e.require$$1, e.require$$2, e.require$$0$1)
}(this, (function(e, t, n, r) {
"use strict";
function i(e) {
return e && "object" == typeof e && "default" in e ? e : {
default: e
}
}
var o = i(e),
a = i(t),
s = i(n),
l = i(r),
c = e => {
var t = document.querySelector("#app-parakeet-style");
t && (t.innerHTML = "".concat(t.innerHTML, "\n ").concat(e))
};
function u(e, t) {
var n = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);
t && (r = r.filter((function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable
}))), n.push.apply(n, r)
}
return n
}
function h(e) {
for (var t = 1; t < arguments.length; t++) {
var n = null != arguments[t] ? arguments[t] : {};
t % 2 ? u(Object(n), !0).forEach((function(t) {
f(e, t, n[t])
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach((function(t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
}))
}
return e
}
function p(e, t, n, r, i, o, a) {
try {
var s = e[o](a),
l = s.value
} catch (e) {
return void n(e)
}
s.done ? t(l) : Promise.resolve(l).then(r, i)
}
function d(e) {
return function() {
var t = this,
n = arguments;
return new Promise((function(r, i) {
var o = e.apply(t, n);
function a(e) {
p(o, r, i, a, s, "next", e)
}
function s(e) {
p(o, r, i, a, s, "throw", e)
}
a(void 0)
}))
}
}
function f(e, t, n) {
return t in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n, e
}
function g(e, t) {
if (null == e) return {};
var n, r, i = function(e, t) {
if (null == e) return {};
var n, r, i = {},
o = Object.keys(e);
for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]);
return i
}(e, t);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])
}
return i
}
c(
'#app-parakeet *,#app-parakeet :after,#app-parakeet :before,.plugin-parakeet *,.plugin-parakeet :after,.plugin-parakeet :before{border:0 solid #e5e7eb;box-sizing:border-box}#app-parakeet :after,#app-parakeet :before,.plugin-parakeet :after,.plugin-parakeet :before{--tw-content:""}#app-parakeet html,.plugin-parakeet html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;tab-size:4}#app-parakeet body,.plugin-parakeet body{line-height:inherit;margin:0}#app-parakeet hr,.plugin-parakeet hr{border-top-width:1px;color:inherit;height:0}#app-parakeet abbr:where([title]),.plugin-parakeet abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}#app-parakeet h1,#app-parakeet h2,#app-parakeet h3,#app-parakeet h4,#app-parakeet h5,#app-parakeet h6,.plugin-parakeet h1,.plugin-parakeet h2,.plugin-parakeet h3,.plugin-parakeet h4,.plugin-parakeet h5,.plugin-parakeet h6{font-size:inherit;font-weight:inherit}#app-parakeet a,.plugin-parakeet a{color:inherit;text-decoration:inherit}#app-parakeet b,#app-parakeet strong,.plugin-parakeet b,.plugin-parakeet strong{font-weight:bolder}#app-parakeet code,#app-parakeet kbd,#app-parakeet pre,#app-parakeet samp,.plugin-parakeet code,.plugin-parakeet kbd,.plugin-parakeet pre,.plugin-parakeet samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}#app-parakeet small,.plugin-parakeet small{font-size:80%}#app-parakeet sub,#app-parakeet sup,.plugin-parakeet sub,.plugin-parakeet sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}#app-parakeet sub,.plugin-parakeet sub{bottom:-.25em}#app-parakeet sup,.plugin-parakeet sup{top:-.5em}#app-parakeet table,.plugin-parakeet table{border-collapse:collapse;border-color:inherit;text-indent:0}#app-parakeet button,#app-parakeet input,#app-parakeet optgroup,#app-parakeet select,#app-parakeet textarea,.plugin-parakeet button,.plugin-parakeet input,.plugin-parakeet optgroup,.plugin-parakeet select,.plugin-parakeet textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}#app-parakeet button,#app-parakeet select,.plugin-parakeet button,.plugin-parakeet select{text-transform:none}#app-parakeet [type=button],#app-parakeet [type=reset],#app-parakeet [type=submit],#app-parakeet button,.plugin-parakeet [type=button],.plugin-parakeet [type=reset],.plugin-parakeet [type=submit],.plugin-parakeet button{-webkit-appearance:button;background-color:initial;background-image:none}#app-parakeet :-moz-focusring,.plugin-parakeet :-moz-focusring{outline:auto}#app-parakeet :-moz-ui-invalid,.plugin-parakeet :-moz-ui-invalid{box-shadow:none}#app-parakeet progress,.plugin-parakeet progress{vertical-align:initial}#app-parakeet ::-webkit-inner-spin-button,#app-parakeet ::-webkit-outer-spin-button,.plugin-parakeet ::-webkit-inner-spin-button,.plugin-parakeet ::-webkit-outer-spin-button{height:auto}#app-parakeet [type=search],.plugin-parakeet [type=search]{-webkit-appearance:textfield;outline-offset:-2px}#app-parakeet ::-webkit-search-decoration,.plugin-parakeet ::-webkit-search-decoration{-webkit-appearance:none}#app-parakeet ::-webkit-file-upload-button,.plugin-parakeet ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}#app-parakeet summary,.plugin-parakeet summary{display:list-item}#app-parakeet blockquote,#app-parakeet dd,#app-parakeet dl,#app-parakeet figure,#app-parakeet h1,#app-parakeet h2,#app-parakeet h3,#app-parakeet h4,#app-parakeet h5,#app-parakeet h6,#app-parakeet hr,#app-parakeet p,#app-parakeet pre,.plugin-parakeet blockquote,.plugin-parakeet dd,.plugin-parakeet dl,.plugin-parakeet figure,.plugin-parakeet h1,.plugin-parakeet h2,.plugin-parakeet h3,.plugin-parakeet h4,.plugin-parakeet h5,.plugin-parakeet h6,.plugin-parakeet hr,.plugin-parakeet p,.plugin-parakeet pre{margin:0}#app-parakeet fieldset,.plugin-parakeet fieldset{margin:0;padding:0}#app-parakeet legend,.plugin-parakeet legend{padding:0}#app-parakeet menu,#app-parakeet ol,#app-parakeet ul,.plugin-parakeet menu,.plugin-parakeet ol,.plugin-parakeet ul{list-style:none;margin:0;padding:0}#app-parakeet textarea,.plugin-parakeet textarea{resize:vertical}#app-parakeet input::-webkit-input-placeholder,#app-parakeet textarea::-webkit-input-placeholder,.plugin-parakeet input::-webkit-input-placeholder,.plugin-parakeet textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}#app-parakeet input::placeholder,#app-parakeet textarea::placeholder,.plugin-parakeet input::placeholder,.plugin-parakeet textarea::placeholder{color:#9ca3af;opacity:1}#app-parakeet [role=button],#app-parakeet button,.plugin-parakeet [role=button],.plugin-parakeet button{cursor:pointer}#app-parakeet :disabled,.plugin-parakeet :disabled{cursor:default}#app-parakeet audio,#app-parakeet canvas,#app-parakeet embed,#app-parakeet iframe,#app-parakeet img,#app-parakeet object,#app-parakeet svg,#app-parakeet video,.plugin-parakeet audio,.plugin-parakeet canvas,.plugin-parakeet embed,.plugin-parakeet iframe,.plugin-parakeet img,.plugin-parakeet object,.plugin-parakeet svg,.plugin-parakeet video{display:block;vertical-align:middle}#app-parakeet img,#app-parakeet video,.plugin-parakeet img,.plugin-parakeet video{height:auto;max-width:100%}#app-parakeet *,#app-parakeet :after,#app-parakeet :before,.plugin-parakeet *,.plugin-parakeet :after,.plugin-parakeet :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet ::-webkit-backdrop,.plugin-parakeet ::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet ::backdrop,.plugin-parakeet ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet .pk-pointer-events-none,.plugin-parakeet .pk-pointer-events-none{pointer-events:none}#app-parakeet .pk-absolute,.plugin-parakeet .pk-absolute{position:absolute}#app-parakeet .pk-relative,.plugin-parakeet .pk-relative{position:relative}#app-parakeet .pk-top-0,.plugin-parakeet .pk-top-0{top:0}#app-parakeet .pk-left-0,.plugin-parakeet .pk-left-0{left:0}#app-parakeet .pk--top-3,.plugin-parakeet .pk--top-3{top:-.75rem}#app-parakeet .pk--right-3,.plugin-parakeet .pk--right-3{right:-.75rem}#app-parakeet .pk-z-\\[9999\\],.plugin-parakeet .pk-z-\\[9999\\]{z-index:9999}#app-parakeet .pk-my-6,.plugin-parakeet .pk-my-6{margin-bottom:1.5rem;margin-top:1.5rem}#app-parakeet .pk-mx-1,.plugin-parakeet .pk-mx-1{margin-left:.25rem;margin-right:.25rem}#app-parakeet .pk--mx-4,.plugin-parakeet .pk--mx-4{margin-left:-1rem;margin-right:-1rem}#app-parakeet .pk-my-0,.plugin-parakeet .pk-my-0{margin-bottom:0;margin-top:0}#app-parakeet .pk-ml-\\[10px\\],.plugin-parakeet .pk-ml-\\[10px\\]{margin-left:10px}#app-parakeet .pk-mr-\\[10px\\],.plugin-parakeet .pk-mr-\\[10px\\]{margin-right:10px}#app-parakeet .pk-mb-4,.plugin-parakeet .pk-mb-4{margin-bottom:1rem}#app-parakeet .pk-mr-2\\.5,.plugin-parakeet .pk-mr-2\\.5{margin-right:.625rem}#app-parakeet .pk-mr-2,.plugin-parakeet .pk-mr-2{margin-right:.5rem}#app-parakeet .pk-ml-1\\.5,.plugin-parakeet .pk-ml-1\\.5{margin-left:.375rem}#app-parakeet .pk-ml-1,.plugin-parakeet .pk-ml-1{margin-left:.25rem}#app-parakeet .pk-mb-3,.plugin-parakeet .pk-mb-3{margin-bottom:.75rem}#app-parakeet .pk-mb-2\\.5,.plugin-parakeet .pk-mb-2\\.5{margin-bottom:.625rem}#app-parakeet .pk-mb-2,.plugin-parakeet .pk-mb-2{margin-bottom:.5rem}#app-parakeet .pk-mt-2,.plugin-parakeet .pk-mt-2{margin-top:.5rem}#app-parakeet .\\!pk-mt-7,.plugin-parakeet .\\!pk-mt-7{margin-top:1.75rem!important}#app-parakeet .pk-ml-2,.plugin-parakeet .pk-ml-2{margin-left:.5rem}#app-parakeet .pk--mt-0\\.5,.plugin-parakeet .pk--mt-0\\.5{margin-top:-.125rem}#app-parakeet .pk--mb-1\\.5,.plugin-parakeet .pk--mb-1\\.5{margin-bottom:-.375rem}#app-parakeet .pk--mt-0,.plugin-parakeet .pk--mt-0{margin-top:0}#app-parakeet .pk--mb-1,.plugin-parakeet .pk--mb-1{margin-bottom:-.25rem}#app-parakeet .\\!pk-mb-0,.plugin-parakeet .\\!pk-mb-0{margin-bottom:0!important}#app-parakeet .pk-ml-3,.plugin-parakeet .pk-ml-3{margin-left:.75rem}#app-parakeet .pk-ml-auto,.plugin-parakeet .pk-ml-auto{margin-left:auto}#app-parakeet .pk-mr-4,.plugin-parakeet .pk-mr-4{margin-right:1rem}#app-parakeet .pk--mt-1\\.5,.plugin-parakeet .pk--mt-1\\.5{margin-top:-.375rem}#app-parakeet .pk--ml-2,.plugin-parakeet .pk--ml-2{margin-left:-.5rem}#app-parakeet .pk--mt-1,.plugin-parakeet .pk--mt-1{margin-top:-.25rem}#app-parakeet .pk-mt-3,.plugin-parakeet .pk-mt-3{margin-top:.75rem}#app-parakeet .pk-block,.plugin-parakeet .pk-block{display:block}#app-parakeet .pk-inline-block,.plugin-parakeet .pk-inline-block{display:inline-block}#app-parakeet .pk-flex,.plugin-parakeet .pk-flex{display:flex}#app-parakeet .pk-grid,.plugin-parakeet .pk-grid{display:grid}#app-parakeet .pk-h-4\\.5,.plugin-parakeet .pk-h-4\\.5{height:1.125rem}#app-parakeet .pk-h-4,.plugin-parakeet .pk-h-4{height:1rem}#app-parakeet .pk-h-11\\.5,.plugin-parakeet .pk-h-11\\.5{height:2.875rem}#app-parakeet .pk-h-11,.plugin-parakeet .pk-h-11{height:2.75rem}#app-parakeet .pk-h-full,.plugin-parakeet .pk-h-full{height:100%}#app-parakeet .pk-h-18,.plugin-parakeet .pk-h-18{height:4.5rem}#app-parakeet .pk-h-23,.plugin-parakeet .pk-h-23{height:5.75rem}#app-parakeet .pk-h-20,.plugin-parakeet .pk-h-20{height:5rem}#app-parakeet .pk-w-4\\.5,.plugin-parakeet .pk-w-4\\.5{width:1.125rem}#app-parakeet .pk-w-4,.plugin-parakeet .pk-w-4{width:1rem}#app-parakeet .pk-w-full,.plugin-parakeet .pk-w-full{width:100%}#app-parakeet .pk-w-11,.plugin-parakeet .pk-w-11{width:2.75rem}#app-parakeet .pk-w-18,.plugin-parakeet .pk-w-18{width:4.5rem}#app-parakeet .pk-w-23,.plugin-parakeet .pk-w-23{width:5.75rem}#app-parakeet .pk-w-20,.plugin-parakeet .pk-w-20{width:5rem}#app-parakeet .pk-w-fit,.plugin-parakeet .pk-w-fit{width:-webkit-fit-content;width:fit-content}#app-parakeet .pk-min-w-\\[46px\\],.plugin-parakeet .pk-min-w-\\[46px\\]{min-width:46px}#app-parakeet .pk-min-w-0,.plugin-parakeet .pk-min-w-0{min-width:0}#app-parakeet .pk-max-w-\\[50vw\\],.plugin-parakeet .pk-max-w-\\[50vw\\]{max-width:50vw}#app-parakeet .pk-flex-none,.plugin-parakeet .pk-flex-none{flex:none}#app-parakeet .pk-flex-1,.plugin-parakeet .pk-flex-1{flex:1 1 0%}#app-parakeet .pk-cursor-pointer,.plugin-parakeet .pk-cursor-pointer{cursor:pointer}#app-parakeet .pk-cursor-text,.plugin-parakeet .pk-cursor-text{cursor:text}#app-parakeet .pk-select-none,.plugin-parakeet .pk-select-none{-webkit-user-select:none;user-select:none}#app-parakeet .pk-appearance-none,.plugin-parakeet .pk-appearance-none{-webkit-appearance:none;appearance:none}#app-parakeet .pk-grid-flow-col,.plugin-parakeet .pk-grid-flow-col{grid-auto-flow:column}#app-parakeet .pk-grid-rows-\\[auto\\,auto\\,auto\\,auto\\],.plugin-parakeet .pk-grid-rows-\\[auto\\,auto\\,auto\\,auto\\]{grid-template-rows:auto auto auto auto}#app-parakeet .pk-flex-col,.plugin-parakeet .pk-flex-col{flex-direction:column}#app-parakeet .pk-flex-wrap,.plugin-parakeet .pk-flex-wrap{flex-wrap:wrap}#app-parakeet .pk-items-center,.plugin-parakeet .pk-items-center{align-items:center}#app-parakeet .pk-justify-center,.plugin-parakeet .pk-justify-center{justify-content:center}#app-parakeet .pk-gap-4,.plugin-parakeet .pk-gap-4{gap:1rem}#app-parakeet .pk-gap-x-3,.plugin-parakeet .pk-gap-x-3{column-gap:.75rem}#app-parakeet .pk-gap-y-4,.plugin-parakeet .pk-gap-y-4{row-gap:1rem}#app-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]),.plugin-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#app-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]),.plugin-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}#app-parakeet .pk-self-center,.plugin-parakeet .pk-self-center{align-self:center}#app-parakeet .pk-overflow-hidden,.plugin-parakeet .pk-overflow-hidden{overflow:hidden}#app-parakeet .pk-truncate,.plugin-parakeet .pk-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#app-parakeet .pk-break-words,.plugin-parakeet .pk-break-words{overflow-wrap:break-word}#app-parakeet .pk-break-all,.plugin-parakeet .pk-break-all{word-break:break-all}#app-parakeet .pk-rounded-full,.plugin-parakeet .pk-rounded-full{border-radius:9999px}#app-parakeet .pk-rounded-md,.plugin-parakeet .pk-rounded-md{border-radius:.375rem}#app-parakeet .pk-rounded,.plugin-parakeet .pk-rounded{border-radius:.25rem}#app-parakeet .pk-rounded-\\[3px\\],.plugin-parakeet .pk-rounded-\\[3px\\]{border-radius:3px}#app-parakeet .pk-border-\\[5px\\],.plugin-parakeet .pk-border-\\[5px\\]{border-width:5px}#app-parakeet .pk-border-2,.plugin-parakeet .pk-border-2{border-width:2px}#app-parakeet .pk-border,.plugin-parakeet .pk-border{border-width:1px}#app-parakeet .pk-border-0,.plugin-parakeet .pk-border-0{border-width:0}#app-parakeet .pk-border-solid,.plugin-parakeet .pk-border-solid{border-style:solid}#app-parakeet .pk-border-dashed,.plugin-parakeet .pk-border-dashed{border-style:dashed}#app-parakeet .pk-border-transparent,.plugin-parakeet .pk-border-transparent{border-color:transparent}#app-parakeet .pk-border-\\[\\#333\\],.plugin-parakeet .pk-border-\\[\\#333\\]{--tw-border-opacity:1;border-color:rgba(51,51,51,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#DB393A\\],.plugin-parakeet .pk-border-\\[\\#DB393A\\]{--tw-border-opacity:1;border-color:rgba(219,57,58,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#D1D1D1\\],.plugin-parakeet .pk-border-\\[\\#D1D1D1\\]{--tw-border-opacity:1;border-color:rgba(209,209,209,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#d9d9d9\\],.plugin-parakeet .pk-border-\\[\\#d9d9d9\\]{--tw-border-opacity:1;border-color:rgba(217,217,217,var(--tw-border-opacity))}#app-parakeet .pk-border-t-white,.plugin-parakeet .pk-border-t-white{--tw-border-opacity:1;border-top-color:rgba(255,255,255,var(--tw-border-opacity))}#app-parakeet .pk-bg-\\[\\#E6E6E6\\]\\/40,.plugin-parakeet .pk-bg-\\[\\#E6E6E6\\]\\/40{background-color:hsla(0,0%,90%,.4)}#app-parakeet .pk-bg-white,.plugin-parakeet .pk-bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#app-parakeet .pk-bg-transparent,.plugin-parakeet .pk-bg-transparent{background-color:initial}#app-parakeet .pk-bg-\\[\\#fdfdfd\\],.plugin-parakeet .pk-bg-\\[\\#fdfdfd\\]{--tw-bg-opacity:1;background-color:rgba(253,253,253,var(--tw-bg-opacity))}#app-parakeet .pk-bg-\\[\\#F6F6F7\\],.plugin-parakeet .pk-bg-\\[\\#F6F6F7\\]{--tw-bg-opacity:1;background-color:rgba(246,246,247,var(--tw-bg-opacity))}#app-parakeet .pk-object-contain,.plugin-parakeet .pk-object-contain{object-fit:contain}#app-parakeet .pk-object-cover,.plugin-parakeet .pk-object-cover{object-fit:cover}#app-parakeet .pk-object-center,.plugin-parakeet .pk-object-center{object-position:center}#app-parakeet .pk-py-2,.plugin-parakeet .pk-py-2{padding-bottom:.5rem;padding-top:.5rem}#app-parakeet .pk-px-3,.plugin-parakeet .pk-px-3{padding-left:.75rem;padding-right:.75rem}#app-parakeet .pk-px-5,.plugin-parakeet .pk-px-5{padding-left:1.25rem;padding-right:1.25rem}#app-parakeet .pk-px-4,.plugin-parakeet .pk-px-4{padding-left:1rem;padding-right:1rem}#app-parakeet .pk-py-1\\.5,.plugin-parakeet .pk-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#app-parakeet .pk-py-1,.plugin-parakeet .pk-py-1{padding-bottom:.25rem;padding-top:.25rem}#app-parakeet .pk-py-3\\.5,.plugin-parakeet .pk-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#app-parakeet .pk-py-3,.plugin-parakeet .pk-py-3{padding-bottom:.75rem;padding-top:.75rem}#app-parakeet .pk-pt-2,.plugin-parakeet .pk-pt-2{padding-top:.5rem}#app-parakeet .pk-pb-1,.plugin-parakeet .pk-pb-1{padding-bottom:.25rem}#app-parakeet .pk-pl-4,.plugin-parakeet .pk-pl-4{padding-left:1rem}#app-parakeet .pk-pr-10\\.5,.plugin-parakeet .pk-pr-10\\.5{padding-right:2.625rem}#app-parakeet .pk-pr-10,.plugin-parakeet .pk-pr-10{padding-right:2.5rem}#app-parakeet .\\!pk-text-\\[13px\\],.plugin-parakeet .\\!pk-text-\\[13px\\]{font-size:13px!important}#app-parakeet .\\!pk-text-\\[14px\\],.plugin-parakeet .\\!pk-text-\\[14px\\]{font-size:14px!important}#app-parakeet .\\!pk-text-\\[15px\\],.plugin-parakeet .\\!pk-text-\\[15px\\]{font-size:15px!important}#app-parakeet .pk-text-\\[14px\\],.plugin-parakeet .pk-text-\\[14px\\]{font-size:14px}#app-parakeet .pk-text-sm,.plugin-parakeet .pk-text-sm{font-size:.875rem;line-height:1.25rem}#app-parakeet .pk-text-xs,.plugin-parakeet .pk-text-xs{font-size:.75rem;line-height:1rem}#app-parakeet .pk-text-\\[15px\\],.plugin-parakeet .pk-text-\\[15px\\]{font-size:15px}#app-parakeet .\\!pk-text-\\[16px\\],.plugin-parakeet .\\!pk-text-\\[16px\\]{font-size:16px!important}#app-parakeet .pk-font-semibold,.plugin-parakeet .pk-font-semibold{font-weight:600}#app-parakeet .pk-font-medium,.plugin-parakeet .pk-font-medium{font-weight:500}#app-parakeet .pk-leading-none,.plugin-parakeet .pk-leading-none{line-height:1}#app-parakeet .pk-leading-5,.plugin-parakeet .pk-leading-5{line-height:1.25rem}#app-parakeet .pk-leading-\\[0px\\],.plugin-parakeet .pk-leading-\\[0px\\]{line-height:0px}#app-parakeet .pk-text-\\[\\#DB393A\\],.plugin-parakeet .pk-text-\\[\\#DB393A\\]{--tw-text-opacity:1;color:rgba(219,57,58,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#7A7A7A\\],.plugin-parakeet .pk-text-\\[\\#7A7A7A\\]{--tw-text-opacity:1;color:rgba(122,122,122,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#d2d5d8\\],.plugin-parakeet .pk-text-\\[\\#d2d5d8\\]{--tw-text-opacity:1;color:rgba(210,213,216,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#93989D\\],.plugin-parakeet .pk-text-\\[\\#93989D\\]{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#292929\\]\\/75,.plugin-parakeet .pk-text-\\[\\#292929\\]\\/75{color:rgba(41,41,41,.75)}#app-parakeet .pk-text-opacity-80,.plugin-parakeet .pk-text-opacity-80{--tw-text-opacity:0.8}#app-parakeet .pk-opacity-0,.plugin-parakeet .pk-opacity-0{opacity:0}#app-parakeet .pk-shadow-\\[0px_4px_18px_rgb\\(0_0_0_\\/_10\\%\\)\\],.plugin-parakeet .pk-shadow-\\[0px_4px_18px_rgb\\(0_0_0_\\/_10\\%\\)\\]{--tw-shadow:0px 4px 18px rgba(0,0,0,.1);--tw-shadow-colored:0px 4px 18px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#app-parakeet .pk-outline-none,.plugin-parakeet .pk-outline-none{outline:2px solid transparent;outline-offset:2px}#app-parakeet .pk-ring-2,.plugin-parakeet .pk-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}#app-parakeet .pk-ring-\\[\\#333\\],.plugin-parakeet .pk-ring-\\[\\#333\\]{--tw-ring-opacity:1;--tw-ring-color:rgba(51,51,51,var(--tw-ring-opacity))}#app-parakeet .pk-ring-offset-2,.plugin-parakeet .pk-ring-offset-2{--tw-ring-offset-width:2px}#app-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::-webkit-input-placeholder,.plugin-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::-webkit-input-placeholder{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::placeholder,.plugin-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::placeholder{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .last\\:pk-mb-0:last-child,.plugin-parakeet .last\\:pk-mb-0:last-child{margin-bottom:0}#app-parakeet .hover\\:pk-bg-\\[\\#f6f6f7\\]:hover,.plugin-parakeet .hover\\:pk-bg-\\[\\#f6f6f7\\]:hover{--tw-bg-opacity:1;background-color:rgba(246,246,247,var(--tw-bg-opacity))}#app-parakeet .focus\\:pk-border-\\[\\#333\\]:focus,.plugin-parakeet .focus\\:pk-border-\\[\\#333\\]:focus{--tw-border-opacity:1;border-color:rgba(51,51,51,var(--tw-border-opacity))}@media (min-width:768px){#app-parakeet .md\\:pk-max-w-\\[33vw\\],.plugin-parakeet .md\\:pk-max-w-\\[33vw\\]{max-width:33vw}#app-parakeet .md\\:pk-text-base,.plugin-parakeet .md\\:pk-text-base{font-size:1rem;line-height:1.5rem}#app-parakeet .md\\:pk-text-sm,.plugin-parakeet .md\\:pk-text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){#app-parakeet .lg\\:pk-px-8,.plugin-parakeet .lg\\:pk-px-8{padding-left:2rem;padding-right:2rem}}');
var m = function() {
return fetch(...arguments).then((e => e.ok ? e : Promise.reject(e)))
},
v = () => m("/api/file/signv2").then((e => e.json())),
_ = (e, t) => m("/api/file/signv2").then((e => e.json())).then((n => {
var r = n.data,
i = null == r ? void 0 : r.write_host,
{
policy: o,
access_id: a,
sign: s,
read_host: l
} = r,
c = new FormData;
return c.append("policy", o), c.append("OSSAccessKeyId", a), c.append("success_action_status", 200), c.append("signature", s), c.append("x-oss-forbid-overwrite", !0), c.append("key", t), c.append("file", e), ((e, t, n) => m(e, {
method: "POST",
body: t
}).then((() => n)).catch((e => {
if (String(e).includes("409")) return n;
throw new Error
})))(i, c, l + t)
})),
b = e => 0 === e.indexOf("image/"),
y = e => e.split("/")[1] || "",
w = function() {
var e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").split("/"),
t = e[e.length - 1].split(/#|\?/)[0];
return (/\.[^./\\]*$/.exec(t) || [""])[0]
},
x = e => {
if (e.type && !e.thumbUrl) return b(e.type);
var t = e.thumbUrl || e.url || "",
n = w(t);
return !(!/^data:image\//.test(t) && !/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)) || !/^data:/.test(t) && !n
},
k = 200;
function C(e) {
return new Promise((t => {
e.type && b(e.type) ? "gif" !== y(e.type) ? (t => {
var n = document.createElement("canvas");
n.width = k, n.height = k, n.style.cssText = "position: fixed; left: 0; top: 0; width: ".concat(k, "px; height: ").concat(k, "px; z-index: 9999; display: none;"), document.body.appendChild(n);
var r = n.getContext("2d"),
i = new Image;
i.onload = () => {
var {
width: e,
height: o
} = i, a = k, s = k, l = 0, c = 0;
e > o ? c = -((s = o * (k / e)) - a) / 2 : l = -((a = e * (k / o)) - s) / 2, r.drawImage(i, l, c, a, s);
var u = n.toDataURL();
document.body.removeChild(n), window.URL.revokeObjectURL(i.src), i.src = null, t(u)
}, i.src = window.URL.createObjectURL(e)
})(t) : (t => {
var n = new FileReader;
n.onload = () => t(n.result), n.readAsDataURL(e)
})(t) : t("")
}))
}
var S = e => "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat(e),
E = (e, t, n) => {
for (var r = e.split(","), i = window.atob(r[1]), o = i.length, a = new Uint8Array(o); o--;) a[o] = i.charCodeAt(o);
return new File([a.buffer], t, {
type: n || "image/png"
})
},
T = 100,
O = 1890,
A = "png",
P = "uploadSuccessEvent",
M = "removeSuccessEvent",
D = "addDesignImageEvent",
I = "deleteDesignEvent",
N = "loading",
R = "success",
j = "en-us",
L = 10485760,
F = "swatch_preview_click",
B = "upload_preview",
z = "text_preview",
H = "upload_img_click",
U = "clear_active",
W = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};
function V(e) {
var t = e.default;
if ("function" == typeof t) {
var n = function() {
return t.apply(this, arguments)
};
n.prototype = t.prototype
} else n = {};
return Object.defineProperty(n, "__esModule", {
value: !0
}), Object.keys(e).forEach((function(t) {
var r = Object.getOwnPropertyDescriptor(e, t);
Object.defineProperty(n, t, r.get ? r : {
enumerable: !0,
get: function() {
return e[t]
}
})
})), n
}
var X = {};
function G(e, t) {
return void 0 === t && (t = 15), +parseFloat(Number(e).toPrecision(t))
}
function Y(e) {
var t = e.toString().split(/[eE]/),
n = (t[0].split(".")[1] || "").length - +(t[1] || 0);
return n > 0 ? n : 0
}
function q(e) {
if (-1 === e.toString().indexOf("e")) return Number(e.toString().replace(".", ""));
var t = Y(e);
return t > 0 ? G(Number(e) * Math.pow(10, t)) : Number(e)
}
function K(e) {
te && (e > Number.MAX_SAFE_INTEGER || Number.MIN_SAFE_INTEGER)
}
function $(e) {
return function() {
for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
var r = t[0];
return t.slice(1).reduce((function(t, n) {
return e(t, n)
}), r)
}
}! function(e) {
var t, n, r, i, l, c, u, h, p, d, f, g, m, v = v || {
version: "5.3.0"
};
if (e.fabric = v, "undefined" != typeof document && "undefined" != typeof window) document instanceof("undefined" != typeof HTMLDocument ? HTMLDocument : Document) ? v.document = document : v.document = document.implementation
.createHTMLDocument(""), v.window = window;
else {
var _ = new o.default.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"), {
features: {
FetchExternalResources: ["img"]
},
resources: "usable"
}).window;
v.document = _.document, v.jsdomImplForWrapper = a.default.implForWrapper, v.nodeCanvas = s.default.Canvas, v.window = _, DOMParser = v.window.DOMParser
}
function b(e, t) {
var n = e.canvas,
r = t.targetCanvas,
i = r.getContext("2d");
i.translate(0, r.height), i.scale(1, -1);
var o = n.height - r.height;
i.drawImage(n, 0, o, r.width, r.height, 0, 0, r.width, r.height)
}
function y(e, t) {
var n = t.targetCanvas.getContext("2d"),
r = t.destinationWidth,
i = t.destinationHeight,
o = r * i * 4,
a = new Uint8Array(this.imageBuffer, 0, o),
s = new Uint8ClampedArray(this.imageBuffer, 0, o);
e.readPixels(0, 0, r, i, e.RGBA, e.UNSIGNED_BYTE, a);
var l = new ImageData(s, r, i);
n.putImageData(l, 0, 0)
}
v.isTouchSupported = "ontouchstart" in v.window || "ontouchstart" in v.document || v.window && v.window.navigator && v.window.navigator.maxTouchPoints > 0, v.isLikelyNode = "undefined" != typeof Buffer && "undefined" == typeof window, v
.SHARED_ATTRIBUTES = ["display", "transform", "fill", "fill-opacity", "fill-rule", "opacity", "stroke", "stroke-dasharray", "stroke-linecap", "stroke-dashoffset", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity",
"stroke-width", "id", "paint-order", "vector-effect", "instantiated_by_use", "clip-path"
], v.DPI = 96, v.reNum = "(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)", v.commaWsp = "(?:\\s+,?\\s*|,\\s*)", v.rePathCommand = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi, v.reNonWord = /[ \n\.,;!\?\-]/, v
.fontPaths = {}, v.iMatrix = [1, 0, 0, 1, 0, 0], v.svgNS = "http://www.w3.org/2000/svg", v.perfLimitSizeTotal = 2097152, v.maxCacheSideLimit = 4096, v.minCacheSideLimit = 256, v.charWidthsCache = {}, v.textureSize = 2048, v
.disableStyleCopyPaste = !1, v.enableGLFiltering = !0, v.devicePixelRatio = v.window.devicePixelRatio || v.window.webkitDevicePixelRatio || v.window.mozDevicePixelRatio || 1, v.browserShadowBlurConstant = 1, v.arcToSegmentsCache = {},
v.boundsOfCurveCache = {}, v.cachesBoundsOfCurve = !0, v.forceGLPutImageData = !1, v.initFilterBackend = function() {
return v.enableGLFiltering && v.isWebglSupported && v.isWebglSupported(v.textureSize) ? new v.WebglFilterBackend({
tileSize: v.textureSize
}) : v.Canvas2dFilterBackend ? new v.Canvas2dFilterBackend : void 0
}, "undefined" != typeof document && "undefined" != typeof window && (window.fabric = v),
function() {
function e(e, t) {
if (this.__eventListeners[e]) {
var n = this.__eventListeners[e];
t ? n[n.indexOf(t)] = !1 : v.util.array.fill(n, !1)
}
}
function t(e, t) {
var n = function() {
t.apply(this, arguments), this.off(e, n)
}.bind(this);
this.on(e, n)
}
v.Observable = {
fire: function(e, t) {
if (!this.__eventListeners) return this;
var n = this.__eventListeners[e];
if (!n) return this;
for (var r = 0, i = n.length; r < i; r++) n[r] && n[r].call(this, t || {});
return this.__eventListeners[e] = n.filter((function(e) {
return !1 !== e
})), this
},
on: function(e, t) {
if (this.__eventListeners || (this.__eventListeners = {}), 1 === arguments.length)
for (var n in e) this.on(n, e[n]);
else this.__eventListeners[e] || (this.__eventListeners[e] = []), this.__eventListeners[e].push(t);
return this
},
once: function(e, n) {
if (1 === arguments.length)
for (var r in e) t.call(this, r, e[r]);
else t.call(this, e, n);
return this
},
off: function(t, n) {
if (!this.__eventListeners) return this;
if (0 === arguments.length)
for (t in this.__eventListeners) e.call(this, t);
else if (1 === arguments.length && "object" == typeof arguments[0])
for (var r in t) e.call(this, r, t[r]);
else e.call(this, t, n);
return this
}
}
}(), v.Collection = {
_objects: [],
add: function() {
if (this._objects.push.apply(this._objects, arguments), this._onObjectAdded)
for (var e = 0, t = arguments.length; e < t; e++) this._onObjectAdded(arguments[e]);
return this.renderOnAddRemove && this.requestRenderAll(), this
},
insertAt: function(e, t, n) {
var r = this._objects;
return n ? r[t] = e : r.splice(t, 0, e), this._onObjectAdded && this._onObjectAdded(e), this.renderOnAddRemove && this.requestRenderAll(), this
},
remove: function() {
for (var e, t = this._objects, n = !1, r = 0, i = arguments.length; r < i; r++) - 1 !== (e = t.indexOf(arguments[r])) && (n = !0, t.splice(e, 1), this._onObjectRemoved && this._onObjectRemoved(arguments[r]));
return this.renderOnAddRemove && n && this.requestRenderAll(), this
},
forEachObject: function(e, t) {
for (var n = this.getObjects(), r = 0, i = n.length; r < i; r++) e.call(t, n[r], r, n);
return this
},
getObjects: function(e) {
return void 0 === e ? this._objects.concat() : this._objects.filter((function(t) {
return t.type === e
}))
},
item: function(e) {
return this._objects[e]
},
isEmpty: function() {
return 0 === this._objects.length
},
size: function() {
return this._objects.length
},
contains: function(e, t) {
return this._objects.indexOf(e) > -1 || !!t && this._objects.some((function(t) {
return "function" == typeof t.contains && t.contains(e, !0)
}))
},
complexity: function() {
return this._objects.reduce((function(e, t) {
return e += t.complexity ? t.complexity() : 0
}), 0)
}
}, v.CommonMethods = {
_setOptions: function(e) {
for (var t in e) this.set(t, e[t])
},
_initGradient: function(e, t) {
!e || !e.colorStops || e instanceof v.Gradient || this.set(t, new v.Gradient(e))
},
_initPattern: function(e, t, n) {
!e || !e.source || e instanceof v.Pattern ? n && n() : this.set(t, new v.Pattern(e, n))
},
_setObject: function(e) {
for (var t in e) this._set(t, e[t])
},
set: function(e, t) {
return "object" == typeof e ? this._setObject(e) : this._set(e, t), this
},
_set: function(e, t) {
this[e] = t
},
toggle: function(e) {
var t = this.get(e);
return "boolean" == typeof t && this.set(e, !t), this
},
get: function(e) {
return this[e]
}
},
function(e) {
var t = Math.sqrt,
n = Math.atan2,
r = Math.pow,
i = Math.PI / 180,
o = Math.PI / 2;
v.util = {
cos: function(e) {
if (0 === e) return 1;
switch (e < 0 && (e = -e), e / o) {
case 1:
case 3:
return 0;
case 2:
return -1
}
return Math.cos(e)
},
sin: function(e) {
if (0 === e) return 0;
var t = 1;
switch (e < 0 && (t = -1), e / o) {
case 1:
return t;
case 2:
return 0;
case 3:
return -t
}
return Math.sin(e)
},
removeFromArray: function(e, t) {
var n = e.indexOf(t);
return -1 !== n && e.splice(n, 1), e
},
getRandomInt: function(e, t) {
return Math.floor(Math.random() * (t - e + 1)) + e
},
degreesToRadians: function(e) {
return e * i
},
radiansToDegrees: function(e) {
return e / i
},
rotatePoint: function(e, t, n) {
var r = new v.Point(e.x - t.x, e.y - t.y),
i = v.util.rotateVector(r, n);
return new v.Point(i.x, i.y).addEquals(t)
},
rotateVector: function(e, t) {
var n = v.util.sin(t),
r = v.util.cos(t);
return {
x: e.x * r - e.y * n,
y: e.x * n + e.y * r
}
},
createVector: function(e, t) {
return new v.Point(t.x - e.x, t.y - e.y)
},
calcAngleBetweenVectors: function(e, t) {
return Math.acos((e.x * t.x + e.y * t.y) / (Math.hypot(e.x, e.y) * Math.hypot(t.x, t.y)))
},
getHatVector: function(e) {
return new v.Point(e.x, e.y).multiply(1 / Math.hypot(e.x, e.y))
},
getBisector: function(e, t, n) {
var r = v.util.createVector(e, t),
i = v.util.createVector(e, n),
o = v.util.calcAngleBetweenVectors(r, i),
a = o * (0 === v.util.calcAngleBetweenVectors(v.util.rotateVector(r, o), i) ? 1 : -1) / 2;
return {
vector: v.util.getHatVector(v.util.rotateVector(r, a)),
angle: o
}
},
projectStrokeOnPoints: function(e, t, n) {
var r = [],
i = t.strokeWidth / 2,
o = t.strokeUniform ? new v.Point(1 / t.scaleX, 1 / t.scaleY) : new v.Point(1, 1),
a = function(e) {
var t = i / Math.hypot(e.x, e.y);
return new v.Point(e.x * t * o.x, e.y * t * o.y)
};
return e.length <= 1 || e.forEach((function(s, l) {
var c, u, h = new v.Point(s.x, s.y);
0 === l ? (u = e[l + 1], c = n ? a(v.util.createVector(u, h)).addEquals(h) : e[e.length - 1]) : l === e.length - 1 ? (c = e[l - 1], u = n ? a(v.util.createVector(c, h)).addEquals(h) : e[0]) : (c = e[l - 1], u = e[l +
1]);
var p, d, f = v.util.getBisector(h, c, u),
g = f.vector,
m = f.angle;
if ("miter" === t.strokeLineJoin && (p = -i / Math.sin(m / 2), d = new v.Point(g.x * p * o.x, g.y * p * o.y), Math.hypot(d.x, d.y) / i <= t.strokeMiterLimit)) return r.push(h.add(d)), void r.push(h.subtract(d));
p = -i * Math.SQRT2, d = new v.Point(g.x * p * o.x, g.y * p * o.y), r.push(h.add(d)), r.push(h.subtract(d))
})), r
},
transformPoint: function(e, t, n) {
return n ? new v.Point(t[0] * e.x + t[2] * e.y, t[1] * e.x + t[3] * e.y) : new v.Point(t[0] * e.x + t[2] * e.y + t[4], t[1] * e.x + t[3] * e.y + t[5])
},
makeBoundingBoxFromPoints: function(e, t) {
if (t)
for (var n = 0; n < e.length; n++) e[n] = v.util.transformPoint(e[n], t);
var r = [e[0].x, e[1].x, e[2].x, e[3].x],
i = v.util.array.min(r),
o = v.util.array.max(r) - i,
a = [e[0].y, e[1].y, e[2].y, e[3].y],
s = v.util.array.min(a);
return {
left: i,
top: s,
width: o,
height: v.util.array.max(a) - s
}
},
invertTransform: function(e) {
var t = 1 / (e[0] * e[3] - e[1] * e[2]),
n = [t * e[3], -t * e[1], -t * e[2], t * e[0]],
r = v.util.transformPoint({
x: e[4],
y: e[5]
}, n, !0);
return n[4] = -r.x, n[5] = -r.y, n
},
toFixed: function(e, t) {
return parseFloat(Number(e).toFixed(t))
},
parseUnit: function(e, t) {
var n = /\D{0,2}$/.exec(e),
r = parseFloat(e);
switch (t || (t = v.Text.DEFAULT_SVG_FONT_SIZE), n[0]) {
case "mm":
return r * v.DPI / 25.4;
case "cm":
return r * v.DPI / 2.54;
case "in":
return r * v.DPI;
case "pt":
return r * v.DPI / 72;
case "pc":
return r * v.DPI / 72 * 12;
case "em":
return r * t;
default:
return r
}
},
falseFunction: function() {
return !1
},
getKlass: function(e, t) {
return e = v.util.string.camelize(e.charAt(0).toUpperCase() + e.slice(1)), v.util.resolveNamespace(t)[e]
},
getSvgAttributes: function(e) {
var t = ["instantiated_by_use", "style", "id", "class"];
switch (e) {
case "linearGradient":
t = t.concat(["x1", "y1", "x2", "y2", "gradientUnits", "gradientTransform"]);
break;
case "radialGradient":
t = t.concat(["gradientUnits", "gradientTransform", "cx", "cy", "r", "fx", "fy", "fr"]);
break;
case "stop":
t = t.concat(["offset", "stop-color", "stop-opacity"])
}
return t
},
resolveNamespace: function(t) {
if (!t) return v;
var n, r = t.split("."),
i = r.length,
o = e || v.window;
for (n = 0; n < i; ++n) o = o[r[n]];
return o
},
loadImage: function(e, t, n, r) {
if (e) {
var i = v.util.createImage(),
o = function() {
t && t.call(n, i, !1), i = i.onload = i.onerror = null
};
i.onload = o, i.onerror = function() {
v.log("Error loading " + i.src), t && t.call(n, null, !0), i = i.onload = i.onerror = null
}, 0 !== e.indexOf("data") && null != r && (i.crossOrigin = r), "data:image/svg" === e.substring(0, 14) && (i.onload = null, v.util.loadImageInDom(i, o)), i.src = e
} else t && t.call(n, e)
},
loadImageInDom: function(e, t) {
var n = v.document.createElement("div");
n.style.width = n.style.height = "1px", n.style.left = n.style.top = "-100%", n.style.position = "absolute", n.appendChild(e), v.document.querySelector("body").appendChild(n), e.onload = function() {
t(), n.parentNode.removeChild(n), n = null
}
},
enlivenObjects: function(e, t, n, r) {
var i = [],
o = 0,
a = (e = e || []).length;
function s() {
++o === a && t && t(i.filter((function(e) {
return e
})))
}
a ? e.forEach((function(e, t) {
e && e.type ? v.util.getKlass(e.type, n).fromObject(e, (function(n, o) {
o || (i[t] = n), r && r(e, n, o), s()
})) : s()
})) : t && t(i)
},
enlivenObjectEnlivables: function(e, t, n) {
var r = v.Object.ENLIVEN_PROPS.filter((function(t) {
return !!e[t]
}));
v.util.enlivenObjects(r.map((function(t) {
return e[t]
})), (function(e) {
var i = {};
r.forEach((function(n, r) {
i[n] = e[r], t && (t[n] = e[r])
})), n && n(i)
}))
},
enlivenPatterns: function(e, t) {
function n() {
++i === o && t && t(r)
}
var r = [],
i = 0,
o = (e = e || []).length;
o ? e.forEach((function(e, t) {
e && e.source ? new v.Pattern(e, (function(e) {
r[t] = e, n()
})) : (r[t] = e, n())
})) : t && t(r)
},
groupSVGElements: function(e, t, n) {
var r;
return e && 1 === e.length ? (void 0 !== n && (e[0].sourcePath = n), e[0]) : (t && (t.width && t.height ? t.centerPoint = {
x: t.width / 2,
y: t.height / 2
} : (delete t.width, delete t.height)), r = new v.Group(e, t), void 0 !== n && (r.sourcePath = n), r)
},
populateWithProperties: function(e, t, n) {
if (n && Array.isArray(n))
for (var r = 0, i = n.length; r < i; r++) n[r] in e && (t[n[r]] = e[n[r]])
},
createCanvasElement: function() {
return v.document.createElement("canvas")
},
copyCanvasElement: function(e) {
var t = v.util.createCanvasElement();
return t.width = e.width, t.height = e.height, t.getContext("2d").drawImage(e, 0, 0), t
},
toDataURL: function(e, t, n) {
return e.toDataURL("image/" + t, n)
},
createImage: function() {
return v.document.createElement("img")
},
multiplyTransformMatrices: function(e, t, n) {
return [e[0] * t[0] + e[2] * t[1], e[1] * t[0] + e[3] * t[1], e[0] * t[2] + e[2] * t[3], e[1] * t[2] + e[3] * t[3], n ? 0 : e[0] * t[4] + e[2] * t[5] + e[4], n ? 0 : e[1] * t[4] + e[3] * t[5] + e[5]]
},
qrDecompose: function(e) {
var o = n(e[1], e[0]),
a = r(e[0], 2) + r(e[1], 2),
s = t(a),
l = (e[0] * e[3] - e[2] * e[1]) / s,
c = n(e[0] * e[2] + e[1] * e[3], a);
return {
angle: o / i,
scaleX: s,
scaleY: l,
skewX: c / i,
skewY: 0,
translateX: e[4],
translateY: e[5]
}
},
calcRotateMatrix: function(e) {
if (!e.angle) return v.iMatrix.concat();
var t = v.util.degreesToRadians(e.angle),
n = v.util.cos(t),
r = v.util.sin(t);
return [n, r, -r, n, 0, 0]
},
calcDimensionsMatrix: function(e) {
var t = void 0 === e.scaleX ? 1 : e.scaleX,
n = void 0 === e.scaleY ? 1 : e.scaleY,
r = [e.flipX ? -t : t, 0, 0, e.flipY ? -n : n, 0, 0],
i = v.util.multiplyTransformMatrices,
o = v.util.degreesToRadians;
return e.skewX && (r = i(r, [1, 0, Math.tan(o(e.skewX)), 1], !0)), e.skewY && (r = i(r, [1, Math.tan(o(e.skewY)), 0, 1], !0)), r
},
composeMatrix: function(e) {
var t = [1, 0, 0, 1, e.translateX || 0, e.translateY || 0],
n = v.util.multiplyTransformMatrices;
return e.angle && (t = n(t, v.util.calcRotateMatrix(e))), (1 !== e.scaleX || 1 !== e.scaleY || e.skewX || e.skewY || e.flipX || e.flipY) && (t = n(t, v.util.calcDimensionsMatrix(e))), t
},
resetObjectTransform: function(e) {
e.scaleX = 1, e.scaleY = 1, e.skewX = 0, e.skewY = 0, e.flipX = !1, e.flipY = !1, e.rotate(0)
},
saveObjectTransform: function(e) {
return {
scaleX: e.scaleX,
scaleY: e.scaleY,
skewX: e.skewX,
skewY: e.skewY,
angle: e.angle,
left: e.left,
flipX: e.flipX,
flipY: e.flipY,
top: e.top
}
},
isTransparent: function(e, t, n, r) {
r > 0 && (t > r ? t -= r : t = 0, n > r ? n -= r : n = 0);
var i, o = !0,
a = e.getImageData(t, n, 2 * r || 1, 2 * r || 1),
s = a.data.length;
for (i = 3; i < s && !1 !== (o = a.data[i] <= 0); i += 4);
return a = null, o
},
parsePreserveAspectRatioAttribute: function(e) {
var t, n = "meet",
r = e.split(" ");
return r && r.length && ("meet" !== (n = r.pop()) && "slice" !== n ? (t = n, n = "meet") : r.length && (t = r.pop())), {
meetOrSlice: n,
alignX: "none" !== t ? t.slice(1, 4) : "none",
alignY: "none" !== t ? t.slice(5, 8) : "none"
}
},
clearFabricFontCache: function(e) {
(e = (e || "").toLowerCase()) ? v.charWidthsCache[e] && delete v.charWidthsCache[e]: v.charWidthsCache = {}
},
limitDimsByArea: function(e, t) {
var n = Math.sqrt(t * e),
r = Math.floor(t / n);
return {
x: Math.floor(n),
y: r
}
},
capValue: function(e, t, n) {
return Math.max(e, Math.min(t, n))
},
findScaleToFit: function(e, t) {
return Math.min(t.width / e.width, t.height / e.height)
},
findScaleToCover: function(e, t) {
return Math.max(t.width / e.width, t.height / e.height)
},
matrixToSVG: function(e) {
return "matrix(" + e.map((function(e) {
return v.util.toFixed(e, v.Object.NUM_FRACTION_DIGITS)
})).join(" ") + ")"
},
removeTransformFromObject: function(e, t) {
var n = v.util.invertTransform(t),
r = v.util.multiplyTransformMatrices(n, e.calcOwnMatrix());
v.util.applyTransformToObject(e, r)
},
addTransformToObject: function(e, t) {
v.util.applyTransformToObject(e, v.util.multiplyTransformMatrices(t, e.calcOwnMatrix()))
},
applyTransformToObject: function(e, t) {
var n = v.util.qrDecompose(t),
r = new v.Point(n.translateX, n.translateY);
e.flipX = !1, e.flipY = !1, e.set("scaleX", n.scaleX), e.set("scaleY", n.scaleY), e.skewX = n.skewX, e.skewY = n.skewY, e.angle = n.angle, e.setPositionByOrigin(r, "center", "center")
},
sizeAfterTransform: function(e, t, n) {
var r = e / 2,
i = t / 2,
o = [{
x: -r,
y: -i
}, {
x: r,
y: -i
}, {
x: -r,
y: i
}, {
x: r,
y: i
}],
a = v.util.calcDimensionsMatrix(n),
s = v.util.makeBoundingBoxFromPoints(o, a);
return {
x: s.width,
y: s.height
}
},
mergeClipPaths: function(e, t) {
var n = e,
r = t;
n.inverted && !r.inverted && (n = t, r = e), v.util.applyTransformToObject(r, v.util.multiplyTransformMatrices(v.util.invertTransform(n.calcTransformMatrix()), r.calcTransformMatrix()));
var i = n.inverted && r.inverted;
return i && (n.inverted = r.inverted = !1), new v.Group([n], {
clipPath: r,
inverted: i
})
},
hasStyleChanged: function(e, t, n) {
return n = n || !1, e.fill !== t.fill || e.stroke !== t.stroke || e.strokeWidth !== t.strokeWidth || e.fontSize !== t.fontSize || e.fontFamily !== t.fontFamily || e.fontWeight !== t.fontWeight || e.fontStyle !== t
.fontStyle || e.textBackgroundColor !== t.textBackgroundColor || e.deltaY !== t.deltaY || n && (e.overline !== t.overline || e.underline !== t.underline || e.linethrough !== t.linethrough)
},
stylesToArray: function(e, t) {
e = v.util.object.clone(e, !0);
for (var n = t.split("\n"), r = -1, i = {}, o = [], a = 0; a < n.length; a++)
if (e[a])
for (var s = 0; s < n[a].length; s++) {
r++;
var l = e[a][s];
if (l && Object.keys(l).length > 0) v.util.hasStyleChanged(i, l, !0) ? o.push({
start: r,
end: r + 1,
style: l
}) : o[o.length - 1].end++;
i = l || {}
} else r += n[a].length;
return o
},
stylesFromArray: function(e, t) {
if (!Array.isArray(e)) return e;
for (var n = t.split("\n"), r = -1, i = 0, o = {}, a = 0; a < n.length; a++)
for (var s = 0; s < n[a].length; s++) r++, e[i] && e[i].start <= r && r < e[i].end && (o[a] = o[a] || {}, o[a][s] = Object.assign({}, e[i].style), r === e[i].end - 1 && i++);
return o
}
}
}(e),
function() {
var e = Array.prototype.join,
t = {
m: 2,
l: 2,
h: 1,
v: 1,
c: 6,
s: 4,
q: 4,
t: 2,
a: 7
},
n = {
m: "l",
M: "L"
};
function r(e, t, n, r, i, o, a, s, l, c, u) {
var h = v.util.cos(e),
p = v.util.sin(e),
d = v.util.cos(t),
f = v.util.sin(t),
g = n * i * d - r * o * f + a,
m = r * i * d + n * o * f + s;
return ["C", c + l * (-n * i * p - r * o * h), u + l * (-r * i * p + n * o * h), g + l * (n * i * f + r * o * d), m + l * (r * i * f - n * o * d), g, m]
}
function i(e, t, n, r) {
var i = Math.atan2(t, e),
o = Math.atan2(r, n);
return o >= i ? o - i : 2 * Math.PI - (i - o)
}
function o(e, t, n) {
for (var o = n[1], a = n[2], s = n[3], l = n[4], c = n[5], u = function(e, t, n, o, a, s, l) {
var c = Math.PI,
u = l * c / 180,
h = v.util.sin(u),
p = v.util.cos(u),
d = 0,
f = 0,
g = -p * e * .5 - h * t * .5,
m = -p * t * .5 + h * e * .5,
_ = (n = Math.abs(n)) * n,
b = (o = Math.abs(o)) * o,
y = m * m,
w = g * g,
x = _ * b - _ * y - b * w,
k = 0;
if (x < 0) {
var C = Math.sqrt(1 - x / (_ * b));
n *= C, o *= C
} else k = (a === s ? -1 : 1) * Math.sqrt(x / (_ * y + b * w));
var S = k * n * m / o,
E = -k * o * g / n,
T = p * S - h * E + .5 * e,
O = h * S + p * E + .5 * t,
A = i(1, 0, (g - S) / n, (m - E) / o),
P = i((g - S) / n, (m - E) / o, (-g - S) / n, (-m - E) / o);
0 === s && P > 0 ? P -= 2 * c : 1 === s && P < 0 && (P += 2 * c);
for (var M = Math.ceil(Math.abs(P / c * 2)), D = [], I = P / M, N = 8 / 3 * Math.sin(I / 4) * Math.sin(I / 4) / Math.sin(I / 2), R = A + I, j = 0; j < M; j++) D[j] = r(A, R, p, h, n, o, T, O, N, d, f), d = D[j][5], f = D[j][
6
], A = R, R += I;
return D
}(n[6] - e, n[7] - t, o, a, l, c, s), h = 0, p = u.length; h < p; h++) u[h][1] += e, u[h][2] += t, u[h][3] += e, u[h][4] += t, u[h][5] += e, u[h][6] += t;
return u
}
function a(e, t, n, r) {
return Math.sqrt((n - e) * (n - e) + (r - t) * (r - t))
}
function s(e, t, n, r, i, o, a, s) {
return function(l) {
var c = function(e) {
return e * e * e
}(l),
u = function(e) {
return 3 * e * e * (1 - e)
}(l),
h = function(e) {
return 3 * e * (1 - e) * (1 - e)
}(l),
p = function(e) {
return (1 - e) * (1 - e) * (1 - e)
}(l);
return {
x: a * c + i * u + n * h + e * p,
y: s * c + o * u + r * h + t * p
}
}
}
function l(e, t, n, r, i, o, a, s) {
return function(l) {
var c = 1 - l,
u = 3 * c * c * (n - e) + 6 * c * l * (i - n) + 3 * l * l * (a - i),
h = 3 * c * c * (r - t) + 6 * c * l * (o - r) + 3 * l * l * (s - o);
return Math.atan2(h, u)
}
}
function c(e, t, n, r, i, o) {
return function(a) {
var s = function(e) {
return e * e
}(a),
l = function(e) {
return 2 * e * (1 - e)
}(a),
c = function(e) {
return (1 - e) * (1 - e)
}(a);
return {
x: i * s + n * l + e * c,
y: o * s + r * l + t * c
}
}
}
function u(e, t, n, r, i, o) {
return function(a) {
var s = 1 - a,
l = 2 * s * (n - e) + 2 * a * (i - n),
c = 2 * s * (r - t) + 2 * a * (o - r);
return Math.atan2(c, l)
}
}
function h(e, t, n) {
var r, i, o = {
x: t,
y: n
},
s = 0;
for (i = 1; i <= 100; i += 1) r = e(i / 100), s += a(o.x, o.y, r.x, r.y), o = r;
return s
}
function p(e, t) {
for (var n, r, i, o = 0, s = 0, l = e.iterator, c = {
x: e.x,
y: e.y
}, u = .01, h = e.angleFinder; s < t && u > 1e-4;) n = l(o), i = o, (r = a(c.x, c.y, n.x, n.y)) + s > t ? (o -= u, u /= 2) : (c = n, o += u, s += r);
return n.angle = h(i), n
}
function d(e) {
for (var t, n, r, i, o = 0, p = e.length, d = 0, f = 0, g = 0, m = 0, v = [], _ = 0; _ < p; _++) {
switch (r = {
x: d,
y: f,
command: (t = e[_])[0]
}, t[0]) {
case "M":
r.length = 0, g = d = t[1], m = f = t[2];
break;
case "L":
r.length = a(d, f, t[1], t[2]), d = t[1], f = t[2];
break;
case "C":
n = s(d, f, t[1], t[2], t[3], t[4], t[5], t[6]), i = l(d, f, t[1], t[2], t[3], t[4], t[5], t[6]), r.iterator = n, r.angleFinder = i, r.length = h(n, d, f), d = t[5], f = t[6];
break;
case "Q":
n = c(d, f, t[1], t[2], t[3], t[4]), i = u(d, f, t[1], t[2], t[3], t[4]), r.iterator = n, r.angleFinder = i, r.length = h(n, d, f), d = t[3], f = t[4];
break;
case "Z":
case "z":
r.destX = g, r.destY = m, r.length = a(d, f, g, m), d = g, f = m
}
o += r.length, v.push(r)
}
return v.push({
length: o,
x: d,
y: f
}), v
}
v.util.joinPath = function(e) {
return e.map((function(e) {
return e.join(" ")
})).join(" ")
}, v.util.parsePath = function(e) {
var r, i, o, a, s, l = [],
c = [],
u = v.rePathCommand,
h = "[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",
p = "(" + h + ")" + v.commaWsp,
d = "([01])" + v.commaWsp + "?",
f = new RegExp(p + "?" + p + "?" + p + d + d + p + "?(" + h + ")", "g");
if (!e || !e.match) return l;
for (var g, m = 0, _ = (s = e.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi)).length; m < _; m++) {
a = (r = s[m]).slice(1).trim(), c.length = 0;
var b = r.charAt(0);
if (g = [b], "a" === b.toLowerCase())
for (var y; y = f.exec(a);)
for (var w = 1; w < y.length; w++) c.push(y[w]);
else
for (; o = u.exec(a);) c.push(o[0]);
w = 0;
for (var x = c.length; w < x; w++) i = parseFloat(c[w]), isNaN(i) || g.push(i);
var k = t[b.toLowerCase()],
C = n[b] || b;
if (g.length - 1 > k)
for (var S = 1, E = g.length; S < E; S += k) l.push([b].concat(g.slice(S, S + k))), b = C;
else l.push(g)
}
return l
}, v.util.makePathSimpler = function(e) {
var t, n, r, i, a, s, l = 0,
c = 0,
u = e.length,
h = 0,
p = 0,
d = [];
for (n = 0; n < u; ++n) {
switch (r = !1, (t = e[n].slice(0))[0]) {
case "l":
t[0] = "L", t[1] += l, t[2] += c;
case "L":
l = t[1], c = t[2];
break;
case "h":
t[1] += l;
case "H":
t[0] = "L", t[2] = c, l = t[1];
break;
case "v":
t[1] += c;
case "V":
t[0] = "L", c = t[1], t[1] = l, t[2] = c;
break;
case "m":
t[0] = "M", t[1] += l, t[2] += c;
case "M":
l = t[1], c = t[2], h = t[1], p = t[2];
break;
case "c":
t[0] = "C", t[1] += l, t[2] += c, t[3] += l, t[4] += c, t[5] += l, t[6] += c;
case "C":
a = t[3], s = t[4], l = t[5], c = t[6];
break;
case "s":
t[0] = "S", t[1] += l, t[2] += c, t[3] += l, t[4] += c;
case "S":
"C" === i ? (a = 2 * l - a, s = 2 * c - s) : (a = l, s = c), l = t[3], c = t[4], t[0] = "C", t[5] = t[3], t[6] = t[4], t[3] = t[1], t[4] = t[2], t[1] = a, t[2] = s, a = t[3], s = t[4];
break;
case "q":
t[0] = "Q", t[1] += l, t[2] += c, t[3] += l, t[4] += c;
case "Q":
a = t[1], s = t[2], l = t[3], c = t[4];
break;
case "t":
t[0] = "T", t[1] += l, t[2] += c;
case "T":
"Q" === i ? (a = 2 * l - a, s = 2 * c - s) : (a = l, s = c), t[0] = "Q", l = t[1], c = t[2], t[1] = a, t[2] = s, t[3] = l, t[4] = c;
break;
case "a":
t[0] = "A", t[6] += l, t[7] += c;
case "A":
r = !0, d = d.concat(o(l, c, t)), l = t[6], c = t[7];
break;
case "z":
case "Z":
l = h, c = p
}
r || d.push(t), i = t[0]
}
return d
}, v.util.getSmoothPathFromPoints = function(e, t) {
var n, r = [],
i = new v.Point(e[0].x, e[0].y),
o = new v.Point(e[1].x, e[1].y),
a = e.length,
s = 1,
l = 0,
c = a > 2;
for (t = t || 0, c && (s = e[2].x < o.x ? -1 : e[2].x === o.x ? 0 : 1, l = e[2].y < o.y ? -1 : e[2].y === o.y ? 0 : 1), r.push(["M", i.x - s * t, i.y - l * t]), n = 1; n < a; n++) {
if (!i.eq(o)) {
var u = i.midPointFrom(o);
r.push(["Q", i.x, i.y, u.x, u.y])
}
i = e[n], n + 1 < e.length && (o = e[n + 1])
}
return c && (s = i.x > e[n - 2].x ? 1 : i.x === e[n - 2].x ? 0 : -1, l = i.y > e[n - 2].y ? 1 : i.y === e[n - 2].y ? 0 : -1), r.push(["L", i.x + s * t, i.y + l * t]), r
}, v.util.getPathSegmentsInfo = d, v.util.getBoundsOfCurve = function(t, n, r, i, o, a, s, l) {
var c;
if (v.cachesBoundsOfCurve && (c = e.call(arguments), v.boundsOfCurveCache[c])) return v.boundsOfCurveCache[c];
var u, h, p, d, f, g, m, _, b = Math.sqrt,
y = Math.min,
w = Math.max,
x = Math.abs,
k = [],
C = [
[],
[]
];
h = 6 * t - 12 * r + 6 * o, u = -3 * t + 9 * r - 9 * o + 3 * s, p = 3 * r - 3 * t;
for (var S = 0; S < 2; ++S)
if (S > 0 && (h = 6 * n - 12 * i + 6 * a, u = -3 * n + 9 * i - 9 * a + 3 * l, p = 3 * i - 3 * n), x(u) < 1e-12) {
if (x(h) < 1e-12) continue;
0 < (d = -p / h) && d < 1 && k.push(d)
} else(m = h * h - 4 * p * u) < 0 || (0 < (f = (-h + (_ = b(m))) / (2 * u)) && f < 1 && k.push(f), 0 < (g = (-h - _) / (2 * u)) && g < 1 && k.push(g));
for (var E, T, O, A = k.length, P = A; A--;) E = (O = 1 - (d = k[A])) * O * O * t + 3 * O * O * d * r + 3 * O * d * d * o + d * d * d * s, C[0][A] = E, T = O * O * O * n + 3 * O * O * d * i + 3 * O * d * d * a + d * d * d * l,
C[1][A] = T;
C[0][P] = t, C[1][P] = n, C[0][P + 1] = s, C[1][P + 1] = l;
var M = [{
x: y.apply(null, C[0]),
y: y.apply(null, C[1])
}, {
x: w.apply(null, C[0]),
y: w.apply(null, C[1])
}];
return v.cachesBoundsOfCurve && (v.boundsOfCurveCache[c] = M), M
}, v.util.getPointOnPath = function(e, t, n) {
n || (n = d(e));
for (var r = 0; t - n[r].length > 0 && r < n.length - 2;) t -= n[r].length, r++;
var i, o = n[r],
a = t / o.length,
s = o.command,
l = e[r];
switch (s) {
case "M":
return {
x: o.x, y: o.y, angle: 0
};
case "Z":
case "z":
return (i = new v.Point(o.x, o.y).lerp(new v.Point(o.destX, o.destY), a)).angle = Math.atan2(o.destY - o.y, o.destX - o.x), i;
case "L":
return (i = new v.Point(o.x, o.y).lerp(new v.Point(l[1], l[2]), a)).angle = Math.atan2(l[2] - o.y, l[1] - o.x), i;
case "C":
case "Q":
return p(o, t)
}
}, v.util.transformPath = function(e, t, n) {
return n && (t = v.util.multiplyTransformMatrices(t, [1, 0, 0, 1, -n.x, -n.y])), e.map((function(e) {
for (var n = e.slice(0), r = {}, i = 1; i < e.length - 1; i += 2) r.x = e[i], r.y = e[i + 1], r = v.util.transformPoint(r, t), n[i] = r.x, n[i + 1] = r.y;
return n
}))
}
}(),
function() {
var e = Array.prototype.slice;
function t(e, t, n) {
if (e && 0 !== e.length) {
var r = e.length - 1,
i = t ? e[r][t] : e[r];
if (t)
for (; r--;) n(e[r][t], i) && (i = e[r][t]);
else
for (; r--;) n(e[r], i) && (i = e[r]);
return i
}
}
v.util.array = {
fill: function(e, t) {
for (var n = e.length; n--;) e[n] = t;
return e
},
invoke: function(t, n) {
for (var r = e.call(arguments, 2), i = [], o = 0, a = t.length; o < a; o++) i[o] = r.length ? t[o][n].apply(t[o], r) : t[o][n].call(t[o]);
return i
},
min: function(e, n) {
return t(e, n, (function(e, t) {
return e < t
}))
},
max: function(e, n) {
return t(e, n, (function(e, t) {
return e >= t
}))
}
}
}(),
function() {
function e(t, n, r) {
if (r)
if (!v.isLikelyNode && n instanceof Element) t = n;
else if (n instanceof Array) {
t = [];
for (var i = 0, o = n.length; i < o; i++) t[i] = e({}, n[i], r)
} else if (n && "object" == typeof n)
for (var a in n) "canvas" === a || "group" === a ? t[a] = null : n.hasOwnProperty(a) && (t[a] = e({}, n[a], r));
else t = n;
else
for (var a in n) t[a] = n[a];
return t
}
v.util.object = {
extend: e,
clone: function(t, n) {
return e({}, t, n)
}
}, v.util.object.extend(v.util, v.Observable)
}(),
function() {
function e(e, t) {
var n = e.charCodeAt(t);
if (isNaN(n)) return "";
if (n < 55296 || n > 57343) return e.charAt(t);
if (55296 <= n && n <= 56319) {
if (e.length <= t + 1) throw "High surrogate without following low surrogate";
var r = e.charCodeAt(t + 1);
if (56320 > r || r > 57343) throw "High surrogate without following low surrogate";
return e.charAt(t) + e.charAt(t + 1)
}
if (0 === t) throw "Low surrogate without preceding high surrogate";
var i = e.charCodeAt(t - 1);
if (55296 > i || i > 56319) throw "Low surrogate without preceding high surrogate";
return !1
}
v.util.string = {
camelize: function(e) {
return e.replace(/-+(.)?/g, (function(e, t) {
return t ? t.toUpperCase() : ""
}))
},
capitalize: function(e, t) {
return e.charAt(0).toUpperCase() + (t ? e.slice(1) : e.slice(1).toLowerCase())
},
escapeXml: function(e) {
return e.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">")
},
graphemeSplit: function(t) {
var n, r = 0,
i = [];
for (r = 0; r < t.length; r++) !1 !== (n = e(t, r)) && i.push(n);
return i
}
}
}(),
function() {
var e = Array.prototype.slice,
t = function() {},
n = function() {
for (var e in {
toString: 1
})
if ("toString" === e) return !1;
return !0
}(),
r = function(e, t, r) {
for (var i in t) i in e.prototype && "function" == typeof e.prototype[i] && (t[i] + "").indexOf("callSuper") > -1 ? e.prototype[i] = function(e) {
return function() {
var n = this.constructor.superclass;
this.constructor.superclass = r;
var i = t[e].apply(this, arguments);
if (this.constructor.superclass = n, "initialize" !== e) return i
}
}(i) : e.prototype[i] = t[i], n && (t.toString !== Object.prototype.toString && (e.prototype.toString = t.toString), t.valueOf !== Object.prototype.valueOf && (e.prototype.valueOf = t.valueOf))
};
function i() {}
function o(t) {
for (var n = null, r = this; r.constructor.superclass;) {
var i = r.constructor.superclass.prototype[t];
if (r[t] !== i) {
n = i;
break
}
r = r.constructor.superclass.prototype
}
if (n) return arguments.length > 1 ? n.apply(this, e.call(arguments, 1)) : n.call(this)
}
v.util.createClass = function() {
var n = null,
a = e.call(arguments, 0);
function s() {
this.initialize.apply(this, arguments)
}
"function" == typeof a[0] && (n = a.shift()), s.superclass = n, s.subclasses = [], n && (i.prototype = n.prototype, s.prototype = new i, n.subclasses.push(s));
for (var l = 0, c = a.length; l < c; l++) r(s, a[l], n);
return s.prototype.initialize || (s.prototype.initialize = t), s.prototype.constructor = s, s.prototype.callSuper = o, s
}
}(), t = !!v.document.createElement("div").attachEvent, n = ["touchstart", "touchmove", "touchend"], v.util.addListener = function(e, n, r, i) {
e && e.addEventListener(n, r, !t && i)
}, v.util.removeListener = function(e, n, r, i) {
e && e.removeEventListener(n, r, !t && i)
}, v.util.getPointer = function(e) {
var t = e.target,
n = v.util.getScrollLeftTop(t),
r = function(e) {
var t = e.changedTouches;
return t && t[0] ? t[0] : e
}(e);
return {
x: r.clientX + n.left,
y: r.clientY + n.top
}
}, v.util.isTouchEvent = function(e) {
return n.indexOf(e.type) > -1 || "touch" === e.pointerType
}, r = v.document.createElement("div"), i = "string" == typeof r.style.opacity, l = "string" == typeof r.style.filter, c = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, u = function(e) {
return e
}, i ? u = function(e, t) {
return e.style.opacity = t, e
} : l && (u = function(e, t) {
var n = e.style;
return e.currentStyle && !e.currentStyle.hasLayout && (n.zoom = 1), c.test(n.filter) ? (t = t >= .9999 ? "" : "alpha(opacity=" + 100 * t + ")", n.filter = n.filter.replace(c, t)) : n.filter += " alpha(opacity=" + 100 * t + ")", e
}), v.util.setStyle = function(e, t) {
var n = e.style;
if (!n) return e;
if ("string" == typeof t) return e.style.cssText += ";" + t, t.indexOf("opacity") > -1 ? u(e, t.match(/opacity:\s*(\d?\.?\d*)/)[1]) : e;
for (var r in t)
if ("opacity" === r) u(e, t[r]);
else {
var i = "float" === r || "cssFloat" === r ? void 0 === n.styleFloat ? "cssFloat" : "styleFloat" : r;
n.setProperty(i, t[r])
} return e
},
function() {
var e = Array.prototype.slice;
var t, n, r = function(t) {
return e.call(t, 0)
};
try {
t = r(v.document.childNodes) instanceof Array
} catch (e) {}
function i(e, t) {
var n = v.document.createElement(e);
for (var r in t) "class" === r ? n.className = t[r] : "for" === r ? n.htmlFor = t[r] : n.setAttribute(r, t[r]);
return n
}
function o(e) {
for (var t = 0, n = 0, r = v.document.documentElement, i = v.document.body || {
scrollLeft: 0,
scrollTop: 0
}; e && (e.parentNode || e.host) && ((e = e.parentNode || e.host) === v.document ? (t = i.scrollLeft || r.scrollLeft || 0, n = i.scrollTop || r.scrollTop || 0) : (t += e.scrollLeft || 0, n += e.scrollTop || 0), 1 !== e
.nodeType || "fixed" !== e.style.position););
return {
left: t,
top: n
}
}
t || (r = function(e) {
for (var t = new Array(e.length), n = e.length; n--;) t[n] = e[n];
return t
}), n = v.document.defaultView && v.document.defaultView.getComputedStyle ? function(e, t) {
var n = v.document.defaultView.getComputedStyle(e, null);
return n ? n[t] : void 0
} : function(e, t) {
var n = e.style[t];
return !n && e.currentStyle && (n = e.currentStyle[t]), n
},
function() {
var e = v.document.documentElement.style,
t = "userSelect" in e ? "userSelect" : "MozUserSelect" in e ? "MozUserSelect" : "WebkitUserSelect" in e ? "WebkitUserSelect" : "KhtmlUserSelect" in e ? "KhtmlUserSelect" : "";
v.util.makeElementUnselectable = function(e) {
return void 0 !== e.onselectstart && (e.onselectstart = v.util.falseFunction), t ? e.style[t] = "none" : "string" == typeof e.unselectable && (e.unselectable = "on"), e
}, v.util.makeElementSelectable = function(e) {
return void 0 !== e.onselectstart && (e.onselectstart = null), t ? e.style[t] = "" : "string" == typeof e.unselectable && (e.unselectable = ""), e
}
}(), v.util.setImageSmoothing = function(e, t) {
e.imageSmoothingEnabled = e.imageSmoothingEnabled || e.webkitImageSmoothingEnabled || e.mozImageSmoothingEnabled || e.msImageSmoothingEnabled || e.oImageSmoothingEnabled, e.imageSmoothingEnabled = t
}, v.util.getById = function(e) {
return "string" == typeof e ? v.document.getElementById(e) : e
}, v.util.toArray = r, v.util.addClass = function(e, t) {
e && -1 === (" " + e.className + " ").indexOf(" " + t + " ") && (e.className += (e.className ? " " : "") + t)
}, v.util.makeElement = i, v.util.wrapElement = function(e, t, n) {
return "string" == typeof t && (t = i(t, n)), e.parentNode && e.parentNode.replaceChild(t, e), t.appendChild(e), t
}, v.util.getScrollLeftTop = o, v.util.getElementOffset = function(e) {
var t, r, i = e && e.ownerDocument,
a = {
left: 0,
top: 0
},
s = {
left: 0,
top: 0
},
l = {
borderLeftWidth: "left",
borderTopWidth: "top",
paddingLeft: "left",
paddingTop: "top"
};
if (!i) return s;
for (var c in l) s[l[c]] += parseInt(n(e, c), 10) || 0;
return t = i.documentElement, void 0 !== e.getBoundingClientRect && (a = e.getBoundingClientRect()), r = o(e), {
left: a.left + r.left - (t.clientLeft || 0) + s.left,
top: a.top + r.top - (t.clientTop || 0) + s.top
}
}, v.util.getNodeCanvas = function(e) {
var t = v.jsdomImplForWrapper(e);
return t._canvas || t._image
}, v.util.cleanUpJsdomNode = function(e) {
if (v.isLikelyNode) {
var t = v.jsdomImplForWrapper(e);
t && (t._image = null, t._canvas = null, t._currentSrc = null, t._attributes = null, t._classList = null)
}
}
}(),
function() {
function e() {}
v.util.request = function(t, n) {
n || (n = {});
var r = n.method ? n.method.toUpperCase() : "GET",
i = n.onComplete || function() {},
o = new v.window.XMLHttpRequest,
a = n.body || n.parameters;
return o.onreadystatechange = function() {
4 === o.readyState && (i(o), o.onreadystatechange = e)
}, "GET" === r && (a = null, "string" == typeof n.parameters && (t = function(e, t) {
return e + (/\?/.test(e) ? "&" : "?") + t
}(t, n.parameters))), o.open(r, t, !0), "POST" !== r && "PUT" !== r || o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), o.send(a), o
}
}(), v.log = console.log, v.warn = console.warn,
function() {
var e = v.util.object.extend,
t = v.util.object.clone,
n = [];
function r() {
return !1
}
function i(e, t, n, r) {
return -n * Math.cos(e / r * (Math.PI / 2)) + n + t
}
v.util.object.extend(n, {
cancelAll: function() {
var e = this.splice(0);
return e.forEach((function(e) {
e.cancel()
})), e
},
cancelByCanvas: function(e) {
if (!e) return [];
var t = this.filter((function(t) {
return "object" == typeof t.target && t.target.canvas === e
}));
return t.forEach((function(e) {
e.cancel()
})), t
},
cancelByTarget: function(e) {
var t = this.findAnimationsByTarget(e);
return t.forEach((function(e) {
e.cancel()
})), t
},
findAnimationIndex: function(e) {
return this.indexOf(this.findAnimation(e))
},
findAnimation: function(e) {
return this.find((function(t) {
return t.cancel === e
}))
},
findAnimationsByTarget: function(e) {
return e ? this.filter((function(t) {
return t.target === e
})) : []
}
});
var o = v.window.requestAnimationFrame || v.window.webkitRequestAnimationFrame || v.window.mozRequestAnimationFrame || v.window.oRequestAnimationFrame || v.window.msRequestAnimationFrame || function(e) {
return v.window.setTimeout(e, 1e3 / 60)
},
a = v.window.cancelAnimationFrame || v.window.clearTimeout;
function s() {
return o.apply(v.window, arguments)
}
v.util.animate = function(n) {
n || (n = {});
var o, a = !1,
l = function() {
var e = v.runningAnimations.indexOf(o);
return e > -1 && v.runningAnimations.splice(e, 1)[0]
};
return o = e(t(n), {
cancel: function() {
return a = !0, l()
},
currentValue: "startValue" in n ? n.startValue : 0,
completionRate: 0,
durationRate: 0
}), v.runningAnimations.push(o), s((function(e) {
var t, c = e || +new Date,
u = n.duration || 500,
h = c + u,
p = n.onChange || r,
d = n.abort || r,
f = n.onComplete || r,
g = n.easing || i,
m = "startValue" in n && n.startValue.length > 0,
v = "startValue" in n ? n.startValue : 0,
_ = "endValue" in n ? n.endValue : 100,
b = n.byValue || (m ? v.map((function(e, t) {
return _[t] - v[t]
})) : _ - v);
n.onStart && n.onStart(),
function e(n) {
var r = (t = n || +new Date) > h ? u : t - c,
i = r / u,
y = m ? v.map((function(e, t) {
return g(r, v[t], b[t], u)
})) : g(r, v, b, u),
w = m ? Math.abs((y[0] - v[0]) / b[0]) : Math.abs((y - v) / b);
if (o.currentValue = m ? y.slice() : y, o.completionRate = w, o.durationRate = i, !a) {
if (!d(y, w, i)) return t > h ? (o.currentValue = m ? _.slice() : _, o.completionRate = 1, o.durationRate = 1, p(m ? _.slice() : _, 1, 1), f(_, 1, 1), void l()) : (p(y, w, i), void s(e));
l()
}
}(c)
})), o.cancel
}, v.util.requestAnimFrame = s, v.util.cancelAnimFrame = function() {
return a.apply(v.window, arguments)
}, v.runningAnimations = n
}(),
function() {
function e(e, t, n) {
var r = "rgba(" + parseInt(e[0] + n * (t[0] - e[0]), 10) + "," + parseInt(e[1] + n * (t[1] - e[1]), 10) + "," + parseInt(e[2] + n * (t[2] - e[2]), 10);
return r += "," + (e && t ? parseFloat(e[3] + n * (t[3] - e[3])) : 1), r += ")"
}
v.util.animateColor = function(t, n, r, i) {
var o = new v.Color(t).getSource(),
a = new v.Color(n).getSource(),
s = i.onComplete,
l = i.onChange;
return i = i || {}, v.util.animate(v.util.object.extend(i, {
duration: r || 500,
startValue: o,
endValue: a,
byValue: a,
easing: function(t, n, r, o) {
return e(n, r, i.colorEasing ? i.colorEasing(t, o) : 1 - Math.cos(t / o * (Math.PI / 2)))
},
onComplete: function(t, n, r) {
if (s) return s(e(a, a, 0), n, r)
},
onChange: function(t, n, r) {
if (l) {
if (Array.isArray(t)) return l(e(t, t, 0), n, r);
l(t, n, r)
}
}
}))
}
}(),
function() {
function e(e, t, n, r) {
return e < Math.abs(t) ? (e = t, r = n / 4) : r = 0 === t && 0 === e ? n / (2 * Math.PI) * Math.asin(1) : n / (2 * Math.PI) * Math.asin(t / e), {
a: e,
c: t,
p: n,
s: r
}
}
function t(e, t, n) {
return e.a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * n - e.s) * (2 * Math.PI) / e.p)
}
function n(e, t, n, i) {
return n - r(i - e, 0, n, i) + t
}
function r(e, t, n, r) {
return (e /= r) < 1 / 2.75 ? n * (7.5625 * e * e) + t : e < 2 / 2.75 ? n * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + t : e < 2.5 / 2.75 ? n * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + t : n * (7.5625 * (e -= 2.625 / 2.75) * e +
.984375) + t
}
v.util.ease = {
easeInQuad: function(e, t, n, r) {
return n * (e /= r) * e + t
},
easeOutQuad: function(e, t, n, r) {
return -n * (e /= r) * (e - 2) + t
},
easeInOutQuad: function(e, t, n, r) {
return (e /= r / 2) < 1 ? n / 2 * e * e + t : -n / 2 * (--e * (e - 2) - 1) + t
},
easeInCubic: function(e, t, n, r) {
return n * (e /= r) * e * e + t
},
easeOutCubic: function(e, t, n, r) {
return n * ((e = e / r - 1) * e * e + 1) + t
},
easeInOutCubic: function(e, t, n, r) {
return (e /= r / 2) < 1 ? n / 2 * e * e * e + t : n / 2 * ((e -= 2) * e * e + 2) + t
},
easeInQuart: function(e, t, n, r) {
return n * (e /= r) * e * e * e + t
},
easeOutQuart: function(e, t, n, r) {
return -n * ((e = e / r - 1) * e * e * e - 1) + t
},
easeInOutQuart: function(e, t, n, r) {
return (e /= r / 2) < 1 ? n / 2 * e * e * e * e + t : -n / 2 * ((e -= 2) * e * e * e - 2) + t
},
easeInQuint: function(e, t, n, r) {
return n * (e /= r) * e * e * e * e + t
},
easeOutQuint: function(e, t, n, r) {
return n * ((e = e / r - 1) * e * e * e * e + 1) + t
},
easeInOutQuint: function(e, t, n, r) {
return (e /= r / 2) < 1 ? n / 2 * e * e * e * e * e + t : n / 2 * ((e -= 2) * e * e * e * e + 2) + t
},
easeInSine: function(e, t, n, r) {
return -n * Math.cos(e / r * (Math.PI / 2)) + n + t
},
easeOutSine: function(e, t, n, r) {
return n * Math.sin(e / r * (Math.PI / 2)) + t
},
easeInOutSine: function(e, t, n, r) {
return -n / 2 * (Math.cos(Math.PI * e / r) - 1) + t
},
easeInExpo: function(e, t, n, r) {
return 0 === e ? t : n * Math.pow(2, 10 * (e / r - 1)) + t
},
easeOutExpo: function(e, t, n, r) {
return e === r ? t + n : n * (1 - Math.pow(2, -10 * e / r)) + t
},
easeInOutExpo: function(e, t, n, r) {
return 0 === e ? t : e === r ? t + n : (e /= r / 2) < 1 ? n / 2 * Math.pow(2, 10 * (e - 1)) + t : n / 2 * (2 - Math.pow(2, -10 * --e)) + t
},
easeInCirc: function(e, t, n, r) {
return -n * (Math.sqrt(1 - (e /= r) * e) - 1) + t
},
easeOutCirc: function(e, t, n, r) {
return n * Math.sqrt(1 - (e = e / r - 1) * e) + t
},
easeInOutCirc: function(e, t, n, r) {
return (e /= r / 2) < 1 ? -n / 2 * (Math.sqrt(1 - e * e) - 1) + t : n / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + t
},
easeInElastic: function(n, r, i, o) {
var a = 0;
return 0 === n ? r : 1 === (n /= o) ? r + i : (a || (a = .3 * o), -t(e(i, i, a, 1.70158), n, o) + r)
},
easeOutElastic: function(t, n, r, i) {
var o = 0;
if (0 === t) return n;
if (1 === (t /= i)) return n + r;
o || (o = .3 * i);
var a = e(r, r, o, 1.70158);
return a.a * Math.pow(2, -10 * t) * Math.sin((t * i - a.s) * (2 * Math.PI) / a.p) + a.c + n
},
easeInOutElastic: function(n, r, i, o) {
var a = 0;
if (0 === n) return r;
if (2 === (n /= o / 2)) return r + i;
a || (a = o * (.3 * 1.5));
var s = e(i, i, a, 1.70158);
return n < 1 ? -.5 * t(s, n, o) + r : s.a * Math.pow(2, -10 * (n -= 1)) * Math.sin((n * o - s.s) * (2 * Math.PI) / s.p) * .5 + s.c + r
},
easeInBack: function(e, t, n, r, i) {
return void 0 === i && (i = 1.70158), n * (e /= r) * e * ((i + 1) * e - i) + t
},
easeOutBack: function(e, t, n, r, i) {
return void 0 === i && (i = 1.70158), n * ((e = e / r - 1) * e * ((i + 1) * e + i) + 1) + t
},
easeInOutBack: function(e, t, n, r, i) {
return void 0 === i && (i = 1.70158), (e /= r / 2) < 1 ? n / 2 * (e * e * ((1 + (i *= 1.525)) * e - i)) + t : n / 2 * ((e -= 2) * e * ((1 + (i *= 1.525)) * e + i) + 2) + t
},
easeInBounce: n,
easeOutBounce: r,
easeInOutBounce: function(e, t, i, o) {
return e < o / 2 ? .5 * n(2 * e, 0, i, o) + t : .5 * r(2 * e - o, 0, i, o) + .5 * i + t
}
}
}(),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.util.object.clone,
i = t.util.toFixed,
o = t.util.parseUnit,
a = t.util.multiplyTransformMatrices,
s = {
cx: "left",
x: "left",
r: "radius",
cy: "top",
y: "top",
display: "visible",
visibility: "visible",
transform: "transformMatrix",
"fill-opacity": "fillOpacity",
"fill-rule": "fillRule",
"font-family": "fontFamily",
"font-size": "fontSize",
"font-style": "fontStyle",
"font-weight": "fontWeight",
"letter-spacing": "charSpacing",
"paint-order": "paintFirst",
"stroke-dasharray": "strokeDashArray",
"stroke-dashoffset": "strokeDashOffset",
"stroke-linecap": "strokeLineCap",
"stroke-linejoin": "strokeLineJoin",
"stroke-miterlimit": "strokeMiterLimit",
"stroke-opacity": "strokeOpacity",
"stroke-width": "strokeWidth",
"text-decoration": "textDecoration",
"text-anchor": "textAnchor",
opacity: "opacity",
"clip-path": "clipPath",
"clip-rule": "clipRule",
"vector-effect": "strokeUniform",
"image-rendering": "imageSmoothing"
},
l = {
stroke: "strokeOpacity",
fill: "fillOpacity"
},
c = "font-size",
u = "clip-path";
function h(e) {
return e in s ? s[e] : e
}
function p(e, n, r, i) {
var s, l = Array.isArray(n);
if ("fill" !== e && "stroke" !== e || "none" !== n) {
if ("strokeUniform" === e) return "non-scaling-stroke" === n;
if ("strokeDashArray" === e) n = "none" === n ? null : n.replace(/,/g, " ").split(/\s+/).map(parseFloat);
else if ("transformMatrix" === e) n = r && r.transformMatrix ? a(r.transformMatrix, t.parseTransformAttribute(n)) : t.parseTransformAttribute(n);
else if ("visible" === e) n = "none" !== n && "hidden" !== n, r && !1 === r.visible && (n = !1);
else if ("opacity" === e) n = parseFloat(n), r && void 0 !== r.opacity && (n *= r.opacity);
else if ("textAnchor" === e) n = "start" === n ? "left" : "end" === n ? "right" : "center";
else if ("charSpacing" === e) s = o(n, i) / i * 1e3;
else if ("paintFirst" === e) {
var c = n.indexOf("fill"),
u = n.indexOf("stroke");
n = "fill";
(c > -1 && u > -1 && u < c || -1 === c && u > -1) && (n = "stroke")
} else {
if ("href" === e || "xlink:href" === e || "font" === e) return n;
if ("imageSmoothing" === e) return "optimizeQuality" === n;
s = l ? n.map(o) : o(n, i)
}
} else n = "";
return !l && isNaN(s) ? n : s
}
function d(e) {
return new RegExp("^(" + e.join("|") + ")\\b", "i")
}
function f(e, t) {
var n, r, i, o, a = [];
for (i = 0, o = t.length; i < o; i++) n = t[i], r = e.getElementsByTagName(n), a = a.concat(Array.prototype.slice.call(r));
return a
}
function g(e, t) {
var n, r = !0;
return (n = m(e, t.pop())) && t.length && (r = function(e, t) {
var n, r = !0;
for (; e.parentNode && 1 === e.parentNode.nodeType && t.length;) r && (n = t.pop()), r = m(e = e.parentNode, n);
return 0 === t.length
}(e, t)), n && r && 0 === t.length
}
function m(e, t) {
var n, r, i = e.nodeName,
o = e.getAttribute("class"),
a = e.getAttribute("id");
if (n = new RegExp("^" + i, "i"), t = t.replace(n, ""), a && t.length && (n = new RegExp("#" + a + "(?![a-zA-Z\\-]+)", "i"), t = t.replace(n, "")), o && t.length)
for (r = (o = o.split(" ")).length; r--;) n = new RegExp("\\." + o[r] + "(?![a-zA-Z\\-]+)", "i"), t = t.replace(n, "");
return 0 === t.length
}
function v(e, t) {
var n;
if (e.getElementById && (n = e.getElementById(t)), n) return n;
var r, i, o, a = e.getElementsByTagName("*");
for (i = 0, o = a.length; i < o; i++)
if (t === (r = a[i]).getAttribute("id")) return r
}
t.svgValidTagNamesRegEx = d(["path", "circle", "polygon", "polyline", "ellipse", "rect", "line", "image", "text"]), t.svgViewBoxElementsRegEx = d(["symbol", "image", "marker", "pattern", "view", "svg"]), t.svgInvalidAncestorsRegEx =
d(["pattern", "defs", "symbol", "metadata", "clipPath", "mask", "desc"]), t.svgValidParentsRegEx = d(["symbol", "g", "a", "svg", "clipPath", "defs"]), t.cssRules = {}, t.gradientDefs = {}, t.clipPaths = {}, t
.parseTransformAttribute = function() {
function e(e, n, r) {
e[r] = Math.tan(t.util.degreesToRadians(n[0]))
}
var n = t.iMatrix,
r = t.reNum,
i = t.commaWsp,
o = "(?:" + ("(?:(matrix)\\s*\\(\\s*(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")\\s*\\))") + "|" + ("(?:(translate)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r +
"))?\\s*\\))") + "|" + ("(?:(scale)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r + "))?\\s*\\))") + "|" + ("(?:(rotate)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r + ")" + i + "(" + r + "))?\\s*\\))") + "|" + (
"(?:(skewX)\\s*\\(\\s*(" + r + ")\\s*\\))") + "|" + ("(?:(skewY)\\s*\\(\\s*(" + r + ")\\s*\\))") + ")",
a = new RegExp("^\\s*(?:" + ("(?:" + o + "(?:" + i + "*" + o + ")*)") + "?)\\s*$"),
s = new RegExp(o, "g");
return function(r) {
var i = n.concat(),
l = [];
if (!r || r && !a.test(r)) return i;
r.replace(s, (function(r) {
var a = new RegExp(o).exec(r).filter((function(e) {
return !!e
})),
s = a[1],
c = a.slice(2).map(parseFloat);
switch (s) {
case "translate":
! function(e, t) {
e[4] = t[0], 2 === t.length && (e[5] = t[1])
}(i, c);
break;
case "rotate":
c[0] = t.util.degreesToRadians(c[0]),
function(e, n) {
var r = t.util.cos(n[0]),
i = t.util.sin(n[0]),
o = 0,
a = 0;
3 === n.length && (o = n[1], a = n[2]), e[0] = r, e[1] = i, e[2] = -i, e[3] = r, e[4] = o - (r * o - i * a), e[5] = a - (i * o + r * a)
}(i, c);
break;
case "scale":
! function(e, t) {
var n = t[0],
r = 2 === t.length ? t[1] : t[0];
e[0] = n, e[3] = r
}(i, c);
break;
case "skewX":
e(i, c, 2);
break;
case "skewY":
e(i, c, 1);
break;
case "matrix":
i = c
}
l.push(i.concat()), i = n.concat()
}));
for (var c = l[0]; l.length > 1;) l.shift(), c = t.util.multiplyTransformMatrices(c, l[0]);
return c
}
}();
var _ = new RegExp("^\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*$");
function b(e) {
if (!t.svgViewBoxElementsRegEx.test(e.nodeName)) return {};
var n, r, i, a, s, l, c = e.getAttribute("viewBox"),
u = 1,
h = 1,
p = e.getAttribute("width"),
d = e.getAttribute("height"),
f = e.getAttribute("x") || 0,
g = e.getAttribute("y") || 0,
m = e.getAttribute("preserveAspectRatio") || "",
v = !c || !(c = c.match(_)),
b = !p || !d || "100%" === p || "100%" === d,
y = v && b,
w = {},
x = "",
k = 0,
C = 0;
if (w.width = 0, w.height = 0, w.toBeParsed = y, v && (f || g) && e.parentNode && "#document" !== e.parentNode.nodeName && (x = " translate(" + o(f) + " " + o(g) + ") ", s = (e.getAttribute("transform") || "") + x, e.setAttribute(
"transform", s), e.removeAttribute("x"), e.removeAttribute("y")), y) return w;
if (v) return w.width = o(p), w.height = o(d), w;
if (n = -parseFloat(c[1]), r = -parseFloat(c[2]), i = parseFloat(c[3]), a = parseFloat(c[4]), w.minX = n, w.minY = r, w.viewBoxWidth = i, w.viewBoxHeight = a, b ? (w.width = i, w.height = a) : (w.width = o(p), w.height = o(d), u =
w.width / i, h = w.height / a), "none" !== (m = t.util.parsePreserveAspectRatioAttribute(m)).alignX && ("meet" === m.meetOrSlice && (h = u = u > h ? h : u), "slice" === m.meetOrSlice && (h = u = u > h ? u : h), k = w.width -
i * u, C = w.height - a * u, "Mid" === m.alignX && (k /= 2), "Mid" === m.alignY && (C /= 2), "Min" === m.alignX && (k = 0), "Min" === m.alignY && (C = 0)), 1 === u && 1 === h && 0 === n && 0 === r && 0 === f && 0 === g)
return w;
if ((f || g) && "#document" !== e.parentNode.nodeName && (x = " translate(" + o(f) + " " + o(g) + ") "), s = x + " matrix(" + u + " 0 0 " + h + " " + (n * u + k) + " " + (r * h + C) + ") ", "svg" === e.nodeName) {
for (l = e.ownerDocument.createElementNS(t.svgNS, "g"); e.firstChild;) l.appendChild(e.firstChild);
e.appendChild(l)
} else(l = e).removeAttribute("x"), l.removeAttribute("y"), s = l.getAttribute("transform") + s;
return l.setAttribute("transform", s), w
}
function y(e, t) {
var n = "xlink:href",
r = v(e, t.getAttribute(n).slice(1));
if (r && r.getAttribute(n) && y(e, r), ["gradientTransform", "x1", "x2", "y1", "y2", "gradientUnits", "cx", "cy", "r", "fx", "fy"].forEach((function(e) {
r && !t.hasAttribute(e) && r.hasAttribute(e) && t.setAttribute(e, r.getAttribute(e))
})), !t.children.length)
for (var i = r.cloneNode(!0); i.firstChild;) t.appendChild(i.firstChild);
t.removeAttribute(n)
}
t.parseSVGDocument = function(e, n, i, o) {
if (e) {
! function(e) {
for (var n = f(e, ["use", "svg:use"]), r = 0; n.length && r < n.length;) {
var i = n[r],
o = i.getAttribute("xlink:href") || i.getAttribute("href");
if (null === o) return;
var a, s, l, c, u = o.slice(1),
h = i.getAttribute("x") || 0,
p = i.getAttribute("y") || 0,
d = v(e, u).cloneNode(!0),
g = (d.getAttribute("transform") || "") + " translate(" + h + ", " + p + ")",
m = n.length,
_ = t.svgNS;
if (b(d), /^svg$/i.test(d.nodeName)) {
var y = d.ownerDocument.createElementNS(_, "g");
for (s = 0, c = (l = d.attributes).length; s < c; s++) a = l.item(s), y.setAttributeNS(_, a.nodeName, a.nodeValue);
for (; d.firstChild;) y.appendChild(d.firstChild);
d = y
}
for (s = 0, c = (l = i.attributes).length; s < c; s++) "x" !== (a = l.item(s)).nodeName && "y" !== a.nodeName && "xlink:href" !== a.nodeName && "href" !== a.nodeName && ("transform" === a.nodeName ? g = a.nodeValue + " " +
g : d.setAttribute(a.nodeName, a.nodeValue));
d.setAttribute("transform", g), d.setAttribute("instantiated_by_use", "1"), d.removeAttribute("id"), i.parentNode.replaceChild(d, i), n.length === m && r++
}
}(e);
var a, s, l = t.Object.__uid++,
c = b(e),
u = t.util.toArray(e.getElementsByTagName("*"));
if (c.crossOrigin = o && o.crossOrigin, c.svgUid = l, 0 === u.length && t.isLikelyNode) {
var h = [];
for (a = 0, s = (u = e.selectNodes('//*[name(.)!="svg"]')).length; a < s; a++) h[a] = u[a];
u = h
}
var p = u.filter((function(e) {
return b(e), t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:", "")) && ! function(e, t) {
for (; e && (e = e.parentNode);)
if (e.nodeName && t.test(e.nodeName.replace("svg:", "")) && !e.getAttribute("instantiated_by_use")) return !0;
return !1
}(e, t.svgInvalidAncestorsRegEx)
}));
if (!p || p && !p.length) n && n([], {});
else {
var d = {};
u.filter((function(e) {
return "clipPath" === e.nodeName.replace("svg:", "")
})).forEach((function(e) {
var n = e.getAttribute("id");
d[n] = t.util.toArray(e.getElementsByTagName("*")).filter((function(e) {
return t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:", ""))
}))
})), t.gradientDefs[l] = t.getGradientDefs(e), t.cssRules[l] = t.getCSSRules(e), t.clipPaths[l] = d, t.parseElements(p, (function(e, r) {
n && (n(e, c, r, u), delete t.gradientDefs[l], delete t.cssRules[l], delete t.clipPaths[l])
}), r(c), i, o)
}
}
};
var w = new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(" + t.reNum + "(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|" + t.reNum + "))?\\s+(.*)");
n(t, {
parseFontDeclaration: function(e, t) {
var n = e.match(w);
if (n) {
var r = n[1],
i = n[3],
a = n[4],
s = n[5],
l = n[6];
r && (t.fontStyle = r), i && (t.fontWeight = isNaN(parseFloat(i)) ? i : parseFloat(i)), a && (t.fontSize = o(a)), l && (t.fontFamily = l), s && (t.lineHeight = "normal" === s ? 1 : s)
}
},
getGradientDefs: function(e) {
var t, n = f(e, ["linearGradient", "radialGradient", "svg:linearGradient", "svg:radialGradient"]),
r = 0,
i = {};
for (r = n.length; r--;)(t = n[r]).getAttribute("xlink:href") && y(e, t), i[t.getAttribute("id")] = t;
return i
},
parseAttributes: function(e, r, a) {
if (e) {
var s, d, f, m = {};
void 0 === a && (a = e.getAttribute("svgUid")), e.parentNode && t.svgValidParentsRegEx.test(e.parentNode.nodeName) && (m = t.parseAttributes(e.parentNode, r, a));
var v = r.reduce((function(t, n) {
return (s = e.getAttribute(n)) && (t[n] = s), t
}), {}),
_ = n(function(e, n) {
var r = {};
for (var i in t.cssRules[n])
if (g(e, i.split(" ")))
for (var o in t.cssRules[n][i]) r[o] = t.cssRules[n][i][o];
return r
}(e, a), t.parseStyleAttribute(e));
v = n(v, _), _[u] && e.setAttribute(u, _[u]), d = f = m.fontSize || t.Text.DEFAULT_SVG_FONT_SIZE, v[c] && (v[c] = d = o(v[c], f));
var b, y, w = {};
for (var x in v) y = p(b = h(x), v[x], m, d), w[b] = y;
w && w.font && t.parseFontDeclaration(w.font, w);
var k = n(m, w);
return t.svgValidParentsRegEx.test(e.nodeName) ? k : function(e) {
for (var n in l)
if (void 0 !== e[l[n]] && "" !== e[n]) {
if (void 0 === e[n]) {
if (!t.Object.prototype[n]) continue;
e[n] = t.Object.prototype[n]
}
if (0 !== e[n].indexOf("url(")) {
var r = new t.Color(e[n]);
e[n] = r.setAlpha(i(r.getAlpha() * e[l[n]], 2)).toRgba()
}
} return e
}(k)
}
},
parseElements: function(e, n, r, i, o) {
new t.ElementsParser(e, n, r, i, o).parse()
},
parseStyleAttribute: function(e) {
var t = {},
n = e.getAttribute("style");
return n ? ("string" == typeof n ? function(e, t) {
var n, r;
e.replace(/;\s*$/, "").split(";").forEach((function(e) {
var i = e.split(":");
n = i[0].trim().toLowerCase(), r = i[1].trim(), t[n] = r
}))
}(n, t) : function(e, t) {
var n, r;
for (var i in e) void 0 !== e[i] && (n = i.toLowerCase(), r = e[i], t[n] = r)
}(n, t), t) : t
},
parsePointsAttribute: function(e) {
if (!e) return null;
var t, n, r = [];
for (t = 0, n = (e = (e = e.replace(/,/g, " ").trim()).split(/\s+/)).length; t < n; t += 2) r.push({
x: parseFloat(e[t]),
y: parseFloat(e[t + 1])
});
return r
},
getCSSRules: function(e) {
var n, r, i = e.getElementsByTagName("style"),
o = {};
for (n = 0, r = i.length; n < r; n++) {
var a = i[n].textContent;
"" !== (a = a.replace(/\/\*[\s\S]*?\*\//g, "")).trim() && a.split("}").filter((function(e) {
return e.trim()
})).forEach((function(e) {
var i = e.split("{"),
a = {},
s = i[1].trim().split(";").filter((function(e) {
return e.trim()
}));
for (n = 0, r = s.length; n < r; n++) {
var l = s[n].split(":"),
c = l[0].trim(),
u = l[1].trim();
a[c] = u
}(e = i[0].trim()).split(",").forEach((function(e) {
"" !== (e = e.replace(/^svg/i, "").trim()) && (o[e] ? t.util.object.extend(o[e], a) : o[e] = t.util.object.clone(a))
}))
}))
}
return o
},
loadSVGFromURL: function(e, n, r, i) {
e = e.replace(/^\n\s*/, "").trim(), new t.util.request(e, {
method: "get",
onComplete: function(e) {
var o = e.responseXML;
if (!o || !o.documentElement) return n && n(null), !1;
t.parseSVGDocument(o.documentElement, (function(e, t, r, i) {
n && n(e, t, r, i)
}), r, i)
}
})
},
loadSVGFromString: function(e, n, r, i) {
var o = (new t.window.DOMParser).parseFromString(e.trim(), "text/xml");
t.parseSVGDocument(o.documentElement, (function(e, t, r, i) {
n(e, t, r, i)
}), r, i)
}
})
}(e), v.ElementsParser = function(e, t, n, r, i, o) {
this.elements = e, this.callback = t, this.options = n, this.reviver = r, this.svgUid = n && n.svgUid || 0, this.parsingOptions = i, this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g, this.doc = o
}, (h = v.ElementsParser.prototype).parse = function() {
this.instances = new Array(this.elements.length), this.numElements = this.elements.length, this.createObjects()
}, h.createObjects = function() {
var e = this;
this.elements.forEach((function(t, n) {
t.setAttribute("svgUid", e.svgUid), e.createObject(t, n)
}))
}, h.findTag = function(e) {
return v[v.util.string.capitalize(e.tagName.replace("svg:", ""))]
}, h.createObject = function(e, t) {
var n = this.findTag(e);
if (n && n.fromElement) try {
n.fromElement(e, this.createCallback(t, e), this.options)
} catch (e) {
v.log(e)
} else this.checkIfDone()
}, h.createCallback = function(e, t) {
var n = this;
return function(r) {
var i;
n.resolveGradient(r, t, "fill"), n.resolveGradient(r, t, "stroke"), r instanceof v.Image && r._originalElement && (i = r.parsePreserveAspectRatioAttribute(t)), r._removeTransformMatrix(i), n.resolveClipPath(r, t), n.reviver && n
.reviver(t, r), n.instances[e] = r, n.checkIfDone()
}
}, h.extractPropertyDefinition = function(e, t, n) {
var r = e[t],
i = this.regexUrl;
if (i.test(r)) {
i.lastIndex = 0;
var o = i.exec(r)[1];
return i.lastIndex = 0, v[n][this.svgUid][o]
}
}, h.resolveGradient = function(e, t, n) {
var r = this.extractPropertyDefinition(e, n, "gradientDefs");
if (r) {
var i = t.getAttribute(n + "-opacity"),
o = v.Gradient.fromElement(r, e, i, this.options);
e.set(n, o)
}
}, h.createClipPathCallback = function(e, t) {
return function(e) {
e._removeTransformMatrix(), e.fillRule = e.clipRule, t.push(e)
}
}, h.resolveClipPath = function(e, t) {
var n, r, i, o, a = this.extractPropertyDefinition(e, "clipPath", "clipPaths");
if (a) {
i = [], r = v.util.invertTransform(e.calcTransformMatrix());
for (var s = a[0].parentNode, l = t; l.parentNode && l.getAttribute("clip-path") !== e.clipPath;) l = l.parentNode;
l.parentNode.appendChild(s);
for (var c = 0; c < a.length; c++) n = a[c], this.findTag(n).fromElement(n, this.createClipPathCallback(e, i), this.options);
a = 1 === i.length ? i[0] : new v.Group(i), o = v.util.multiplyTransformMatrices(r, a.calcTransformMatrix()), a.clipPath && this.resolveClipPath(a, l);
var u = v.util.qrDecompose(o);
a.flipX = !1, a.flipY = !1, a.set("scaleX", u.scaleX), a.set("scaleY", u.scaleY), a.angle = u.angle, a.skewX = u.skewX, a.skewY = 0, a.setPositionByOrigin({
x: u.translateX,
y: u.translateY
}, "center", "center"), e.clipPath = a
} else delete e.clipPath
}, h.checkIfDone = function() {
0 == --this.numElements && (this.instances = this.instances.filter((function(e) {
return null != e
})), this.callback(this.instances, this.elements))
},
function(e) {
var t = e.fabric || (e.fabric = {});
function n(e, t) {
this.x = e, this.y = t
}
t.Point ? t.warn("fabric.Point is already defined") : (t.Point = n, n.prototype = {
type: "point",
constructor: n,
add: function(e) {
return new n(this.x + e.x, this.y + e.y)
},
addEquals: function(e) {
return this.x += e.x, this.y += e.y, this
},
scalarAdd: function(e) {
return new n(this.x + e, this.y + e)
},
scalarAddEquals: function(e) {
return this.x += e, this.y += e, this
},
subtract: function(e) {
return new n(this.x - e.x, this.y - e.y)
},
subtractEquals: function(e) {
return this.x -= e.x, this.y -= e.y, this
},
scalarSubtract: function(e) {
return new n(this.x - e, this.y - e)
},
scalarSubtractEquals: function(e) {
return this.x -= e, this.y -= e, this
},
multiply: function(e) {
return new n(this.x * e, this.y * e)
},
multiplyEquals: function(e) {
return this.x *= e, this.y *= e, this
},
divide: function(e) {
return new n(this.x / e, this.y / e)
},
divideEquals: function(e) {
return this.x /= e, this.y /= e, this
},
eq: function(e) {
return this.x === e.x && this.y === e.y
},
lt: function(e) {
return this.x < e.x && this.y < e.y
},
lte: function(e) {
return this.x <= e.x && this.y <= e.y
},
gt: function(e) {
return this.x > e.x && this.y > e.y
},
gte: function(e) {
return this.x >= e.x && this.y >= e.y
},
lerp: function(e, t) {
return void 0 === t && (t = .5), t = Math.max(Math.min(1, t), 0), new n(this.x + (e.x - this.x) * t, this.y + (e.y - this.y) * t)
},
distanceFrom: function(e) {
var t = this.x - e.x,
n = this.y - e.y;
return Math.sqrt(t * t + n * n)
},
midPointFrom: function(e) {
return this.lerp(e)
},
min: function(e) {
return new n(Math.min(this.x, e.x), Math.min(this.y, e.y))
},
max: function(e) {
return new n(Math.max(this.x, e.x), Math.max(this.y, e.y))
},
toString: function() {
return this.x + "," + this.y
},
setXY: function(e, t) {
return this.x = e, this.y = t, this
},
setX: function(e) {
return this.x = e, this
},
setY: function(e) {
return this.y = e, this
},
setFromPoint: function(e) {
return this.x = e.x, this.y = e.y, this
},
swap: function(e) {
var t = this.x,
n = this.y;
this.x = e.x, this.y = e.y, e.x = t, e.y = n
},
clone: function() {
return new n(this.x, this.y)
}
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {});
function n(e) {
this.status = e, this.points = []
}
t.Intersection ? t.warn("fabric.Intersection is already defined") : (t.Intersection = n, t.Intersection.prototype = {
constructor: n,
appendPoint: function(e) {
return this.points.push(e), this
},
appendPoints: function(e) {
return this.points = this.points.concat(e), this
}
}, t.Intersection.intersectLineLine = function(e, r, i, o) {
var a, s = (o.x - i.x) * (e.y - i.y) - (o.y - i.y) * (e.x - i.x),
l = (r.x - e.x) * (e.y - i.y) - (r.y - e.y) * (e.x - i.x),
c = (o.y - i.y) * (r.x - e.x) - (o.x - i.x) * (r.y - e.y);
if (0 !== c) {
var u = s / c,
h = l / c;
0 <= u && u <= 1 && 0 <= h && h <= 1 ? (a = new n("Intersection")).appendPoint(new t.Point(e.x + u * (r.x - e.x), e.y + u * (r.y - e.y))) : a = new n
} else a = new n(0 === s || 0 === l ? "Coincident" : "Parallel");
return a
}, t.Intersection.intersectLinePolygon = function(e, t, r) {
var i, o, a, s, l = new n,
c = r.length;
for (s = 0; s < c; s++) i = r[s], o = r[(s + 1) % c], a = n.intersectLineLine(e, t, i, o), l.appendPoints(a.points);
return l.points.length > 0 && (l.status = "Intersection"), l
}, t.Intersection.intersectPolygonPolygon = function(e, t) {
var r, i = new n,
o = e.length;
for (r = 0; r < o; r++) {
var a = e[r],
s = e[(r + 1) % o],
l = n.intersectLinePolygon(a, s, t);
i.appendPoints(l.points)
}
return i.points.length > 0 && (i.status = "Intersection"), i
}, t.Intersection.intersectPolygonRectangle = function(e, r, i) {
var o = r.min(i),
a = r.max(i),
s = new t.Point(a.x, o.y),
l = new t.Point(o.x, a.y),
c = n.intersectLinePolygon(o, s, e),
u = n.intersectLinePolygon(s, a, e),
h = n.intersectLinePolygon(a, l, e),
p = n.intersectLinePolygon(l, o, e),
d = new n;
return d.appendPoints(c.points), d.appendPoints(u.points), d.appendPoints(h.points), d.appendPoints(p.points), d.points.length > 0 && (d.status = "Intersection"), d
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {});
function n(e) {
e ? this._tryParsingColor(e) : this.setSource([0, 0, 0, 1])
}
function r(e, t, n) {
return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + 6 * (t - e) * n : n < .5 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e
}
t.Color ? t.warn("fabric.Color is already defined.") : (t.Color = n, t.Color.prototype = {
_tryParsingColor: function(e) {
var t;
e in n.colorNameMap && (e = n.colorNameMap[e]), "transparent" === e && (t = [255, 255, 255, 0]), t || (t = n.sourceFromHex(e)), t || (t = n.sourceFromRgb(e)), t || (t = n.sourceFromHsl(e)), t || (t = [0, 0, 0, 1]), t &&
this.setSource(t)
},
_rgbToHsl: function(e, n, r) {
e /= 255, n /= 255, r /= 255;
var i, o, a, s = t.util.array.max([e, n, r]),
l = t.util.array.min([e, n, r]);
if (a = (s + l) / 2, s === l) i = o = 0;
else {
var c = s - l;
switch (o = a > .5 ? c / (2 - s - l) : c / (s + l), s) {
case e:
i = (n - r) / c + (n < r ? 6 : 0);
break;
case n:
i = (r - e) / c + 2;
break;
case r:
i = (e - n) / c + 4
}
i /= 6
}
return [Math.round(360 * i), Math.round(100 * o), Math.round(100 * a)]
},
getSource: function() {
return this._source
},
setSource: function(e) {
this._source = e
},
toRgb: function() {
var e = this.getSource();
return "rgb(" + e[0] + "," + e[1] + "," + e[2] + ")"
},
toRgba: function() {
var e = this.getSource();
return "rgba(" + e[0] + "," + e[1] + "," + e[2] + "," + e[3] + ")"
},
toHsl: function() {
var e = this.getSource(),
t = this._rgbToHsl(e[0], e[1], e[2]);
return "hsl(" + t[0] + "," + t[1] + "%," + t[2] + "%)"
},
toHsla: function() {
var e = this.getSource(),
t = this._rgbToHsl(e[0], e[1], e[2]);
return "hsla(" + t[0] + "," + t[1] + "%," + t[2] + "%," + e[3] + ")"
},
toHex: function() {
var e, t, n, r = this.getSource();
return e = 1 === (e = r[0].toString(16)).length ? "0" + e : e, t = 1 === (t = r[1].toString(16)).length ? "0" + t : t, n = 1 === (n = r[2].toString(16)).length ? "0" + n : n, e.toUpperCase() + t.toUpperCase() + n
.toUpperCase()
},
toHexa: function() {
var e, t = this.getSource();
return e = 1 === (e = (e = Math.round(255 * t[3])).toString(16)).length ? "0" + e : e, this.toHex() + e.toUpperCase()
},
getAlpha: function() {
return this.getSource()[3]
},
setAlpha: function(e) {
var t = this.getSource();
return t[3] = e, this.setSource(t), this
},
toGrayscale: function() {
var e = this.getSource(),
t = parseInt((.3 * e[0] + .59 * e[1] + .11 * e[2]).toFixed(0), 10),
n = e[3];
return this.setSource([t, t, t, n]), this
},
toBlackWhite: function(e) {
var t = this.getSource(),
n = (.3 * t[0] + .59 * t[1] + .11 * t[2]).toFixed(0),
r = t[3];
return e = e || 127, n = Number(n) < Number(e) ? 0 : 255, this.setSource([n, n, n, r]), this
},
overlayWith: function(e) {
e instanceof n || (e = new n(e));
var t, r = [],
i = this.getAlpha(),
o = this.getSource(),
a = e.getSource();
for (t = 0; t < 3; t++) r.push(Math.round(.5 * o[t] + .5 * a[t]));
return r[3] = i, this.setSource(r), this
}
}, t.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i, t.Color.reHSLa =
/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i, t.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i, t.Color.colorNameMap = {
aliceblue: "#F0F8FF",
antiquewhite: "#FAEBD7",
aqua: "#00FFFF",
aquamarine: "#7FFFD4",
azure: "#F0FFFF",
beige: "#F5F5DC",
bisque: "#FFE4C4",
black: "#000000",
blanchedalmond: "#FFEBCD",
blue: "#0000FF",
blueviolet: "#8A2BE2",
brown: "#A52A2A",
burlywood: "#DEB887",
cadetblue: "#5F9EA0",
chartreuse: "#7FFF00",
chocolate: "#D2691E",
coral: "#FF7F50",
cornflowerblue: "#6495ED",
cornsilk: "#FFF8DC",
crimson: "#DC143C",
cyan: "#00FFFF",
darkblue: "#00008B",
darkcyan: "#008B8B",
darkgoldenrod: "#B8860B",
darkgray: "#A9A9A9",
darkgrey: "#A9A9A9",
darkgreen: "#006400",
darkkhaki: "#BDB76B",
darkmagenta: "#8B008B",
darkolivegreen: "#556B2F",
darkorange: "#FF8C00",
darkorchid: "#9932CC",
darkred: "#8B0000",
darksalmon: "#E9967A",
darkseagreen: "#8FBC8F",
darkslateblue: "#483D8B",
darkslategray: "#2F4F4F",
darkslategrey: "#2F4F4F",
darkturquoise: "#00CED1",
darkviolet: "#9400D3",
deeppink: "#FF1493",
deepskyblue: "#00BFFF",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1E90FF",
firebrick: "#B22222",
floralwhite: "#FFFAF0",
forestgreen: "#228B22",
fuchsia: "#FF00FF",
gainsboro: "#DCDCDC",
ghostwhite: "#F8F8FF",
gold: "#FFD700",
goldenrod: "#DAA520",
gray: "#808080",
grey: "#808080",
green: "#008000",
greenyellow: "#ADFF2F",
honeydew: "#F0FFF0",
hotpink: "#FF69B4",
indianred: "#CD5C5C",
indigo: "#4B0082",
ivory: "#FFFFF0",
khaki: "#F0E68C",
lavender: "#E6E6FA",
lavenderblush: "#FFF0F5",
lawngreen: "#7CFC00",
lemonchiffon: "#FFFACD",
lightblue: "#ADD8E6",
lightcoral: "#F08080",
lightcyan: "#E0FFFF",
lightgoldenrodyellow: "#FAFAD2",
lightgray: "#D3D3D3",
lightgrey: "#D3D3D3",
lightgreen: "#90EE90",
lightpink: "#FFB6C1",
lightsalmon: "#FFA07A",
lightseagreen: "#20B2AA",
lightskyblue: "#87CEFA",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#B0C4DE",
lightyellow: "#FFFFE0",
lime: "#00FF00",
limegreen: "#32CD32",
linen: "#FAF0E6",
magenta: "#FF00FF",
maroon: "#800000",
mediumaquamarine: "#66CDAA",
mediumblue: "#0000CD",
mediumorchid: "#BA55D3",
mediumpurple: "#9370DB",
mediumseagreen: "#3CB371",
mediumslateblue: "#7B68EE",
mediumspringgreen: "#00FA9A",
mediumturquoise: "#48D1CC",
mediumvioletred: "#C71585",
midnightblue: "#191970",
mintcream: "#F5FFFA",
mistyrose: "#FFE4E1",
moccasin: "#FFE4B5",
navajowhite: "#FFDEAD",
navy: "#000080",
oldlace: "#FDF5E6",
olive: "#808000",
olivedrab: "#6B8E23",
orange: "#FFA500",
orangered: "#FF4500",
orchid: "#DA70D6",
palegoldenrod: "#EEE8AA",
palegreen: "#98FB98",
paleturquoise: "#AFEEEE",
palevioletred: "#DB7093",
papayawhip: "#FFEFD5",
peachpuff: "#FFDAB9",
peru: "#CD853F",
pink: "#FFC0CB",
plum: "#DDA0DD",
powderblue: "#B0E0E6",
purple: "#800080",
rebeccapurple: "#663399",
red: "#FF0000",
rosybrown: "#BC8F8F",
royalblue: "#4169E1",
saddlebrown: "#8B4513",
salmon: "#FA8072",
sandybrown: "#F4A460",
seagreen: "#2E8B57",
seashell: "#FFF5EE",
sienna: "#A0522D",
silver: "#C0C0C0",
skyblue: "#87CEEB",
slateblue: "#6A5ACD",
slategray: "#708090",
slategrey: "#708090",
snow: "#FFFAFA",
springgreen: "#00FF7F",
steelblue: "#4682B4",
tan: "#D2B48C",
teal: "#008080",
thistle: "#D8BFD8",
tomato: "#FF6347",
turquoise: "#40E0D0",
violet: "#EE82EE",
wheat: "#F5DEB3",
white: "#FFFFFF",
whitesmoke: "#F5F5F5",
yellow: "#FFFF00",
yellowgreen: "#9ACD32"
}, t.Color.fromRgb = function(e) {
return n.fromSource(n.sourceFromRgb(e))
}, t.Color.sourceFromRgb = function(e) {
var t = e.match(n.reRGBa);
if (t) {
var r = parseInt(t[1], 10) / (/%$/.test(t[1]) ? 100 : 1) * (/%$/.test(t[1]) ? 255 : 1),
i = parseInt(t[2], 10) / (/%$/.test(t[2]) ? 100 : 1) * (/%$/.test(t[2]) ? 255 : 1),
o = parseInt(t[3], 10) / (/%$/.test(t[3]) ? 100 : 1) * (/%$/.test(t[3]) ? 255 : 1);
return [parseInt(r, 10), parseInt(i, 10), parseInt(o, 10), t[4] ? parseFloat(t[4]) : 1]
}
}, t.Color.fromRgba = n.fromRgb, t.Color.fromHsl = function(e) {
return n.fromSource(n.sourceFromHsl(e))
}, t.Color.sourceFromHsl = function(e) {
var t = e.match(n.reHSLa);
if (t) {
var i, o, a, s = (parseFloat(t[1]) % 360 + 360) % 360 / 360,
l = parseFloat(t[2]) / (/%$/.test(t[2]) ? 100 : 1),
c = parseFloat(t[3]) / (/%$/.test(t[3]) ? 100 : 1);
if (0 === l) i = o = a = c;
else {
var u = c <= .5 ? c * (l + 1) : c + l - c * l,
h = 2 * c - u;
i = r(h, u, s + 1 / 3), o = r(h, u, s), a = r(h, u, s - 1 / 3)
}
return [Math.round(255 * i), Math.round(255 * o), Math.round(255 * a), t[4] ? parseFloat(t[4]) : 1]
}
}, t.Color.fromHsla = n.fromHsl, t.Color.fromHex = function(e) {
return n.fromSource(n.sourceFromHex(e))
}, t.Color.sourceFromHex = function(e) {
if (e.match(n.reHex)) {
var t = e.slice(e.indexOf("#") + 1),
r = 3 === t.length || 4 === t.length,
i = 8 === t.length || 4 === t.length,
o = r ? t.charAt(0) + t.charAt(0) : t.substring(0, 2),
a = r ? t.charAt(1) + t.charAt(1) : t.substring(2, 4),
s = r ? t.charAt(2) + t.charAt(2) : t.substring(4, 6),
l = i ? r ? t.charAt(3) + t.charAt(3) : t.substring(6, 8) : "FF";
return [parseInt(o, 16), parseInt(a, 16), parseInt(s, 16), parseFloat((parseInt(l, 16) / 255).toFixed(2))]
}
}, t.Color.fromSource = function(e) {
var t = new n;
return t.setSource(e), t
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = ["e", "se", "s", "sw", "w", "nw", "n", "ne", "e"],
r = ["ns", "nesw", "ew", "nwse"],
i = {},
o = "left",
a = "top",
s = "right",
l = "bottom",
c = "center",
u = {
top: l,
bottom: a,
left: s,
right: o,
center: c
},
h = t.util.radiansToDegrees,
p = Math.sign || function(e) {
return (e > 0) - (e < 0) || +e
};
function d(e, t) {
var n = e.angle + h(Math.atan2(t.y, t.x)) + 360;
return Math.round(n % 360 / 45)
}
function f(e, n) {
var r = n.transform.target,
i = r.canvas,
o = t.util.object.clone(n);
o.target = r, i && i.fire("object:" + e, o), r.fire(e, n)
}
function g(e, t) {
var n = t.canvas,
r = e[n.uniScaleKey];
return n.uniformScaling && !r || !n.uniformScaling && r
}
function m(e) {
return e.originX === c && e.originY === c
}
function v(e, t, n) {
var r = e.lockScalingX,
i = e.lockScalingY;
return !(!r || !i) || (!(t || !r && !i || !n) || (!(!r || "x" !== t) || !(!i || "y" !== t)))
}
function _(e, t, n, r) {
return {
e: e,
transform: t,
pointer: {
x: n,
y: r
}
}
}
function b(e) {
return function(t, n, r, i) {
var o = n.target,
a = o.getCenterPoint(),
s = o.translateToOriginPoint(a, n.originX, n.originY),
l = e(t, n, r, i);
return o.setPositionByOrigin(s, n.originX, n.originY), l
}
}
function y(e, t) {
return function(n, r, i, o) {
var a = t(n, r, i, o);
return a && f(e, _(n, r, i, o)), a
}
}
function w(e, n, r, i, o) {
var a = e.target,
s = a.controls[e.corner],
l = a.canvas.getZoom(),
c = a.padding / l,
u = a.toLocalPoint(new t.Point(i, o), n, r);
return u.x >= c && (u.x -= c), u.x <= -c && (u.x += c), u.y >= c && (u.y -= c), u.y <= c && (u.y += c), u.x -= s.offsetX, u.y -= s.offsetY, u
}
function x(e) {
return e.flipX !== e.flipY
}
function k(e, t, n, r, i) {
if (0 !== e[t]) {
var o = i / e._getTransformedDimensions()[r] * e[n];
e.set(n, o)
}
}
function C(e, t, n, r) {
var i, c = t.target,
u = c._getTransformedDimensions(0, c.skewY),
p = w(t, t.originX, t.originY, n, r),
d = Math.abs(2 * p.x) - u.x,
f = c.skewX;
d < 2 ? i = 0 : (i = h(Math.atan2(d / c.scaleX, u.y / c.scaleY)), t.originX === o && t.originY === l && (i = -i), t.originX === s && t.originY === a && (i = -i), x(c) && (i = -i));
var g = f !== i;
if (g) {
var m = c._getTransformedDimensions().y;
c.set("skewX", i), k(c, "skewY", "scaleY", "y", m)
}
return g
}
function S(e, t, n, r) {
var i, c = t.target,
u = c._getTransformedDimensions(c.skewX, 0),
p = w(t, t.originX, t.originY, n, r),
d = Math.abs(2 * p.y) - u.y,
f = c.skewY;
d < 2 ? i = 0 : (i = h(Math.atan2(d / c.scaleY, u.x / c.scaleX)), t.originX === o && t.originY === l && (i = -i), t.originX === s && t.originY === a && (i = -i), x(c) && (i = -i));
var g = f !== i;
if (g) {
var m = c._getTransformedDimensions().x;
c.set("skewY", i), k(c, "skewX", "scaleX", "x", m)
}
return g
}
function E(e, t, n, r, i) {
i = i || {};
var o, a, s, l, c, h, d = t.target,
f = d.lockScalingX,
_ = d.lockScalingY,
b = i.by,
y = g(e, d),
x = v(d, b, y),
k = t.gestureScale;
if (x) return !1;
if (k) a = t.scaleX * k, s = t.scaleY * k;
else {
if (o = w(t, t.originX, t.originY, n, r), c = "y" !== b ? p(o.x) : 1, h = "x" !== b ? p(o.y) : 1, t.signX || (t.signX = c), t.signY || (t.signY = h), d.lockScalingFlip && (t.signX !== c || t.signY !== h)) return !1;
if (l = d._getTransformedDimensions(), y && !b) {
var C = Math.abs(o.x) + Math.abs(o.y),
S = t.original,
E = C / (Math.abs(l.x * S.scaleX / d.scaleX) + Math.abs(l.y * S.scaleY / d.scaleY));
a = S.scaleX * E, s = S.scaleY * E
} else a = Math.abs(o.x * d.scaleX / l.x), s = Math.abs(o.y * d.scaleY / l.y);
m(t) && (a *= 2, s *= 2), t.signX !== c && "y" !== b && (t.originX = u[t.originX], a *= -1, t.signX = c), t.signY !== h && "x" !== b && (t.originY = u[t.originY], s *= -1, t.signY = h)
}
var T = d.scaleX,
O = d.scaleY;
return b ? ("x" === b && d.set("scaleX", a), "y" === b && d.set("scaleY", s)) : (!f && d.set("scaleX", a), !_ && d.set("scaleY", s)), T !== d.scaleX || O !== d.scaleY
}
i.scaleCursorStyleHandler = function(e, t, r) {
var i = g(e, r),
o = "";
if (0 !== t.x && 0 === t.y ? o = "x" : 0 === t.x && 0 !== t.y && (o = "y"), v(r, o, i)) return "not-allowed";
var a = d(r, t);
return n[a] + "-resize"
}, i.skewCursorStyleHandler = function(e, t, n) {
var i = "not-allowed";
if (0 !== t.x && n.lockSkewingY) return i;
if (0 !== t.y && n.lockSkewingX) return i;
var o = d(n, t) % 4;
return r[o] + "-resize"
}, i.scaleSkewCursorStyleHandler = function(e, t, n) {
return e[n.canvas.altActionKey] ? i.skewCursorStyleHandler(e, t, n) : i.scaleCursorStyleHandler(e, t, n)
}, i.rotationWithSnapping = y("rotating", b((function(e, t, n, r) {
var i = t,
o = i.target,
a = o.translateToOriginPoint(o.getCenterPoint(), i.originX, i.originY);
if (o.lockRotation) return !1;
var s, l = Math.atan2(i.ey - a.y, i.ex - a.x),
c = Math.atan2(r - a.y, n - a.x),
u = h(c - l + i.theta);
if (o.snapAngle > 0) {
var p = o.snapAngle,
d = o.snapThreshold || p,
f = Math.ceil(u / p) * p,
g = Math.floor(u / p) * p;
Math.abs(u - g) < d ? u = g : Math.abs(u - f) < d && (u = f)
}
return u < 0 && (u = 360 + u), u %= 360, s = o.angle !== u, o.angle = u, s
}))), i.scalingEqually = y("scaling", b((function(e, t, n, r) {
return E(e, t, n, r)
}))), i.scalingX = y("scaling", b((function(e, t, n, r) {
return E(e, t, n, r, {
by: "x"
})
}))), i.scalingY = y("scaling", b((function(e, t, n, r) {
return E(e, t, n, r, {
by: "y"
})
}))), i.scalingYOrSkewingX = function(e, t, n, r) {
return e[t.target.canvas.altActionKey] ? i.skewHandlerX(e, t, n, r) : i.scalingY(e, t, n, r)
}, i.scalingXOrSkewingY = function(e, t, n, r) {
return e[t.target.canvas.altActionKey] ? i.skewHandlerY(e, t, n, r) : i.scalingX(e, t, n, r)
}, i.changeWidth = y("resizing", b((function(e, t, n, r) {
var i = t.target,
o = w(t, t.originX, t.originY, n, r),
a = i.strokeWidth / (i.strokeUniform ? i.scaleX : 1),
s = m(t) ? 2 : 1,
l = i.width,
c = Math.abs(o.x * s / i.scaleX) - a;
return i.set("width", Math.max(c, 0)), l !== c
}))), i.skewHandlerX = function(e, t, n, r) {
var i, l = t.target,
u = l.skewX,
h = t.originY;
return !l.lockSkewingX && (0 === u ? i = w(t, c, c, n, r).x > 0 ? o : s : (u > 0 && (i = h === a ? o : s), u < 0 && (i = h === a ? s : o), x(l) && (i = i === o ? s : o)), t.originX = i, y("skewing", b(C))(e, t, n, r))
}, i.skewHandlerY = function(e, t, n, r) {
var i, s = t.target,
u = s.skewY,
h = t.originX;
return !s.lockSkewingY && (0 === u ? i = w(t, c, c, n, r).y > 0 ? a : l : (u > 0 && (i = h === o ? a : l), u < 0 && (i = h === o ? l : a), x(s) && (i = i === a ? l : a)), t.originY = i, y("skewing", b(S))(e, t, n, r))
}, i.dragHandler = function(e, t, n, r) {
var i = t.target,
o = n - t.offsetX,
a = r - t.offsetY,
s = !i.get("lockMovementX") && i.left !== o,
l = !i.get("lockMovementY") && i.top !== a;
return s && i.set("left", o), l && i.set("top", a), (s || l) && f("moving", _(e, t, n, r)), s || l
}, i.scaleOrSkewActionName = function(e, t, n) {
var r = e[n.canvas.altActionKey];
return 0 === t.x ? r ? "skewX" : "scaleY" : 0 === t.y ? r ? "skewY" : "scaleX" : void 0
}, i.rotationStyleHandler = function(e, t, n) {
return n.lockRotation ? "not-allowed" : t.cursorStyle
}, i.fireEvent = f, i.wrapWithFixedAnchor = b, i.wrapWithFireEvent = y, i.getLocalPoint = w, t.controlsUtils = i
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.degreesToRadians,
r = t.controlsUtils;
r.renderCircleControl = function(e, t, n, r, i) {
r = r || {};
var o, a = this.sizeX || r.cornerSize || i.cornerSize,
s = this.sizeY || r.cornerSize || i.cornerSize,
l = void 0 !== r.transparentCorners ? r.transparentCorners : i.transparentCorners,
c = l ? "stroke" : "fill",
u = !l && (r.cornerStrokeColor || i.cornerStrokeColor),
h = t,
p = n;
e.save(), e.fillStyle = r.cornerColor || i.cornerColor, e.strokeStyle = r.cornerStrokeColor || i.cornerStrokeColor, a > s ? (o = a, e.scale(1, s / a), p = n * a / s) : s > a ? (o = s, e.scale(a / s, 1), h = t * s / a) : o = a, e
.lineWidth = 1, e.beginPath(), e.arc(h, p, o / 2, 0, 2 * Math.PI, !1), e[c](), u && e.stroke(), e.restore()
}, r.renderSquareControl = function(e, t, r, i, o) {
i = i || {};
var a = this.sizeX || i.cornerSize || o.cornerSize,
s = this.sizeY || i.cornerSize || o.cornerSize,
l = void 0 !== i.transparentCorners ? i.transparentCorners : o.transparentCorners,
c = l ? "stroke" : "fill",
u = !l && (i.cornerStrokeColor || o.cornerStrokeColor),
h = a / 2,
p = s / 2;
e.save(), e.fillStyle = i.cornerColor || o.cornerColor, e.strokeStyle = i.cornerStrokeColor || o.cornerStrokeColor, e.lineWidth = 1, e.translate(t, r), e.rotate(n(o.angle)), e[c + "Rect"](-h, -p, a, s), u && e.strokeRect(-h, -p,
a, s), e.restore()
}
}(e),
function(e) {
var t = e.fabric || (e.fabric = {});
t.Control = function(e) {
for (var t in e) this[t] = e[t]
}, t.Control.prototype = {
visible: !0,
actionName: "scale",
angle: 0,
x: 0,
y: 0,
offsetX: 0,
offsetY: 0,
sizeX: null,
sizeY: null,
touchSizeX: null,
touchSizeY: null,
cursorStyle: "crosshair",
withConnection: !1,
actionHandler: function() {},
mouseDownHandler: function() {},
mouseUpHandler: function() {},
getActionHandler: function() {
return this.actionHandler
},
getMouseDownHandler: function() {
return this.mouseDownHandler
},
getMouseUpHandler: function() {
return this.mouseUpHandler
},
cursorStyleHandler: function(e, t) {
return t.cursorStyle
},
getActionName: function(e, t) {
return t.actionName
},
getVisibility: function(e, t) {
var n = e._controlsVisibility;
return n && void 0 !== n[t] ? n[t] : this.visible
},
setVisibility: function(e) {
this.visible = e
},
positionHandler: function(e, n) {
return t.util.transformPoint({
x: this.x * e.x + this.offsetX,
y: this.y * e.y + this.offsetY
}, n)
},
calcCornerCoords: function(e, n, r, i, o) {
var a, s, l, c, u = o ? this.touchSizeX : this.sizeX,
h = o ? this.touchSizeY : this.sizeY;
if (u && h && u !== h) {
var p = Math.atan2(h, u),
d = Math.sqrt(u * u + h * h) / 2,
f = p - t.util.degreesToRadians(e),
g = Math.PI / 2 - p - t.util.degreesToRadians(e);
a = d * t.util.cos(f), s = d * t.util.sin(f), l = d * t.util.cos(g), c = d * t.util.sin(g)
} else {
d = .7071067812 * (u && h ? u : n);
f = t.util.degreesToRadians(45 - e);
a = l = d * t.util.cos(f), s = c = d * t.util.sin(f)
}
return {
tl: {
x: r - c,
y: i - l
},
tr: {
x: r + a,
y: i - s
},
bl: {
x: r - a,
y: i + s
},
br: {
x: r + c,
y: i + l
}
}
},
render: function(e, n, r, i, o) {
if ("circle" === ((i = i || {}).cornerStyle || o.cornerStyle)) t.controlsUtils.renderCircleControl.call(this, e, n, r, i, o);
else t.controlsUtils.renderSquareControl.call(this, e, n, r, i, o)
}
}
}(e),
function() {
function e(e, t) {
var n, r, i, o, a = e.getAttribute("style"),
s = e.getAttribute("offset") || 0;
if (s = (s = parseFloat(s) / (/%$/.test(s) ? 100 : 1)) < 0 ? 0 : s > 1 ? 1 : s, a) {
var l = a.split(/\s*;\s*/);
for ("" === l[l.length - 1] && l.pop(), o = l.length; o--;) {
var c = l[o].split(/\s*:\s*/),
u = c[0].trim(),
h = c[1].trim();
"stop-color" === u ? n = h : "stop-opacity" === u && (i = h)
}
}
return n || (n = e.getAttribute("stop-color") || "rgb(0,0,0)"), i || (i = e.getAttribute("stop-opacity")), r = (n = new v.Color(n)).getAlpha(), i = isNaN(parseFloat(i)) ? 1 : parseFloat(i), i *= r * t, {
offset: s,
color: n.toRgb(),
opacity: i
}
}
var t = v.util.object.clone;
v.Gradient = v.util.createClass({
offsetX: 0,
offsetY: 0,
gradientTransform: null,
gradientUnits: "pixels",
type: "linear",
initialize: function(e) {
e || (e = {}), e.coords || (e.coords = {});
var t, n = this;
Object.keys(e).forEach((function(t) {
n[t] = e[t]
})), this.id ? this.id += "_" + v.Object.__uid++ : this.id = v.Object.__uid++, t = {
x1: e.coords.x1 || 0,
y1: e.coords.y1 || 0,
x2: e.coords.x2 || 0,
y2: e.coords.y2 || 0
}, "radial" === this.type && (t.r1 = e.coords.r1 || 0, t.r2 = e.coords.r2 || 0), this.coords = t, this.colorStops = e.colorStops.slice()
},
addColorStop: function(e) {
for (var t in e) {
var n = new v.Color(e[t]);
this.colorStops.push({
offset: parseFloat(t),
color: n.toRgb(),
opacity: n.getAlpha()
})
}
return this
},
toObject: function(e) {
var t = {
type: this.type,
coords: this.coords,
colorStops: this.colorStops,
offsetX: this.offsetX,
offsetY: this.offsetY,
gradientUnits: this.gradientUnits,
gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform
};
return v.util.populateWithProperties(this, t, e), t
},
toSVG: function(e, n) {
var r, i, o, a, s = t(this.coords, !0),
l = (n = n || {}, t(this.colorStops, !0)),
c = s.r1 > s.r2,
u = this.gradientTransform ? this.gradientTransform.concat() : v.iMatrix.concat(),
h = -this.offsetX,
p = -this.offsetY,
d = !!n.additionalTransform,
f = "pixels" === this.gradientUnits ? "userSpaceOnUse" : "objectBoundingBox";
if (l.sort((function(e, t) {
return e.offset - t.offset
})), "objectBoundingBox" === f ? (h /= e.width, p /= e.height) : (h += e.width / 2, p += e.height / 2), "path" === e.type && "percentage" !== this.gradientUnits && (h -= e.pathOffset.x, p -= e.pathOffset.y), u[4] -= h,
u[5] -= p, a = 'id="SVGID_' + this.id + '" gradientUnits="' + f + '"', a += ' gradientTransform="' + (d ? n.additionalTransform + " " : "") + v.util.matrixToSVG(u) + '" ', "linear" === this.type ? o = [
"<linearGradient ", a, ' x1="', s.x1, '" y1="', s.y1, '" x2="', s.x2, '" y2="', s.y2, '">\n'
] : "radial" === this.type && (o = ["<radialGradient ", a, ' cx="', c ? s.x1 : s.x2, '" cy="', c ? s.y1 : s.y2, '" r="', c ? s.r1 : s.r2, '" fx="', c ? s.x2 : s.x1, '" fy="', c ? s.y2 : s.y1, '">\n']), "radial" === this
.type) {
if (c)
for ((l = l.concat()).reverse(), r = 0, i = l.length; r < i; r++) l[r].offset = 1 - l[r].offset;
var g = Math.min(s.r1, s.r2);
if (g > 0) {
var m = g / Math.max(s.r1, s.r2);
for (r = 0, i = l.length; r < i; r++) l[r].offset += m * (1 - l[r].offset)
}
}
for (r = 0, i = l.length; r < i; r++) {
var _ = l[r];
o.push("<stop ", 'offset="', 100 * _.offset + "%", '" style="stop-color:', _.color, void 0 !== _.opacity ? ";stop-opacity: " + _.opacity : ";", '"/>\n')
}
return o.push("linear" === this.type ? "</linearGradient>\n" : "</radialGradient>\n"), o.join("")
},
toLive: function(e) {
var t, n, r, i = v.util.object.clone(this.coords);
if (this.type) {
for ("linear" === this.type ? t = e.createLinearGradient(i.x1, i.y1, i.x2, i.y2) : "radial" === this.type && (t = e.createRadialGradient(i.x1, i.y1, i.r1, i.x2, i.y2, i.r2)), n = 0, r = this.colorStops.length; n <
r; n++) {
var o = this.colorStops[n].color,
a = this.colorStops[n].opacity,
s = this.colorStops[n].offset;
void 0 !== a && (o = new v.Color(o).setAlpha(a).toRgba()), t.addColorStop(s, o)
}
return t
}
}
}), v.util.object.extend(v.Gradient, {
fromElement: function(t, n, r, i) {
var o = parseFloat(r) / (/%$/.test(r) ? 100 : 1);
o = o < 0 ? 0 : o > 1 ? 1 : o, isNaN(o) && (o = 1);
var a, s, l, c, u = t.getElementsByTagName("stop"),
h = "userSpaceOnUse" === t.getAttribute("gradientUnits") ? "pixels" : "percentage",
p = t.getAttribute("gradientTransform") || "",
d = [],
f = 0,
g = 0;
for ("linearGradient" === t.nodeName || "LINEARGRADIENT" === t.nodeName ? (a = "linear", s = function(e) {
return {
x1: e.getAttribute("x1") || 0,
y1: e.getAttribute("y1") || 0,
x2: e.getAttribute("x2") || "100%",
y2: e.getAttribute("y2") || 0
}
}(t)) : (a = "radial", s = function(e) {
return {
x1: e.getAttribute("fx") || e.getAttribute("cx") || "50%",
y1: e.getAttribute("fy") || e.getAttribute("cy") || "50%",
r1: 0,
x2: e.getAttribute("cx") || "50%",
y2: e.getAttribute("cy") || "50%",
r2: e.getAttribute("r") || "50%"
}
}(t)), l = u.length; l--;) d.push(e(u[l], o));
return c = v.parseTransformAttribute(p),
function(e, t, n, r) {
var i, o;
Object.keys(t).forEach((function(e) {
"Infinity" === (i = t[e]) ? o = 1: "-Infinity" === i ? o = 0 : (o = parseFloat(t[e], 10), "string" == typeof i && /^(\d+\.\d+)%|(\d+)%$/.test(i) && (o *= .01, "pixels" === r && ("x1" !== e && "x2" !== e &&
"r2" !== e || (o *= n.viewBoxWidth || n.width), "y1" !== e && "y2" !== e || (o *= n.viewBoxHeight || n.height)))), t[e] = o
}))
}(0, s, i, h), "pixels" === h && (f = -n.left, g = -n.top), new v.Gradient({
id: t.getAttribute("id"),
type: a,
coords: s,
colorStops: d,
gradientUnits: h,
gradientTransform: c,
offsetX: f,
offsetY: g
})
}
})
}(), p = v.util.toFixed, v.Pattern = v.util.createClass({
repeat: "repeat",
offsetX: 0,
offsetY: 0,
crossOrigin: "",
patternTransform: null,
initialize: function(e, t) {
if (e || (e = {}), this.id = v.Object.__uid++, this.setOptions(e), !e.source || e.source && "string" != typeof e.source) t && t(this);
else {
var n = this;
this.source = v.util.createImage(), v.util.loadImage(e.source, (function(e, r) {
n.source = e, t && t(n, r)
}), null, this.crossOrigin)
}
},
toObject: function(e) {
var t, n, r = v.Object.NUM_FRACTION_DIGITS;
return "string" == typeof this.source.src ? t = this.source.src : "object" == typeof this.source && this.source.toDataURL && (t = this.source.toDataURL()), n = {
type: "pattern",
source: t,
repeat: this.repeat,
crossOrigin: this.crossOrigin,
offsetX: p(this.offsetX, r),
offsetY: p(this.offsetY, r),
patternTransform: this.patternTransform ? this.patternTransform.concat() : null
}, v.util.populateWithProperties(this, n, e), n
},
toSVG: function(e) {
var t = "function" == typeof this.source ? this.source() : this.source,
n = t.width / e.width,
r = t.height / e.height,
i = this.offsetX / e.width,
o = this.offsetY / e.height,
a = "";
return "repeat-x" !== this.repeat && "no-repeat" !== this.repeat || (r = 1, o && (r += Math.abs(o))), "repeat-y" !== this.repeat && "no-repeat" !== this.repeat || (n = 1, i && (n += Math.abs(i))), t.src ? a = t.src : t
.toDataURL && (a = t.toDataURL()), '<pattern id="SVGID_' + this.id + '" x="' + i + '" y="' + o + '" width="' + n + '" height="' + r + '">\n<image x="0" y="0" width="' + t.width + '" height="' + t.height + '" xlink:href="' +
a + '"></image>\n</pattern>\n'
},
setOptions: function(e) {
for (var t in e) this[t] = e[t]
},
toLive: function(e) {
var t = this.source;
if (!t) return "";
if (void 0 !== t.src) {
if (!t.complete) return "";
if (0 === t.naturalWidth || 0 === t.naturalHeight) return ""
}
return e.createPattern(t, this.repeat)
}
}),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.toFixed;
t.Shadow ? t.warn("fabric.Shadow is already defined.") : (t.Shadow = t.util.createClass({
color: "rgb(0,0,0)",
blur: 0,
offsetX: 0,
offsetY: 0,
affectStroke: !1,
includeDefaultValues: !0,
nonScaling: !1,
initialize: function(e) {
for (var n in "string" == typeof e && (e = this._parseShadow(e)), e) this[n] = e[n];
this.id = t.Object.__uid++
},
_parseShadow: function(e) {
var n = e.trim(),
r = t.Shadow.reOffsetsAndBlur.exec(n) || [];
return {
color: (n.replace(t.Shadow.reOffsetsAndBlur, "") || "rgb(0,0,0)").trim(),
offsetX: parseFloat(r[1], 10) || 0,
offsetY: parseFloat(r[2], 10) || 0,
blur: parseFloat(r[3], 10) || 0
}
},
toString: function() {
return [this.offsetX, this.offsetY, this.blur, this.color].join("px ")
},
toSVG: function(e) {
var r = 40,
i = 40,
o = t.Object.NUM_FRACTION_DIGITS,
a = t.util.rotateVector({
x: this.offsetX,
y: this.offsetY
}, t.util.degreesToRadians(-e.angle)),
s = new t.Color(this.color);
return e.width && e.height && (r = 100 * n((Math.abs(a.x) + this.blur) / e.width, o) + 20, i = 100 * n((Math.abs(a.y) + this.blur) / e.height, o) + 20), e.flipX && (a.x *= -1), e.flipY && (a.y *= -1),
'<filter id="SVGID_' + this.id + '" y="-' + i + '%" height="' + (100 + 2 * i) + '%" x="-' + r + '%" width="' + (100 + 2 * r) + '%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="' + n(this.blur ? this.blur / 2 :
0, o) + '"></feGaussianBlur>\n\t<feOffset dx="' + n(a.x, o) + '" dy="' + n(a.y, o) + '" result="oBlur" ></feOffset>\n\t<feFlood flood-color="' + s.toRgb() + '" flood-opacity="' + s.getAlpha() +
'"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n'
},
toObject: function() {
if (this.includeDefaultValues) return {
color: this.color,
blur: this.blur,
offsetX: this.offsetX,
offsetY: this.offsetY,
affectStroke: this.affectStroke,
nonScaling: this.nonScaling
};
var e = {},
n = t.Shadow.prototype;
return ["color", "blur", "offsetX", "offsetY", "affectStroke", "nonScaling"].forEach((function(t) {
this[t] !== n[t] && (e[t] = this[t])
}), this), e
}
}), t.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)
}(e),
function() {
if (v.StaticCanvas) v.warn("fabric.StaticCanvas is already defined.");
else {
var e = v.util.object.extend,
t = v.util.getElementOffset,
n = v.util.removeFromArray,
r = v.util.toFixed,
i = v.util.transformPoint,
o = v.util.invertTransform,
a = v.util.getNodeCanvas,
s = v.util.createCanvasElement,
l = new Error("Could not initialize `canvas` element");
v.StaticCanvas = v.util.createClass(v.CommonMethods, {
initialize: function(e, t) {
t || (t = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(e, t)
},
backgroundColor: "",
backgroundImage: null,
overlayColor: "",
overlayImage: null,
includeDefaultValues: !0,
stateful: !1,
renderOnAddRemove: !0,
controlsAboveOverlay: !1,
allowTouchScrolling: !1,
imageSmoothingEnabled: !0,
viewportTransform: v.iMatrix.concat(),
backgroundVpt: !0,
overlayVpt: !0,
enableRetinaScaling: !0,
vptCoords: {},
skipOffscreen: !0,
clipPath: void 0,
_initStatic: function(e, t) {
var n = this.requestRenderAllBound;
this._objects = [], this._createLowerCanvas(e), this._initOptions(t), this.interactive || this._initRetinaScaling(), t.overlayImage && this.setOverlayImage(t.overlayImage, n), t.backgroundImage && this
.setBackgroundImage(t.backgroundImage, n), t.backgroundColor && this.setBackgroundColor(t.backgroundColor, n), t.overlayColor && this.setOverlayColor(t.overlayColor, n), this.calcOffset()
},
_isRetinaScaling: function() {
return v.devicePixelRatio > 1 && this.enableRetinaScaling
},
getRetinaScaling: function() {
return this._isRetinaScaling() ? Math.max(1, v.devicePixelRatio) : 1
},
_initRetinaScaling: function() {
if (this._isRetinaScaling()) {
var e = v.devicePixelRatio;
this.__initRetinaScaling(e, this.lowerCanvasEl, this.contextContainer), this.upperCanvasEl && this.__initRetinaScaling(e, this.upperCanvasEl, this.contextTop)
}
},
__initRetinaScaling: function(e, t, n) {
t.setAttribute("width", this.width * e), t.setAttribute("height", this.height * e), n.scale(e, e)
},
calcOffset: function() {
return this._offset = t(this.lowerCanvasEl), this
},
setOverlayImage: function(e, t, n) {
return this.__setBgOverlayImage("overlayImage", e, t, n)
},
setBackgroundImage: function(e, t, n) {
return this.__setBgOverlayImage("backgroundImage", e, t, n)
},
setOverlayColor: function(e, t) {
return this.__setBgOverlayColor("overlayColor", e, t)
},
setBackgroundColor: function(e, t) {
return this.__setBgOverlayColor("backgroundColor", e, t)
},
__setBgOverlayImage: function(e, t, n, r) {
return "string" == typeof t ? v.util.loadImage(t, (function(t, i) {
if (t) {
var o = new v.Image(t, r);
this[e] = o, o.canvas = this
}
n && n(t, i)
}), this, r && r.crossOrigin) : (r && t.setOptions(r), this[e] = t, t && (t.canvas = this), n && n(t, !1)), this
},
__setBgOverlayColor: function(e, t, n) {
return this[e] = t, this._initGradient(t, e), this._initPattern(t, e, n), this
},
_createCanvasElement: function() {
var e = s();
if (!e) throw l;
if (e.style || (e.style = {}), void 0 === e.getContext) throw l;
return e
},
_initOptions: function(e) {
var t = this.lowerCanvasEl;
this._setOptions(e), this.width = this.width || parseInt(t.width, 10) || 0, this.height = this.height || parseInt(t.height, 10) || 0, this.lowerCanvasEl.style && (t.width = this.width, t.height = this.height, t.style
.width = this.width + "px", t.style.height = this.height + "px", this.viewportTransform = this.viewportTransform.slice())
},
_createLowerCanvas: function(e) {
e && e.getContext ? this.lowerCanvasEl = e : this.lowerCanvasEl = v.util.getById(e) || this._createCanvasElement(), v.util.addClass(this.lowerCanvasEl, "lower-canvas"), this._originalCanvasStyle = this.lowerCanvasEl
.style, this.interactive && this._applyCanvasStyle(this.lowerCanvasEl), this.contextContainer = this.lowerCanvasEl.getContext("2d")
},
getWidth: function() {
return this.width
},
getHeight: function() {
return this.height
},
setWidth: function(e, t) {
return this.setDimensions({
width: e
}, t)
},
setHeight: function(e, t) {
return this.setDimensions({
height: e
}, t)
},
setDimensions: function(e, t) {
var n;
for (var r in t = t || {}, e) n = e[r], t.cssOnly || (this._setBackstoreDimension(r, e[r]), n += "px", this.hasLostContext = !0), t.backstoreOnly || this._setCssDimension(r, n);
return this._isCurrentlyDrawing && this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(this.contextTop), this._initRetinaScaling(), this.calcOffset(), t.cssOnly || this.requestRenderAll(), this
},
_setBackstoreDimension: function(e, t) {
return this.lowerCanvasEl[e] = t, this.upperCanvasEl && (this.upperCanvasEl[e] = t), this.cacheCanvasEl && (this.cacheCanvasEl[e] = t), this[e] = t, this
},
_setCssDimension: function(e, t) {
return this.lowerCanvasEl.style[e] = t, this.upperCanvasEl && (this.upperCanvasEl.style[e] = t), this.wrapperEl && (this.wrapperEl.style[e] = t), this
},
getZoom: function() {
return this.viewportTransform[0]
},
setViewportTransform: function(e) {
var t, n, r, i = this._activeObject,
o = this.backgroundImage,
a = this.overlayImage;
for (this.viewportTransform = e, n = 0, r = this._objects.length; n < r; n++)(t = this._objects[n]).group || t.setCoords(!0);
return i && i.setCoords(), o && o.setCoords(!0), a && a.setCoords(!0), this.calcViewportBoundaries(), this.renderOnAddRemove && this.requestRenderAll(), this
},
zoomToPoint: function(e, t) {
var n = e,
r = this.viewportTransform.slice(0);
e = i(e, o(this.viewportTransform)), r[0] = t, r[3] = t;
var a = i(e, r);
return r[4] += n.x - a.x, r[5] += n.y - a.y, this.setViewportTransform(r)
},
setZoom: function(e) {
return this.zoomToPoint(new v.Point(0, 0), e), this
},
absolutePan: function(e) {
var t = this.viewportTransform.slice(0);
return t[4] = -e.x, t[5] = -e.y, this.setViewportTransform(t)
},
relativePan: function(e) {
return this.absolutePan(new v.Point(-e.x - this.viewportTransform[4], -e.y - this.viewportTransform[5]))
},
getElement: function() {
return this.lowerCanvasEl
},
_onObjectAdded: function(e) {
this.stateful && e.setupState(), e._set("canvas", this), e.setCoords(), this.fire("object:added", {
target: e
}), e.fire("added")
},
_onObjectRemoved: function(e) {
this.fire("object:removed", {
target: e
}), e.fire("removed"), delete e.canvas
},
clearContext: function(e) {
return e.clearRect(0, 0, this.width, this.height), this
},
getContext: function() {
return this.contextContainer
},
clear: function() {
return this.remove.apply(this, this.getObjects()), this.backgroundImage = null, this.overlayImage = null, this.backgroundColor = "", this.overlayColor = "", this._hasITextHandlers && (this.off("mouse:up", this
._mouseUpITextHandler), this._iTextInstances = null, this._hasITextHandlers = !1), this.clearContext(this.contextContainer), this.fire("canvas:cleared"), this.renderOnAddRemove && this.requestRenderAll(), this
},
renderAll: function() {
var e = this.contextContainer;
return this.renderCanvas(e, this._objects), this
},
renderAndReset: function() {
this.isRendering = 0, this.renderAll()
},
requestRenderAll: function() {
return this.isRendering || (this.isRendering = v.util.requestAnimFrame(this.renderAndResetBound)), this
},
calcViewportBoundaries: function() {
var e = {},
t = this.width,
n = this.height,
r = o(this.viewportTransform);
return e.tl = i({
x: 0,
y: 0
}, r), e.br = i({
x: t,
y: n
}, r), e.tr = new v.Point(e.br.x, e.tl.y), e.bl = new v.Point(e.tl.x, e.br.y), this.vptCoords = e, e
},
cancelRequestedRender: function() {
this.isRendering && (v.util.cancelAnimFrame(this.isRendering), this.isRendering = 0)
},
renderCanvas: function(e, t) {
var n = this.viewportTransform,
r = this.clipPath;
this.cancelRequestedRender(), this.calcViewportBoundaries(), this.clearContext(e), v.util.setImageSmoothing(e, this.imageSmoothingEnabled), this.fire("before:render", {
ctx: e
}), this._renderBackground(e), e.save(), e.transform(n[0], n[1], n[2], n[3], n[4], n[5]), this._renderObjects(e, t), e.restore(), !this.controlsAboveOverlay && this.interactive && this.drawControls(e), r && (r.canvas =
this, r.shouldCache(), r._transformDone = !0, r.renderCache({
forClipping: !0
}), this.drawClipPathOnCanvas(e)), this._renderOverlay(e), this.controlsAboveOverlay && this.interactive && this.drawControls(e), this.fire("after:render", {
ctx: e
})
},
drawClipPathOnCanvas: function(e) {
var t = this.viewportTransform,
n = this.clipPath;
e.save(), e.transform(t[0], t[1], t[2], t[3], t[4], t[5]), e.globalCompositeOperation = "destination-in", n.transform(e), e.scale(1 / n.zoomX, 1 / n.zoomY), e.drawImage(n._cacheCanvas, -n.cacheTranslationX, -n
.cacheTranslationY), e.restore()
},
_renderObjects: function(e, t) {
var n, r;
for (n = 0, r = t.length; n < r; ++n) t[n] && t[n].render(e)
},
_renderBackgroundOrOverlay: function(e, t) {
var n = this[t + "Color"],
r = this[t + "Image"],
i = this.viewportTransform,
o = this[t + "Vpt"];
if (n || r) {
if (n) {
e.save(), e.beginPath(), e.moveTo(0, 0), e.lineTo(this.width, 0), e.lineTo(this.width, this.height), e.lineTo(0, this.height), e.closePath(), e.fillStyle = n.toLive ? n.toLive(e, this) : n, o && e.transform(i[0], i[
1], i[2], i[3], i[4], i[5]), e.transform(1, 0, 0, 1, n.offsetX || 0, n.offsetY || 0);
var a = n.gradientTransform || n.patternTransform;
a && e.transform(a[0], a[1], a[2], a[3], a[4], a[5]), e.fill(), e.restore()
}
r && (e.save(), o && e.transform(i[0], i[1], i[2], i[3], i[4], i[5]), r.render(e), e.restore())
}
},
_renderBackground: function(e) {
this._renderBackgroundOrOverlay(e, "background")
},
_renderOverlay: function(e) {
this._renderBackgroundOrOverlay(e, "overlay")
},
getCenter: function() {
return {
top: this.height / 2,
left: this.width / 2
}
},
getCenterPoint: function() {
return new v.Point(this.width / 2, this.height / 2)
},
centerObjectH: function(e) {
return this._centerObject(e, new v.Point(this.getCenterPoint().x, e.getCenterPoint().y))
},
centerObjectV: function(e) {
return this._centerObject(e, new v.Point(e.getCenterPoint().x, this.getCenterPoint().y))
},
centerObject: function(e) {
var t = this.getCenterPoint();
return this._centerObject(e, t)
},
viewportCenterObject: function(e) {
var t = this.getVpCenter();
return this._centerObject(e, t)
},
viewportCenterObjectH: function(e) {
var t = this.getVpCenter();
return this._centerObject(e, new v.Point(t.x, e.getCenterPoint().y)), this
},
viewportCenterObjectV: function(e) {
var t = this.getVpCenter();
return this._centerObject(e, new v.Point(e.getCenterPoint().x, t.y))
},
getVpCenter: function() {
var e = this.getCenterPoint(),
t = o(this.viewportTransform);
return i(e, t)
},
_centerObject: function(e, t) {
return e.setPositionByOrigin(t, "center", "center"), e.setCoords(), this.renderOnAddRemove && this.requestRenderAll(), this
},
toDatalessJSON: function(e) {
return this.toDatalessObject(e)
},
toObject: function(e) {
return this._toObjectMethod("toObject", e)
},
toDatalessObject: function(e) {
return this._toObjectMethod("toDatalessObject", e)
},
_toObjectMethod: function(t, n) {
var r = this.clipPath,
i = {
version: v.version,
objects: this._toObjects(t, n)
};
return r && !r.excludeFromExport && (i.clipPath = this._toObject(this.clipPath, t, n)), e(i, this.__serializeBgOverlay(t, n)), v.util.populateWithProperties(this, i, n), i
},
_toObjects: function(e, t) {
return this._objects.filter((function(e) {
return !e.excludeFromExport
})).map((function(n) {
return this._toObject(n, e, t)
}), this)
},
_toObject: function(e, t, n) {
var r;
this.includeDefaultValues || (r = e.includeDefaultValues, e.includeDefaultValues = !1);
var i = e[t](n);
return this.includeDefaultValues || (e.includeDefaultValues = r), i
},
__serializeBgOverlay: function(e, t) {
var n = {},
r = this.backgroundImage,
i = this.overlayImage,
o = this.backgroundColor,
a = this.overlayColor;
return o && o.toObject ? o.excludeFromExport || (n.background = o.toObject(t)) : o && (n.background = o), a && a.toObject ? a.excludeFromExport || (n.overlay = a.toObject(t)) : a && (n.overlay = a), r && !r
.excludeFromExport && (n.backgroundImage = this._toObject(r, e, t)), i && !i.excludeFromExport && (n.overlayImage = this._toObject(i, e, t)), n
},
svgViewportTransformation: !0,
toSVG: function(e, t) {
e || (e = {}), e.reviver = t;
var n = [];
return this._setSVGPreamble(n, e), this._setSVGHeader(n, e), this.clipPath && n.push('<g clip-path="url(#' + this.clipPath.clipPathId + ')" >\n'), this._setSVGBgOverlayColor(n, "background"), this._setSVGBgOverlayImage(
n, "backgroundImage", t), this._setSVGObjects(n, t), this.clipPath && n.push("</g>\n"), this._setSVGBgOverlayColor(n, "overlay"), this._setSVGBgOverlayImage(n, "overlayImage", t), n.push("</svg>"), n.join("")
},
_setSVGPreamble: function(e, t) {
t.suppressPreamble || e.push('<?xml version="1.0" encoding="', t.encoding || "UTF-8", '" standalone="no" ?>\n', '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ', '"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')
},
_setSVGHeader: function(e, t) {
var n, i = t.width || this.width,
o = t.height || this.height,
a = 'viewBox="0 0 ' + this.width + " " + this.height + '" ',
s = v.Object.NUM_FRACTION_DIGITS;
t.viewBox ? a = 'viewBox="' + t.viewBox.x + " " + t.viewBox.y + " " + t.viewBox.width + " " + t.viewBox.height + '" ' : this.svgViewportTransformation && (n = this.viewportTransform, a = 'viewBox="' + r(-n[4] / n[0],
s) + " " + r(-n[5] / n[3], s) + " " + r(this.width / n[0], s) + " " + r(this.height / n[3], s) + '" '), e.push("<svg ", 'xmlns="http://www.w3.org/2000/svg" ', 'xmlns:xlink="http://www.w3.org/1999/xlink" ',
'version="1.1" ', 'width="', i, '" ', 'height="', o, '" ', a, 'xml:space="preserve">\n', "<desc>Created with Fabric.js ", v.version, "</desc>\n", "<defs>\n", this.createSVGFontFacesMarkup(), this
.createSVGRefElementsMarkup(), this.createSVGClipPathMarkup(t), "</defs>\n")
},
createSVGClipPathMarkup: function(e) {
var t = this.clipPath;
return t ? (t.clipPathId = "CLIPPATH_" + v.Object.__uid++, '<clipPath id="' + t.clipPathId + '" >\n' + this.clipPath.toClipPathSVG(e.reviver) + "</clipPath>\n") : ""
},
createSVGRefElementsMarkup: function() {
var e = this;
return ["background", "overlay"].map((function(t) {
var n = e[t + "Color"];
if (n && n.toLive) {
var r = e[t + "Vpt"],
i = e.viewportTransform,
o = {
width: e.width / (r ? i[0] : 1),
height: e.height / (r ? i[3] : 1)
};
return n.toSVG(o, {
additionalTransform: r ? v.util.matrixToSVG(i) : ""
})
}
})).join("")
},
createSVGFontFacesMarkup: function() {
var e, t, n, r, i, o, a, s, l = "",
c = {},
u = v.fontPaths,
h = [];
for (this._objects.forEach((function e(t) {
h.push(t), t._objects && t._objects.forEach(e)
})), a = 0, s = h.length; a < s; a++)
if (t = (e = h[a]).fontFamily, -1 !== e.type.indexOf("text") && !c[t] && u[t] && (c[t] = !0, e.styles))
for (i in n = e.styles)
for (o in r = n[i]) !c[t = r[o].fontFamily] && u[t] && (c[t] = !0);
for (var p in c) l += ["\t\t@font-face {\n", "\t\t\tfont-family: '", p, "';\n", "\t\t\tsrc: url('", u[p], "');\n", "\t\t}\n"].join("");
return l && (l = ['\t<style type="text/css">', "<![CDATA[\n", l, "]]>", "</style>\n"].join("")), l
},
_setSVGObjects: function(e, t) {
var n, r, i, o = this._objects;
for (r = 0, i = o.length; r < i; r++)(n = o[r]).excludeFromExport || this._setSVGObject(e, n, t)
},
_setSVGObject: function(e, t, n) {
e.push(t.toSVG(n))
},
_setSVGBgOverlayImage: function(e, t, n) {
this[t] && !this[t].excludeFromExport && this[t].toSVG && e.push(this[t].toSVG(n))
},
_setSVGBgOverlayColor: function(e, t) {
var n = this[t + "Color"],
r = this.viewportTransform,
i = this.width,
o = this.height;
if (n)
if (n.toLive) {
var a = n.repeat,
s = v.util.invertTransform(r),
l = this[t + "Vpt"] ? v.util.matrixToSVG(s) : "";
e.push('<rect transform="' + l + " translate(", i / 2, ",", o / 2, ')"', ' x="', n.offsetX - i / 2, '" y="', n.offsetY - o / 2, '" ', 'width="', "repeat-y" === a || "no-repeat" === a ? n.source.width : i,
'" height="', "repeat-x" === a || "no-repeat" === a ? n.source.height : o, '" fill="url(#SVGID_' + n.id + ')"', "></rect>\n")
} else e.push('<rect x="0" y="0" width="100%" height="100%" ', 'fill="', n, '"', "></rect>\n")
},
sendToBack: function(e) {
if (!e) return this;
var t, r, i, o = this._activeObject;
if (e === o && "activeSelection" === e.type)
for (t = (i = o._objects).length; t--;) r = i[t], n(this._objects, r), this._objects.unshift(r);
else n(this._objects, e), this._objects.unshift(e);
return this.renderOnAddRemove && this.requestRenderAll(), this
},
bringToFront: function(e) {
if (!e) return this;
var t, r, i, o = this._activeObject;
if (e === o && "activeSelection" === e.type)
for (i = o._objects, t = 0; t < i.length; t++) r = i[t], n(this._objects, r), this._objects.push(r);
else n(this._objects, e), this._objects.push(e);
return this.renderOnAddRemove && this.requestRenderAll(), this
},
sendBackwards: function(e, t) {
if (!e) return this;
var r, i, o, a, s, l = this._activeObject,
c = 0;
if (e === l && "activeSelection" === e.type)
for (s = l._objects, r = 0; r < s.length; r++) i = s[r], (o = this._objects.indexOf(i)) > 0 + c && (a = o - 1, n(this._objects, i), this._objects.splice(a, 0, i)), c++;
else 0 !== (o = this._objects.indexOf(e)) && (a = this._findNewLowerIndex(e, o, t), n(this._objects, e), this._objects.splice(a, 0, e));
return this.renderOnAddRemove && this.requestRenderAll(), this
},
_findNewLowerIndex: function(e, t, n) {
var r, i;
if (n)
for (r = t, i = t - 1; i >= 0; --i) {
if (e.intersectsWithObject(this._objects[i]) || e.isContainedWithinObject(this._objects[i]) || this._objects[i].isContainedWithinObject(e)) {
r = i;
break
}
} else r = t - 1;
return r
},
bringForward: function(e, t) {
if (!e) return this;
var r, i, o, a, s, l = this._activeObject,
c = 0;
if (e === l && "activeSelection" === e.type)
for (r = (s = l._objects).length; r--;) i = s[r], (o = this._objects.indexOf(i)) < this._objects.length - 1 - c && (a = o + 1, n(this._objects, i), this._objects.splice(a, 0, i)), c++;
else(o = this._objects.indexOf(e)) !== this._objects.length - 1 && (a = this._findNewUpperIndex(e, o, t), n(this._objects, e), this._objects.splice(a, 0, e));
return this.renderOnAddRemove && this.requestRenderAll(), this
},
_findNewUpperIndex: function(e, t, n) {
var r, i, o;
if (n)
for (r = t, i = t + 1, o = this._objects.length; i < o; ++i) {
if (e.intersectsWithObject(this._objects[i]) || e.isContainedWithinObject(this._objects[i]) || this._objects[i].isContainedWithinObject(e)) {
r = i;
break
}
} else r = t + 1;
return r
},
moveTo: function(e, t) {
return n(this._objects, e), this._objects.splice(t, 0, e), this.renderOnAddRemove && this.requestRenderAll()
},
dispose: function() {
return this.isRendering && (v.util.cancelAnimFrame(this.isRendering), this.isRendering = 0), this.forEachObject((function(e) {
e.dispose && e.dispose()
})), this._objects = [], this.backgroundImage && this.backgroundImage.dispose && this.backgroundImage.dispose(), this.backgroundImage = null, this.overlayImage && this.overlayImage.dispose && this.overlayImage
.dispose(), this.overlayImage = null, this._iTextInstances = null, this.contextContainer = null, this.lowerCanvasEl.classList.remove("lower-canvas"), v.util.setStyle(this.lowerCanvasEl, this._originalCanvasStyle),
delete this._originalCanvasStyle, this.lowerCanvasEl.setAttribute("width", this.width), this.lowerCanvasEl.setAttribute("height", this.height), v.util.cleanUpJsdomNode(this.lowerCanvasEl), this.lowerCanvasEl = void 0,
this
},
toString: function() {
return "#<fabric.Canvas (" + this.complexity() + "): { objects: " + this._objects.length + " }>"
}
}), e(v.StaticCanvas.prototype, v.Observable), e(v.StaticCanvas.prototype, v.Collection), e(v.StaticCanvas.prototype, v.DataURLExporter), e(v.StaticCanvas, {
EMPTY_JSON: '{"objects": [], "background": "white"}',
supports: function(e) {
var t = s();
if (!t || !t.getContext) return null;
var n = t.getContext("2d");
return n && "setLineDash" === e ? void 0 !== n.setLineDash : null
}
}), v.StaticCanvas.prototype.toJSON = v.StaticCanvas.prototype.toObject, v.isLikelyNode && (v.StaticCanvas.prototype.createPNGStream = function() {
var e = a(this.lowerCanvasEl);
return e && e.createPNGStream()
}, v.StaticCanvas.prototype.createJPEGStream = function(e) {
var t = a(this.lowerCanvasEl);
return t && t.createJPEGStream(e)
})
}
}(), v.BaseBrush = v.util.createClass({
color: "rgb(0, 0, 0)",
width: 1,
shadow: null,
strokeLineCap: "round",
strokeLineJoin: "round",
strokeMiterLimit: 10,
strokeDashArray: null,
limitedToCanvasSize: !1,
_setBrushStyles: function(e) {
e.strokeStyle = this.color, e.lineWidth = this.width, e.lineCap = this.strokeLineCap, e.miterLimit = this.strokeMiterLimit, e.lineJoin = this.strokeLineJoin, e.setLineDash(this.strokeDashArray || [])
},
_saveAndTransform: function(e) {
var t = this.canvas.viewportTransform;
e.save(), e.transform(t[0], t[1], t[2], t[3], t[4], t[5])
},
_setShadow: function() {
if (this.shadow) {
var e = this.canvas,
t = this.shadow,
n = e.contextTop,
r = e.getZoom();
e && e._isRetinaScaling() && (r *= v.devicePixelRatio), n.shadowColor = t.color, n.shadowBlur = t.blur * r, n.shadowOffsetX = t.offsetX * r, n.shadowOffsetY = t.offsetY * r
}
},
needsFullRender: function() {
return new v.Color(this.color).getAlpha() < 1 || !!this.shadow
},
_resetShadow: function() {
var e = this.canvas.contextTop;
e.shadowColor = "", e.shadowBlur = e.shadowOffsetX = e.shadowOffsetY = 0
},
_isOutSideCanvas: function(e) {
return e.x < 0 || e.x > this.canvas.getWidth() || e.y < 0 || e.y > this.canvas.getHeight()
}
}), v.PencilBrush = v.util.createClass(v.BaseBrush, {
decimate: .4,
drawStraightLine: !1,
straightLineKey: "shiftKey",
initialize: function(e) {
this.canvas = e, this._points = []
},
needsFullRender: function() {
return this.callSuper("needsFullRender") || this._hasStraightLine
},
_drawSegment: function(e, t, n) {
var r = t.midPointFrom(n);
return e.quadraticCurveTo(t.x, t.y, r.x, r.y), r
},
onMouseDown: function(e, t) {
this.canvas._isMainEvent(t.e) && (this.drawStraightLine = t.e[this.straightLineKey], this._prepareForDrawing(e), this._captureDrawingPath(e), this._render())
},
onMouseMove: function(e, t) {
if (this.canvas._isMainEvent(t.e) && (this.drawStraightLine = t.e[this.straightLineKey], (!0 !== this.limitedToCanvasSize || !this._isOutSideCanvas(e)) && this._captureDrawingPath(e) && this._points.length > 1))
if (this.needsFullRender()) this.canvas.clearContext(this.canvas.contextTop), this._render();
else {
var n = this._points,
r = n.length,
i = this.canvas.contextTop;
this._saveAndTransform(i), this.oldEnd && (i.beginPath(), i.moveTo(this.oldEnd.x, this.oldEnd.y)), this.oldEnd = this._drawSegment(i, n[r - 2], n[r - 1], !0), i.stroke(), i.restore()
}
},
onMouseUp: function(e) {
return !this.canvas._isMainEvent(e.e) || (this.drawStraightLine = !1, this.oldEnd = void 0, this._finalizeAndAddPath(), !1)
},
_prepareForDrawing: function(e) {
var t = new v.Point(e.x, e.y);
this._reset(), this._addPoint(t), this.canvas.contextTop.moveTo(t.x, t.y)
},
_addPoint: function(e) {
return !(this._points.length > 1 && e.eq(this._points[this._points.length - 1]) || (this.drawStraightLine && this._points.length > 1 && (this._hasStraightLine = !0, this._points.pop()), this._points.push(e), 0))
},
_reset: function() {
this._points = [], this._setBrushStyles(this.canvas.contextTop), this._setShadow(), this._hasStraightLine = !1
},
_captureDrawingPath: function(e) {
var t = new v.Point(e.x, e.y);
return this._addPoint(t)
},
_render: function(e) {
var t, n, r = this._points[0],
i = this._points[1];
if (e = e || this.canvas.contextTop, this._saveAndTransform(e), e.beginPath(), 2 === this._points.length && r.x === i.x && r.y === i.y) {
var o = this.width / 1e3;
r = new v.Point(r.x, r.y), i = new v.Point(i.x, i.y), r.x -= o, i.x += o
}
for (e.moveTo(r.x, r.y), t = 1, n = this._points.length; t < n; t++) this._drawSegment(e, r, i), r = this._points[t], i = this._points[t + 1];
e.lineTo(r.x, r.y), e.stroke(), e.restore()
},
convertPointsToSVGPath: function(e) {
var t = this.width / 1e3;
return v.util.getSmoothPathFromPoints(e, t)
},
_isEmptySVGPath: function(e) {
return "M 0 0 Q 0 0 0 0 L 0 0" === v.util.joinPath(e)
},
createPath: function(e) {
var t = new v.Path(e, {
fill: null,
stroke: this.color,
strokeWidth: this.width,
strokeLineCap: this.strokeLineCap,
strokeMiterLimit: this.strokeMiterLimit,
strokeLineJoin: this.strokeLineJoin,
strokeDashArray: this.strokeDashArray
});
return this.shadow && (this.shadow.affectStroke = !0, t.shadow = new v.Shadow(this.shadow)), t
},
decimatePoints: function(e, t) {
if (e.length <= 2) return e;
var n, r = this.canvas.getZoom(),
i = Math.pow(t / r, 2),
o = e.length - 1,
a = e[0],
s = [a];
for (n = 1; n < o - 1; n++) Math.pow(a.x - e[n].x, 2) + Math.pow(a.y - e[n].y, 2) >= i && (a = e[n], s.push(a));
return s.push(e[o]), s
},
_finalizeAndAddPath: function() {
this.canvas.contextTop.closePath(), this.decimate && (this._points = this.decimatePoints(this._points, this.decimate));
var e = this.convertPointsToSVGPath(this._points);
if (this._isEmptySVGPath(e)) this.canvas.requestRenderAll();
else {
var t = this.createPath(e);
this.canvas.clearContext(this.canvas.contextTop), this.canvas.fire("before:path:created", {
path: t
}), this.canvas.add(t), this.canvas.requestRenderAll(), t.setCoords(), this._resetShadow(), this.canvas.fire("path:created", {
path: t
})
}
}
}), v.CircleBrush = v.util.createClass(v.BaseBrush, {
width: 10,
initialize: function(e) {
this.canvas = e, this.points = []
},
drawDot: function(e) {
var t = this.addPoint(e),
n = this.canvas.contextTop;
this._saveAndTransform(n), this.dot(n, t), n.restore()
},
dot: function(e, t) {
e.fillStyle = t.fill, e.beginPath(), e.arc(t.x, t.y, t.radius, 0, 2 * Math.PI, !1), e.closePath(), e.fill()
},
onMouseDown: function(e) {
this.points.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.drawDot(e)
},
_render: function() {
var e, t, n = this.canvas.contextTop,
r = this.points;
for (this._saveAndTransform(n), e = 0, t = r.length; e < t; e++) this.dot(n, r[e]);
n.restore()
},
onMouseMove: function(e) {
!0 === this.limitedToCanvasSize && this._isOutSideCanvas(e) || (this.needsFullRender() ? (this.canvas.clearContext(this.canvas.contextTop), this.addPoint(e), this._render()) : this.drawDot(e))
},
onMouseUp: function() {
var e, t, n = this.canvas.renderOnAddRemove;
this.canvas.renderOnAddRemove = !1;
var r = [];
for (e = 0, t = this.points.length; e < t; e++) {
var i = this.points[e],
o = new v.Circle({
radius: i.radius,
left: i.x,
top: i.y,
originX: "center",
originY: "center",
fill: i.fill
});
this.shadow && (o.shadow = new v.Shadow(this.shadow)), r.push(o)
}
var a = new v.Group(r);
a.canvas = this.canvas, this.canvas.fire("before:path:created", {
path: a
}), this.canvas.add(a), this.canvas.fire("path:created", {
path: a
}), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = n, this.canvas.requestRenderAll()
},
addPoint: function(e) {
var t = new v.Point(e.x, e.y),
n = v.util.getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,
r = new v.Color(this.color).setAlpha(v.util.getRandomInt(0, 100) / 100).toRgba();
return t.radius = n, t.fill = r, this.points.push(t), t
}
}), v.SprayBrush = v.util.createClass(v.BaseBrush, {
width: 10,
density: 20,
dotWidth: 1,
dotWidthVariance: 1,
randomOpacity: !1,
optimizeOverlapping: !0,
initialize: function(e) {
this.canvas = e, this.sprayChunks = []
},
onMouseDown: function(e) {
this.sprayChunks.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.addSprayChunk(e), this.render(this.sprayChunkPoints)
},
onMouseMove: function(e) {
!0 === this.limitedToCanvasSize && this._isOutSideCanvas(e) || (this.addSprayChunk(e), this.render(this.sprayChunkPoints))
},
onMouseUp: function() {
var e = this.canvas.renderOnAddRemove;
this.canvas.renderOnAddRemove = !1;
for (var t = [], n = 0, r = this.sprayChunks.length; n < r; n++)
for (var i = this.sprayChunks[n], o = 0, a = i.length; o < a; o++) {
var s = new v.Rect({
width: i[o].width,
height: i[o].width,
left: i[o].x + 1,
top: i[o].y + 1,
originX: "center",
originY: "center",
fill: this.color
});
t.push(s)
}
this.optimizeOverlapping && (t = this._getOptimizedRects(t));
var l = new v.Group(t);
this.shadow && l.set("shadow", new v.Shadow(this.shadow)), this.canvas.fire("before:path:created", {
path: l
}), this.canvas.add(l), this.canvas.fire("path:created", {
path: l
}), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = e, this.canvas.requestRenderAll()
},
_getOptimizedRects: function(e) {
var t, n, r, i = {};
for (n = 0, r = e.length; n < r; n++) i[t = e[n].left + "" + e[n].top] || (i[t] = e[n]);
var o = [];
for (t in i) o.push(i[t]);
return o
},
render: function(e) {
var t, n, r = this.canvas.contextTop;
for (r.fillStyle = this.color, this._saveAndTransform(r), t = 0, n = e.length; t < n; t++) {
var i = e[t];
void 0 !== i.opacity && (r.globalAlpha = i.opacity), r.fillRect(i.x, i.y, i.width, i.width)
}
r.restore()
},
_render: function() {
var e, t, n = this.canvas.contextTop;
for (n.fillStyle = this.color, this._saveAndTransform(n), e = 0, t = this.sprayChunks.length; e < t; e++) this.render(this.sprayChunks[e]);
n.restore()
},
addSprayChunk: function(e) {
this.sprayChunkPoints = [];
var t, n, r, i, o = this.width / 2;
for (i = 0; i < this.density; i++) {
t = v.util.getRandomInt(e.x - o, e.x + o), n = v.util.getRandomInt(e.y - o, e.y + o), r = this.dotWidthVariance ? v.util.getRandomInt(Math.max(1, this.dotWidth - this.dotWidthVariance), this.dotWidth + this
.dotWidthVariance) : this.dotWidth;
var a = new v.Point(t, n);
a.width = r, this.randomOpacity && (a.opacity = v.util.getRandomInt(0, 100) / 100), this.sprayChunkPoints.push(a)
}
this.sprayChunks.push(this.sprayChunkPoints)
}
}), v.PatternBrush = v.util.createClass(v.PencilBrush, {
getPatternSrc: function() {
var e = v.util.createCanvasElement(),
t = e.getContext("2d");
return e.width = e.height = 25, t.fillStyle = this.color, t.beginPath(), t.arc(10, 10, 10, 0, 2 * Math.PI, !1), t.closePath(), t.fill(), e
},
getPatternSrcFunction: function() {
return String(this.getPatternSrc).replace("this.color", '"' + this.color + '"')
},
getPattern: function(e) {
return e.createPattern(this.source || this.getPatternSrc(), "repeat")
},
_setBrushStyles: function(e) {
this.callSuper("_setBrushStyles", e), e.strokeStyle = this.getPattern(e)
},
createPath: function(e) {
var t = this.callSuper("createPath", e),
n = t._getLeftTopCoords().scalarAdd(t.strokeWidth / 2);
return t.stroke = new v.Pattern({
source: this.source || this.getPatternSrcFunction(),
offsetX: -n.x,
offsetY: -n.y
}), t
}
}),
function() {
var e = v.util.getPointer,
t = v.util.degreesToRadians,
n = v.util.isTouchEvent;
for (var r in v.Canvas = v.util.createClass(v.StaticCanvas, {
initialize: function(e, t) {
t || (t = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(e, t), this._initInteractive(), this._createCacheCanvas()
},
uniformScaling: !0,
uniScaleKey: "shiftKey",
centeredScaling: !1,
centeredRotation: !1,
centeredKey: "altKey",
altActionKey: "shiftKey",
interactive: !0,
selection: !0,
selectionKey: "shiftKey",
altSelectionKey: null,
selectionColor: "rgba(100, 100, 255, 0.3)",
selectionDashArray: [],
selectionBorderColor: "rgba(255, 255, 255, 0.3)",
selectionLineWidth: 1,
selectionFullyContained: !1,
hoverCursor: "move",
moveCursor: "move",
defaultCursor: "default",
freeDrawingCursor: "crosshair",
notAllowedCursor: "not-allowed",
containerClass: "canvas-container",
perPixelTargetFind: !1,
targetFindTolerance: 0,
skipTargetFind: !1,
isDrawingMode: !1,
preserveObjectStacking: !1,
snapAngle: 0,
snapThreshold: null,
stopContextMenu: !1,
fireRightClick: !1,
fireMiddleClick: !1,
targets: [],
enablePointerEvents: !1,
_hoveredTarget: null,
_hoveredTargets: [],
_initInteractive: function() {
this._currentTransform = null, this._groupSelector = null, this._initWrapperElement(), this._createUpperCanvas(), this._initEventListeners(), this._initRetinaScaling(), this.freeDrawingBrush = v.PencilBrush && new v
.PencilBrush(this), this.calcOffset()
},
_chooseObjectsToRender: function() {
var e, t, n, r = this.getActiveObjects();
if (r.length > 0 && !this.preserveObjectStacking) {
t = [], n = [];
for (var i = 0, o = this._objects.length; i < o; i++) e = this._objects[i], -1 === r.indexOf(e) ? t.push(e) : n.push(e);
r.length > 1 && (this._activeObject._objects = n), t.push.apply(t, n)
} else t = this._objects;
return t
},
renderAll: function() {
!this.contextTopDirty || this._groupSelector || this.isDrawingMode || (this.clearContext(this.contextTop), this.contextTopDirty = !1), this.hasLostContext && (this.renderTopLayer(this.contextTop), this.hasLostContext = !
1);
var e = this.contextContainer;
return this.renderCanvas(e, this._chooseObjectsToRender()), this
},
renderTopLayer: function(e) {
e.save(), this.isDrawingMode && this._isCurrentlyDrawing && (this.freeDrawingBrush && this.freeDrawingBrush._render(), this.contextTopDirty = !0), this.selection && this._groupSelector && (this._drawSelection(e), this
.contextTopDirty = !0), e.restore()
},
renderTop: function() {
var e = this.contextTop;
return this.clearContext(e), this.renderTopLayer(e), this.fire("after:render"), this
},
_normalizePointer: function(e, t) {
var n = e.calcTransformMatrix(),
r = v.util.invertTransform(n),
i = this.restorePointerVpt(t);
return v.util.transformPoint(i, r)
},
isTargetTransparent: function(e, t, n) {
if (e.shouldCache() && e._cacheCanvas && e !== this._activeObject) {
var r = this._normalizePointer(e, {
x: t,
y: n
}),
i = Math.max(e.cacheTranslationX + r.x * e.zoomX, 0),
o = Math.max(e.cacheTranslationY + r.y * e.zoomY, 0);
return v.util.isTransparent(e._cacheContext, Math.round(i), Math.round(o), this.targetFindTolerance)
}
var a = this.contextCache,
s = e.selectionBackgroundColor,
l = this.viewportTransform;
return e.selectionBackgroundColor = "", this.clearContext(a), a.save(), a.transform(l[0], l[1], l[2], l[3], l[4], l[5]), e.render(a), a.restore(), e.selectionBackgroundColor = s, v.util.isTransparent(a, t, n, this
.targetFindTolerance)
},
_isSelectionKeyPressed: function(e) {
return Array.isArray(this.selectionKey) ? !!this.selectionKey.find((function(t) {
return !0 === e[t]
})) : e[this.selectionKey]
},
_shouldClearSelection: function(e, t) {
var n = this.getActiveObjects(),
r = this._activeObject;
return !t || t && r && n.length > 1 && -1 === n.indexOf(t) && r !== t && !this._isSelectionKeyPressed(e) || t && !t.evented || t && !t.selectable && r && r !== t
},
_shouldCenterTransform: function(e, t, n) {
var r;
if (e) return "scale" === t || "scaleX" === t || "scaleY" === t || "resizing" === t ? r = this.centeredScaling || e.centeredScaling : "rotate" === t && (r = this.centeredRotation || e.centeredRotation), r ? !n : n
},
_getOriginFromCorner: function(e, t) {
var n = {
x: e.originX,
y: e.originY
};
return "ml" === t || "tl" === t || "bl" === t ? n.x = "right" : "mr" !== t && "tr" !== t && "br" !== t || (n.x = "left"), "tl" === t || "mt" === t || "tr" === t ? n.y = "bottom" : "bl" !== t && "mb" !== t && "br" !==
t || (n.y = "top"), n
},
_getActionFromCorner: function(e, t, n, r) {
if (!t || !e) return "drag";
var i = r.controls[t];
return i.getActionName(n, i, r)
},
_setupCurrentTransform: function(e, n, r) {
if (n) {
var i = this.getPointer(e),
o = n.__corner,
a = n.controls[o],
s = r && o ? a.getActionHandler(e, n, a) : v.controlsUtils.dragHandler,
l = this._getActionFromCorner(r, o, e, n),
c = this._getOriginFromCorner(n, o),
u = e[this.centeredKey],
h = {
target: n,
action: l,
actionHandler: s,
corner: o,
scaleX: n.scaleX,
scaleY: n.scaleY,
skewX: n.skewX,
skewY: n.skewY,
offsetX: i.x - n.left,
offsetY: i.y - n.top,
originX: c.x,
originY: c.y,
ex: i.x,
ey: i.y,
lastX: i.x,
lastY: i.y,
theta: t(n.angle),
width: n.width * n.scaleX,
shiftKey: e.shiftKey,
altKey: u,
original: v.util.saveObjectTransform(n)
};
this._shouldCenterTransform(n, l, u) && (h.originX = "center", h.originY = "center"), h.original.originX = c.x, h.original.originY = c.y, this._currentTransform = h, this._beforeTransform(e)
}
},
setCursor: function(e) {
this.upperCanvasEl.style.cursor = e
},
_drawSelection: function(e) {
var t = this._groupSelector,
n = new v.Point(t.ex, t.ey),
r = v.util.transformPoint(n, this.viewportTransform),
i = new v.Point(t.ex + t.left, t.ey + t.top),
o = v.util.transformPoint(i, this.viewportTransform),
a = Math.min(r.x, o.x),
s = Math.min(r.y, o.y),
l = Math.max(r.x, o.x),
c = Math.max(r.y, o.y),
u = this.selectionLineWidth / 2;
this.selectionColor && (e.fillStyle = this.selectionColor, e.fillRect(a, s, l - a, c - s)), this.selectionLineWidth && this.selectionBorderColor && (e.lineWidth = this.selectionLineWidth, e.strokeStyle = this
.selectionBorderColor, a += u, s += u, l -= u, c -= u, v.Object.prototype._setLineDash.call(this, e, this.selectionDashArray), e.strokeRect(a, s, l - a, c - s))
},
findTarget: function(e, t) {
if (!this.skipTargetFind) {
var r, i, o = this.getPointer(e, !0),
a = this._activeObject,
s = this.getActiveObjects(),
l = n(e),
c = s.length > 1 && !t || 1 === s.length;
if (this.targets = [], c && a._findTargetCorner(o, l)) return a;
if (s.length > 1 && !t && a === this._searchPossibleTargets([a], o)) return a;
if (1 === s.length && a === this._searchPossibleTargets([a], o)) {
if (!this.preserveObjectStacking) return a;
r = a, i = this.targets, this.targets = []
}
var u = this._searchPossibleTargets(this._objects, o);
return e[this.altSelectionKey] && u && r && u !== r && (u = r, this.targets = i), u
}
},
_checkTarget: function(e, t, n) {
if (t && t.visible && t.evented && t.containsPoint(e)) {
if (!this.perPixelTargetFind && !t.perPixelTargetFind || t.isEditing) return !0;
if (!this.isTargetTransparent(t, n.x, n.y)) return !0
}
},
_searchPossibleTargets: function(e, t) {
for (var n, r, i = e.length; i--;) {
var o = e[i],
a = o.group ? this._normalizePointer(o.group, t) : t;
if (this._checkTarget(a, o, t)) {
(n = e[i]).subTargetCheck && n instanceof v.Group && (r = this._searchPossibleTargets(n._objects, t)) && this.targets.push(r);
break
}
}
return n
},
restorePointerVpt: function(e) {
return v.util.transformPoint(e, v.util.invertTransform(this.viewportTransform))
},
getPointer: function(t, n) {
if (this._absolutePointer && !n) return this._absolutePointer;
if (this._pointer && n) return this._pointer;
var r, i = e(t),
o = this.upperCanvasEl,
a = o.getBoundingClientRect(),
s = a.width || 0,
l = a.height || 0;
s && l || ("top" in a && "bottom" in a && (l = Math.abs(a.top - a.bottom)), "right" in a && "left" in a && (s = Math.abs(a.right - a.left))), this.calcOffset(), i.x = i.x - this._offset.left, i.y = i.y - this._offset
.top, n || (i = this.restorePointerVpt(i));
var c = this.getRetinaScaling();
return 1 !== c && (i.x /= c, i.y /= c), r = 0 === s || 0 === l ? {
width: 1,
height: 1
} : {
width: o.width / s,
height: o.height / l
}, {
x: i.x * r.width,
y: i.y * r.height
}
},
_createUpperCanvas: function() {
var e = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ""),
t = this.lowerCanvasEl,
n = this.upperCanvasEl;
n ? n.className = "" : (n = this._createCanvasElement(), this.upperCanvasEl = n), v.util.addClass(n, "upper-canvas " + e), this.wrapperEl.appendChild(n), this._copyCanvasStyle(t, n), this._applyCanvasStyle(n), this
.contextTop = n.getContext("2d")
},
getTopContext: function() {
return this.contextTop
},
_createCacheCanvas: function() {
this.cacheCanvasEl = this._createCanvasElement(), this.cacheCanvasEl.setAttribute("width", this.width), this.cacheCanvasEl.setAttribute("height", this.height), this.contextCache = this.cacheCanvasEl.getContext("2d")
},
_initWrapperElement: function() {
this.wrapperEl = v.util.wrapElement(this.lowerCanvasEl, "div", {
class: this.containerClass
}), v.util.setStyle(this.wrapperEl, {
width: this.width + "px",
height: this.height + "px",
position: "relative"
}), v.util.makeElementUnselectable(this.wrapperEl)
},
_applyCanvasStyle: function(e) {
var t = this.width || e.width,
n = this.height || e.height;
v.util.setStyle(e, {
position: "absolute",
width: t + "px",
height: n + "px",
left: 0,
top: 0,
"touch-action": this.allowTouchScrolling ? "manipulation" : "none",
"-ms-touch-action": this.allowTouchScrolling ? "manipulation" : "none"
}), e.width = t, e.height = n, v.util.makeElementUnselectable(e)
},
_copyCanvasStyle: function(e, t) {
t.style.cssText = e.style.cssText
},
getSelectionContext: function() {
return this.contextTop
},
getSelectionElement: function() {
return this.upperCanvasEl
},
getActiveObject: function() {
return this._activeObject
},
getActiveObjects: function() {
var e = this._activeObject;
return e ? "activeSelection" === e.type && e._objects ? e._objects.slice(0) : [e] : []
},
_onObjectRemoved: function(e) {
e === this._activeObject && (this.fire("before:selection:cleared", {
target: e
}), this._discardActiveObject(), this.fire("selection:cleared", {
target: e
}), e.fire("deselected")), e === this._hoveredTarget && (this._hoveredTarget = null, this._hoveredTargets = []), this.callSuper("_onObjectRemoved", e)
},
_fireSelectionEvents: function(e, t) {
var n = !1,
r = this.getActiveObjects(),
i = [],
o = [];
e.forEach((function(e) {
-1 === r.indexOf(e) && (n = !0, e.fire("deselected", {
e: t,
target: e
}), o.push(e))
})), r.forEach((function(r) {
-1 === e.indexOf(r) && (n = !0, r.fire("selected", {
e: t,
target: r
}), i.push(r))
})), e.length > 0 && r.length > 0 ? n && this.fire("selection:updated", {
e: t,
selected: i,
deselected: o
}) : r.length > 0 ? this.fire("selection:created", {
e: t,
selected: i
}) : e.length > 0 && this.fire("selection:cleared", {
e: t,
deselected: o
})
},
setActiveObject: function(e, t) {
var n = this.getActiveObjects();
return this._setActiveObject(e, t), this._fireSelectionEvents(n, t), this
},
_setActiveObject: function(e, t) {
return this._activeObject !== e && (!!this._discardActiveObject(t, e) && (!e.onSelect({
e: t
}) && (this._activeObject = e, !0)))
},
_discardActiveObject: function(e, t) {
var n = this._activeObject;
if (n) {
if (n.onDeselect({
e: e,
object: t
})) return !1;
this._activeObject = null
}
return !0
},
discardActiveObject: function(e) {
var t = this.getActiveObjects(),
n = this.getActiveObject();
return t.length && this.fire("before:selection:cleared", {
target: n,
e: e
}), this._discardActiveObject(e), this._fireSelectionEvents(t, e), this
},
dispose: function() {
var e = this.wrapperEl;
return this.removeListeners(), e.removeChild(this.upperCanvasEl), e.removeChild(this.lowerCanvasEl), this.contextCache = null, this.contextTop = null, ["upperCanvasEl", "cacheCanvasEl"].forEach(function(e) {
v.util.cleanUpJsdomNode(this[e]), this[e] = void 0
}.bind(this)), e.parentNode && e.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl), delete this.wrapperEl, v.StaticCanvas.prototype.dispose.call(this), this
},
clear: function() {
return this.discardActiveObject(), this.clearContext(this.contextTop), this.callSuper("clear")
},
drawControls: function(e) {
var t = this._activeObject;
t && t._renderControls(e)
},
_toObject: function(e, t, n) {
var r = this._realizeGroupTransformOnObject(e),
i = this.callSuper("_toObject", e, t, n);
return this._unwindGroupTransformOnObject(e, r), i
},
_realizeGroupTransformOnObject: function(e) {
if (e.group && "activeSelection" === e.group.type && this._activeObject === e.group) {
var t = {};
return ["angle", "flipX", "flipY", "left", "scaleX", "scaleY", "skewX", "skewY", "top"].forEach((function(n) {
t[n] = e[n]
})), v.util.addTransformToObject(e, this._activeObject.calcOwnMatrix()), t
}
return null
},
_unwindGroupTransformOnObject: function(e, t) {
t && e.set(t)
},
_setSVGObject: function(e, t, n) {
var r = this._realizeGroupTransformOnObject(t);
this.callSuper("_setSVGObject", e, t, n), this._unwindGroupTransformOnObject(t, r)
},
setViewportTransform: function(e) {
this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing && this._activeObject.clearContextTop(), v.StaticCanvas.prototype.setViewportTransform.call(this, e)
}
}), v.StaticCanvas) "prototype" !== r && (v.Canvas[r] = v.StaticCanvas[r])
}(),
function() {
var e = v.util.addListener,
t = v.util.removeListener,
n = {
passive: !1
};
function r(e, t) {
return e.button && e.button === t - 1
}
v.util.object.extend(v.Canvas.prototype, {
mainTouchId: null,
_initEventListeners: function() {
this.removeListeners(), this._bindEvents(), this.addOrRemove(e, "add")
},
_getEventPrefix: function() {
return this.enablePointerEvents ? "pointer" : "mouse"
},
addOrRemove: function(e, t) {
var r = this.upperCanvasEl,
i = this._getEventPrefix();
e(v.window, "resize", this._onResize), e(r, i + "down", this._onMouseDown), e(r, i + "move", this._onMouseMove, n), e(r, i + "out", this._onMouseOut), e(r, i + "enter", this._onMouseEnter), e(r, "wheel", this
._onMouseWheel), e(r, "contextmenu", this._onContextMenu), e(r, "dblclick", this._onDoubleClick), e(r, "dragover", this._onDragOver), e(r, "dragenter", this._onDragEnter), e(r, "dragleave", this._onDragLeave), e(r,
"drop", this._onDrop), this.enablePointerEvents || e(r, "touchstart", this._onTouchStart, n), "undefined" != typeof eventjs && t in eventjs && (eventjs[t](r, "gesture", this._onGesture), eventjs[t](r, "drag", this
._onDrag), eventjs[t](r, "orientation", this._onOrientationChange), eventjs[t](r, "shake", this._onShake), eventjs[t](r, "longpress", this._onLongPress))
},
removeListeners: function() {
this.addOrRemove(t, "remove");
var e = this._getEventPrefix();
t(v.document, e + "up", this._onMouseUp), t(v.document, "touchend", this._onTouchEnd, n), t(v.document, e + "move", this._onMouseMove, n), t(v.document, "touchmove", this._onMouseMove, n)
},
_bindEvents: function() {
this.eventsBound || (this._onMouseDown = this._onMouseDown.bind(this), this._onTouchStart = this._onTouchStart.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this._onMouseUp = this._onMouseUp.bind(this),
this._onTouchEnd = this._onTouchEnd.bind(this), this._onResize = this._onResize.bind(this), this._onGesture = this._onGesture.bind(this), this._onDrag = this._onDrag.bind(this), this._onShake = this._onShake.bind(
this), this._onLongPress = this._onLongPress.bind(this), this._onOrientationChange = this._onOrientationChange.bind(this), this._onMouseWheel = this._onMouseWheel.bind(this), this._onMouseOut = this._onMouseOut.bind(
this), this._onMouseEnter = this._onMouseEnter.bind(this), this._onContextMenu = this._onContextMenu.bind(this), this._onDoubleClick = this._onDoubleClick.bind(this), this._onDragOver = this._onDragOver.bind(this),
this._onDragEnter = this._simpleEventHandler.bind(this, "dragenter"), this._onDragLeave = this._simpleEventHandler.bind(this, "dragleave"), this._onDrop = this._onDrop.bind(this), this.eventsBound = !0)
},
_onGesture: function(e, t) {
this.__onTransformGesture && this.__onTransformGesture(e, t)
},
_onDrag: function(e, t) {
this.__onDrag && this.__onDrag(e, t)
},
_onMouseWheel: function(e) {
this.__onMouseWheel(e)
},
_onMouseOut: function(e) {
var t = this._hoveredTarget;
this.fire("mouse:out", {
target: t,
e: e
}), this._hoveredTarget = null, t && t.fire("mouseout", {
e: e
});
var n = this;
this._hoveredTargets.forEach((function(r) {
n.fire("mouse:out", {
target: t,
e: e
}), r && t.fire("mouseout", {
e: e
})
})), this._hoveredTargets = []
},
_onMouseEnter: function(e) {
this._currentTransform || this.findTarget(e) || (this.fire("mouse:over", {
target: null,
e: e
}), this._hoveredTarget = null, this._hoveredTargets = [])
},
_onOrientationChange: function(e, t) {
this.__onOrientationChange && this.__onOrientationChange(e, t)
},
_onShake: function(e, t) {
this.__onShake && this.__onShake(e, t)
},
_onLongPress: function(e, t) {
this.__onLongPress && this.__onLongPress(e, t)
},
_onDragOver: function(e) {
e.preventDefault();
var t = this._simpleEventHandler("dragover", e);
this._fireEnterLeaveEvents(t, e)
},
_onDrop: function(e) {
return this._simpleEventHandler("drop:before", e), this._simpleEventHandler("drop", e)
},
_onContextMenu: function(e) {
return this.stopContextMenu && (e.stopPropagation(), e.preventDefault()), !1
},
_onDoubleClick: function(e) {
this._cacheTransformEventData(e), this._handleEvent(e, "dblclick"), this._resetTransformEventData(e)
},
getPointerId: function(e) {
var t = e.changedTouches;
return t ? t[0] && t[0].identifier : this.enablePointerEvents ? e.pointerId : -1
},
_isMainEvent: function(e) {
return !0 === e.isPrimary || !1 !== e.isPrimary && ("touchend" === e.type && 0 === e.touches.length || (!e.changedTouches || e.changedTouches[0].identifier === this.mainTouchId))
},
_onTouchStart: function(r) {
r.preventDefault(), null === this.mainTouchId && (this.mainTouchId = this.getPointerId(r)), this.__onMouseDown(r), this._resetTransformEventData();
var i = this.upperCanvasEl,
o = this._getEventPrefix();
e(v.document, "touchend", this._onTouchEnd, n), e(v.document, "touchmove", this._onMouseMove, n), t(i, o + "down", this._onMouseDown)
},
_onMouseDown: function(r) {
this.__onMouseDown(r), this._resetTransformEventData();
var i = this.upperCanvasEl,
o = this._getEventPrefix();
t(i, o + "move", this._onMouseMove, n), e(v.document, o + "up", this._onMouseUp), e(v.document, o + "move", this._onMouseMove, n)
},
_onTouchEnd: function(r) {
if (!(r.touches.length > 0)) {
this.__onMouseUp(r), this._resetTransformEventData(), this.mainTouchId = null;
var i = this._getEventPrefix();
t(v.document, "touchend", this._onTouchEnd, n), t(v.document, "touchmove", this._onMouseMove, n);
var o = this;
this._willAddMouseDown && clearTimeout(this._willAddMouseDown), this._willAddMouseDown = setTimeout((function() {
e(o.upperCanvasEl, i + "down", o._onMouseDown), o._willAddMouseDown = 0
}), 400)
}
},
_onMouseUp: function(r) {
this.__onMouseUp(r), this._resetTransformEventData();
var i = this.upperCanvasEl,
o = this._getEventPrefix();
this._isMainEvent(r) && (t(v.document, o + "up", this._onMouseUp), t(v.document, o + "move", this._onMouseMove, n), e(i, o + "move", this._onMouseMove, n))
},
_onMouseMove: function(e) {
!this.allowTouchScrolling && e.preventDefault && e.preventDefault(), this.__onMouseMove(e)
},
_onResize: function() {
this.calcOffset()
},
_shouldRender: function(e) {
var t = this._activeObject;
return !!(!!t != !!e || t && e && t !== e) || (t && t.isEditing, !1)
},
__onMouseUp: function(e) {
var t, n = this._currentTransform,
i = this._groupSelector,
o = !1,
a = !i || 0 === i.left && 0 === i.top;
if (this._cacheTransformEventData(e), t = this._target, this._handleEvent(e, "up:before"), r(e, 3)) this.fireRightClick && this._handleEvent(e, "up", 3, a);
else {
if (r(e, 2)) return this.fireMiddleClick && this._handleEvent(e, "up", 2, a), void this._resetTransformEventData();
if (this.isDrawingMode && this._isCurrentlyDrawing) this._onMouseUpInDrawingMode(e);
else if (this._isMainEvent(e)) {
if (n && (this._finalizeCurrentTransform(e), o = n.actionPerformed), !a) {
var s = t === this._activeObject;
this._maybeGroupObjects(e), o || (o = this._shouldRender(t) || !s && t === this._activeObject)
}
var l, c;
if (t) {
if (l = t._findTargetCorner(this.getPointer(e, !0), v.util.isTouchEvent(e)), t.selectable && t !== this._activeObject && "up" === t.activeOn) this.setActiveObject(t, e), o = !0;
else {
var u = t.controls[l],
h = u && u.getMouseUpHandler(e, t, u);
h && h(e, n, (c = this.getPointer(e)).x, c.y)
}
t.isMoving = !1
}
if (n && (n.target !== t || n.corner !== l)) {
var p = n.target && n.target.controls[n.corner],
d = p && p.getMouseUpHandler(e, t, u);
c = c || this.getPointer(e), d && d(e, n, c.x, c.y)
}
this._setCursorFromEvent(e, t), this._handleEvent(e, "up", 1, a), this._groupSelector = null, this._currentTransform = null, t && (t.__corner = 0), o ? this.requestRenderAll() : a || this.renderTop()
}
}
},
_simpleEventHandler: function(e, t) {
var n = this.findTarget(t),
r = this.targets,
i = {
e: t,
target: n,
subTargets: r
};
if (this.fire(e, i), n && n.fire(e, i), !r) return n;
for (var o = 0; o < r.length; o++) r[o].fire(e, i);
return n
},
_handleEvent: function(e, t, n, r) {
var i = this._target,
o = this.targets || [],
a = {
e: e,
target: i,
subTargets: o,
button: n || 1,
isClick: r || !1,
pointer: this._pointer,
absolutePointer: this._absolutePointer,
transform: this._currentTransform
};
"up" === t && (a.currentTarget = this.findTarget(e), a.currentSubTargets = this.targets), this.fire("mouse:" + t, a), i && i.fire("mouse" + t, a);
for (var s = 0; s < o.length; s++) o[s].fire("mouse" + t, a)
},
_finalizeCurrentTransform: function(e) {
var t = this._currentTransform,
n = t.target,
r = {
e: e,
target: n,
transform: t,
action: t.action
};
n._scaling && (n._scaling = !1), n.setCoords(), (t.actionPerformed || this.stateful && n.hasStateChanged()) && this._fire("modified", r)
},
_onMouseDownInDrawingMode: function(e) {
this._isCurrentlyDrawing = !0, this.getActiveObject() && this.discardActiveObject(e).requestRenderAll();
var t = this.getPointer(e);
this.freeDrawingBrush.onMouseDown(t, {
e: e,
pointer: t
}), this._handleEvent(e, "down")
},
_onMouseMoveInDrawingMode: function(e) {
if (this._isCurrentlyDrawing) {
var t = this.getPointer(e);
this.freeDrawingBrush.onMouseMove(t, {
e: e,
pointer: t
})
}
this.setCursor(this.freeDrawingCursor), this._handleEvent(e, "move")
},
_onMouseUpInDrawingMode: function(e) {
var t = this.getPointer(e);
this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({
e: e,
pointer: t
}), this._handleEvent(e, "up")
},
__onMouseDown: function(e) {
this._cacheTransformEventData(e), this._handleEvent(e, "down:before");
var t = this._target;
if (r(e, 3)) this.fireRightClick && this._handleEvent(e, "down", 3);
else if (r(e, 2)) this.fireMiddleClick && this._handleEvent(e, "down", 2);
else if (this.isDrawingMode) this._onMouseDownInDrawingMode(e);
else if (this._isMainEvent(e) && !this._currentTransform) {
var n = this._pointer;
this._previousPointer = n;
var i = this._shouldRender(t),
o = this._shouldGroup(e, t);
if (this._shouldClearSelection(e, t) ? this.discardActiveObject(e) : o && (this._handleGrouping(e, t), t = this._activeObject), !this.selection || t && (t.selectable || t.isEditing || t === this._activeObject) || (this
._groupSelector = {
ex: this._absolutePointer.x,
ey: this._absolutePointer.y,
top: 0,
left: 0
}), t) {
var a = t === this._activeObject;
t.selectable && "down" === t.activeOn && this.setActiveObject(t, e);
var s = t._findTargetCorner(this.getPointer(e, !0), v.util.isTouchEvent(e));
if (t.__corner = s, t === this._activeObject && (s || !o)) {
this._setupCurrentTransform(e, t, a);
var l = t.controls[s],
c = (n = this.getPointer(e), l && l.getMouseDownHandler(e, t, l));
c && c(e, this._currentTransform, n.x, n.y)
}
}
this._handleEvent(e, "down"), (i || o) && this.requestRenderAll()
}
},
_resetTransformEventData: function() {
this._target = null, this._pointer = null, this._absolutePointer = null
},
_cacheTransformEventData: function(e) {
this._resetTransformEventData(), this._pointer = this.getPointer(e, !0), this._absolutePointer = this.restorePointerVpt(this._pointer), this._target = this._currentTransform ? this._currentTransform.target : this
.findTarget(e) || null
},
_beforeTransform: function(e) {
var t = this._currentTransform;
this.stateful && t.target.saveState(), this.fire("before:transform", {
e: e,
transform: t
})
},
__onMouseMove: function(e) {
var t, n;
if (this._handleEvent(e, "move:before"), this._cacheTransformEventData(e), this.isDrawingMode) this._onMouseMoveInDrawingMode(e);
else if (this._isMainEvent(e)) {
var r = this._groupSelector;
r ? (n = this._absolutePointer, r.left = n.x - r.ex, r.top = n.y - r.ey, this.renderTop()) : this._currentTransform ? this._transformObject(e) : (t = this.findTarget(e) || null, this._setCursorFromEvent(e, t), this
._fireOverOutEvents(t, e)), this._handleEvent(e, "move"), this._resetTransformEventData()
}
},
_fireOverOutEvents: function(e, t) {
var n = this._hoveredTarget,
r = this._hoveredTargets,
i = this.targets,
o = Math.max(r.length, i.length);
this.fireSyntheticInOutEvents(e, t, {
oldTarget: n,
evtOut: "mouseout",
canvasEvtOut: "mouse:out",
evtIn: "mouseover",
canvasEvtIn: "mouse:over"
});
for (var a = 0; a < o; a++) this.fireSyntheticInOutEvents(i[a], t, {
oldTarget: r[a],
evtOut: "mouseout",
evtIn: "mouseover"
});
this._hoveredTarget = e, this._hoveredTargets = this.targets.concat()
},
_fireEnterLeaveEvents: function(e, t) {
var n = this._draggedoverTarget,
r = this._hoveredTargets,
i = this.targets,
o = Math.max(r.length, i.length);
this.fireSyntheticInOutEvents(e, t, {
oldTarget: n,
evtOut: "dragleave",
evtIn: "dragenter"
});
for (var a = 0; a < o; a++) this.fireSyntheticInOutEvents(i[a], t, {
oldTarget: r[a],
evtOut: "dragleave",
evtIn: "dragenter"
});
this._draggedoverTarget = e
},
fireSyntheticInOutEvents: function(e, t, n) {
var r, i, o, a = n.oldTarget,
s = a !== e,
l = n.canvasEvtIn,
c = n.canvasEvtOut;
s && (r = {
e: t,
target: e,
previousTarget: a
}, i = {
e: t,
target: a,
nextTarget: e
}), o = e && s, a && s && (c && this.fire(c, i), a.fire(n.evtOut, i)), o && (l && this.fire(l, r), e.fire(n.evtIn, r))
},
__onMouseWheel: function(e) {
this._cacheTransformEventData(e), this._handleEvent(e, "wheel"), this._resetTransformEventData()
},
_transformObject: function(e) {
var t = this.getPointer(e),
n = this._currentTransform;
n.reset = !1, n.shiftKey = e.shiftKey, n.altKey = e[this.centeredKey], this._performTransformAction(e, n, t), n.actionPerformed && this.requestRenderAll()
},
_performTransformAction: function(e, t, n) {
var r = n.x,
i = n.y,
o = t.action,
a = !1,
s = t.actionHandler;
s && (a = s(e, t, r, i)), "drag" === o && a && (t.target.isMoving = !0, this.setCursor(t.target.moveCursor || this.moveCursor)), t.actionPerformed = t.actionPerformed || a
},
_fire: v.controlsUtils.fireEvent,
_setCursorFromEvent: function(e, t) {
if (!t) return this.setCursor(this.defaultCursor), !1;
var n = t.hoverCursor || this.hoverCursor,
r = this._activeObject && "activeSelection" === this._activeObject.type ? this._activeObject : null,
i = (!r || !r.contains(t)) && t._findTargetCorner(this.getPointer(e, !0));
i ? this.setCursor(this.getCornerCursor(i, t, e)) : (t.subTargetCheck && this.targets.concat().reverse().map((function(e) {
n = e.hoverCursor || n
})), this.setCursor(n))
},
getCornerCursor: function(e, t, n) {
var r = t.controls[e];
return r.cursorStyleHandler(n, r, t)
}
})
}(),
function() {
var e = Math.min,
t = Math.max;
v.util.object.extend(v.Canvas.prototype, {
_shouldGroup: function(e, t) {
var n = this._activeObject;
return n && this._isSelectionKeyPressed(e) && t && t.selectable && this.selection && (n !== t || "activeSelection" === n.type) && !t.onSelect({
e: e
})
},
_handleGrouping: function(e, t) {
var n = this._activeObject;
n.__corner || (t !== n || (t = this.findTarget(e, !0)) && t.selectable) && (n && "activeSelection" === n.type ? this._updateActiveSelection(t, e) : this._createActiveSelection(t, e))
},
_updateActiveSelection: function(e, t) {
var n = this._activeObject,
r = n._objects.slice(0);
n.contains(e) ? (n.removeWithUpdate(e), this._hoveredTarget = e, this._hoveredTargets = this.targets.concat(), 1 === n.size() && this._setActiveObject(n.item(0), t)) : (n.addWithUpdate(e), this._hoveredTarget = n, this
._hoveredTargets = this.targets.concat()), this._fireSelectionEvents(r, t)
},
_createActiveSelection: function(e, t) {
var n = this.getActiveObjects(),
r = this._createGroup(e);
this._hoveredTarget = r, this._setActiveObject(r, t), this._fireSelectionEvents(n, t)
},
_createGroup: function(e) {
var t = this._objects,
n = t.indexOf(this._activeObject) < t.indexOf(e) ? [this._activeObject, e] : [e, this._activeObject];
return this._activeObject.isEditing && this._activeObject.exitEditing(), new v.ActiveSelection(n, {
canvas: this
})
},
_groupSelectedObjects: function(e) {
var t, n = this._collectObjects(e);
1 === n.length ? this.setActiveObject(n[0], e) : n.length > 1 && (t = new v.ActiveSelection(n.reverse(), {
canvas: this
}), this.setActiveObject(t, e))
},
_collectObjects: function(n) {
for (var r, i = [], o = this._groupSelector.ex, a = this._groupSelector.ey, s = o + this._groupSelector.left, l = a + this._groupSelector.top, c = new v.Point(e(o, s), e(a, l)), u = new v.Point(t(o, s), t(a, l)), h = !this
.selectionFullyContained, p = o === s && a === l, d = this._objects.length; d-- && !((r = this._objects[d]) && r.selectable && r.visible && (h && r.intersectsWithRect(c, u, !0) || r.isContainedWithinRect(c, u, !0) ||
h && r.containsPoint(c, null, !0) || h && r.containsPoint(u, null, !0)) && (i.push(r), p)););
return i.length > 1 && (i = i.filter((function(e) {
return !e.onSelect({
e: n
})
}))), i
},
_maybeGroupObjects: function(e) {
this.selection && this._groupSelector && this._groupSelectedObjects(e), this.setCursor(this.defaultCursor), this._groupSelector = null
}
})
}(), v.util.object.extend(v.StaticCanvas.prototype, {
toDataURL: function(e) {
e || (e = {});
var t = e.format || "png",
n = e.quality || 1,
r = (e.multiplier || 1) * (e.enableRetinaScaling ? this.getRetinaScaling() : 1),
i = this.toCanvasElement(r, e);
return v.util.toDataURL(i, t, n)
},
toCanvasElement: function(e, t) {
e = e || 1;
var n = ((t = t || {}).width || this.width) * e,
r = (t.height || this.height) * e,
i = this.getZoom(),
o = this.width,
a = this.height,
s = i * e,
l = this.viewportTransform,
c = (l[4] - (t.left || 0)) * e,
u = (l[5] - (t.top || 0)) * e,
h = this.interactive,
p = [s, 0, 0, s, c, u],
d = this.enableRetinaScaling,
f = v.util.createCanvasElement(),
g = this.contextTop;
return f.width = n, f.height = r, this.contextTop = null, this.enableRetinaScaling = !1, this.interactive = !1, this.viewportTransform = p, this.width = n, this.height = r, this.calcViewportBoundaries(), this.renderCanvas(f
.getContext("2d"), this._objects), this.viewportTransform = l, this.width = o, this.height = a, this.calcViewportBoundaries(), this.interactive = h, this.enableRetinaScaling = d, this.contextTop = g, f
}
}), v.util.object.extend(v.StaticCanvas.prototype, {
loadFromJSON: function(e, t, n) {
if (e) {
var r = "string" == typeof e ? JSON.parse(e) : v.util.object.clone(e),
i = this,
o = r.clipPath,
a = this.renderOnAddRemove;
return this.renderOnAddRemove = !1, delete r.clipPath, this._enlivenObjects(r.objects, (function(e) {
i.clear(), i._setBgOverlay(r, (function() {
o ? i._enlivenObjects([o], (function(n) {
i.clipPath = n[0], i.__setupCanvas.call(i, r, e, a, t)
})) : i.__setupCanvas.call(i, r, e, a, t)
}))
}), n), this
}
},
__setupCanvas: function(e, t, n, r) {
var i = this;
t.forEach((function(e, t) {
i.insertAt(e, t)
})), this.renderOnAddRemove = n, delete e.objects, delete e.backgroundImage, delete e.overlayImage, delete e.background, delete e.overlay, this._setOptions(e), this.renderAll(), r && r()
},
_setBgOverlay: function(e, t) {
var n = {
backgroundColor: !1,
overlayColor: !1,
backgroundImage: !1,
overlayImage: !1
};
if (e.backgroundImage || e.overlayImage || e.background || e.overlay) {
var r = function() {
n.backgroundImage && n.overlayImage && n.backgroundColor && n.overlayColor && t && t()
};
this.__setBgOverlay("backgroundImage", e.backgroundImage, n, r), this.__setBgOverlay("overlayImage", e.overlayImage, n, r), this.__setBgOverlay("backgroundColor", e.background, n, r), this.__setBgOverlay("overlayColor", e
.overlay, n, r)
} else t && t()
},
__setBgOverlay: function(e, t, n, r) {
var i = this;
if (!t) return n[e] = !0, void(r && r());
"backgroundImage" === e || "overlayImage" === e ? v.util.enlivenObjects([t], (function(t) {
i[e] = t[0], n[e] = !0, r && r()
})) : this["set" + v.util.string.capitalize(e, !0)](t, (function() {
n[e] = !0, r && r()
}))
},
_enlivenObjects: function(e, t, n) {
e && 0 !== e.length ? v.util.enlivenObjects(e, (function(e) {
t && t(e)
}), null, n) : t && t([])
},
_toDataURL: function(e, t) {
this.clone((function(n) {
t(n.toDataURL(e))
}))
},
_toDataURLWithMultiplier: function(e, t, n) {
this.clone((function(r) {
n(r.toDataURLWithMultiplier(e, t))
}))
},
clone: function(e, t) {
var n = JSON.stringify(this.toJSON(t));
this.cloneWithoutData((function(t) {
t.loadFromJSON(n, (function() {
e && e(t)
}))
}))
},
cloneWithoutData: function(e) {
var t = v.util.createCanvasElement();
t.width = this.width, t.height = this.height;
var n = new v.Canvas(t);
this.backgroundImage ? (n.setBackgroundImage(this.backgroundImage.src, (function() {
n.renderAll(), e && e(n)
})), n.backgroundImageOpacity = this.backgroundImageOpacity, n.backgroundImageStretch = this.backgroundImageStretch) : e && e(n)
}
}),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.util.object.clone,
i = t.util.toFixed,
o = t.util.string.capitalize,
a = t.util.degreesToRadians,
s = !t.isLikelyNode;
t.Object || (t.Object = t.util.createClass(t.CommonMethods, {
type: "object",
originX: "left",
originY: "top",
top: 0,
left: 0,
width: 0,
height: 0,
scaleX: 1,
scaleY: 1,
flipX: !1,
flipY: !1,
opacity: 1,
angle: 0,
skewX: 0,
skewY: 0,
cornerSize: 13,
touchCornerSize: 24,
transparentCorners: !0,
hoverCursor: null,
moveCursor: null,
padding: 0,
borderColor: "rgb(178,204,255)",
borderDashArray: null,
cornerColor: "rgb(178,204,255)",
cornerStrokeColor: null,
cornerStyle: "rect",
cornerDashArray: null,
centeredScaling: !1,
centeredRotation: !0,
fill: "rgb(0,0,0)",
fillRule: "nonzero",
globalCompositeOperation: "source-over",
backgroundColor: "",
selectionBackgroundColor: "",
stroke: null,
strokeWidth: 1,
strokeDashArray: null,
strokeDashOffset: 0,
strokeLineCap: "butt",
strokeLineJoin: "miter",
strokeMiterLimit: 4,
shadow: null,
borderOpacityWhenMoving: .4,
borderScaleFactor: 1,
minScaleLimit: 0,
selectable: !0,
evented: !0,
visible: !0,
hasControls: !0,
hasBorders: !0,
perPixelTargetFind: !1,
includeDefaultValues: !0,
lockMovementX: !1,
lockMovementY: !1,
lockRotation: !1,
lockScalingX: !1,
lockScalingY: !1,
lockSkewingX: !1,
lockSkewingY: !1,
lockScalingFlip: !1,
excludeFromExport: !1,
objectCaching: s,
statefullCache: !1,
noScaleCache: !0,
strokeUniform: !1,
dirty: !0,
__corner: 0,
paintFirst: "fill",
activeOn: "down",
stateProperties: "top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform"
.split(" "),
cacheProperties: "fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),
colorProperties: "fill stroke backgroundColor".split(" "),
clipPath: void 0,
inverted: !1,
absolutePositioned: !1,
initialize: function(e) {
e && this.setOptions(e)
},
_createCacheCanvas: function() {
this._cacheProperties = {}, this._cacheCanvas = t.util.createCanvasElement(), this._cacheContext = this._cacheCanvas.getContext("2d"), this._updateCacheCanvas(), this.dirty = !0
},
_limitCacheSize: function(e) {
var n = t.perfLimitSizeTotal,
r = e.width,
i = e.height,
o = t.maxCacheSideLimit,
a = t.minCacheSideLimit;
if (r <= o && i <= o && r * i <= n) return r < a && (e.width = a), i < a && (e.height = a), e;
var s = r / i,
l = t.util.limitDimsByArea(s, n),
c = t.util.capValue,
u = c(a, l.x, o),
h = c(a, l.y, o);
return r > u && (e.zoomX /= r / u, e.width = u, e.capped = !0), i > h && (e.zoomY /= i / h, e.height = h, e.capped = !0), e
},
_getCacheCanvasDimensions: function() {
var e = this.getTotalObjectScaling(),
t = this._getTransformedDimensions(0, 0),
n = t.x * e.scaleX / this.scaleX,
r = t.y * e.scaleY / this.scaleY;
return {
width: n + 2,
height: r + 2,
zoomX: e.scaleX,
zoomY: e.scaleY,
x: n,
y: r
}
},
_updateCacheCanvas: function() {
var e = this.canvas;
if (this.noScaleCache && e && e._currentTransform) {
var n = e._currentTransform.target,
r = e._currentTransform.action;
if (this === n && r.slice && "scale" === r.slice(0, 5)) return !1
}
var i, o, a = this._cacheCanvas,
s = this._limitCacheSize(this._getCacheCanvasDimensions()),
l = t.minCacheSideLimit,
c = s.width,
u = s.height,
h = s.zoomX,
p = s.zoomY,
d = c !== this.cacheWidth || u !== this.cacheHeight,
f = this.zoomX !== h || this.zoomY !== p,
g = d || f,
m = 0,
v = 0,
_ = !1;
if (d) {
var b = this._cacheCanvas.width,
y = this._cacheCanvas.height,
w = c > b || u > y;
_ = w || (c < .9 * b || u < .9 * y) && b > l && y > l, w && !s.capped && (c > l || u > l) && (m = .1 * c, v = .1 * u)
}
return this instanceof t.Text && this.path && (g = !0, _ = !0, m += this.getHeightOfLine(0) * this.zoomX, v += this.getHeightOfLine(0) * this.zoomY), !!g && (_ ? (a.width = Math.ceil(c + m), a.height = Math.ceil(u +
v)) : (this._cacheContext.setTransform(1, 0, 0, 1, 0, 0), this._cacheContext.clearRect(0, 0, a.width, a.height)), i = s.x / 2, o = s.y / 2, this.cacheTranslationX = Math.round(a.width / 2 - i) + i, this
.cacheTranslationY = Math.round(a.height / 2 - o) + o, this.cacheWidth = c, this.cacheHeight = u, this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY), this._cacheContext.scale(h, p), this
.zoomX = h, this.zoomY = p, !0)
},
setOptions: function(e) {
this._setOptions(e), this._initGradient(e.fill, "fill"), this._initGradient(e.stroke, "stroke"), this._initPattern(e.fill, "fill"), this._initPattern(e.stroke, "stroke")
},
transform: function(e) {
var t = this.group && !this.group._transformDone || this.group && this.canvas && e === this.canvas.contextTop,
n = this.calcTransformMatrix(!t);
e.transform(n[0], n[1], n[2], n[3], n[4], n[5])
},
toObject: function(e) {
var n = t.Object.NUM_FRACTION_DIGITS,
r = {
type: this.type,
version: t.version,
originX: this.originX,
originY: this.originY,
left: i(this.left, n),
top: i(this.top, n),
width: i(this.width, n),
height: i(this.height, n),
fill: this.fill && this.fill.toObject ? this.fill.toObject() : this.fill,
stroke: this.stroke && this.stroke.toObject ? this.stroke.toObject() : this.stroke,
strokeWidth: i(this.strokeWidth, n),
strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,
strokeLineCap: this.strokeLineCap,
strokeDashOffset: this.strokeDashOffset,
strokeLineJoin: this.strokeLineJoin,
strokeUniform: this.strokeUniform,
strokeMiterLimit: i(this.strokeMiterLimit, n),
scaleX: i(this.scaleX, n),
scaleY: i(this.scaleY, n),
angle: i(this.angle, n),
flipX: this.flipX,
flipY: this.flipY,
opacity: i(this.opacity, n),
shadow: this.shadow && this.shadow.toObject ? this.shadow.toObject() : this.shadow,
visible: this.visible,
backgroundColor: this.backgroundColor,
fillRule: this.fillRule,
paintFirst: this.paintFirst,
globalCompositeOperation: this.globalCompositeOperation,
skewX: i(this.skewX, n),
skewY: i(this.skewY, n)
};
return this.clipPath && !this.clipPath.excludeFromExport && (r.clipPath = this.clipPath.toObject(e), r.clipPath.inverted = this.clipPath.inverted, r.clipPath.absolutePositioned = this.clipPath.absolutePositioned), t.util
.populateWithProperties(this, r, e), this.includeDefaultValues || (r = this._removeDefaultValues(r)), r
},
toDatalessObject: function(e) {
return this.toObject(e)
},
_removeDefaultValues: function(e) {
var n = t.util.getKlass(e.type).prototype;
return n.stateProperties.forEach((function(t) {
"left" !== t && "top" !== t && (e[t] === n[t] && delete e[t], Array.isArray(e[t]) && Array.isArray(n[t]) && 0 === e[t].length && 0 === n[t].length && delete e[t])
})), e
},
toString: function() {
return "#<fabric." + o(this.type) + ">"
},
getObjectScaling: function() {
if (!this.group) return {
scaleX: this.scaleX,
scaleY: this.scaleY
};
var e = t.util.qrDecompose(this.calcTransformMatrix());
return {
scaleX: Math.abs(e.scaleX),
scaleY: Math.abs(e.scaleY)
}
},
getTotalObjectScaling: function() {
var e = this.getObjectScaling(),
t = e.scaleX,
n = e.scaleY;
if (this.canvas) {
var r = this.canvas.getZoom(),
i = this.canvas.getRetinaScaling();
t *= r * i, n *= r * i
}
return {
scaleX: t,
scaleY: n
}
},
getObjectOpacity: function() {
var e = this.opacity;
return this.group && (e *= this.group.getObjectOpacity()), e
},
_set: function(e, n) {
var r = "scaleX" === e || "scaleY" === e,
i = this[e] !== n,
o = !1;
return r && (n = this._constrainScale(n)), "scaleX" === e && n < 0 ? (this.flipX = !this.flipX, n *= -1) : "scaleY" === e && n < 0 ? (this.flipY = !this.flipY, n *= -1) : "shadow" !== e || !n || n instanceof t.Shadow ?
"dirty" === e && this.group && this.group.set("dirty", n) : n = new t.Shadow(n), this[e] = n, i && (o = this.group && this.group.isOnACache(), this.cacheProperties.indexOf(e) > -1 ? (this.dirty = !0, o && this.group
.set("dirty", !0)) : o && this.stateProperties.indexOf(e) > -1 && this.group.set("dirty", !0)), this
},
setOnGroup: function() {},
getViewportTransform: function() {
return this.canvas && this.canvas.viewportTransform ? this.canvas.viewportTransform : t.iMatrix.concat()
},
isNotVisible: function() {
return 0 === this.opacity || !this.width && !this.height && 0 === this.strokeWidth || !this.visible
},
render: function(e) {
this.isNotVisible() || this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (e.save(), this._setupCompositeOperation(e), this.drawSelectionBackground(e), this.transform(e), this._setOpacity(
e), this._setShadow(e, this), this.shouldCache() ? (this.renderCache(), this.drawCacheOnCanvas(e)) : (this._removeCacheCanvas(), this.dirty = !1, this.drawObject(e), this.objectCaching && this.statefullCache && this
.saveState({
propertySet: "cacheProperties"
})), e.restore())
},
renderCache: function(e) {
e = e || {}, this._cacheCanvas && this._cacheContext || this._createCacheCanvas(), this.isCacheDirty() && (this.statefullCache && this.saveState({
propertySet: "cacheProperties"
}), this.drawObject(this._cacheContext, e.forClipping), this.dirty = !1)
},
_removeCacheCanvas: function() {
this._cacheCanvas = null, this._cacheContext = null, this.cacheWidth = 0, this.cacheHeight = 0
},
hasStroke: function() {
return this.stroke && "transparent" !== this.stroke && 0 !== this.strokeWidth
},
hasFill: function() {
return this.fill && "transparent" !== this.fill
},
needsItsOwnCache: function() {
return !("stroke" !== this.paintFirst || !this.hasFill() || !this.hasStroke() || "object" != typeof this.shadow) || !!this.clipPath
},
shouldCache: function() {
return this.ownCaching = this.needsItsOwnCache() || this.objectCaching && (!this.group || !this.group.isOnACache()), this.ownCaching
},
willDrawShadow: function() {
return !!this.shadow && (0 !== this.shadow.offsetX || 0 !== this.shadow.offsetY)
},
drawClipPathOnCache: function(e, n) {
if (e.save(), n.inverted ? e.globalCompositeOperation = "destination-out" : e.globalCompositeOperation = "destination-in", n.absolutePositioned) {
var r = t.util.invertTransform(this.calcTransformMatrix());
e.transform(r[0], r[1], r[2], r[3], r[4], r[5])
}
n.transform(e), e.scale(1 / n.zoomX, 1 / n.zoomY), e.drawImage(n._cacheCanvas, -n.cacheTranslationX, -n.cacheTranslationY), e.restore()
},
drawObject: function(e, t) {
var n = this.fill,
r = this.stroke;
t ? (this.fill = "black", this.stroke = "", this._setClippingProperties(e)) : this._renderBackground(e), this._render(e), this._drawClipPath(e, this.clipPath), this.fill = n, this.stroke = r
},
_drawClipPath: function(e, t) {
t && (t.canvas = this.canvas, t.shouldCache(), t._transformDone = !0, t.renderCache({
forClipping: !0
}), this.drawClipPathOnCache(e, t))
},
drawCacheOnCanvas: function(e) {
e.scale(1 / this.zoomX, 1 / this.zoomY), e.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY)
},
isCacheDirty: function(e) {
if (this.isNotVisible()) return !1;
if (this._cacheCanvas && this._cacheContext && !e && this._updateCacheCanvas()) return !0;
if (this.dirty || this.clipPath && this.clipPath.absolutePositioned || this.statefullCache && this.hasStateChanged("cacheProperties")) {
if (this._cacheCanvas && this._cacheContext && !e) {
var t = this.cacheWidth / this.zoomX,
n = this.cacheHeight / this.zoomY;
this._cacheContext.clearRect(-t / 2, -n / 2, t, n)
}
return !0
}
return !1
},
_renderBackground: function(e) {
if (this.backgroundColor) {
var t = this._getNonTransformedDimensions();
e.fillStyle = this.backgroundColor, e.fillRect(-t.x / 2, -t.y / 2, t.x, t.y), this._removeShadow(e)
}
},
_setOpacity: function(e) {
this.group && !this.group._transformDone ? e.globalAlpha = this.getObjectOpacity() : e.globalAlpha *= this.opacity
},
_setStrokeStyles: function(e, t) {
var n = t.stroke;
n && (e.lineWidth = t.strokeWidth, e.lineCap = t.strokeLineCap, e.lineDashOffset = t.strokeDashOffset, e.lineJoin = t.strokeLineJoin, e.miterLimit = t.strokeMiterLimit, n.toLive ? "percentage" === n.gradientUnits || n
.gradientTransform || n.patternTransform ? this._applyPatternForTransformedGradient(e, n) : (e.strokeStyle = n.toLive(e, this), this._applyPatternGradientTransform(e, n)) : e.strokeStyle = t.stroke)
},
_setFillStyles: function(e, t) {
var n = t.fill;
n && (n.toLive ? (e.fillStyle = n.toLive(e, this), this._applyPatternGradientTransform(e, t.fill)) : e.fillStyle = n)
},
_setClippingProperties: function(e) {
e.globalAlpha = 1, e.strokeStyle = "transparent", e.fillStyle = "#000000"
},
_setLineDash: function(e, t) {
t && 0 !== t.length && (1 & t.length && t.push.apply(t, t), e.setLineDash(t))
},
_renderControls: function(e, n) {
var r, i, o, s = this.getViewportTransform(),
l = this.calcTransformMatrix();
i = void 0 !== (n = n || {}).hasBorders ? n.hasBorders : this.hasBorders, o = void 0 !== n.hasControls ? n.hasControls : this.hasControls, l = t.util.multiplyTransformMatrices(s, l), r = t.util.qrDecompose(l), e.save(),
e.translate(r.translateX, r.translateY), e.lineWidth = 1 * this.borderScaleFactor, this.group || (e.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1), this.flipX && (r.angle -= 180), e.rotate(a(this
.group ? r.angle : this.angle)), n.forActiveSelection || this.group ? i && this.drawBordersInGroup(e, r, n) : i && this.drawBorders(e, n), o && this.drawControls(e, n), e.restore()
},
_setShadow: function(e) {
if (this.shadow) {
var n, r = this.shadow,
i = this.canvas,
o = i && i.viewportTransform[0] || 1,
a = i && i.viewportTransform[3] || 1;
n = r.nonScaling ? {
scaleX: 1,
scaleY: 1
} : this.getObjectScaling(), i && i._isRetinaScaling() && (o *= t.devicePixelRatio, a *= t.devicePixelRatio), e.shadowColor = r.color, e.shadowBlur = r.blur * t.browserShadowBlurConstant * (o + a) * (n.scaleX + n
.scaleY) / 4, e.shadowOffsetX = r.offsetX * o * n.scaleX, e.shadowOffsetY = r.offsetY * a * n.scaleY
}
},
_removeShadow: function(e) {
this.shadow && (e.shadowColor = "", e.shadowBlur = e.shadowOffsetX = e.shadowOffsetY = 0)
},
_applyPatternGradientTransform: function(e, t) {
if (!t || !t.toLive) return {
offsetX: 0,
offsetY: 0
};
var n = t.gradientTransform || t.patternTransform,
r = -this.width / 2 + t.offsetX || 0,
i = -this.height / 2 + t.offsetY || 0;
return "percentage" === t.gradientUnits ? e.transform(this.width, 0, 0, this.height, r, i) : e.transform(1, 0, 0, 1, r, i), n && e.transform(n[0], n[1], n[2], n[3], n[4], n[5]), {
offsetX: r,
offsetY: i
}
},
_renderPaintInOrder: function(e) {
"stroke" === this.paintFirst ? (this._renderStroke(e), this._renderFill(e)) : (this._renderFill(e), this._renderStroke(e))
},
_render: function() {},
_renderFill: function(e) {
this.fill && (e.save(), this._setFillStyles(e, this), "evenodd" === this.fillRule ? e.fill("evenodd") : e.fill(), e.restore())
},
_renderStroke: function(e) {
if (this.stroke && 0 !== this.strokeWidth) {
if (this.shadow && !this.shadow.affectStroke && this._removeShadow(e), e.save(), this.strokeUniform && this.group) {
var t = this.getObjectScaling();
e.scale(1 / t.scaleX, 1 / t.scaleY)
} else this.strokeUniform && e.scale(1 / this.scaleX, 1 / this.scaleY);
this._setLineDash(e, this.strokeDashArray), this._setStrokeStyles(e, this), e.stroke(), e.restore()
}
},
_applyPatternForTransformedGradient: function(e, n) {
var r, i = this._limitCacheSize(this._getCacheCanvasDimensions()),
o = t.util.createCanvasElement(),
a = this.canvas.getRetinaScaling(),
s = i.x / this.scaleX / a,
l = i.y / this.scaleY / a;
o.width = s, o.height = l, (r = o.getContext("2d")).beginPath(), r.moveTo(0, 0), r.lineTo(s, 0), r.lineTo(s, l), r.lineTo(0, l), r.closePath(), r.translate(s / 2, l / 2), r.scale(i.zoomX / this.scaleX / a, i.zoomY / this
.scaleY / a), this._applyPatternGradientTransform(r, n), r.fillStyle = n.toLive(e), r.fill(), e.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2), e.scale(a * this.scaleX / i
.zoomX, a * this.scaleY / i.zoomY), e.strokeStyle = r.createPattern(o, "no-repeat")
},
_findCenterFromElement: function() {
return {
x: this.left + this.width / 2,
y: this.top + this.height / 2
}
},
_assignTransformMatrixProps: function() {
if (this.transformMatrix) {
var e = t.util.qrDecompose(this.transformMatrix);
this.flipX = !1, this.flipY = !1, this.set("scaleX", e.scaleX), this.set("scaleY", e.scaleY), this.angle = e.angle, this.skewX = e.skewX, this.skewY = 0
}
},
_removeTransformMatrix: function(e) {
var n = this._findCenterFromElement();
this.transformMatrix && (this._assignTransformMatrixProps(), n = t.util.transformPoint(n, this.transformMatrix)), this.transformMatrix = null, e && (this.scaleX *= e.scaleX, this.scaleY *= e.scaleY, this.cropX = e.cropX,
this.cropY = e.cropY, n.x += e.offsetLeft, n.y += e.offsetTop, this.width = e.width, this.height = e.height), this.setPositionByOrigin(n, "center", "center")
},
clone: function(e, n) {
var r = this.toObject(n);
this.constructor.fromObject ? this.constructor.fromObject(r, e) : t.Object._fromObject("Object", r, e)
},
cloneAsImage: function(e, n) {
var r = this.toCanvasElement(n);
return e && e(new t.Image(r)), this
},
toCanvasElement: function(e) {
e || (e = {});
var n = t.util,
r = n.saveObjectTransform(this),
i = this.group,
o = this.shadow,
a = Math.abs,
s = (e.multiplier || 1) * (e.enableRetinaScaling ? t.devicePixelRatio : 1);
delete this.group, e.withoutTransform && n.resetObjectTransform(this), e.withoutShadow && (this.shadow = null);
var l, c, u, h, p = t.util.createCanvasElement(),
d = this.getBoundingRect(!0, !0),
f = this.shadow,
g = {
x: 0,
y: 0
};
f && (c = f.blur, l = f.nonScaling ? {
scaleX: 1,
scaleY: 1
} : this.getObjectScaling(), g.x = 2 * Math.round(a(f.offsetX) + c) * a(l.scaleX), g.y = 2 * Math.round(a(f.offsetY) + c) * a(l.scaleY)), u = d.width + g.x, h = d.height + g.y, p.width = Math.ceil(u), p.height = Math
.ceil(h);
var m = new t.StaticCanvas(p, {
enableRetinaScaling: !1,
renderOnAddRemove: !1,
skipOffscreen: !1
});
"jpeg" === e.format && (m.backgroundColor = "#fff"), this.setPositionByOrigin(new t.Point(m.width / 2, m.height / 2), "center", "center");
var v = this.canvas;
m.add(this);
var _ = m.toCanvasElement(s || 1, e);
return this.shadow = o, this.set("canvas", v), i && (this.group = i), this.set(r).setCoords(), m._objects = [], m.dispose(), m = null, _
},
toDataURL: function(e) {
return e || (e = {}), t.util.toDataURL(this.toCanvasElement(e), e.format || "png", e.quality || 1)
},
isType: function(e) {
return arguments.length > 1 ? Array.from(arguments).includes(this.type) : this.type === e
},
complexity: function() {
return 1
},
toJSON: function(e) {
return this.toObject(e)
},
rotate: function(e) {
var t = ("center" !== this.originX || "center" !== this.originY) && this.centeredRotation;
return t && this._setOriginToCenter(), this.set("angle", e), t && this._resetOrigin(), this
},
centerH: function() {
return this.canvas && this.canvas.centerObjectH(this), this
},
viewportCenterH: function() {
return this.canvas && this.canvas.viewportCenterObjectH(this), this
},
centerV: function() {
return this.canvas && this.canvas.centerObjectV(this), this
},
viewportCenterV: function() {
return this.canvas && this.canvas.viewportCenterObjectV(this), this
},
center: function() {
return this.canvas && this.canvas.centerObject(this), this
},
viewportCenter: function() {
return this.canvas && this.canvas.viewportCenterObject(this), this
},
getLocalPointer: function(e, n) {
n = n || this.canvas.getPointer(e);
var r = new t.Point(n.x, n.y),
i = this._getLeftTopCoords();
return this.angle && (r = t.util.rotatePoint(r, i, a(-this.angle))), {
x: r.x - i.x,
y: r.y - i.y
}
},
_setupCompositeOperation: function(e) {
this.globalCompositeOperation && (e.globalCompositeOperation = this.globalCompositeOperation)
},
dispose: function() {
t.runningAnimations && t.runningAnimations.cancelByTarget(this)
}
}), t.util.createAccessors && t.util.createAccessors(t.Object), n(t.Object.prototype, t.Observable), t.Object.NUM_FRACTION_DIGITS = 2, t.Object.ENLIVEN_PROPS = ["clipPath"], t.Object._fromObject = function(e, n, i, o) {
var a = t[e];
n = r(n, !0), t.util.enlivenPatterns([n.fill, n.stroke], (function(e) {
void 0 !== e[0] && (n.fill = e[0]), void 0 !== e[1] && (n.stroke = e[1]), t.util.enlivenObjectEnlivables(n, n, (function() {
var e = o ? new a(n[o], n) : new a(n);
i && i(e)
}))
}))
}, t.Object.__uid = 0)
}(e), d = v.util.degreesToRadians, f = {
left: -.5,
center: 0,
right: .5
}, g = {
top: -.5,
center: 0,
bottom: .5
}, v.util.object.extend(v.Object.prototype, {
translateToGivenOrigin: function(e, t, n, r, i) {
var o, a, s, l = e.x,
c = e.y;
return "string" == typeof t ? t = f[t] : t -= .5, "string" == typeof r ? r = f[r] : r -= .5, "string" == typeof n ? n = g[n] : n -= .5, "string" == typeof i ? i = g[i] : i -= .5, a = i - n, ((o = r - t) || a) && (s = this
._getTransformedDimensions(), l = e.x + o * s.x, c = e.y + a * s.y), new v.Point(l, c)
},
translateToCenterPoint: function(e, t, n) {
var r = this.translateToGivenOrigin(e, t, n, "center", "center");
return this.angle ? v.util.rotatePoint(r, e, d(this.angle)) : r
},
translateToOriginPoint: function(e, t, n) {
var r = this.translateToGivenOrigin(e, "center", "center", t, n);
return this.angle ? v.util.rotatePoint(r, e, d(this.angle)) : r
},
getCenterPoint: function() {
var e = new v.Point(this.left, this.top);
return this.translateToCenterPoint(e, this.originX, this.originY)
},
getPointByOrigin: function(e, t) {
var n = this.getCenterPoint();
return this.translateToOriginPoint(n, e, t)
},
toLocalPoint: function(e, t, n) {
var r, i, o = this.getCenterPoint();
return r = void 0 !== t && void 0 !== n ? this.translateToGivenOrigin(o, "center", "center", t, n) : new v.Point(this.left, this.top), i = new v.Point(e.x, e.y), this.angle && (i = v.util.rotatePoint(i, o, -d(this.angle))), i
.subtractEquals(r)
},
setPositionByOrigin: function(e, t, n) {
var r = this.translateToCenterPoint(e, t, n),
i = this.translateToOriginPoint(r, this.originX, this.originY);
this.set("left", i.x), this.set("top", i.y)
},
adjustPosition: function(e) {
var t, n, r = d(this.angle),
i = this.getScaledWidth(),
o = v.util.cos(r) * i,
a = v.util.sin(r) * i;
t = "string" == typeof this.originX ? f[this.originX] : this.originX - .5, n = "string" == typeof e ? f[e] : e - .5, this.left += o * (n - t), this.top += a * (n - t), this.setCoords(), this.originX = e
},
_setOriginToCenter: function() {
this._originalOriginX = this.originX, this._originalOriginY = this.originY;
var e = this.getCenterPoint();
this.originX = "center", this.originY = "center", this.left = e.x, this.top = e.y
},
_resetOrigin: function() {
var e = this.translateToOriginPoint(this.getCenterPoint(), this._originalOriginX, this._originalOriginY);
this.originX = this._originalOriginX, this.originY = this._originalOriginY, this.left = e.x, this.top = e.y, this._originalOriginX = null, this._originalOriginY = null
},
_getLeftTopCoords: function() {
return this.translateToOriginPoint(this.getCenterPoint(), "left", "top")
}
}),
function() {
var e = v.util,
t = e.degreesToRadians,
n = e.multiplyTransformMatrices,
r = e.transformPoint;
e.object.extend(v.Object.prototype, {
oCoords: null,
aCoords: null,
lineCoords: null,
ownMatrixCache: null,
matrixCache: null,
controls: {},
_getCoords: function(e, t) {
return t ? e ? this.calcACoords() : this.calcLineCoords() : (this.aCoords && this.lineCoords || this.setCoords(!0), e ? this.aCoords : this.lineCoords)
},
getCoords: function(e, t) {
return n = this._getCoords(e, t), [new v.Point(n.tl.x, n.tl.y), new v.Point(n.tr.x, n.tr.y), new v.Point(n.br.x, n.br.y), new v.Point(n.bl.x, n.bl.y)];
var n
},
intersectsWithRect: function(e, t, n, r) {
var i = this.getCoords(n, r);
return "Intersection" === v.Intersection.intersectPolygonRectangle(i, e, t).status
},
intersectsWithObject: function(e, t, n) {
return "Intersection" === v.Intersection.intersectPolygonPolygon(this.getCoords(t, n), e.getCoords(t, n)).status || e.isContainedWithinObject(this, t, n) || this.isContainedWithinObject(e, t, n)
},
isContainedWithinObject: function(e, t, n) {
for (var r = this.getCoords(t, n), i = t ? e.aCoords : e.lineCoords, o = 0, a = e._getImageLines(i); o < 4; o++)
if (!e.containsPoint(r[o], a)) return !1;
return !0
},
isContainedWithinRect: function(e, t, n, r) {
var i = this.getBoundingRect(n, r);
return i.left >= e.x && i.left + i.width <= t.x && i.top >= e.y && i.top + i.height <= t.y
},
containsPoint: function(e, t, n, r) {
var i = this._getCoords(n, r),
o = (t = t || this._getImageLines(i), this._findCrossPoints(e, t));
return 0 !== o && o % 2 == 1
},
isOnScreen: function(e) {
if (!this.canvas) return !1;
var t = this.canvas.vptCoords.tl,
n = this.canvas.vptCoords.br;
return !!this.getCoords(!0, e).some((function(e) {
return e.x <= n.x && e.x >= t.x && e.y <= n.y && e.y >= t.y
})) || (!!this.intersectsWithRect(t, n, !0, e) || this._containsCenterOfCanvas(t, n, e))
},
_containsCenterOfCanvas: function(e, t, n) {
var r = {
x: (e.x + t.x) / 2,
y: (e.y + t.y) / 2
};
return !!this.containsPoint(r, null, !0, n)
},
isPartiallyOnScreen: function(e) {
if (!this.canvas) return !1;
var t = this.canvas.vptCoords.tl,
n = this.canvas.vptCoords.br;
return !!this.intersectsWithRect(t, n, !0, e) || this.getCoords(!0, e).every((function(e) {
return (e.x >= n.x || e.x <= t.x) && (e.y >= n.y || e.y <= t.y)
})) && this._containsCenterOfCanvas(t, n, e)
},
_getImageLines: function(e) {
return {
topline: {
o: e.tl,
d: e.tr
},
rightline: {
o: e.tr,
d: e.br
},
bottomline: {
o: e.br,
d: e.bl
},
leftline: {
o: e.bl,
d: e.tl
}
}
},
_findCrossPoints: function(e, t) {
var n, r, i, o = 0;
for (var a in t)
if (!((i = t[a]).o.y < e.y && i.d.y < e.y || i.o.y >= e.y && i.d.y >= e.y || (i.o.x === i.d.x && i.o.x >= e.x ? r = i.o.x : (0, n = (i.d.y - i.o.y) / (i.d.x - i.o.x), r = -(e.y - 0 * e.x - (i.o.y - n * i.o.x)) / (0 -
n)), r >= e.x && (o += 1), 2 !== o))) break;
return o
},
getBoundingRect: function(t, n) {
var r = this.getCoords(t, n);
return e.makeBoundingBoxFromPoints(r)
},
getScaledWidth: function() {
return this._getTransformedDimensions().x
},
getScaledHeight: function() {
return this._getTransformedDimensions().y
},
_constrainScale: function(e) {
return Math.abs(e) < this.minScaleLimit ? e < 0 ? -this.minScaleLimit : this.minScaleLimit : 0 === e ? 1e-4 : e
},
scale: function(e) {
return this._set("scaleX", e), this._set("scaleY", e), this.setCoords()
},
scaleToWidth: function(e, t) {
var n = this.getBoundingRect(t).width / this.getScaledWidth();
return this.scale(e / this.width / n)
},
scaleToHeight: function(e, t) {
var n = this.getBoundingRect(t).height / this.getScaledHeight();
return this.scale(e / this.height / n)
},
calcLineCoords: function() {
var n = this.getViewportTransform(),
i = this.padding,
o = t(this.angle),
a = e.cos(o) * i,
s = e.sin(o) * i,
l = a + s,
c = a - s,
u = this.calcACoords(),
h = {
tl: r(u.tl, n),
tr: r(u.tr, n),
bl: r(u.bl, n),
br: r(u.br, n)
};
return i && (h.tl.x -= c, h.tl.y -= l, h.tr.x += l, h.tr.y -= c, h.bl.x -= l, h.bl.y += c, h.br.x += c, h.br.y += l), h
},
calcOCoords: function() {
var e = this._calcRotateMatrix(),
t = this._calcTranslateMatrix(),
r = this.getViewportTransform(),
i = n(r, t),
o = n(i, e),
a = (o = n(o, [1 / r[0], 0, 0, 1 / r[3], 0, 0]), this._calculateCurrentDimensions()),
s = {};
return this.forEachControl((function(e, t, n) {
s[t] = e.positionHandler(a, o, n)
})), s
},
calcACoords: function() {
var e = this._calcRotateMatrix(),
t = this._calcTranslateMatrix(),
i = n(t, e),
o = this._getTransformedDimensions(),
a = o.x / 2,
s = o.y / 2;
return {
tl: r({
x: -a,
y: -s
}, i),
tr: r({
x: a,
y: -s
}, i),
bl: r({
x: -a,
y: s
}, i),
br: r({
x: a,
y: s
}, i)
}
},
setCoords: function(e) {
return this.aCoords = this.calcACoords(), this.lineCoords = this.group ? this.aCoords : this.calcLineCoords(), e || (this.oCoords = this.calcOCoords(), this._setCornerCoords && this._setCornerCoords()), this
},
_calcRotateMatrix: function() {
return e.calcRotateMatrix(this)
},
_calcTranslateMatrix: function() {
var e = this.getCenterPoint();
return [1, 0, 0, 1, e.x, e.y]
},
transformMatrixKey: function(e) {
var t = "_",
n = "";
return !e && this.group && (n = this.group.transformMatrixKey(e) + t), n + this.top + t + this.left + t + this.scaleX + t + this.scaleY + t + this.skewX + t + this.skewY + t + this.angle + t + this.originX + t + this
.originY + t + this.width + t + this.height + t + this.strokeWidth + this.flipX + this.flipY
},
calcTransformMatrix: function(e) {
var t = this.calcOwnMatrix();
if (e || !this.group) return t;
var r = this.transformMatrixKey(e),
i = this.matrixCache || (this.matrixCache = {});
return i.key === r ? i.value : (this.group && (t = n(this.group.calcTransformMatrix(!1), t)), i.key = r, i.value = t, t)
},
calcOwnMatrix: function() {
var t = this.transformMatrixKey(!0),
n = this.ownMatrixCache || (this.ownMatrixCache = {});
if (n.key === t) return n.value;
var r = this._calcTranslateMatrix(),
i = {
angle: this.angle,
translateX: r[4],
translateY: r[5],
scaleX: this.scaleX,
scaleY: this.scaleY,
skewX: this.skewX,
skewY: this.skewY,
flipX: this.flipX,
flipY: this.flipY
};
return n.key = t, n.value = e.composeMatrix(i), n.value
},
_getNonTransformedDimensions: function() {
var e = this.strokeWidth;
return {
x: this.width + e,
y: this.height + e
}
},
_getTransformedDimensions: function(t, n) {
void 0 === t && (t = this.skewX), void 0 === n && (n = this.skewY);
var r, i, o, a = 0 === t && 0 === n;
if (this.strokeUniform ? (i = this.width, o = this.height) : (i = (r = this._getNonTransformedDimensions()).x, o = r.y), a) return this._finalizeDimensions(i * this.scaleX, o * this.scaleY);
var s = e.sizeAfterTransform(i, o, {
scaleX: this.scaleX,
scaleY: this.scaleY,
skewX: t,
skewY: n
});
return this._finalizeDimensions(s.x, s.y)
},
_finalizeDimensions: function(e, t) {
return this.strokeUniform ? {
x: e + this.strokeWidth,
y: t + this.strokeWidth
} : {
x: e,
y: t
}
},
_calculateCurrentDimensions: function() {
var e = this.getViewportTransform(),
t = this._getTransformedDimensions();
return r(t, e, !0).scalarAdd(2 * this.padding)
}
})
}(), v.util.object.extend(v.Object.prototype, {
sendToBack: function() {
return this.group ? v.StaticCanvas.prototype.sendToBack.call(this.group, this) : this.canvas && this.canvas.sendToBack(this), this
},
bringToFront: function() {
return this.group ? v.StaticCanvas.prototype.bringToFront.call(this.group, this) : this.canvas && this.canvas.bringToFront(this), this
},
sendBackwards: function(e) {
return this.group ? v.StaticCanvas.prototype.sendBackwards.call(this.group, this, e) : this.canvas && this.canvas.sendBackwards(this, e), this
},
bringForward: function(e) {
return this.group ? v.StaticCanvas.prototype.bringForward.call(this.group, this, e) : this.canvas && this.canvas.bringForward(this, e), this
},
moveTo: function(e) {
return this.group && "activeSelection" !== this.group.type ? v.StaticCanvas.prototype.moveTo.call(this.group, this, e) : this.canvas && this.canvas.moveTo(this, e), this
}
}),
function() {
function e(e, t) {
if (t) {
if (t.toLive) return e + ": url(#SVGID_" + t.id + "); ";
var n = new v.Color(t),
r = e + ": " + n.toRgb() + "; ",
i = n.getAlpha();
return 1 !== i && (r += e + "-opacity: " + i.toString() + "; "), r
}
return e + ": none; "
}
var t = v.util.toFixed;
v.util.object.extend(v.Object.prototype, {
getSvgStyles: function(t) {
var n = this.fillRule ? this.fillRule : "nonzero",
r = this.strokeWidth ? this.strokeWidth : "0",
i = this.strokeDashArray ? this.strokeDashArray.join(" ") : "none",
o = this.strokeDashOffset ? this.strokeDashOffset : "0",
a = this.strokeLineCap ? this.strokeLineCap : "butt",
s = this.strokeLineJoin ? this.strokeLineJoin : "miter",
l = this.strokeMiterLimit ? this.strokeMiterLimit : "4",
c = void 0 !== this.opacity ? this.opacity : "1",
u = this.visible ? "" : " visibility: hidden;",
h = t ? "" : this.getSvgFilter(),
p = e("fill", this.fill);
return [e("stroke", this.stroke), "stroke-width: ", r, "; ", "stroke-dasharray: ", i, "; ", "stroke-linecap: ", a, "; ", "stroke-dashoffset: ", o, "; ", "stroke-linejoin: ", s, "; ", "stroke-miterlimit: ", l, "; ", p,
"fill-rule: ", n, "; ", "opacity: ", c, ";", h, u
].join("")
},
getSvgSpanStyles: function(t, n) {
var r = "; ",
i = t.fontFamily ? "font-family: " + (-1 === t.fontFamily.indexOf("'") && -1 === t.fontFamily.indexOf('"') ? "'" + t.fontFamily + "'" : t.fontFamily) + r : "",
o = t.strokeWidth ? "stroke-width: " + t.strokeWidth + r : "",
a = (i = i, t.fontSize ? "font-size: " + t.fontSize + "px" + r : ""),
s = t.fontStyle ? "font-style: " + t.fontStyle + r : "",
l = t.fontWeight ? "font-weight: " + t.fontWeight + r : "",
c = t.fill ? e("fill", t.fill) : "",
u = t.stroke ? e("stroke", t.stroke) : "",
h = this.getSvgTextDecoration(t);
return h && (h = "text-decoration: " + h + r), [u, o, i, a, s, l, h, c, t.deltaY ? "baseline-shift: " + -t.deltaY + "; " : "", n ? "white-space: pre; " : ""].join("")
},
getSvgTextDecoration: function(e) {
return ["overline", "underline", "line-through"].filter((function(t) {
return e[t.replace("-", "")]
})).join(" ")
},
getSvgFilter: function() {
return this.shadow ? "filter: url(#SVGID_" + this.shadow.id + ");" : ""
},
getSvgCommons: function() {
return [this.id ? 'id="' + this.id + '" ' : "", this.clipPath ? 'clip-path="url(#' + this.clipPath.clipPathId + ')" ' : ""].join("")
},
getSvgTransform: function(e, t) {
var n = e ? this.calcTransformMatrix() : this.calcOwnMatrix();
return 'transform="' + v.util.matrixToSVG(n) + (t || "") + '" '
},
_setSVGBg: function(e) {
if (this.backgroundColor) {
var n = v.Object.NUM_FRACTION_DIGITS;
e.push("\t\t<rect ", this._getFillAttributes(this.backgroundColor), ' x="', t(-this.width / 2, n), '" y="', t(-this.height / 2, n), '" width="', t(this.width, n), '" height="', t(this.height, n), '"></rect>\n')
}
},
toSVG: function(e) {
return this._createBaseSVGMarkup(this._toSVG(e), {
reviver: e
})
},
toClipPathSVG: function(e) {
return "\t" + this._createBaseClipPathSVGMarkup(this._toSVG(e), {
reviver: e
})
},
_createBaseClipPathSVGMarkup: function(e, t) {
var n = (t = t || {}).reviver,
r = t.additionalTransform || "",
i = [this.getSvgTransform(!0, r), this.getSvgCommons()].join(""),
o = e.indexOf("COMMON_PARTS");
return e[o] = i, n ? n(e.join("")) : e.join("")
},
_createBaseSVGMarkup: function(e, t) {
var n, r, i = (t = t || {}).noStyle,
o = t.reviver,
a = i ? "" : 'style="' + this.getSvgStyles() + '" ',
s = t.withShadow ? 'style="' + this.getSvgFilter() + '" ' : "",
l = this.clipPath,
c = this.strokeUniform ? 'vector-effect="non-scaling-stroke" ' : "",
u = l && l.absolutePositioned,
h = this.stroke,
p = this.fill,
d = this.shadow,
f = [],
g = e.indexOf("COMMON_PARTS"),
m = t.additionalTransform;
return l && (l.clipPathId = "CLIPPATH_" + v.Object.__uid++, r = '<clipPath id="' + l.clipPathId + '" >\n' + l.toClipPathSVG(o) + "</clipPath>\n"), u && f.push("<g ", s, this.getSvgCommons(), " >\n"), f.push("<g ", this
.getSvgTransform(!1), u ? "" : s + this.getSvgCommons(), " >\n"), n = [a, c, i ? "" : this.addPaintOrder(), " ", m ? 'transform="' + m + '" ' : ""].join(""), e[g] = n, p && p.toLive && f.push(p.toSVG(this)), h && h
.toLive && f.push(h.toSVG(this)), d && f.push(d.toSVG(this)), l && f.push(r), f.push(e.join("")), f.push("</g>\n"), u && f.push("</g>\n"), o ? o(f.join("")) : f.join("")
},
addPaintOrder: function() {
return "fill" !== this.paintFirst ? ' paint-order="' + this.paintFirst + '" ' : ""
}
})
}(),
function() {
var e = v.util.object.extend,
t = "stateProperties";
function n(t, n, r) {
var i = {};
r.forEach((function(e) {
i[e] = t[e]
})), e(t[n], i, !0)
}
function r(e, t, n) {
if (e === t) return !0;
if (Array.isArray(e)) {
if (!Array.isArray(t) || e.length !== t.length) return !1;
for (var i = 0, o = e.length; i < o; i++)
if (!r(e[i], t[i])) return !1;
return !0
}
if (e && "object" == typeof e) {
var a, s = Object.keys(e);
if (!t || "object" != typeof t || !n && s.length !== Object.keys(t).length) return !1;
for (i = 0, o = s.length; i < o; i++)
if ("canvas" !== (a = s[i]) && "group" !== a && !r(e[a], t[a])) return !1;
return !0
}
}
v.util.object.extend(v.Object.prototype, {
hasStateChanged: function(e) {
var n = "_" + (e = e || t);
return Object.keys(this[n]).length < this[e].length || !r(this[n], this, !0)
},
saveState: function(e) {
var r = e && e.propertySet || t,
i = "_" + r;
return this[i] ? (n(this, i, this[r]), e && e.stateProperties && n(this, i, e.stateProperties), this) : this.setupState(e)
},
setupState: function(e) {
var n = (e = e || {}).propertySet || t;
return e.propertySet = n, this["_" + n] = {}, this.saveState(e), this
}
})
}(),
function() {
var e = v.util.degreesToRadians;
v.util.object.extend(v.Object.prototype, {
_findTargetCorner: function(e, t) {
if (!this.hasControls || this.group || !this.canvas || this.canvas._activeObject !== this) return !1;
var n, r, i, o = e.x,
a = e.y,
s = Object.keys(this.oCoords),
l = s.length - 1;
for (this.__corner = 0; l >= 0; l--)
if (i = s[l], this.isControlVisible(i) && (r = this._getImageLines(t ? this.oCoords[i].touchCorner : this.oCoords[i].corner), 0 !== (n = this._findCrossPoints({
x: o,
y: a
}, r)) && n % 2 == 1)) return this.__corner = i, i;
return !1
},
forEachControl: function(e) {
for (var t in this.controls) e(this.controls[t], t, this)
},
_setCornerCoords: function() {
var e = this.oCoords;
for (var t in e) {
var n = this.controls[t];
e[t].corner = n.calcCornerCoords(this.angle, this.cornerSize, e[t].x, e[t].y, !1), e[t].touchCorner = n.calcCornerCoords(this.angle, this.touchCornerSize, e[t].x, e[t].y, !0)
}
},
drawSelectionBackground: function(t) {
if (!this.selectionBackgroundColor || this.canvas && !this.canvas.interactive || this.canvas && this.canvas._activeObject !== this) return this;
t.save();
var n = this.getCenterPoint(),
r = this._calculateCurrentDimensions(),
i = this.canvas.viewportTransform;
return t.translate(n.x, n.y), t.scale(1 / i[0], 1 / i[3]), t.rotate(e(this.angle)), t.fillStyle = this.selectionBackgroundColor, t.fillRect(-r.x / 2, -r.y / 2, r.x, r.y), t.restore(), this
},
drawBorders: function(e, t) {
t = t || {};
var n = this._calculateCurrentDimensions(),
r = this.borderScaleFactor,
i = n.x + r,
o = n.y + r,
a = void 0 !== t.hasControls ? t.hasControls : this.hasControls,
s = !1;
return e.save(), e.strokeStyle = t.borderColor || this.borderColor, this._setLineDash(e, t.borderDashArray || this.borderDashArray), e.strokeRect(-i / 2, -o / 2, i, o), a && (e.beginPath(), this.forEachControl((function(t,
n, r) {
t.withConnection && t.getVisibility(r, n) && (s = !0, e.moveTo(t.x * i, t.y * o), e.lineTo(t.x * i + t.offsetX, t.y * o + t.offsetY))
})), s && e.stroke()), e.restore(), this
},
drawBordersInGroup: function(e, t, n) {
n = n || {};
var r = v.util.sizeAfterTransform(this.width, this.height, t),
i = this.strokeWidth,
o = this.strokeUniform,
a = this.borderScaleFactor,
s = r.x + i * (o ? this.canvas.getZoom() : t.scaleX) + a,
l = r.y + i * (o ? this.canvas.getZoom() : t.scaleY) + a;
return e.save(), this._setLineDash(e, n.borderDashArray || this.borderDashArray), e.strokeStyle = n.borderColor || this.borderColor, e.strokeRect(-s / 2, -l / 2, s, l), e.restore(), this
},
drawControls: function(e, t) {
t = t || {}, e.save();
var n, r, i = this.canvas.getRetinaScaling();
return e.setTransform(i, 0, 0, i, 0, 0), e.strokeStyle = e.fillStyle = t.cornerColor || this.cornerColor, this.transparentCorners || (e.strokeStyle = t.cornerStrokeColor || this.cornerStrokeColor), this._setLineDash(e, t
.cornerDashArray || this.cornerDashArray), this.setCoords(), this.group && (n = this.group.calcTransformMatrix()), this.forEachControl((function(i, o, a) {
r = a.oCoords[o], i.getVisibility(a, o) && (n && (r = v.util.transformPoint(r, n)), i.render(e, r.x, r.y, t, a))
})), e.restore(), this
},
isControlVisible: function(e) {
return this.controls[e] && this.controls[e].getVisibility(this, e)
},
setControlVisible: function(e, t) {
return this._controlsVisibility || (this._controlsVisibility = {}), this._controlsVisibility[e] = t, this
},
setControlsVisibility: function(e) {
for (var t in e || (e = {}), e) this.setControlVisible(t, e[t]);
return this
},
onDeselect: function() {},
onSelect: function() {}
})
}(), v.util.object.extend(v.StaticCanvas.prototype, {
FX_DURATION: 500,
fxCenterObjectH: function(e, t) {
var n = function() {},
r = (t = t || {}).onComplete || n,
i = t.onChange || n,
o = this;
return v.util.animate({
target: this,
startValue: e.left,
endValue: this.getCenterPoint().x,
duration: this.FX_DURATION,
onChange: function(t) {
e.set("left", t), o.requestRenderAll(), i()
},
onComplete: function() {
e.setCoords(), r()
}
})
},
fxCenterObjectV: function(e, t) {
var n = function() {},
r = (t = t || {}).onComplete || n,
i = t.onChange || n,
o = this;
return v.util.animate({
target: this,
startValue: e.top,
endValue: this.getCenterPoint().y,
duration: this.FX_DURATION,
onChange: function(t) {
e.set("top", t), o.requestRenderAll(), i()
},
onComplete: function() {
e.setCoords(), r()
}
})
},
fxRemove: function(e, t) {
var n = function() {},
r = (t = t || {}).onComplete || n,
i = t.onChange || n,
o = this;
return v.util.animate({
target: this,
startValue: e.opacity,
endValue: 0,
duration: this.FX_DURATION,
onChange: function(t) {
e.set("opacity", t), o.requestRenderAll(), i()
},
onComplete: function() {
o.remove(e), r()
}
})
}
}), v.util.object.extend(v.Object.prototype, {
animate: function() {
if (arguments[0] && "object" == typeof arguments[0]) {
var e, t, n = [],
r = [];
for (e in arguments[0]) n.push(e);
for (var i = 0, o = n.length; i < o; i++) e = n[i], t = i !== o - 1, r.push(this._animate(e, arguments[0][e], arguments[1], t));
return r
}
return this._animate.apply(this, arguments)
},
_animate: function(e, t, n, r) {
var i, o = this;
t = t.toString(), n = n ? v.util.object.clone(n) : {}, ~e.indexOf(".") && (i = e.split("."));
var a = o.colorProperties.indexOf(e) > -1 || i && o.colorProperties.indexOf(i[1]) > -1,
s = i ? this.get(i[0])[i[1]] : this.get(e);
"from" in n || (n.from = s), a || (t = ~t.indexOf("=") ? s + parseFloat(t.replace("=", "")) : parseFloat(t));
var l = {
target: this,
startValue: n.from,
endValue: t,
byValue: n.by,
easing: n.easing,
duration: n.duration,
abort: n.abort && function(e, t, r) {
return n.abort.call(o, e, t, r)
},
onChange: function(t, a, s) {
i ? o[i[0]][i[1]] = t : o.set(e, t), r || n.onChange && n.onChange(t, a, s)
},
onComplete: function(e, t, i) {
r || (o.setCoords(), n.onComplete && n.onComplete(e, t, i))
}
};
return a ? v.util.animateColor(l.startValue, l.endValue, l.duration, l) : v.util.animate(l)
}
}),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.util.object.clone,
i = {
x1: 1,
x2: 1,
y1: 1,
y2: 1
};
function o(e, t) {
var n = e.origin,
r = e.axis1,
i = e.axis2,
o = e.dimension,
a = t.nearest,
s = t.center,
l = t.farthest;
return function() {
switch (this.get(n)) {
case a:
return Math.min(this.get(r), this.get(i));
case s:
return Math.min(this.get(r), this.get(i)) + .5 * this.get(o);
case l:
return Math.max(this.get(r), this.get(i))
}
}
}
t.Line ? t.warn("fabric.Line is already defined") : (t.Line = t.util.createClass(t.Object, {
type: "line",
x1: 0,
y1: 0,
x2: 0,
y2: 0,
cacheProperties: t.Object.prototype.cacheProperties.concat("x1", "x2", "y1", "y2"),
initialize: function(e, t) {
e || (e = [0, 0, 0, 0]), this.callSuper("initialize", t), this.set("x1", e[0]), this.set("y1", e[1]), this.set("x2", e[2]), this.set("y2", e[3]), this._setWidthHeight(t)
},
_setWidthHeight: function(e) {
e || (e = {}), this.width = Math.abs(this.x2 - this.x1), this.height = Math.abs(this.y2 - this.y1), this.left = "left" in e ? e.left : this._getLeftToOriginX(), this.top = "top" in e ? e.top : this._getTopToOriginY()
},
_set: function(e, t) {
return this.callSuper("_set", e, t), void 0 !== i[e] && this._setWidthHeight(), this
},
_getLeftToOriginX: o({
origin: "originX",
axis1: "x1",
axis2: "x2",
dimension: "width"
}, {
nearest: "left",
center: "center",
farthest: "right"
}),
_getTopToOriginY: o({
origin: "originY",
axis1: "y1",
axis2: "y2",
dimension: "height"
}, {
nearest: "top",
center: "center",
farthest: "bottom"
}),
_render: function(e) {
e.beginPath();
var t = this.calcLinePoints();
e.moveTo(t.x1, t.y1), e.lineTo(t.x2, t.y2), e.lineWidth = this.strokeWidth;
var n = e.strokeStyle;
e.strokeStyle = this.stroke || e.fillStyle, this.stroke && this._renderStroke(e), e.strokeStyle = n
},
_findCenterFromElement: function() {
return {
x: (this.x1 + this.x2) / 2,
y: (this.y1 + this.y2) / 2
}
},
toObject: function(e) {
return n(this.callSuper("toObject", e), this.calcLinePoints())
},
_getNonTransformedDimensions: function() {
var e = this.callSuper("_getNonTransformedDimensions");
return "butt" === this.strokeLineCap && (0 === this.width && (e.y -= this.strokeWidth), 0 === this.height && (e.x -= this.strokeWidth)), e
},
calcLinePoints: function() {
var e = this.x1 <= this.x2 ? -1 : 1,
t = this.y1 <= this.y2 ? -1 : 1,
n = e * this.width * .5,
r = t * this.height * .5;
return {
x1: n,
x2: e * this.width * -.5,
y1: r,
y2: t * this.height * -.5
}
},
_toSVG: function() {
var e = this.calcLinePoints();
return ["<line ", "COMMON_PARTS", 'x1="', e.x1, '" y1="', e.y1, '" x2="', e.x2, '" y2="', e.y2, '" />\n']
}
}), t.Line.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")), t.Line.fromElement = function(e, r, i) {
i = i || {};
var o = t.parseAttributes(e, t.Line.ATTRIBUTE_NAMES),
a = [o.x1 || 0, o.y1 || 0, o.x2 || 0, o.y2 || 0];
r(new t.Line(a, n(o, i)))
}, t.Line.fromObject = function(e, n) {
var i = r(e, !0);
i.points = [e.x1, e.y1, e.x2, e.y2], t.Object._fromObject("Line", i, (function(e) {
delete e.points, n && n(e)
}), "points")
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.degreesToRadians;
t.Circle ? t.warn("fabric.Circle is already defined.") : (t.Circle = t.util.createClass(t.Object, {
type: "circle",
radius: 0,
startAngle: 0,
endAngle: 360,
cacheProperties: t.Object.prototype.cacheProperties.concat("radius", "startAngle", "endAngle"),
_set: function(e, t) {
return this.callSuper("_set", e, t), "radius" === e && this.setRadius(t), this
},
toObject: function(e) {
return this.callSuper("toObject", ["radius", "startAngle", "endAngle"].concat(e))
},
_toSVG: function() {
var e, r = (this.endAngle - this.startAngle) % 360;
if (0 === r) e = ["<circle ", "COMMON_PARTS", 'cx="0" cy="0" ', 'r="', this.radius, '" />\n'];
else {
var i = n(this.startAngle),
o = n(this.endAngle),
a = this.radius;
e = ['<path d="M ' + t.util.cos(i) * a + " " + t.util.sin(i) * a, " A " + a + " " + a, " 0 ", +(r > 180 ? "1" : "0") + " 1", " " + t.util.cos(o) * a + " " + t.util.sin(o) * a, '" ', "COMMON_PARTS", " />\n"]
}
return e
},
_render: function(e) {
e.beginPath(), e.arc(0, 0, this.radius, n(this.startAngle), n(this.endAngle), !1), this._renderPaintInOrder(e)
},
getRadiusX: function() {
return this.get("radius") * this.get("scaleX")
},
getRadiusY: function() {
return this.get("radius") * this.get("scaleY")
},
setRadius: function(e) {
return this.radius = e, this.set("width", 2 * e).set("height", 2 * e)
}
}), t.Circle.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")), t.Circle.fromElement = function(e, n) {
var r = t.parseAttributes(e, t.Circle.ATTRIBUTE_NAMES);
if (! function(e) {
return "radius" in e && e.radius >= 0
}(r)) throw new Error("value of `r` attribute is required and can not be negative");
r.left = (r.left || 0) - r.radius, r.top = (r.top || 0) - r.radius, n(new t.Circle(r))
}, t.Circle.fromObject = function(e, n) {
t.Object._fromObject("Circle", e, n)
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {});
t.Triangle ? t.warn("fabric.Triangle is already defined") : (t.Triangle = t.util.createClass(t.Object, {
type: "triangle",
width: 100,
height: 100,
_render: function(e) {
var t = this.width / 2,
n = this.height / 2;
e.beginPath(), e.moveTo(-t, n), e.lineTo(0, -n), e.lineTo(t, n), e.closePath(), this._renderPaintInOrder(e)
},
_toSVG: function() {
var e = this.width / 2,
t = this.height / 2;
return ["<polygon ", "COMMON_PARTS", 'points="', [-e + " " + t, "0 " + -t, e + " " + t].join(","), '" />']
}
}), t.Triangle.fromObject = function(e, n) {
return t.Object._fromObject("Triangle", e, n)
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = 2 * Math.PI;
t.Ellipse ? t.warn("fabric.Ellipse is already defined.") : (t.Ellipse = t.util.createClass(t.Object, {
type: "ellipse",
rx: 0,
ry: 0,
cacheProperties: t.Object.prototype.cacheProperties.concat("rx", "ry"),
initialize: function(e) {
this.callSuper("initialize", e), this.set("rx", e && e.rx || 0), this.set("ry", e && e.ry || 0)
},
_set: function(e, t) {
switch (this.callSuper("_set", e, t), e) {
case "rx":
this.rx = t, this.set("width", 2 * t);
break;
case "ry":
this.ry = t, this.set("height", 2 * t)
}
return this
},
getRx: function() {
return this.get("rx") * this.get("scaleX")
},
getRy: function() {
return this.get("ry") * this.get("scaleY")
},
toObject: function(e) {
return this.callSuper("toObject", ["rx", "ry"].concat(e))
},
_toSVG: function() {
return ["<ellipse ", "COMMON_PARTS", 'cx="0" cy="0" ', 'rx="', this.rx, '" ry="', this.ry, '" />\n']
},
_render: function(e) {
e.beginPath(), e.save(), e.transform(1, 0, 0, this.ry / this.rx, 0, 0), e.arc(0, 0, this.rx, 0, n, !1), e.restore(), this._renderPaintInOrder(e)
}
}), t.Ellipse.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")), t.Ellipse.fromElement = function(e, n) {
var r = t.parseAttributes(e, t.Ellipse.ATTRIBUTE_NAMES);
r.left = (r.left || 0) - r.rx, r.top = (r.top || 0) - r.ry, n(new t.Ellipse(r))
}, t.Ellipse.fromObject = function(e, n) {
t.Object._fromObject("Ellipse", e, n)
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend;
t.Rect ? t.warn("fabric.Rect is already defined") : (t.Rect = t.util.createClass(t.Object, {
stateProperties: t.Object.prototype.stateProperties.concat("rx", "ry"),
type: "rect",
rx: 0,
ry: 0,
cacheProperties: t.Object.prototype.cacheProperties.concat("rx", "ry"),
initialize: function(e) {
this.callSuper("initialize", e), this._initRxRy()
},
_initRxRy: function() {
this.rx && !this.ry ? this.ry = this.rx : this.ry && !this.rx && (this.rx = this.ry)
},
_render: function(e) {
var t = this.rx ? Math.min(this.rx, this.width / 2) : 0,
n = this.ry ? Math.min(this.ry, this.height / 2) : 0,
r = this.width,
i = this.height,
o = -this.width / 2,
a = -this.height / 2,
s = 0 !== t || 0 !== n,
l = .4477152502;
e.beginPath(), e.moveTo(o + t, a), e.lineTo(o + r - t, a), s && e.bezierCurveTo(o + r - l * t, a, o + r, a + l * n, o + r, a + n), e.lineTo(o + r, a + i - n), s && e.bezierCurveTo(o + r, a + i - l * n, o + r - l * t, a +
i, o + r - t, a + i), e.lineTo(o + t, a + i), s && e.bezierCurveTo(o + l * t, a + i, o, a + i - l * n, o, a + i - n), e.lineTo(o, a + n), s && e.bezierCurveTo(o, a + l * n, o + l * t, a, o + t, a), e.closePath(),
this._renderPaintInOrder(e)
},
toObject: function(e) {
return this.callSuper("toObject", ["rx", "ry"].concat(e))
},
_toSVG: function() {
return ["<rect ", "COMMON_PARTS", 'x="', -this.width / 2, '" y="', -this.height / 2, '" rx="', this.rx, '" ry="', this.ry, '" width="', this.width, '" height="', this.height, '" />\n']
}
}), t.Rect.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")), t.Rect.fromElement = function(e, r, i) {
if (!e) return r(null);
i = i || {};
var o = t.parseAttributes(e, t.Rect.ATTRIBUTE_NAMES);
o.left = o.left || 0, o.top = o.top || 0, o.height = o.height || 0, o.width = o.width || 0;
var a = new t.Rect(n(i ? t.util.object.clone(i) : {}, o));
a.visible = a.visible && a.width > 0 && a.height > 0, r(a)
}, t.Rect.fromObject = function(e, n) {
return t.Object._fromObject("Rect", e, n)
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.util.array.min,
i = t.util.array.max,
o = t.util.toFixed,
a = t.util.projectStrokeOnPoints;
t.Polyline ? t.warn("fabric.Polyline is already defined") : (t.Polyline = t.util.createClass(t.Object, {
type: "polyline",
points: null,
exactBoundingBox: !1,
cacheProperties: t.Object.prototype.cacheProperties.concat("points"),
initialize: function(e, t) {
t = t || {}, this.points = e || [], this.callSuper("initialize", t), this._setPositionDimensions(t)
},
_projectStrokeOnPoints: function() {
return a(this.points, this, !0)
},
_setPositionDimensions: function(e) {
var t, n = this._calcDimensions(e),
r = this.exactBoundingBox ? this.strokeWidth : 0;
this.width = n.width - r, this.height = n.height - r, e.fromSVG || (t = this.translateToGivenOrigin({
x: n.left - this.strokeWidth / 2 + r / 2,
y: n.top - this.strokeWidth / 2 + r / 2
}, "left", "top", this.originX, this.originY)), void 0 === e.left && (this.left = e.fromSVG ? n.left : t.x), void 0 === e.top && (this.top = e.fromSVG ? n.top : t.y), this.pathOffset = {
x: n.left + this.width / 2 + r / 2,
y: n.top + this.height / 2 + r / 2
}
},
_calcDimensions: function() {
var e = this.exactBoundingBox ? this._projectStrokeOnPoints() : this.points,
t = r(e, "x") || 0,
n = r(e, "y") || 0;
return {
left: t,
top: n,
width: (i(e, "x") || 0) - t,
height: (i(e, "y") || 0) - n
}
},
toObject: function(e) {
return n(this.callSuper("toObject", e), {
points: this.points.concat()
})
},
_toSVG: function() {
for (var e = [], n = this.pathOffset.x, r = this.pathOffset.y, i = t.Object.NUM_FRACTION_DIGITS, a = 0, s = this.points.length; a < s; a++) e.push(o(this.points[a].x - n, i), ",", o(this.points[a].y - r, i), " ");
return ["<" + this.type + " ", "COMMON_PARTS", 'points="', e.join(""), '" />\n']
},
commonRender: function(e) {
var t, n = this.points.length,
r = this.pathOffset.x,
i = this.pathOffset.y;
if (!n || isNaN(this.points[n - 1].y)) return !1;
e.beginPath(), e.moveTo(this.points[0].x - r, this.points[0].y - i);
for (var o = 0; o < n; o++) t = this.points[o], e.lineTo(t.x - r, t.y - i);
return !0
},
_render: function(e) {
this.commonRender(e) && this._renderPaintInOrder(e)
},
complexity: function() {
return this.get("points").length
}
}), t.Polyline.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(), t.Polyline.fromElementGenerator = function(e) {
return function(r, i, o) {
if (!r) return i(null);
o || (o = {});
var a = t.parsePointsAttribute(r.getAttribute("points")),
s = t.parseAttributes(r, t[e].ATTRIBUTE_NAMES);
s.fromSVG = !0, i(new t[e](a, n(s, o)))
}
}, t.Polyline.fromElement = t.Polyline.fromElementGenerator("Polyline"), t.Polyline.fromObject = function(e, n) {
return t.Object._fromObject("Polyline", e, n, "points")
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.projectStrokeOnPoints;
t.Polygon ? t.warn("fabric.Polygon is already defined") : (t.Polygon = t.util.createClass(t.Polyline, {
type: "polygon",
_projectStrokeOnPoints: function() {
return n(this.points, this)
},
_render: function(e) {
this.commonRender(e) && (e.closePath(), this._renderPaintInOrder(e))
}
}), t.Polygon.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(), t.Polygon.fromElement = t.Polyline.fromElementGenerator("Polygon"), t.Polygon.fromObject = function(e, n) {
t.Object._fromObject("Polygon", e, n, "points")
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.array.min,
r = t.util.array.max,
i = t.util.object.extend,
o = t.util.object.clone,
a = t.util.toFixed;
t.Path ? t.warn("fabric.Path is already defined") : (t.Path = t.util.createClass(t.Object, {
type: "path",
path: null,
cacheProperties: t.Object.prototype.cacheProperties.concat("path", "fillRule"),
stateProperties: t.Object.prototype.stateProperties.concat("path"),
initialize: function(e, t) {
delete(t = o(t || {})).path, this.callSuper("initialize", t), this._setPath(e || [], t)
},
_setPath: function(e, n) {
this.path = t.util.makePathSimpler(Array.isArray(e) ? e : t.util.parsePath(e)), t.Polyline.prototype._setPositionDimensions.call(this, n || {})
},
_renderPathCommands: function(e) {
var t, n = 0,
r = 0,
i = 0,
o = 0,
a = 0,
s = 0,
l = -this.pathOffset.x,
c = -this.pathOffset.y;
e.beginPath();
for (var u = 0, h = this.path.length; u < h; ++u) switch ((t = this.path[u])[0]) {
case "L":
i = t[1], o = t[2], e.lineTo(i + l, o + c);
break;
case "M":
n = i = t[1], r = o = t[2], e.moveTo(i + l, o + c);
break;
case "C":
i = t[5], o = t[6], a = t[3], s = t[4], e.bezierCurveTo(t[1] + l, t[2] + c, a + l, s + c, i + l, o + c);
break;
case "Q":
e.quadraticCurveTo(t[1] + l, t[2] + c, t[3] + l, t[4] + c), i = t[3], o = t[4], a = t[1], s = t[2];
break;
case "z":
case "Z":
i = n, o = r, e.closePath()
}
},
_render: function(e) {
this._renderPathCommands(e), this._renderPaintInOrder(e)
},
toString: function() {
return "#<fabric.Path (" + this.complexity() + '): { "top": ' + this.top + ', "left": ' + this.left + " }>"
},
toObject: function(e) {
return i(this.callSuper("toObject", e), {
path: this.path.map((function(e) {
return e.slice()
}))
})
},
toDatalessObject: function(e) {
var t = this.toObject(["sourcePath"].concat(e));
return t.sourcePath && delete t.path, t
},
_toSVG: function() {
return ["<path ", "COMMON_PARTS", 'd="', t.util.joinPath(this.path), '" stroke-linecap="round" ', "/>\n"]
},
_getOffsetTransform: function() {
var e = t.Object.NUM_FRACTION_DIGITS;
return " translate(" + a(-this.pathOffset.x, e) + ", " + a(-this.pathOffset.y, e) + ")"
},
toClipPathSVG: function(e) {
var t = this._getOffsetTransform();
return "\t" + this._createBaseClipPathSVGMarkup(this._toSVG(), {
reviver: e,
additionalTransform: t
})
},
toSVG: function(e) {
var t = this._getOffsetTransform();
return this._createBaseSVGMarkup(this._toSVG(), {
reviver: e,
additionalTransform: t
})
},
complexity: function() {
return this.path.length
},
_calcDimensions: function() {
for (var e, i, o = [], a = [], s = 0, l = 0, c = 0, u = 0, h = 0, p = this.path.length; h < p; ++h) {
switch ((e = this.path[h])[0]) {
case "L":
c = e[1], u = e[2], i = [];
break;
case "M":
s = c = e[1], l = u = e[2], i = [];
break;
case "C":
i = t.util.getBoundsOfCurve(c, u, e[1], e[2], e[3], e[4], e[5], e[6]), c = e[5], u = e[6];
break;
case "Q":
i = t.util.getBoundsOfCurve(c, u, e[1], e[2], e[1], e[2], e[3], e[4]), c = e[3], u = e[4];
break;
case "z":
case "Z":
c = s, u = l
}
i.forEach((function(e) {
o.push(e.x), a.push(e.y)
})), o.push(c), a.push(u)
}
var d = n(o) || 0,
f = n(a) || 0;
return {
left: d,
top: f,
width: (r(o) || 0) - d,
height: (r(a) || 0) - f
}
}
}), t.Path.fromObject = function(e, n) {
if ("string" == typeof e.sourcePath) {
var r = e.sourcePath;
t.loadSVGFromURL(r, (function(r) {
var i = r[0];
i.setOptions(e), e.clipPath ? t.util.enlivenObjects([e.clipPath], (function(e) {
i.clipPath = e[0], n && n(i)
})) : n && n(i)
}))
} else t.Object._fromObject("Path", e, n, "path")
}, t.Path.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(["d"]), t.Path.fromElement = function(e, n, r) {
var o = t.parseAttributes(e, t.Path.ATTRIBUTE_NAMES);
o.fromSVG = !0, n(new t.Path(o.d, i(o, r)))
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.array.min,
r = t.util.array.max;
t.Group || (t.Group = t.util.createClass(t.Object, t.Collection, {
type: "group",
strokeWidth: 0,
subTargetCheck: !1,
cacheProperties: [],
useSetOnGroup: !1,
initialize: function(e, t, n) {
t = t || {}, this._objects = [], n && this.callSuper("initialize", t), this._objects = e || [];
for (var r = this._objects.length; r--;) this._objects[r].group = this;
if (n) this._updateObjectsACoords();
else {
var i = t && t.centerPoint;
void 0 !== t.originX && (this.originX = t.originX), void 0 !== t.originY && (this.originY = t.originY), i || this._calcBounds(), this._updateObjectsCoords(i), delete t.centerPoint, this.callSuper("initialize", t)
}
this.setCoords()
},
_updateObjectsACoords: function() {
for (var e = this._objects.length; e--;) this._objects[e].setCoords(true)
},
_updateObjectsCoords: function(e) {
e = e || this.getCenterPoint();
for (var t = this._objects.length; t--;) this._updateObjectCoords(this._objects[t], e)
},
_updateObjectCoords: function(e, t) {
var n = e.left,
r = e.top;
e.set({
left: n - t.x,
top: r - t.y
}), e.group = this, e.setCoords(!0)
},
toString: function() {
return "#<fabric.Group: (" + this.complexity() + ")>"
},
addWithUpdate: function(e) {
var n = !!this.group;
return this._restoreObjectsState(), t.util.resetObjectTransform(this), e && (n && t.util.removeTransformFromObject(e, this.group.calcTransformMatrix()), this._objects.push(e), e.group = this, e._set("canvas", this
.canvas)), this._calcBounds(), this._updateObjectsCoords(), this.dirty = !0, n ? this.group.addWithUpdate() : this.setCoords(), this
},
removeWithUpdate: function(e) {
return this._restoreObjectsState(), t.util.resetObjectTransform(this), this.remove(e), this._calcBounds(), this._updateObjectsCoords(), this.setCoords(), this.dirty = !0, this
},
_onObjectAdded: function(e) {
this.dirty = !0, e.group = this, e._set("canvas", this.canvas)
},
_onObjectRemoved: function(e) {
this.dirty = !0, delete e.group
},
_set: function(e, n) {
var r = this._objects.length;
if (this.useSetOnGroup)
for (; r--;) this._objects[r].setOnGroup(e, n);
if ("canvas" === e)
for (; r--;) this._objects[r]._set(e, n);
t.Object.prototype._set.call(this, e, n)
},
toObject: function(e) {
var n = this.includeDefaultValues,
r = this._objects.filter((function(e) {
return !e.excludeFromExport
})).map((function(t) {
var r = t.includeDefaultValues;
t.includeDefaultValues = n;
var i = t.toObject(e);
return t.includeDefaultValues = r, i
})),
i = t.Object.prototype.toObject.call(this, e);
return i.objects = r, i
},
toDatalessObject: function(e) {
var n, r = this.sourcePath;
if (r) n = r;
else {
var i = this.includeDefaultValues;
n = this._objects.map((function(t) {
var n = t.includeDefaultValues;
t.includeDefaultValues = i;
var r = t.toDatalessObject(e);
return t.includeDefaultValues = n, r
}))
}
var o = t.Object.prototype.toDatalessObject.call(this, e);
return o.objects = n, o
},
render: function(e) {
this._transformDone = !0, this.callSuper("render", e), this._transformDone = !1
},
shouldCache: function() {
var e = t.Object.prototype.shouldCache.call(this);
if (e)
for (var n = 0, r = this._objects.length; n < r; n++)
if (this._objects[n].willDrawShadow()) return this.ownCaching = !1, !1;
return e
},
willDrawShadow: function() {
if (t.Object.prototype.willDrawShadow.call(this)) return !0;
for (var e = 0, n = this._objects.length; e < n; e++)
if (this._objects[e].willDrawShadow()) return !0;
return !1
},
isOnACache: function() {
return this.ownCaching || this.group && this.group.isOnACache()
},
drawObject: function(e) {
for (var t = 0, n = this._objects.length; t < n; t++) this._objects[t].render(e);
this._drawClipPath(e, this.clipPath)
},
isCacheDirty: function(e) {
if (this.callSuper("isCacheDirty", e)) return !0;
if (!this.statefullCache) return !1;
for (var t = 0, n = this._objects.length; t < n; t++)
if (this._objects[t].isCacheDirty(!0)) {
if (this._cacheCanvas) {
var r = this.cacheWidth / this.zoomX,
i = this.cacheHeight / this.zoomY;
this._cacheContext.clearRect(-r / 2, -i / 2, r, i)
}
return !0
} return !1
},
_restoreObjectsState: function() {
var e = this.calcOwnMatrix();
return this._objects.forEach((function(n) {
t.util.addTransformToObject(n, e), delete n.group, n.setCoords()
})), this
},
destroy: function() {
return this._objects.forEach((function(e) {
e.set("dirty", !0)
})), this._restoreObjectsState()
},
dispose: function() {
this.callSuper("dispose"), this.forEachObject((function(e) {
e.dispose && e.dispose()
})), this._objects = []
},
toActiveSelection: function() {
if (this.canvas) {
var e = this._objects,
n = this.canvas;
this._objects = [];
var r = this.toObject();
delete r.objects;
var i = new t.ActiveSelection([]);
return i.set(r), i.type = "activeSelection", n.remove(this), e.forEach((function(e) {
e.group = i, e.dirty = !0, n.add(e)
})), i.canvas = n, i._objects = e, n._activeObject = i, i.setCoords(), i
}
},
ungroupOnCanvas: function() {
return this._restoreObjectsState()
},
setObjectsCoords: function() {
return this.forEachObject((function(e) {
e.setCoords(true)
})), this
},
_calcBounds: function(e) {
for (var t, n, r, i, o = [], a = [], s = ["tr", "br", "bl", "tl"], l = 0, c = this._objects.length, u = s.length; l < c; ++l) {
for (r = (t = this._objects[l]).calcACoords(), i = 0; i < u; i++) n = s[i], o.push(r[n].x), a.push(r[n].y);
t.aCoords = r
}
this._getBounds(o, a, e)
},
_getBounds: function(e, i, o) {
var a = new t.Point(n(e), n(i)),
s = new t.Point(r(e), r(i)),
l = a.y || 0,
c = a.x || 0,
u = s.x - a.x || 0,
h = s.y - a.y || 0;
this.width = u, this.height = h, o || this.setPositionByOrigin({
x: c,
y: l
}, "left", "top")
},
_toSVG: function(e) {
for (var t = ["<g ", "COMMON_PARTS", " >\n"], n = 0, r = this._objects.length; n < r; n++) t.push("\t\t", this._objects[n].toSVG(e));
return t.push("</g>\n"), t
},
getSvgStyles: function() {
var e = void 0 !== this.opacity && 1 !== this.opacity ? "opacity: " + this.opacity + ";" : "",
t = this.visible ? "" : " visibility: hidden;";
return [e, this.getSvgFilter(), t].join("")
},
toClipPathSVG: function(e) {
for (var t = [], n = 0, r = this._objects.length; n < r; n++) t.push("\t", this._objects[n].toClipPathSVG(e));
return this._createBaseClipPathSVGMarkup(t, {
reviver: e
})
}
}), t.Group.fromObject = function(e, n) {
var r = e.objects,
i = t.util.object.clone(e, !0);
delete i.objects, "string" != typeof r ? t.util.enlivenObjects(r, (function(r) {
t.util.enlivenObjectEnlivables(e, i, (function() {
n && n(new t.Group(r, i, !0))
}))
})) : t.loadSVGFromURL(r, (function(o) {
var a = t.util.groupSVGElements(o, e, r),
s = i.clipPath;
delete i.clipPath, a.set(i), s ? t.util.enlivenObjects([s], (function(e) {
a.clipPath = e[0], n && n(a)
})) : n && n(a)
}))
})
}(e),
function(e) {
var t = e.fabric || (e.fabric = {});
t.ActiveSelection || (t.ActiveSelection = t.util.createClass(t.Group, {
type: "activeSelection",
initialize: function(e, n) {
n = n || {}, this._objects = e || [];
for (var r = this._objects.length; r--;) this._objects[r].group = this;
n.originX && (this.originX = n.originX), n.originY && (this.originY = n.originY), this._calcBounds(), this._updateObjectsCoords(), t.Object.prototype.initialize.call(this, n), this.setCoords()
},
toGroup: function() {
var e = this._objects.concat();
this._objects = [];
var n = t.Object.prototype.toObject.call(this),
r = new t.Group([]);
if (delete n.type, r.set(n), e.forEach((function(e) {
e.canvas.remove(e), e.group = r
})), r._objects = e, !this.canvas) return r;
var i = this.canvas;
return i.add(r), i._activeObject = r, r.setCoords(), r
},
onDeselect: function() {
return this.destroy(), !1
},
toString: function() {
return "#<fabric.ActiveSelection: (" + this.complexity() + ")>"
},
shouldCache: function() {
return !1
},
isOnACache: function() {
return !1
},
_renderControls: function(e, t, n) {
e.save(), e.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1, this.callSuper("_renderControls", e, t), void 0 === (n = n || {}).hasControls && (n.hasControls = !1), n.forActiveSelection = !0;
for (var r = 0, i = this._objects.length; r < i; r++) this._objects[r]._renderControls(e, n);
e.restore()
}
}), t.ActiveSelection.fromObject = function(e, n) {
t.util.enlivenObjects(e.objects, (function(r) {
delete e.objects, n && n(new t.ActiveSelection(r, e, !0))
}))
})
}(e),
function(e) {
var t = v.util.object.extend;
e.fabric || (e.fabric = {}), e.fabric.Image ? v.warn("fabric.Image is already defined.") : (v.Image = v.util.createClass(v.Object, {
type: "image",
strokeWidth: 0,
srcFromAttribute: !1,
_lastScaleX: 1,
_lastScaleY: 1,
_filterScalingX: 1,
_filterScalingY: 1,
minimumScaleTrigger: .5,
stateProperties: v.Object.prototype.stateProperties.concat("cropX", "cropY"),
cacheProperties: v.Object.prototype.cacheProperties.concat("cropX", "cropY"),
cacheKey: "",
cropX: 0,
cropY: 0,
imageSmoothing: !0,
initialize: function(e, t) {
t || (t = {}), this.filters = [], this.cacheKey = "texture" + v.Object.__uid++, this.callSuper("initialize", t), this._initElement(e, t)
},
getElement: function() {
return this._element || {}
},
setElement: function(e, t) {
return this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._element = e, this._originalElement = e, this._initConfig(t), 0 !== this.filters.length && this.applyFilters(), this
.resizeFilter && this.applyResizeFilters(), this
},
removeTexture: function(e) {
var t = v.filterBackend;
t && t.evictCachesForKey && t.evictCachesForKey(e)
},
dispose: function() {
this.callSuper("dispose"), this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._cacheContext = void 0, ["_originalElement", "_element", "_filteredEl", "_cacheCanvas"].forEach(
function(e) {
v.util.cleanUpJsdomNode(this[e]), this[e] = void 0
}.bind(this))
},
getCrossOrigin: function() {
return this._originalElement && (this._originalElement.crossOrigin || null)
},
getOriginalSize: function() {
var e = this.getElement();
return {
width: e.naturalWidth || e.width,
height: e.naturalHeight || e.height
}
},
_stroke: function(e) {
if (this.stroke && 0 !== this.strokeWidth) {
var t = this.width / 2,
n = this.height / 2;
e.beginPath(), e.moveTo(-t, -n), e.lineTo(t, -n), e.lineTo(t, n), e.lineTo(-t, n), e.lineTo(-t, -n), e.closePath()
}
},
toObject: function(e) {
var n = [];
this.filters.forEach((function(e) {
e && n.push(e.toObject())
}));
var r = t(this.callSuper("toObject", ["cropX", "cropY"].concat(e)), {
src: this.getSrc(),
crossOrigin: this.getCrossOrigin(),
filters: n
});
return this.resizeFilter && (r.resizeFilter = this.resizeFilter.toObject()), r
},
hasCrop: function() {
return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height
},
_toSVG: function() {
var e, t = [],
n = [],
r = this._element,
i = -this.width / 2,
o = -this.height / 2,
a = "",
s = "";
if (!r) return [];
if (this.hasCrop()) {
var l = v.Object.__uid++;
t.push('<clipPath id="imageCrop_' + l + '">\n', '\t<rect x="' + i + '" y="' + o + '" width="' + this.width + '" height="' + this.height + '" />\n', "</clipPath>\n"), a = ' clip-path="url(#imageCrop_' + l + ')" '
}
if (this.imageSmoothing || (s = '" image-rendering="optimizeSpeed'), n.push("\t<image ", "COMMON_PARTS", 'xlink:href="', this.getSvgSrc(!0), '" x="', i - this.cropX, '" y="', o - this.cropY, '" width="', r.width || r
.naturalWidth, '" height="', r.height || r.height, s, '"', a, "></image>\n"), this.stroke || this.strokeDashArray) {
var c = this.fill;
this.fill = null, e = ["\t<rect ", 'x="', i, '" y="', o, '" width="', this.width, '" height="', this.height, '" style="', this.getSvgStyles(), '"/>\n'], this.fill = c
}
return t = "fill" !== this.paintFirst ? t.concat(e, n) : t.concat(n, e)
},
getSrc: function(e) {
var t = e ? this._element : this._originalElement;
return t ? t.toDataURL ? t.toDataURL() : this.srcFromAttribute ? t.getAttribute("src") : t.src : this.src || ""
},
setSrc: function(e, t, n) {
return v.util.loadImage(e, (function(e, r) {
this.setElement(e, n), this._setWidthHeight(), t && t(this, r)
}), this, n && n.crossOrigin), this
},
toString: function() {
return '#<fabric.Image: { src: "' + this.getSrc() + '" }>'
},
applyResizeFilters: function() {
var e = this.resizeFilter,
t = this.minimumScaleTrigger,
n = this.getTotalObjectScaling(),
r = n.scaleX,
i = n.scaleY,
o = this._filteredEl || this._originalElement;
if (this.group && this.set("dirty", !0), !e || r > t && i > t) return this._element = o, this._filterScalingX = 1, this._filterScalingY = 1, this._lastScaleX = r, void(this._lastScaleY = i);
v.filterBackend || (v.filterBackend = v.initFilterBackend());
var a = v.util.createCanvasElement(),
s = this._filteredEl ? this.cacheKey + "_filtered" : this.cacheKey,
l = o.width,
c = o.height;
a.width = l, a.height = c, this._element = a, this._lastScaleX = e.scaleX = r, this._lastScaleY = e.scaleY = i, v.filterBackend.applyFilters([e], o, l, c, this._element, s), this._filterScalingX = a.width / this
._originalElement.width, this._filterScalingY = a.height / this._originalElement.height
},
applyFilters: function(e) {
if (e = (e = e || this.filters || []).filter((function(e) {
return e && !e.isNeutralState()
})), this.set("dirty", !0), this.removeTexture(this.cacheKey + "_filtered"), 0 === e.length) return this._element = this._originalElement, this._filteredEl = null, this._filterScalingX = 1, this._filterScalingY = 1,
this;
var t = this._originalElement,
n = t.naturalWidth || t.width,
r = t.naturalHeight || t.height;
if (this._element === this._originalElement) {
var i = v.util.createCanvasElement();
i.width = n, i.height = r, this._element = i, this._filteredEl = i
} else this._element = this._filteredEl, this._filteredEl.getContext("2d").clearRect(0, 0, n, r), this._lastScaleX = 1, this._lastScaleY = 1;
return v.filterBackend || (v.filterBackend = v.initFilterBackend()), v.filterBackend.applyFilters(e, this._originalElement, n, r, this._element, this.cacheKey), this._originalElement.width === this._element.width && this
._originalElement.height === this._element.height || (this._filterScalingX = this._element.width / this._originalElement.width, this._filterScalingY = this._element.height / this._originalElement.height), this
},
_render: function(e) {
v.util.setImageSmoothing(e, this.imageSmoothing), !0 !== this.isMoving && this.resizeFilter && this._needsResize() && this.applyResizeFilters(), this._stroke(e), this._renderPaintInOrder(e)
},
drawCacheOnCanvas: function(e) {
v.util.setImageSmoothing(e, this.imageSmoothing), v.Object.prototype.drawCacheOnCanvas.call(this, e)
},
shouldCache: function() {
return this.needsItsOwnCache()
},
_renderFill: function(e) {
var t = this._element;
if (t) {
var n = this._filterScalingX,
r = this._filterScalingY,
i = this.width,
o = this.height,
a = Math.min,
s = Math.max,
l = s(this.cropX, 0),
c = s(this.cropY, 0),
u = t.naturalWidth || t.width,
h = t.naturalHeight || t.height,
p = l * n,
d = c * r,
f = a(i * n, u - p),
g = a(o * r, h - d),
m = -i / 2,
v = -o / 2,
_ = a(i, u / n - l),
b = a(o, h / r - c);
t && e.drawImage(t, p, d, f, g, m, v, _, b)
}
},
_needsResize: function() {
var e = this.getTotalObjectScaling();
return e.scaleX !== this._lastScaleX || e.scaleY !== this._lastScaleY
},
_resetWidthHeight: function() {
this.set(this.getOriginalSize())
},
_initElement: function(e, t) {
this.setElement(v.util.getById(e), t), v.util.addClass(this.getElement(), v.Image.CSS_CANVAS)
},
_initConfig: function(e) {
e || (e = {}), this.setOptions(e), this._setWidthHeight(e)
},
_initFilters: function(e, t) {
e && e.length ? v.util.enlivenObjects(e, (function(e) {
t && t(e)
}), "fabric.Image.filters") : t && t()
},
_setWidthHeight: function(e) {
e || (e = {});
var t = this.getElement();
this.width = e.width || t.naturalWidth || t.width || 0, this.height = e.height || t.naturalHeight || t.height || 0
},
parsePreserveAspectRatioAttribute: function() {
var e, t = v.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ""),
n = this._element.width,
r = this._element.height,
i = 1,
o = 1,
a = 0,
s = 0,
l = 0,
c = 0,
u = this.width,
h = this.height,
p = {
width: u,
height: h
};
return !t || "none" === t.alignX && "none" === t.alignY ? (i = u / n, o = h / r) : ("meet" === t.meetOrSlice && (e = (u - n * (i = o = v.util.findScaleToFit(this._element, p))) / 2, "Min" === t.alignX && (a = -e),
"Max" === t.alignX && (a = e), e = (h - r * o) / 2, "Min" === t.alignY && (s = -e), "Max" === t.alignY && (s = e)), "slice" === t.meetOrSlice && (e = n - u / (i = o = v.util.findScaleToCover(this._element, p)),
"Mid" === t.alignX && (l = e / 2), "Max" === t.alignX && (l = e), e = r - h / o, "Mid" === t.alignY && (c = e / 2), "Max" === t.alignY && (c = e), n = u / i, r = h / o)), {
width: n,
height: r,
scaleX: i,
scaleY: o,
offsetLeft: a,
offsetTop: s,
cropX: l,
cropY: c
}
}
}), v.Image.CSS_CANVAS = "canvas-img", v.Image.prototype.getSvgSrc = v.Image.prototype.getSrc, v.Image.fromObject = function(e, t) {
var n = v.util.object.clone(e);
v.util.loadImage(n.src, (function(e, r) {
r ? t && t(null, !0) : v.Image.prototype._initFilters.call(n, n.filters, (function(r) {
n.filters = r || [], v.Image.prototype._initFilters.call(n, [n.resizeFilter], (function(r) {
n.resizeFilter = r[0], v.util.enlivenObjectEnlivables(n, n, (function() {
var r = new v.Image(e, n);
t(r, !1)
}))
}))
}))
}), null, n.crossOrigin)
}, v.Image.fromURL = function(e, t, n) {
v.util.loadImage(e, (function(e, r) {
t && t(new v.Image(e, n), r)
}), null, n && n.crossOrigin)
}, v.Image.ATTRIBUTE_NAMES = v.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")), v.Image.fromElement = function(e, n, r) {
var i = v.parseAttributes(e, v.Image.ATTRIBUTE_NAMES);
v.Image.fromURL(i["xlink:href"], n, t(r ? v.util.object.clone(r) : {}, i))
})
}(e), v.util.object.extend(v.Object.prototype, {
_getAngleValueForStraighten: function() {
var e = this.angle % 360;
return e > 0 ? 90 * Math.round((e - 1) / 90) : 90 * Math.round(e / 90)
},
straighten: function() {
return this.rotate(this._getAngleValueForStraighten())
},
fxStraighten: function(e) {
var t = function() {},
n = (e = e || {}).onComplete || t,
r = e.onChange || t,
i = this;
return v.util.animate({
target: this,
startValue: this.get("angle"),
endValue: this._getAngleValueForStraighten(),
duration: this.FX_DURATION,
onChange: function(e) {
i.rotate(e), r()
},
onComplete: function() {
i.setCoords(), n()
}
})
}
}), v.util.object.extend(v.StaticCanvas.prototype, {
straightenObject: function(e) {
return e.straighten(), this.requestRenderAll(), this
},
fxStraightenObject: function(e) {
return e.fxStraighten({
onChange: this.requestRenderAllBound
})
}
}),
function() {
function e(e, t) {
var n = "precision " + t + " float;\nvoid main(){}",
r = e.createShader(e.FRAGMENT_SHADER);
return e.shaderSource(r, n), e.compileShader(r), !!e.getShaderParameter(r, e.COMPILE_STATUS)
}
function t(e) {
e && e.tileSize && (this.tileSize = e.tileSize), this.setupGLContext(this.tileSize, this.tileSize), this.captureGPUInfo()
}
v.isWebglSupported = function(t) {
if (v.isLikelyNode) return !1;
t = t || v.WebglFilterBackend.prototype.tileSize;
var n = document.createElement("canvas"),
r = n.getContext("webgl") || n.getContext("experimental-webgl"),
i = !1;
if (r) {
v.maxTextureSize = r.getParameter(r.MAX_TEXTURE_SIZE), i = v.maxTextureSize >= t;
for (var o = ["highp", "mediump", "lowp"], a = 0; a < 3; a++)
if (e(r, o[a])) {
v.webGlPrecision = o[a];
break
}
}
return this.isSupported = i, i
}, v.WebglFilterBackend = t, t.prototype = {
tileSize: 2048,
resources: {},
setupGLContext: function(e, t) {
this.dispose(), this.createWebGLCanvas(e, t), this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]), this.chooseFastestCopyGLTo2DMethod(e, t)
},
chooseFastestCopyGLTo2DMethod: function(e, t) {
var n, r = void 0 !== window.performance;
try {
new ImageData(1, 1), n = !0
} catch (e) {
n = !1
}
var i = "undefined" != typeof ArrayBuffer,
o = "undefined" != typeof Uint8ClampedArray;
if (r && n && i && o) {
var a = v.util.createCanvasElement(),
s = new ArrayBuffer(e * t * 4);
if (v.forceGLPutImageData) return this.imageBuffer = s, void(this.copyGLTo2D = y);
var l, c, u = {
imageBuffer: s,
destinationWidth: e,
destinationHeight: t,
targetCanvas: a
};
a.width = e, a.height = t, l = window.performance.now(), b.call(u, this.gl, u), c = window.performance.now() - l, l = window.performance.now(), y.call(u, this.gl, u), c > window.performance.now() - l ? (this.imageBuffer =
s, this.copyGLTo2D = y) : this.copyGLTo2D = b
}
},
createWebGLCanvas: function(e, t) {
var n = v.util.createCanvasElement();
n.width = e, n.height = t;
var r = {
alpha: !0,
premultipliedAlpha: !1,
depth: !1,
stencil: !1,
antialias: !1
},
i = n.getContext("webgl", r);
i || (i = n.getContext("experimental-webgl", r)), i && (i.clearColor(0, 0, 0, 0), this.canvas = n, this.gl = i)
},
applyFilters: function(e, t, n, r, i, o) {
var a, s = this.gl;
o && (a = this.getCachedTexture(o, t));
var l = {
originalWidth: t.width || t.originalWidth,
originalHeight: t.height || t.originalHeight,
sourceWidth: n,
sourceHeight: r,
destinationWidth: n,
destinationHeight: r,
context: s,
sourceTexture: this.createTexture(s, n, r, !a && t),
targetTexture: this.createTexture(s, n, r),
originalTexture: a || this.createTexture(s, n, r, !a && t),
passes: e.length,
webgl: !0,
aPosition: this.aPosition,
programCache: this.programCache,
pass: 0,
filterBackend: this,
targetCanvas: i
},
c = s.createFramebuffer();
return s.bindFramebuffer(s.FRAMEBUFFER, c), e.forEach((function(e) {
e && e.applyTo(l)
})),
function(e) {
var t = e.targetCanvas,
n = t.width,
r = t.height,
i = e.destinationWidth,
o = e.destinationHeight;
n === i && r === o || (t.width = i, t.height = o)
}(l), this.copyGLTo2D(s, l), s.bindTexture(s.TEXTURE_2D, null), s.deleteTexture(l.sourceTexture), s.deleteTexture(l.targetTexture), s.deleteFramebuffer(c), i.getContext("2d").setTransform(1, 0, 0, 1, 0, 0), l
},
dispose: function() {
this.canvas && (this.canvas = null, this.gl = null), this.clearWebGLCaches()
},
clearWebGLCaches: function() {
this.programCache = {}, this.textureCache = {}
},
createTexture: function(e, t, n, r, i) {
var o = e.createTexture();
return e.bindTexture(e.TEXTURE_2D, o), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, i || e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, i || e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S,
e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), r ? e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, r) : e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, t, n, 0, e.RGBA, e
.UNSIGNED_BYTE, null), o
},
getCachedTexture: function(e, t) {
if (this.textureCache[e]) return this.textureCache[e];
var n = this.createTexture(this.gl, t.width, t.height, t);
return this.textureCache[e] = n, n
},
evictCachesForKey: function(e) {
this.textureCache[e] && (this.gl.deleteTexture(this.textureCache[e]), delete this.textureCache[e])
},
copyGLTo2D: b,
captureGPUInfo: function() {
if (this.gpuInfo) return this.gpuInfo;
var e = this.gl,
t = {
renderer: "",
vendor: ""
};
if (!e) return t;
var n = e.getExtension("WEBGL_debug_renderer_info");
if (n) {
var r = e.getParameter(n.UNMASKED_RENDERER_WEBGL),
i = e.getParameter(n.UNMASKED_VENDOR_WEBGL);
r && (t.renderer = r.toLowerCase()), i && (t.vendor = i.toLowerCase())
}
return this.gpuInfo = t, t
}
}
}(),
function() {
var e = function() {};
function t() {}
v.Canvas2dFilterBackend = t, t.prototype = {
evictCachesForKey: e,
dispose: e,
clearWebGLCaches: e,
resources: {},
applyFilters: function(e, t, n, r, i) {
var o = i.getContext("2d");
o.drawImage(t, 0, 0, n, r);
var a = {
sourceWidth: n,
sourceHeight: r,
imageData: o.getImageData(0, 0, n, r),
originalEl: t,
originalImageData: o.getImageData(0, 0, n, r),
canvasEl: i,
ctx: o,
filterBackend: this
};
return e.forEach((function(e) {
e.applyTo(a)
})), a.imageData.width === n && a.imageData.height === r || (i.width = a.imageData.width, i.height = a.imageData.height), o.putImageData(a.imageData, 0, 0), a
}
}
}(), v.Image = v.Image || {}, v.Image.filters = v.Image.filters || {}, v.Image.filters.BaseFilter = v.util.createClass({
type: "BaseFilter",
vertexSource: "attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",
fragmentSource: "precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",
initialize: function(e) {
e && this.setOptions(e)
},
setOptions: function(e) {
for (var t in e) this[t] = e[t]
},
createProgram: function(e, t, n) {
t = t || this.fragmentSource, n = n || this.vertexSource, "highp" !== v.webGlPrecision && (t = t.replace(/precision highp float/g, "precision " + v.webGlPrecision + " float"));
var r = e.createShader(e.VERTEX_SHADER);
if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) throw new Error("Vertex shader compile error for " + this.type + ": " + e.getShaderInfoLog(r));
var i = e.createShader(e.FRAGMENT_SHADER);
if (e.shaderSource(i, t), e.compileShader(i), !e.getShaderParameter(i, e.COMPILE_STATUS)) throw new Error("Fragment shader compile error for " + this.type + ": " + e.getShaderInfoLog(i));
var o = e.createProgram();
if (e.attachShader(o, r), e.attachShader(o, i), e.linkProgram(o), !e.getProgramParameter(o, e.LINK_STATUS)) throw new Error('Shader link error for "${this.type}" ' + e.getProgramInfoLog(o));
var a = this.getAttributeLocations(e, o),
s = this.getUniformLocations(e, o) || {};
return s.uStepW = e.getUniformLocation(o, "uStepW"), s.uStepH = e.getUniformLocation(o, "uStepH"), {
program: o,
attributeLocations: a,
uniformLocations: s
}
},
getAttributeLocations: function(e, t) {
return {
aPosition: e.getAttribLocation(t, "aPosition")
}
},
getUniformLocations: function() {
return {}
},
sendAttributeData: function(e, t, n) {
var r = t.aPosition,
i = e.createBuffer();
e.bindBuffer(e.ARRAY_BUFFER, i), e.enableVertexAttribArray(r), e.vertexAttribPointer(r, 2, e.FLOAT, !1, 0, 0), e.bufferData(e.ARRAY_BUFFER, n, e.STATIC_DRAW)
},
_setupFrameBuffer: function(e) {
var t, n, r = e.context;
e.passes > 1 ? (t = e.destinationWidth, n = e.destinationHeight, e.sourceWidth === t && e.sourceHeight === n || (r.deleteTexture(e.targetTexture), e.targetTexture = e.filterBackend.createTexture(r, t, n)), r
.framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, e.targetTexture, 0)) : (r.bindFramebuffer(r.FRAMEBUFFER, null), r.finish())
},
_swapTextures: function(e) {
e.passes--, e.pass++;
var t = e.targetTexture;
e.targetTexture = e.sourceTexture, e.sourceTexture = t
},
isNeutralState: function() {
var e = this.mainParameter,
t = v.Image.filters[this.type].prototype;
if (e) {
if (Array.isArray(t[e])) {
for (var n = t[e].length; n--;)
if (this[e][n] !== t[e][n]) return !1;
return !0
}
return t[e] === this[e]
}
return !1
},
applyTo: function(e) {
e.webgl ? (this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e)) : this.applyTo2d(e)
},
retrieveShader: function(e) {
return e.programCache.hasOwnProperty(this.type) || (e.programCache[this.type] = this.createProgram(e.context)), e.programCache[this.type]
},
applyToWebGL: function(e) {
var t = e.context,
n = this.retrieveShader(e);
0 === e.pass && e.originalTexture ? t.bindTexture(t.TEXTURE_2D, e.originalTexture) : t.bindTexture(t.TEXTURE_2D, e.sourceTexture), t.useProgram(n.program), this.sendAttributeData(t, n.attributeLocations, e.aPosition), t
.uniform1f(n.uniformLocations.uStepW, 1 / e.sourceWidth), t.uniform1f(n.uniformLocations.uStepH, 1 / e.sourceHeight), this.sendUniformData(t, n.uniformLocations), t.viewport(0, 0, e.destinationWidth, e.destinationHeight), t
.drawArrays(t.TRIANGLE_STRIP, 0, 4)
},
bindAdditionalTexture: function(e, t, n) {
e.activeTexture(n), e.bindTexture(e.TEXTURE_2D, t), e.activeTexture(e.TEXTURE0)
},
unbindAdditionalTexture: function(e, t) {
e.activeTexture(t), e.bindTexture(e.TEXTURE_2D, null), e.activeTexture(e.TEXTURE0)
},
getMainParameter: function() {
return this[this.mainParameter]
},
setMainParameter: function(e) {
this[this.mainParameter] = e
},
sendUniformData: function() {},
createHelpLayer: function(e) {
if (!e.helpLayer) {
var t = document.createElement("canvas");
t.width = e.sourceWidth, t.height = e.sourceHeight, e.helpLayer = t
}
},
toObject: function() {
var e = {
type: this.type
},
t = this.mainParameter;
return t && (e[t] = this[t]), e
},
toJSON: function() {
return this.toObject()
}
}), v.Image.filters.BaseFilter.fromObject = function(e, t) {
var n = new v.Image.filters[e.type](e);
return t && t(n), n
},
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.ColorMatrix = r(n.BaseFilter, {
type: "ColorMatrix",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",
matrix: [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
mainParameter: "matrix",
colorsOnly: !0,
initialize: function(e) {
this.callSuper("initialize", e), this.matrix = this.matrix.slice(0)
},
applyTo2d: function(e) {
var t, n, r, i, o, a = e.imageData.data,
s = a.length,
l = this.matrix,
c = this.colorsOnly;
for (o = 0; o < s; o += 4) t = a[o], n = a[o + 1], r = a[o + 2], c ? (a[o] = t * l[0] + n * l[1] + r * l[2] + 255 * l[4], a[o + 1] = t * l[5] + n * l[6] + r * l[7] + 255 * l[9], a[o + 2] = t * l[10] + n * l[11] + r * l[
12] + 255 * l[14]) : (i = a[o + 3], a[o] = t * l[0] + n * l[1] + r * l[2] + i * l[3] + 255 * l[4], a[o + 1] = t * l[5] + n * l[6] + r * l[7] + i * l[8] + 255 * l[9], a[o + 2] = t * l[10] + n * l[11] + r * l[12] + i *
l[13] + 255 * l[14], a[o + 3] = t * l[15] + n * l[16] + r * l[17] + i * l[18] + 255 * l[19])
},
getUniformLocations: function(e, t) {
return {
uColorMatrix: e.getUniformLocation(t, "uColorMatrix"),
uConstants: e.getUniformLocation(t, "uConstants")
}
},
sendUniformData: function(e, t) {
var n = this.matrix,
r = [n[0], n[1], n[2], n[3], n[5], n[6], n[7], n[8], n[10], n[11], n[12], n[13], n[15], n[16], n[17], n[18]],
i = [n[4], n[9], n[14], n[19]];
e.uniformMatrix4fv(t.uColorMatrix, !1, r), e.uniform4fv(t.uConstants, i)
}
}), t.Image.filters.ColorMatrix.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Brightness = r(n.BaseFilter, {
type: "Brightness",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uBrightness;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += uBrightness;\ngl_FragColor = color;\n}",
brightness: 0,
mainParameter: "brightness",
applyTo2d: function(e) {
if (0 !== this.brightness) {
var t, n = e.imageData.data,
r = n.length,
i = Math.round(255 * this.brightness);
for (t = 0; t < r; t += 4) n[t] = n[t] + i, n[t + 1] = n[t + 1] + i, n[t + 2] = n[t + 2] + i
}
},
getUniformLocations: function(e, t) {
return {
uBrightness: e.getUniformLocation(t, "uBrightness")
}
},
sendUniformData: function(e, t) {
e.uniform1f(t.uBrightness, this.brightness)
}
}), t.Image.filters.Brightness.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.Image.filters,
i = t.util.createClass;
r.Convolute = i(r.BaseFilter, {
type: "Convolute",
opaque: !1,
matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],
fragmentSource: {
Convolute_3_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
Convolute_3_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
Convolute_5_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
Convolute_5_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
Convolute_7_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
Convolute_7_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
Convolute_9_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
Convolute_9_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}"
},
retrieveShader: function(e) {
var t = Math.sqrt(this.matrix.length),
n = this.type + "_" + t + "_" + (this.opaque ? 1 : 0),
r = this.fragmentSource[n];
return e.programCache.hasOwnProperty(n) || (e.programCache[n] = this.createProgram(e.context, r)), e.programCache[n]
},
applyTo2d: function(e) {
var t, n, r, i, o, a, s, l, c, u, h, p, d, f = e.imageData,
g = f.data,
m = this.matrix,
v = Math.round(Math.sqrt(m.length)),
_ = Math.floor(v / 2),
b = f.width,
y = f.height,
w = e.ctx.createImageData(b, y),
x = w.data,
k = this.opaque ? 1 : 0;
for (h = 0; h < y; h++)
for (u = 0; u < b; u++) {
for (o = 4 * (h * b + u), t = 0, n = 0, r = 0, i = 0, d = 0; d < v; d++)
for (p = 0; p < v; p++) a = u + p - _, (s = h + d - _) < 0 || s >= y || a < 0 || a >= b || (l = 4 * (s * b + a), c = m[d * v + p], t += g[l] * c, n += g[l + 1] * c, r += g[l + 2] * c, k || (i += g[l + 3] * c));
x[o] = t, x[o + 1] = n, x[o + 2] = r, x[o + 3] = k ? g[o + 3] : i
}
e.imageData = w
},
getUniformLocations: function(e, t) {
return {
uMatrix: e.getUniformLocation(t, "uMatrix"),
uOpaque: e.getUniformLocation(t, "uOpaque"),
uHalfSize: e.getUniformLocation(t, "uHalfSize"),
uSize: e.getUniformLocation(t, "uSize")
}
},
sendUniformData: function(e, t) {
e.uniform1fv(t.uMatrix, this.matrix)
},
toObject: function() {
return n(this.callSuper("toObject"), {
opaque: this.opaque,
matrix: this.matrix
})
}
}), t.Image.filters.Convolute.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Grayscale = r(n.BaseFilter, {
type: "Grayscale",
fragmentSource: {
average: "precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",
lightness: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",
luminosity: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"
},
mode: "average",
mainParameter: "mode",
applyTo2d: function(e) {
var t, n, r = e.imageData.data,
i = r.length,
o = this.mode;
for (t = 0; t < i; t += 4) "average" === o ? n = (r[t] + r[t + 1] + r[t + 2]) / 3 : "lightness" === o ? n = (Math.min(r[t], r[t + 1], r[t + 2]) + Math.max(r[t], r[t + 1], r[t + 2])) / 2 : "luminosity" === o && (n = .21 *
r[t] + .72 * r[t + 1] + .07 * r[t + 2]), r[t] = n, r[t + 1] = n, r[t + 2] = n
},
retrieveShader: function(e) {
var t = this.type + "_" + this.mode;
if (!e.programCache.hasOwnProperty(t)) {
var n = this.fragmentSource[this.mode];
e.programCache[t] = this.createProgram(e.context, n)
}
return e.programCache[t]
},
getUniformLocations: function(e, t) {
return {
uMode: e.getUniformLocation(t, "uMode")
}
},
sendUniformData: function(e, t) {
e.uniform1i(t.uMode, 1)
},
isNeutralState: function() {
return !1
}
}), t.Image.filters.Grayscale.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Invert = r(n.BaseFilter, {
type: "Invert",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uInvert;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nif (uInvert == 1) {\ngl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n} else {\ngl_FragColor = color;\n}\n}",
invert: !0,
mainParameter: "invert",
applyTo2d: function(e) {
var t, n = e.imageData.data,
r = n.length;
for (t = 0; t < r; t += 4) n[t] = 255 - n[t], n[t + 1] = 255 - n[t + 1], n[t + 2] = 255 - n[t + 2]
},
isNeutralState: function() {
return !this.invert
},
getUniformLocations: function(e, t) {
return {
uInvert: e.getUniformLocation(t, "uInvert")
}
},
sendUniformData: function(e, t) {
e.uniform1i(t.uInvert, this.invert)
}
}), t.Image.filters.Invert.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.Image.filters,
i = t.util.createClass;
r.Noise = i(r.BaseFilter, {
type: "Noise",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uStepH;\nuniform float uNoise;\nuniform float uSeed;\nvarying vec2 vTexCoord;\nfloat rand(vec2 co, float seed, float vScale) {\nreturn fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n}\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\ngl_FragColor = color;\n}",
mainParameter: "noise",
noise: 0,
applyTo2d: function(e) {
if (0 !== this.noise) {
var t, n, r = e.imageData.data,
i = r.length,
o = this.noise;
for (t = 0, i = r.length; t < i; t += 4) n = (.5 - Math.random()) * o, r[t] += n, r[t + 1] += n, r[t + 2] += n
}
},
getUniformLocations: function(e, t) {
return {
uNoise: e.getUniformLocation(t, "uNoise"),
uSeed: e.getUniformLocation(t, "uSeed")
}
},
sendUniformData: function(e, t) {
e.uniform1f(t.uNoise, this.noise / 255), e.uniform1f(t.uSeed, Math.random())
},
toObject: function() {
return n(this.callSuper("toObject"), {
noise: this.noise
})
}
}), t.Image.filters.Noise.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Pixelate = r(n.BaseFilter, {
type: "Pixelate",
blocksize: 4,
mainParameter: "blocksize",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uBlocksize;\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nfloat blockW = uBlocksize * uStepW;\nfloat blockH = uBlocksize * uStepW;\nint posX = int(vTexCoord.x / blockW);\nint posY = int(vTexCoord.y / blockH);\nfloat fposX = float(posX);\nfloat fposY = float(posY);\nvec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\nvec4 color = texture2D(uTexture, squareCoords);\ngl_FragColor = color;\n}",
applyTo2d: function(e) {
var t, n, r, i, o, a, s, l, c, u, h, p = e.imageData,
d = p.data,
f = p.height,
g = p.width;
for (n = 0; n < f; n += this.blocksize)
for (r = 0; r < g; r += this.blocksize)
for (i = d[t = 4 * n * g + 4 * r], o = d[t + 1], a = d[t + 2], s = d[t + 3], u = Math.min(n + this.blocksize, f), h = Math.min(r + this.blocksize, g), l = n; l < u; l++)
for (c = r; c < h; c++) d[t = 4 * l * g + 4 * c] = i, d[t + 1] = o, d[t + 2] = a, d[t + 3] = s
},
isNeutralState: function() {
return 1 === this.blocksize
},
getUniformLocations: function(e, t) {
return {
uBlocksize: e.getUniformLocation(t, "uBlocksize"),
uStepW: e.getUniformLocation(t, "uStepW"),
uStepH: e.getUniformLocation(t, "uStepH")
}
},
sendUniformData: function(e, t) {
e.uniform1f(t.uBlocksize, this.blocksize)
}
}), t.Image.filters.Pixelate.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.extend,
r = t.Image.filters,
i = t.util.createClass;
r.RemoveColor = i(r.BaseFilter, {
type: "RemoveColor",
color: "#FFFFFF",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uLow;\nuniform vec4 uHigh;\nvarying vec2 vTexCoord;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\nif(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\ngl_FragColor.a = 0.0;\n}\n}",
distance: .02,
useAlpha: !1,
applyTo2d: function(e) {
var n, r, i, o, a = e.imageData.data,
s = 255 * this.distance,
l = new t.Color(this.color).getSource(),
c = [l[0] - s, l[1] - s, l[2] - s],
u = [l[0] + s, l[1] + s, l[2] + s];
for (n = 0; n < a.length; n += 4) r = a[n], i = a[n + 1], o = a[n + 2], r > c[0] && i > c[1] && o > c[2] && r < u[0] && i < u[1] && o < u[2] && (a[n + 3] = 0)
},
getUniformLocations: function(e, t) {
return {
uLow: e.getUniformLocation(t, "uLow"),
uHigh: e.getUniformLocation(t, "uHigh")
}
},
sendUniformData: function(e, n) {
var r = new t.Color(this.color).getSource(),
i = parseFloat(this.distance),
o = [0 + r[0] / 255 - i, 0 + r[1] / 255 - i, 0 + r[2] / 255 - i, 1],
a = [r[0] / 255 + i, r[1] / 255 + i, r[2] / 255 + i, 1];
e.uniform4fv(n.uLow, o), e.uniform4fv(n.uHigh, a)
},
toObject: function() {
return n(this.callSuper("toObject"), {
color: this.color,
distance: this.distance
})
}
}), t.Image.filters.RemoveColor.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass,
i = {
Brownie: [.5997, .34553, -.27082, 0, .186, -.0377, .86095, .15059, 0, -.1449, .24113, -.07441, .44972, 0, -.02965, 0, 0, 0, 1, 0],
Vintage: [.62793, .32021, -.03965, 0, .03784, .02578, .64411, .03259, 0, .02926, .0466, -.08512, .52416, 0, .02023, 0, 0, 0, 1, 0],
Kodachrome: [1.12855, -.39673, -.03992, 0, .24991, -.16404, 1.08352, -.05498, 0, .09698, -.16786, -.56034, 1.60148, 0, .13972, 0, 0, 0, 1, 0],
Technicolor: [1.91252, -.85453, -.09155, 0, .04624, -.30878, 1.76589, -.10601, 0, -.27589, -.2311, -.75018, 1.84759, 0, .12137, 0, 0, 0, 1, 0],
Polaroid: [1.438, -.062, -.062, 0, 0, -.122, 1.378, -.122, 0, 0, -.016, -.016, 1.483, 0, 0, 0, 0, 0, 1, 0],
Sepia: [.393, .769, .189, 0, 0, .349, .686, .168, 0, 0, .272, .534, .131, 0, 0, 0, 0, 0, 1, 0],
BlackWhite: [1.5, 1.5, 1.5, 0, -1, 1.5, 1.5, 1.5, 0, -1, 1.5, 1.5, 1.5, 0, -1, 0, 0, 0, 1, 0]
};
for (var o in i) n[o] = r(n.ColorMatrix, {
type: o,
matrix: i[o],
mainParameter: !1,
colorsOnly: !0
}), t.Image.filters[o].fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric,
n = t.Image.filters,
r = t.util.createClass;
n.BlendColor = r(n.BaseFilter, {
type: "BlendColor",
color: "#F95C63",
mode: "multiply",
alpha: 1,
fragmentSource: {
multiply: "gl_FragColor.rgb *= uColor.rgb;\n",
screen: "gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n",
add: "gl_FragColor.rgb += uColor.rgb;\n",
diff: "gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n",
subtract: "gl_FragColor.rgb -= uColor.rgb;\n",
lighten: "gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n",
darken: "gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n",
exclusion: "gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n",
overlay: "if (uColor.r < 0.5) {\ngl_FragColor.r *= 2.0 * uColor.r;\n} else {\ngl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n}\nif (uColor.g < 0.5) {\ngl_FragColor.g *= 2.0 * uColor.g;\n} else {\ngl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n}\nif (uColor.b < 0.5) {\ngl_FragColor.b *= 2.0 * uColor.b;\n} else {\ngl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n}\n",
tint: "gl_FragColor.rgb *= (1.0 - uColor.a);\ngl_FragColor.rgb += uColor.rgb;\n"
},
buildSource: function(e) {
return "precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ngl_FragColor = color;\nif (color.a > 0.0) {\n" + this
.fragmentSource[e] + "}\n}"
},
retrieveShader: function(e) {
var t, n = this.type + "_" + this.mode;
return e.programCache.hasOwnProperty(n) || (t = this.buildSource(this.mode), e.programCache[n] = this.createProgram(e.context, t)), e.programCache[n]
},
applyTo2d: function(e) {
var n, r, i, o, a, s, l, c = e.imageData.data,
u = c.length,
h = 1 - this.alpha;
n = (l = new t.Color(this.color).getSource())[0] * this.alpha, r = l[1] * this.alpha, i = l[2] * this.alpha;
for (var p = 0; p < u; p += 4) switch (o = c[p], a = c[p + 1], s = c[p + 2], this.mode) {
case "multiply":
c[p] = o * n / 255, c[p + 1] = a * r / 255, c[p + 2] = s * i / 255;
break;
case "screen":
c[p] = 255 - (255 - o) * (255 - n) / 255, c[p + 1] = 255 - (255 - a) * (255 - r) / 255, c[p + 2] = 255 - (255 - s) * (255 - i) / 255;
break;
case "add":
c[p] = o + n, c[p + 1] = a + r, c[p + 2] = s + i;
break;
case "diff":
case "difference":
c[p] = Math.abs(o - n), c[p + 1] = Math.abs(a - r), c[p + 2] = Math.abs(s - i);
break;
case "subtract":
c[p] = o - n, c[p + 1] = a - r, c[p + 2] = s - i;
break;
case "darken":
c[p] = Math.min(o, n), c[p + 1] = Math.min(a, r), c[p + 2] = Math.min(s, i);
break;
case "lighten":
c[p] = Math.max(o, n), c[p + 1] = Math.max(a, r), c[p + 2] = Math.max(s, i);
break;
case "overlay":
c[p] = n < 128 ? 2 * o * n / 255 : 255 - 2 * (255 - o) * (255 - n) / 255, c[p + 1] = r < 128 ? 2 * a * r / 255 : 255 - 2 * (255 - a) * (255 - r) / 255, c[p + 2] = i < 128 ? 2 * s * i / 255 : 255 - 2 * (255 - s) * (
255 - i) / 255;
break;
case "exclusion":
c[p] = n + o - 2 * n * o / 255, c[p + 1] = r + a - 2 * r * a / 255, c[p + 2] = i + s - 2 * i * s / 255;
break;
case "tint":
c[p] = n + o * h, c[p + 1] = r + a * h, c[p + 2] = i + s * h
}
},
getUniformLocations: function(e, t) {
return {
uColor: e.getUniformLocation(t, "uColor")
}
},
sendUniformData: function(e, n) {
var r = new t.Color(this.color).getSource();
r[0] = this.alpha * r[0] / 255, r[1] = this.alpha * r[1] / 255, r[2] = this.alpha * r[2] / 255, r[3] = this.alpha, e.uniform4fv(n.uColor, r)
},
toObject: function() {
return {
type: this.type,
color: this.color,
mode: this.mode,
alpha: this.alpha
}
}
}), t.Image.filters.BlendColor.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric,
n = t.Image.filters,
r = t.util.createClass;
n.BlendImage = r(n.BaseFilter, {
type: "BlendImage",
image: null,
mode: "multiply",
alpha: 1,
vertexSource: "attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nuniform mat3 uTransformMatrix;\nvoid main() {\nvTexCoord = aPosition;\nvTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",
fragmentSource: {
multiply: "precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.rgba *= color2.rgba;\ngl_FragColor = color;\n}",
mask: "precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.a = color2.a;\ngl_FragColor = color;\n}"
},
retrieveShader: function(e) {
var t = this.type + "_" + this.mode,
n = this.fragmentSource[this.mode];
return e.programCache.hasOwnProperty(t) || (e.programCache[t] = this.createProgram(e.context, n)), e.programCache[t]
},
applyToWebGL: function(e) {
var t = e.context,
n = this.createTexture(e.filterBackend, this.image);
this.bindAdditionalTexture(t, n, t.TEXTURE1), this.callSuper("applyToWebGL", e), this.unbindAdditionalTexture(t, t.TEXTURE1)
},
createTexture: function(e, t) {
return e.getCachedTexture(t.cacheKey, t._element)
},
calculateMatrix: function() {
var e = this.image,
t = e._element.width,
n = e._element.height;
return [1 / e.scaleX, 0, 0, 0, 1 / e.scaleY, 0, -e.left / t, -e.top / n, 1]
},
applyTo2d: function(e) {
var n, r, i, o, a, s, l, c, u, h, p, d = e.imageData,
f = e.filterBackend.resources,
g = d.data,
m = g.length,
v = d.width,
_ = d.height,
b = this.image;
f.blendImage || (f.blendImage = t.util.createCanvasElement()), h = (u = f.blendImage).getContext("2d"), u.width !== v || u.height !== _ ? (u.width = v, u.height = _) : h.clearRect(0, 0, v, _), h.setTransform(b.scaleX, 0,
0, b.scaleY, b.left, b.top), h.drawImage(b._element, 0, 0, v, _), p = h.getImageData(0, 0, v, _).data;
for (var y = 0; y < m; y += 4) switch (a = g[y], s = g[y + 1], l = g[y + 2], c = g[y + 3], n = p[y], r = p[y + 1], i = p[y + 2], o = p[y + 3], this.mode) {
case "multiply":
g[y] = a * n / 255, g[y + 1] = s * r / 255, g[y + 2] = l * i / 255, g[y + 3] = c * o / 255;
break;
case "mask":
g[y + 3] = o
}
},
getUniformLocations: function(e, t) {
return {
uTransformMatrix: e.getUniformLocation(t, "uTransformMatrix"),
uImage: e.getUniformLocation(t, "uImage")
}
},
sendUniformData: function(e, t) {
var n = this.calculateMatrix();
e.uniform1i(t.uImage, 1), e.uniformMatrix3fv(t.uTransformMatrix, !1, n)
},
toObject: function() {
return {
type: this.type,
image: this.image && this.image.toObject(),
mode: this.mode,
alpha: this.alpha
}
}
}), t.Image.filters.BlendImage.fromObject = function(e, n) {
t.Image.fromObject(e.image, (function(r) {
var i = t.util.object.clone(e);
i.image = r, n(new t.Image.filters.BlendImage(i))
}))
}
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = Math.pow,
r = Math.floor,
i = Math.sqrt,
o = Math.abs,
a = Math.round,
s = Math.sin,
l = Math.ceil,
c = t.Image.filters,
u = t.util.createClass;
c.Resize = u(c.BaseFilter, {
type: "Resize",
resizeType: "hermite",
scaleX: 1,
scaleY: 1,
lanczosLobes: 3,
getUniformLocations: function(e, t) {
return {
uDelta: e.getUniformLocation(t, "uDelta"),
uTaps: e.getUniformLocation(t, "uTaps")
}
},
sendUniformData: function(e, t) {
e.uniform2fv(t.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]), e.uniform1fv(t.uTaps, this.taps)
},
retrieveShader: function(e) {
var t = this.getFilterWindow(),
n = this.type + "_" + t;
if (!e.programCache.hasOwnProperty(n)) {
var r = this.generateShader(t);
e.programCache[n] = this.createProgram(e.context, r)
}
return e.programCache[n]
},
getFilterWindow: function() {
var e = this.tempScale;
return Math.ceil(this.lanczosLobes / e)
},
getTaps: function() {
for (var e = this.lanczosCreate(this.lanczosLobes), t = this.tempScale, n = this.getFilterWindow(), r = new Array(n), i = 1; i <= n; i++) r[i - 1] = e(i * t);
return r
},
generateShader: function(e) {
for (var t = new Array(e), n = this.fragmentSourceTOP, r = 1; r <= e; r++) t[r - 1] = r + ".0 * uDelta";
return n += "uniform float uTaps[" + e + "];\n", n += "void main() {\n", n += " vec4 color = texture2D(uTexture, vTexCoord);\n", n += " float sum = 1.0;\n", t.forEach((function(e, t) {
n += " color += texture2D(uTexture, vTexCoord + " + e + ") * uTaps[" + t + "];\n", n += " color += texture2D(uTexture, vTexCoord - " + e + ") * uTaps[" + t + "];\n", n += " sum += 2.0 * uTaps[" + t + "];\n"
})), n += " gl_FragColor = color / sum;\n", n += "}"
},
fragmentSourceTOP: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\n",
applyTo: function(e) {
e.webgl ? (e.passes++, this.width = e.sourceWidth, this.horizontal = !0, this.dW = Math.round(this.width * this.scaleX), this.dH = e.sourceHeight, this.tempScale = this.dW / this.width, this.taps = this.getTaps(), e
.destinationWidth = this.dW, this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e), e.sourceWidth = e.destinationWidth, this.height = e.sourceHeight, this.horizontal = !1, this.dH = Math.round(this
.height * this.scaleY), this.tempScale = this.dH / this.height, this.taps = this.getTaps(), e.destinationHeight = this.dH, this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e), e.sourceHeight = e
.destinationHeight) : this.applyTo2d(e)
},
isNeutralState: function() {
return 1 === this.scaleX && 1 === this.scaleY
},
lanczosCreate: function(e) {
return function(t) {
if (t >= e || t <= -e) return 0;
if (t < 1.1920929e-7 && t > -1.1920929e-7) return 1;
var n = (t *= Math.PI) / e;
return s(t) / t * s(n) / n
}
},
applyTo2d: function(e) {
var t = e.imageData,
n = this.scaleX,
r = this.scaleY;
this.rcpScaleX = 1 / n, this.rcpScaleY = 1 / r;
var i, o = t.width,
s = t.height,
l = a(o * n),
c = a(s * r);
"sliceHack" === this.resizeType ? i = this.sliceByTwo(e, o, s, l, c) : "hermite" === this.resizeType ? i = this.hermiteFastResize(e, o, s, l, c) : "bilinear" === this.resizeType ? i = this.bilinearFiltering(e, o, s, l,
c) : "lanczos" === this.resizeType && (i = this.lanczosResize(e, o, s, l, c)), e.imageData = i
},
sliceByTwo: function(e, n, i, o, a) {
var s, l, c = e.imageData,
u = .5,
h = !1,
p = !1,
d = n * u,
f = i * u,
g = t.filterBackend.resources,
m = 0,
v = 0,
_ = n,
b = 0;
for (g.sliceByTwo || (g.sliceByTwo = document.createElement("canvas")), ((s = g.sliceByTwo).width < 1.5 * n || s.height < i) && (s.width = 1.5 * n, s.height = i), (l = s.getContext("2d")).clearRect(0, 0, 1.5 * n, i), l
.putImageData(c, 0, 0), o = r(o), a = r(a); !h || !p;) n = d, i = f, o < r(d * u) ? d = r(d * u) : (d = o, h = !0), a < r(f * u) ? f = r(f * u) : (f = a, p = !0), l.drawImage(s, m, v, n, i, _, b, d, f), m = _, v = b,
b += f;
return l.getImageData(m, v, o, a)
},
lanczosResize: function(e, t, a, s, c) {
var u = e.imageData.data,
h = e.ctx.createImageData(s, c),
p = h.data,
d = this.lanczosCreate(this.lanczosLobes),
f = this.rcpScaleX,
g = this.rcpScaleY,
m = 2 / this.rcpScaleX,
v = 2 / this.rcpScaleY,
_ = l(f * this.lanczosLobes / 2),
b = l(g * this.lanczosLobes / 2),
y = {},
w = {},
x = {};
return function e(l) {
var k, C, S, E, T, O, A, P, M, D, I;
for (w.x = (l + .5) * f, x.x = r(w.x), k = 0; k < c; k++) {
for (w.y = (k + .5) * g, x.y = r(w.y), T = 0, O = 0, A = 0, P = 0, M = 0, C = x.x - _; C <= x.x + _; C++)
if (!(C < 0 || C >= t)) {
D = r(1e3 * o(C - w.x)), y[D] || (y[D] = {});
for (var N = x.y - b; N <= x.y + b; N++) N < 0 || N >= a || (I = r(1e3 * o(N - w.y)), y[D][I] || (y[D][I] = d(i(n(D * m, 2) + n(I * v, 2)) / 1e3)), (S = y[D][I]) > 0 && (T += S, O += S * u[E = 4 * (N * t + C)],
A += S * u[E + 1], P += S * u[E + 2], M += S * u[E + 3]))
} p[E = 4 * (k * s + l)] = O / T, p[E + 1] = A / T, p[E + 2] = P / T, p[E + 3] = M / T
}
return ++l < s ? e(l) : h
}(0)
},
bilinearFiltering: function(e, t, n, i, o) {
var a, s, l, c, u, h, p, d, f, g = 0,
m = this.rcpScaleX,
v = this.rcpScaleY,
_ = 4 * (t - 1),
b = e.imageData.data,
y = e.ctx.createImageData(i, o),
w = y.data;
for (l = 0; l < o; l++)
for (c = 0; c < i; c++)
for (u = m * c - (a = r(m * c)), h = v * l - (s = r(v * l)), f = 4 * (s * t + a), p = 0; p < 4; p++) d = b[f + p] * (1 - u) * (1 - h) + b[f + 4 + p] * u * (1 - h) + b[f + _ + p] * h * (1 - u) + b[f + _ + 4 + p] * u *
h, w[g++] = d;
return y
},
hermiteFastResize: function(e, t, n, a, s) {
for (var c = this.rcpScaleX, u = this.rcpScaleY, h = l(c / 2), p = l(u / 2), d = e.imageData.data, f = e.ctx.createImageData(a, s), g = f.data, m = 0; m < s; m++)
for (var v = 0; v < a; v++) {
for (var _ = 4 * (v + m * a), b = 0, y = 0, w = 0, x = 0, k = 0, C = 0, S = 0, E = (m + .5) * u, T = r(m * u); T < (m + 1) * u; T++)
for (var O = o(E - (T + .5)) / p, A = (v + .5) * c, P = O * O, M = r(v * c); M < (v + 1) * c; M++) {
var D = o(A - (M + .5)) / h,
I = i(P + D * D);
I > 1 && I < -1 || (b = 2 * I * I * I - 3 * I * I + 1) > 0 && (S += b * d[(D = 4 * (M + T * t)) + 3], w += b, d[D + 3] < 255 && (b = b * d[D + 3] / 250), x += b * d[D], k += b * d[D + 1], C += b * d[D + 2], y += b)
}
g[_] = x / y, g[_ + 1] = k / y, g[_ + 2] = C / y, g[_ + 3] = S / w
}
return f
},
toObject: function() {
return {
type: this.type,
scaleX: this.scaleX,
scaleY: this.scaleY,
resizeType: this.resizeType,
lanczosLobes: this.lanczosLobes
}
}
}), t.Image.filters.Resize.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Contrast = r(n.BaseFilter, {
type: "Contrast",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",
contrast: 0,
mainParameter: "contrast",
applyTo2d: function(e) {
if (0 !== this.contrast) {
var t, n = e.imageData.data,
r = n.length,
i = Math.floor(255 * this.contrast),
o = 259 * (i + 255) / (255 * (259 - i));
for (t = 0; t < r; t += 4) n[t] = o * (n[t] - 128) + 128, n[t + 1] = o * (n[t + 1] - 128) + 128, n[t + 2] = o * (n[t + 2] - 128) + 128
}
},
getUniformLocations: function(e, t) {
return {
uContrast: e.getUniformLocation(t, "uContrast")
}
},
sendUniformData: function(e, t) {
e.uniform1f(t.uContrast, this.contrast)
}
}), t.Image.filters.Contrast.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Saturation = r(n.BaseFilter, {
type: "Saturation",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uSaturation;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat rgMax = max(color.r, color.g);\nfloat rgbMax = max(rgMax, color.b);\ncolor.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\ncolor.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\ncolor.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\ngl_FragColor = color;\n}",
saturation: 0,
mainParameter: "saturation",
applyTo2d: function(e) {
if (0 !== this.saturation) {
var t, n, r = e.imageData.data,
i = r.length,
o = -this.saturation;
for (t = 0; t < i; t += 4) n = Math.max(r[t], r[t + 1], r[t + 2]), r[t] += n !== r[t] ? (n - r[t]) * o : 0, r[t + 1] += n !== r[t + 1] ? (n - r[t + 1]) * o : 0, r[t + 2] += n !== r[t + 2] ? (n - r[t + 2]) * o : 0
}
},
getUniformLocations: function(e, t) {
return {
uSaturation: e.getUniformLocation(t, "uSaturation")
}
},
sendUniformData: function(e, t) {
e.uniform1f(t.uSaturation, -this.saturation)
}
}), t.Image.filters.Saturation.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Vibrance = r(n.BaseFilter, {
type: "Vibrance",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uVibrance;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat max = max(color.r, max(color.g, color.b));\nfloat avg = (color.r + color.g + color.b) / 3.0;\nfloat amt = (abs(max - avg) * 2.0) * uVibrance;\ncolor.r += max != color.r ? (max - color.r) * amt : 0.00;\ncolor.g += max != color.g ? (max - color.g) * amt : 0.00;\ncolor.b += max != color.b ? (max - color.b) * amt : 0.00;\ngl_FragColor = color;\n}",
vibrance: 0,
mainParameter: "vibrance",
applyTo2d: function(e) {
if (0 !== this.vibrance) {
var t, n, r, i, o = e.imageData.data,
a = o.length,
s = -this.vibrance;
for (t = 0; t < a; t += 4) n = Math.max(o[t], o[t + 1], o[t + 2]), r = (o[t] + o[t + 1] + o[t + 2]) / 3, i = 2 * Math.abs(n - r) / 255 * s, o[t] += n !== o[t] ? (n - o[t]) * i : 0, o[t + 1] += n !== o[t + 1] ? (n - o[t +
1]) * i : 0, o[t + 2] += n !== o[t + 2] ? (n - o[t + 2]) * i : 0
}
},
getUniformLocations: function(e, t) {
return {
uVibrance: e.getUniformLocation(t, "uVibrance")
}
},
sendUniformData: function(e, t) {
e.uniform1f(t.uVibrance, -this.vibrance)
}
}), t.Image.filters.Vibrance.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Blur = r(n.BaseFilter, {
type: "Blur",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\nconst float nSamples = 15.0;\nvec3 v3offset = vec3(12.9898, 78.233, 151.7182);\nfloat random(vec3 scale) {\nreturn fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n}\nvoid main() {\nvec4 color = vec4(0.0);\nfloat total = 0.0;\nfloat offset = random(v3offset);\nfor (float t = -nSamples; t <= nSamples; t++) {\nfloat percent = (t + offset - 0.5) / nSamples;\nfloat weight = 1.0 - abs(percent);\ncolor += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\ntotal += weight;\n}\ngl_FragColor = color / total;\n}",
blur: 0,
mainParameter: "blur",
applyTo: function(e) {
e.webgl ? (this.aspectRatio = e.sourceWidth / e.sourceHeight, e.passes++, this._setupFrameBuffer(e), this.horizontal = !0, this.applyToWebGL(e), this._swapTextures(e), this._setupFrameBuffer(e), this.horizontal = !1, this
.applyToWebGL(e), this._swapTextures(e)) : this.applyTo2d(e)
},
applyTo2d: function(e) {
e.imageData = this.simpleBlur(e)
},
simpleBlur: function(e) {
var n, r, i = e.filterBackend.resources,
o = e.imageData.width,
a = e.imageData.height;
i.blurLayer1 || (i.blurLayer1 = t.util.createCanvasElement(), i.blurLayer2 = t.util.createCanvasElement()), n = i.blurLayer1, r = i.blurLayer2, n.width === o && n.height === a || (r.width = n.width = o, r.height = n
.height = a);
var s, l, c, u, h = n.getContext("2d"),
p = r.getContext("2d"),
d = 15,
f = .06 * this.blur * .5;
for (h.putImageData(e.imageData, 0, 0), p.clearRect(0, 0, o, a), u = -15; u <= d; u++) c = f * (l = u / d) * o + (s = (Math.random() - .5) / 4), p.globalAlpha = 1 - Math.abs(l), p.drawImage(n, c, s), h.drawImage(r, 0, 0),
p.globalAlpha = 1, p.clearRect(0, 0, r.width, r.height);
for (u = -15; u <= d; u++) c = f * (l = u / d) * a + (s = (Math.random() - .5) / 4), p.globalAlpha = 1 - Math.abs(l), p.drawImage(n, s, c), h.drawImage(r, 0, 0), p.globalAlpha = 1, p.clearRect(0, 0, r.width, r.height);
e.ctx.drawImage(n, 0, 0);
var g = e.ctx.getImageData(0, 0, n.width, n.height);
return h.globalAlpha = 1, h.clearRect(0, 0, n.width, n.height), g
},
getUniformLocations: function(e, t) {
return {
delta: e.getUniformLocation(t, "uDelta")
}
},
sendUniformData: function(e, t) {
var n = this.chooseRightDelta();
e.uniform2fv(t.delta, n)
},
chooseRightDelta: function() {
var e, t = 1,
n = [0, 0];
return this.horizontal ? this.aspectRatio > 1 && (t = 1 / this.aspectRatio) : this.aspectRatio < 1 && (t = this.aspectRatio), e = t * this.blur * .12, this.horizontal ? n[0] = e : n[1] = e, n
}
}), n.Blur.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Gamma = r(n.BaseFilter, {
type: "Gamma",
fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",
gamma: [1, 1, 1],
mainParameter: "gamma",
initialize: function(e) {
this.gamma = [1, 1, 1], n.BaseFilter.prototype.initialize.call(this, e)
},
applyTo2d: function(e) {
var t, n = e.imageData.data,
r = this.gamma,
i = n.length,
o = 1 / r[0],
a = 1 / r[1],
s = 1 / r[2];
for (this.rVals || (this.rVals = new Uint8Array(256), this.gVals = new Uint8Array(256), this.bVals = new Uint8Array(256)), t = 0, i = 256; t < i; t++) this.rVals[t] = 255 * Math.pow(t / 255, o), this.gVals[t] = 255 * Math
.pow(t / 255, a), this.bVals[t] = 255 * Math.pow(t / 255, s);
for (t = 0, i = n.length; t < i; t += 4) n[t] = this.rVals[n[t]], n[t + 1] = this.gVals[n[t + 1]], n[t + 2] = this.bVals[n[t + 2]]
},
getUniformLocations: function(e, t) {
return {
uGamma: e.getUniformLocation(t, "uGamma")
}
},
sendUniformData: function(e, t) {
e.uniform3fv(t.uGamma, this.gamma)
}
}), t.Image.filters.Gamma.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.Composed = r(n.BaseFilter, {
type: "Composed",
subFilters: [],
initialize: function(e) {
this.callSuper("initialize", e), this.subFilters = this.subFilters.slice(0)
},
applyTo: function(e) {
e.passes += this.subFilters.length - 1, this.subFilters.forEach((function(t) {
t.applyTo(e)
}))
},
toObject: function() {
return t.util.object.extend(this.callSuper("toObject"), {
subFilters: this.subFilters.map((function(e) {
return e.toObject()
}))
})
},
isNeutralState: function() {
return !this.subFilters.some((function(e) {
return !e.isNeutralState()
}))
}
}), t.Image.filters.Composed.fromObject = function(e, n) {
var r = (e.subFilters || []).map((function(e) {
return new t.Image.filters[e.type](e)
})),
i = new t.Image.filters.Composed({
subFilters: r
});
return n && n(i), i
}
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.Image.filters,
r = t.util.createClass;
n.HueRotation = r(n.ColorMatrix, {
type: "HueRotation",
rotation: 0,
mainParameter: "rotation",
calculateMatrix: function() {
var e = this.rotation * Math.PI,
n = t.util.cos(e),
r = t.util.sin(e),
i = 1 / 3,
o = Math.sqrt(i) * r,
a = 1 - n;
this.matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], this.matrix[0] = n + a / 3, this.matrix[1] = i * a - o, this.matrix[2] = i * a + o, this.matrix[5] = i * a + o, this.matrix[6] = n + i * a, this
.matrix[7] = i * a - o, this.matrix[10] = i * a - o, this.matrix[11] = i * a + o, this.matrix[12] = n + i * a
},
isNeutralState: function(e) {
return this.calculateMatrix(), n.BaseFilter.prototype.isNeutralState.call(this, e)
},
applyTo: function(e) {
this.calculateMatrix(), n.BaseFilter.prototype.applyTo.call(this, e)
}
}), t.Image.filters.HueRotation.fromObject = t.Image.filters.BaseFilter.fromObject
}(e),
function(e) {
var t = e.fabric || (e.fabric = {}),
n = t.util.object.clone;
if (t.Text) t.warn("fabric.Text is already defined");
else {
var r = "fontFamily fontWeight fontSize text underline overline linethrough textAlign fontStyle lineHeight textBackgroundColor charSpacing styles direction path pathStartOffset pathSide pathAlign".split(" ");
t.Text = t.util.createClass(t.Object, {
_dimensionAffectingProps: ["fontSize", "fontWeight", "fontFamily", "fontStyle", "lineHeight", "text", "charSpacing", "textAlign", "styles", "path", "pathStartOffset", "pathSide", "pathAlign"],
_reNewline: /\r?\n/,
_reSpacesAndTabs: /[ \t\r]/g,
_reSpaceAndTab: /[ \t\r]/,
_reWords: /\S+/g,
type: "text",
fontSize: 40,
fontWeight: "normal",
fontFamily: "Times New Roman",
underline: !1,
overline: !1,
linethrough: !1,
textAlign: "left",
fontStyle: "normal",
lineHeight: 1.16,
superscript: {
size: .6,
baseline: -.35
},
subscript: {
size: .6,
baseline: .11
},
textBackgroundColor: "",
stateProperties: t.Object.prototype.stateProperties.concat(r),
cacheProperties: t.Object.prototype.cacheProperties.concat(r),
stroke: null,
shadow: null,
path: null,
pathStartOffset: 0,
pathSide: "left",
pathAlign: "baseline",
_fontSizeFraction: .222,
offsets: {
underline: .1,
linethrough: -.315,
overline: -.88
},
_fontSizeMult: 1.13,
charSpacing: 0,
styles: null,
_measuringContext: null,
deltaY: 0,
direction: "ltr",
_styleProperties: ["stroke", "strokeWidth", "fill", "fontFamily", "fontSize", "fontWeight", "fontStyle", "underline", "overline", "linethrough", "deltaY", "textBackgroundColor"],
__charBounds: [],
CACHE_FONT_SIZE: 400,
MIN_TEXT_WIDTH: 2,
initialize: function(e, t) {
this.styles = t && t.styles || {}, this.text = e, this.__skipDimension = !0, this.callSuper("initialize", t), this.path && this.setPathInfo(), this.__skipDimension = !1, this.initDimensions(), this.setCoords(), this
.setupState({
propertySet: "_dimensionAffectingProps"
})
},
setPathInfo: function() {
var e = this.path;
e && (e.segmentsInfo = t.util.getPathSegmentsInfo(e.path))
},
getMeasuringContext: function() {
return t._measuringContext || (t._measuringContext = this.canvas && this.canvas.contextCache || t.util.createCanvasElement().getContext("2d")), t._measuringContext
},
_splitText: function() {
var e = this._splitTextIntoLines(this.text);
return this.textLines = e.lines, this._textLines = e.graphemeLines, this._unwrappedTextLines = e._unwrappedLines, this._text = e.graphemeText, e
},
initDimensions: function() {
this.__skipDimension || (this._splitText(), this._clearCache(), this.path ? (this.width = this.path.width, this.height = this.path.height) : (this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH,
this.height = this.calcTextHeight()), -1 !== this.textAlign.indexOf("justify") && this.enlargeSpaces(), this.saveState({
propertySet: "_dimensionAffectingProps"
}))
},
enlargeSpaces: function() {
for (var e, t, n, r, i, o, a, s = 0, l = this._textLines.length; s < l; s++)
if (("justify" === this.textAlign || s !== l - 1 && !this.isEndOfWrapping(s)) && (r = 0, i = this._textLines[s], (t = this.getLineWidth(s)) < this.width && (a = this.textLines[s].match(this._reSpacesAndTabs)))) {
n = a.length, e = (this.width - t) / n;
for (var c = 0, u = i.length; c <= u; c++) o = this.__charBounds[s][c], this._reSpaceAndTab.test(i[c]) ? (o.width += e, o.kernedWidth += e, o.left += r, r += e) : o.left += r
}
},
isEndOfWrapping: function(e) {
return e === this._textLines.length - 1
},
missingNewlineOffset: function() {
return 1
},
toString: function() {
return "#<fabric.Text (" + this.complexity() + '): { "text": "' + this.text + '", "fontFamily": "' + this.fontFamily + '" }>'
},
_getCacheCanvasDimensions: function() {
var e = this.callSuper("_getCacheCanvasDimensions"),
t = this.fontSize;
return e.width += t * e.zoomX, e.height += t * e.zoomY, e
},
_render: function(e) {
var t = this.path;
t && !t.isNotVisible() && t._render(e), this._setTextStyles(e), this._renderTextLinesBackground(e), this._renderTextDecoration(e, "underline"), this._renderText(e), this._renderTextDecoration(e, "overline"), this
._renderTextDecoration(e, "linethrough")
},
_renderText: function(e) {
"stroke" === this.paintFirst ? (this._renderTextStroke(e), this._renderTextFill(e)) : (this._renderTextFill(e), this._renderTextStroke(e))
},
_setTextStyles: function(e, t, n) {
if (e.textBaseline = "alphabetical", this.path) switch (this.pathAlign) {
case "center":
e.textBaseline = "middle";
break;
case "ascender":
e.textBaseline = "top";
break;
case "descender":
e.textBaseline = "bottom"
}
e.font = this._getFontDeclaration(t, n)
},
calcTextWidth: function() {
for (var e = this.getLineWidth(0), t = 1, n = this._textLines.length; t < n; t++) {
var r = this.getLineWidth(t);
r > e && (e = r)
}
return e
},
_renderTextLine: function(e, t, n, r, i, o) {
this._renderChars(e, t, n, r, i, o)
},
_renderTextLinesBackground: function(e) {
if (this.textBackgroundColor || this.styleHas("textBackgroundColor")) {
for (var t, n, r, i, o, a, s, l = e.fillStyle, c = this._getLeftOffset(), u = this._getTopOffset(), h = 0, p = 0, d = this.path, f = 0, g = this._textLines.length; f < g; f++)
if (t = this.getHeightOfLine(f), this.textBackgroundColor || this.styleHas("textBackgroundColor", f)) {
r = this._textLines[f], n = this._getLineLeftOffset(f), p = 0, h = 0, i = this.getValueOfPropertyAt(f, 0, "textBackgroundColor");
for (var m = 0, v = r.length; m < v; m++) o = this.__charBounds[f][m], a = this.getValueOfPropertyAt(f, m, "textBackgroundColor"), d ? (e.save(), e.translate(o.renderLeft, o.renderTop), e.rotate(o.angle), e
.fillStyle = a, a && e.fillRect(-o.width / 2, -t / this.lineHeight * (1 - this._fontSizeFraction), o.width, t / this.lineHeight), e.restore()) : a !== i ? (s = c + n + h, "rtl" === this.direction && (s = this
.width - s - p), e.fillStyle = i, i && e.fillRect(s, u, p, t / this.lineHeight), h = o.left, p = o.width, i = a) : p += o.kernedWidth;
a && !d && (s = c + n + h, "rtl" === this.direction && (s = this.width - s - p), e.fillStyle = a, e.fillRect(s, u, p, t / this.lineHeight)), u += t
} else u += t;
e.fillStyle = l, this._removeShadow(e)
}
},
getFontCache: function(e) {
var n = e.fontFamily.toLowerCase();
t.charWidthsCache[n] || (t.charWidthsCache[n] = {});
var r = t.charWidthsCache[n],
i = e.fontStyle.toLowerCase() + "_" + (e.fontWeight + "").toLowerCase();
return r[i] || (r[i] = {}), r[i]
},
_measureChar: function(e, t, n, r) {
var i, o, a, s, l = this.getFontCache(t),
c = n + e,
u = this._getFontDeclaration(t) === this._getFontDeclaration(r),
h = t.fontSize / this.CACHE_FONT_SIZE;
if (n && void 0 !== l[n] && (a = l[n]), void 0 !== l[e] && (s = i = l[e]), u && void 0 !== l[c] && (s = (o = l[c]) - a), void 0 === i || void 0 === a || void 0 === o) {
var p = this.getMeasuringContext();
this._setTextStyles(p, t, !0)
}
return void 0 === i && (s = i = p.measureText(e).width, l[e] = i), void 0 === a && u && n && (a = p.measureText(n).width, l[n] = a), u && void 0 === o && (o = p.measureText(c).width, l[c] = o, s = o - a), {
width: i * h,
kernedWidth: s * h
}
},
getHeightOfChar: function(e, t) {
return this.getValueOfPropertyAt(e, t, "fontSize")
},
measureLine: function(e) {
var t = this._measureLine(e);
return 0 !== this.charSpacing && (t.width -= this._getWidthOfCharSpacing()), t.width < 0 && (t.width = 0), t
},
_measureLine: function(e) {
var n, r, i, o, a, s, l = 0,
c = this._textLines[e],
u = new Array(c.length),
h = 0,
p = this.path,
d = "right" === this.pathSide;
for (this.__charBounds[e] = u, n = 0; n < c.length; n++) r = c[n], o = this._getGraphemeBox(r, e, n, i), u[n] = o, l += o.kernedWidth, i = r;
if (u[n] = {
left: o ? o.left + o.width : 0,
width: 0,
kernedWidth: 0,
height: this.fontSize
}, p) {
switch (s = p.segmentsInfo[p.segmentsInfo.length - 1].length, (a = t.util.getPointOnPath(p.path, 0, p.segmentsInfo)).x += p.pathOffset.x, a.y += p.pathOffset.y, this.textAlign) {
case "left":
h = d ? s - l : 0;
break;
case "center":
h = (s - l) / 2;
break;
case "right":
h = d ? 0 : s - l
}
for (h += this.pathStartOffset * (d ? -1 : 1), n = d ? c.length - 1 : 0; d ? n >= 0 : n < c.length; d ? n-- : n++) o = u[n], h > s ? h %= s : h < 0 && (h += s), this._setGraphemeOnPath(h, o, a), h += o.kernedWidth
}
return {
width: l,
numOfSpaces: 0
}
},
_setGraphemeOnPath: function(e, n, r) {
var i = e + n.kernedWidth / 2,
o = this.path,
a = t.util.getPointOnPath(o.path, i, o.segmentsInfo);
n.renderLeft = a.x - r.x, n.renderTop = a.y - r.y, n.angle = a.angle + ("right" === this.pathSide ? Math.PI : 0)
},
_getGraphemeBox: function(e, t, n, r, i) {
var o, a = this.getCompleteStyleDeclaration(t, n),
s = r ? this.getCompleteStyleDeclaration(t, n - 1) : {},
l = this._measureChar(e, a, r, s),
c = l.kernedWidth,
u = l.width;
0 !== this.charSpacing && (u += o = this._getWidthOfCharSpacing(), c += o);
var h = {
width: u,
left: 0,
height: a.fontSize,
kernedWidth: c,
deltaY: a.deltaY
};
if (n > 0 && !i) {
var p = this.__charBounds[t][n - 1];
h.left = p.left + p.width + l.kernedWidth - l.width
}
return h
},
getHeightOfLine: function(e) {
if (this.__lineHeights[e]) return this.__lineHeights[e];
for (var t = this._textLines[e], n = this.getHeightOfChar(e, 0), r = 1, i = t.length; r < i; r++) n = Math.max(this.getHeightOfChar(e, r), n);
return this.__lineHeights[e] = n * this.lineHeight * this._fontSizeMult
},
calcTextHeight: function() {
for (var e, t = 0, n = 0, r = this._textLines.length; n < r; n++) e = this.getHeightOfLine(n), t += n === r - 1 ? e / this.lineHeight : e;
return t
},
_getLeftOffset: function() {
return "ltr" === this.direction ? -this.width / 2 : this.width / 2
},
_getTopOffset: function() {
return -this.height / 2
},
_renderTextCommon: function(e, t) {
e.save();
for (var n = 0, r = this._getLeftOffset(), i = this._getTopOffset(), o = 0, a = this._textLines.length; o < a; o++) {
var s = this.getHeightOfLine(o),
l = s / this.lineHeight,
c = this._getLineLeftOffset(o);
this._renderTextLine(t, e, this._textLines[o], r + c, i + n + l, o), n += s
}
e.restore()
},
_renderTextFill: function(e) {
(this.fill || this.styleHas("fill")) && this._renderTextCommon(e, "fillText")
},
_renderTextStroke: function(e) {
(this.stroke && 0 !== this.strokeWidth || !this.isEmptyStyles()) && (this.shadow && !this.shadow.affectStroke && this._removeShadow(e), e.save(), this._setLineDash(e, this.strokeDashArray), e.beginPath(), this
._renderTextCommon(e, "strokeText"), e.closePath(), e.restore())
},
_renderChars: function(e, n, r, i, o, a) {
var s, l, c, u, h, p = this.getHeightOfLine(a),
d = -1 !== this.textAlign.indexOf("justify"),
f = "",
g = 0,
m = this.path,
v = !d && 0 === this.charSpacing && this.isEmptyStyles(a) && !m,
_ = "ltr" === this.direction,
b = "ltr" === this.direction ? 1 : -1,
y = n.canvas.getAttribute("dir");
if (n.save(), y !== this.direction && (n.canvas.setAttribute("dir", _ ? "ltr" : "rtl"), n.direction = _ ? "ltr" : "rtl", n.textAlign = _ ? "left" : "right"), o -= p * this._fontSizeFraction / this.lineHeight, v)
return this._renderChar(e, n, a, 0, r.join(""), i, o, p), void n.restore();
for (var w = 0, x = r.length - 1; w <= x; w++) u = w === x || this.charSpacing || m, f += r[w], c = this.__charBounds[a][w], 0 === g ? (i += b * (c.kernedWidth - c.width), g += c.width) : g += c.kernedWidth, d && !u &&
this._reSpaceAndTab.test(r[w]) && (u = !0), u || (s = s || this.getCompleteStyleDeclaration(a, w), l = this.getCompleteStyleDeclaration(a, w + 1), u = t.util.hasStyleChanged(s, l, !1)), u && (m ? (n.save(), n
.translate(c.renderLeft, c.renderTop), n.rotate(c.angle), this._renderChar(e, n, a, w, f, -g / 2, 0, p), n.restore()) : (h = i, this._renderChar(e, n, a, w, f, h, o, p)), f = "", s = l, i += b * g, g = 0);
n.restore()
},
_applyPatternGradientTransformText: function(e) {
var n, r = t.util.createCanvasElement(),
i = this.width + this.strokeWidth,
o = this.height + this.strokeWidth;
return r.width = i, r.height = o, (n = r.getContext("2d")).beginPath(), n.moveTo(0, 0), n.lineTo(i, 0), n.lineTo(i, o), n.lineTo(0, o), n.closePath(), n.translate(i / 2, o / 2), n.fillStyle = e.toLive(n), this
._applyPatternGradientTransform(n, e), n.fill(), n.createPattern(r, "no-repeat")
},
handleFiller: function(e, t, n) {
var r, i;
return n.toLive ? "percentage" === n.gradientUnits || n.gradientTransform || n.patternTransform ? (r = -this.width / 2, i = -this.height / 2, e.translate(r, i), e[t] = this._applyPatternGradientTransformText(n), {
offsetX: r,
offsetY: i
}) : (e[t] = n.toLive(e, this), this._applyPatternGradientTransform(e, n)) : (e[t] = n, {
offsetX: 0,
offsetY: 0
})
},
_setStrokeStyles: function(e, t) {
return e.lineWidth = t.strokeWidth, e.lineCap = this.strokeLineCap, e.lineDashOffset = this.strokeDashOffset, e.lineJoin = this.strokeLineJoin, e.miterLimit = this.strokeMiterLimit, this.handleFiller(e, "strokeStyle", t
.stroke)
},
_setFillStyles: function(e, t) {
return this.handleFiller(e, "fillStyle", t.fill)
},
_renderChar: function(e, t, n, r, i, o, a) {
var s, l, c = this._getStyleDeclaration(n, r),
u = this.getCompleteStyleDeclaration(n, r),
h = "fillText" === e && u.fill,
p = "strokeText" === e && u.stroke && u.strokeWidth;
(p || h) && (t.save(), h && (s = this._setFillStyles(t, u)), p && (l = this._setStrokeStyles(t, u)), t.font = this._getFontDeclaration(u), c && c.textBackgroundColor && this._removeShadow(t), c && c.deltaY && (a += c
.deltaY), h && t.fillText(i, o - s.offsetX, a - s.offsetY), p && t.strokeText(i, o - l.offsetX, a - l.offsetY), t.restore())
},
setSuperscript: function(e, t) {
return this._setScript(e, t, this.superscript)
},
setSubscript: function(e, t) {
return this._setScript(e, t, this.subscript)
},
_setScript: function(e, t, n) {
var r = this.get2DCursorLocation(e, !0),
i = this.getValueOfPropertyAt(r.lineIndex, r.charIndex, "fontSize"),
o = this.getValueOfPropertyAt(r.lineIndex, r.charIndex, "deltaY"),
a = {
fontSize: i * n.size,
deltaY: o + i * n.baseline
};
return this.setSelectionStyles(a, e, t), this
},
_getLineLeftOffset: function(e) {
var t = this.getLineWidth(e),
n = this.width - t,
r = this.textAlign,
i = this.direction,
o = 0,
a = this.isEndOfWrapping(e);
return "justify" === r || "justify-center" === r && !a || "justify-right" === r && !a || "justify-left" === r && !a ? 0 : ("center" === r && (o = n / 2), "right" === r && (o = n), "justify-center" === r && (o = n / 2),
"justify-right" === r && (o = n), "rtl" === i && (o -= n), o)
},
_clearCache: function() {
this.__lineWidths = [], this.__lineHeights = [], this.__charBounds = []
},
_shouldClearDimensionCache: function() {
var e = this._forceClearCache;
return e || (e = this.hasStateChanged("_dimensionAffectingProps")), e && (this.dirty = !0, this._forceClearCache = !1), e
},
getLineWidth: function(e) {
if (void 0 !== this.__lineWidths[e]) return this.__lineWidths[e];
var t = this.measureLine(e).width;
return this.__lineWidths[e] = t, t
},
_getWidthOfCharSpacing: function() {
return 0 !== this.charSpacing ? this.fontSize * this.charSpacing / 1e3 : 0
},
getValueOfPropertyAt: function(e, t, n) {
var r = this._getStyleDeclaration(e, t);
return r && void 0 !== r[n] ? r[n] : this[n]
},
_renderTextDecoration: function(e, t) {
if (this[t] || this.styleHas(t)) {
for (var n, r, i, o, a, s, l, c, u, h, p, d, f, g, m, v, _ = this._getLeftOffset(), b = this._getTopOffset(), y = this.path, w = this._getWidthOfCharSpacing(), x = this.offsets[t], k = 0, C = this._textLines
.length; k < C; k++)
if (n = this.getHeightOfLine(k), this[t] || this.styleHas(t, k)) {
l = this._textLines[k], g = n / this.lineHeight, o = this._getLineLeftOffset(k), h = 0, p = 0, c = this.getValueOfPropertyAt(k, 0, t), v = this.getValueOfPropertyAt(k, 0, "fill"), u = b + g * (1 - this
._fontSizeFraction), r = this.getHeightOfChar(k, 0), a = this.getValueOfPropertyAt(k, 0, "deltaY");
for (var S = 0, E = l.length; S < E; S++)
if (d = this.__charBounds[k][S], f = this.getValueOfPropertyAt(k, S, t), m = this.getValueOfPropertyAt(k, S, "fill"), i = this.getHeightOfChar(k, S), s = this.getValueOfPropertyAt(k, S, "deltaY"), y && f && m) e
.save(), e.fillStyle = v, e.translate(d.renderLeft, d.renderTop), e.rotate(d.angle), e.fillRect(-d.kernedWidth / 2, x * i + s, d.kernedWidth, this.fontSize / 15), e.restore();
else if ((f !== c || m !== v || i !== r || s !== a) && p > 0) {
var T = _ + o + h;
"rtl" === this.direction && (T = this.width - T - p), c && v && (e.fillStyle = v, e.fillRect(T, u + x * r + a, p, this.fontSize / 15)), h = d.left, p = d.width, c = f, v = m, r = i, a = s
} else p += d.kernedWidth;
T = _ + o + h;
"rtl" === this.direction && (T = this.width - T - p), e.fillStyle = m, f && m && e.fillRect(T, u + x * r + a, p - w, this.fontSize / 15), b += n
} else b += n;
this._removeShadow(e)
}
},
_getFontDeclaration: function(e, n) {
var r = e || this,
i = this.fontFamily,
o = t.Text.genericFonts.indexOf(i.toLowerCase()) > -1,
a = void 0 === i || i.indexOf("'") > -1 || i.indexOf(",") > -1 || i.indexOf('"') > -1 || o ? r.fontFamily : '"' + r.fontFamily + '"';
return [t.isLikelyNode ? r.fontWeight : r.fontStyle, t.isLikelyNode ? r.fontStyle : r.fontWeight, n ? this.CACHE_FONT_SIZE + "px" : r.fontSize + "px", a].join(" ")
},
render: function(e) {
this.visible && (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (this._shouldClearDimensionCache() && this.initDimensions(), this.callSuper("render", e)))
},
_splitTextIntoLines: function(e) {
for (var n = e.split(this._reNewline), r = new Array(n.length), i = ["\n"], o = [], a = 0; a < n.length; a++) r[a] = t.util.string.graphemeSplit(n[a]), o = o.concat(r[a], i);
return o.pop(), {
_unwrappedLines: r,
lines: n,
graphemeText: o,
graphemeLines: r
}
},
toObject: function(e) {
var n = r.concat(e),
i = this.callSuper("toObject", n);
return i.styles = t.util.stylesToArray(this.styles, this.text), i.path && (i.path = this.path.toObject()), i
},
set: function(e, t) {
this.callSuper("set", e, t);
var n = !1,
r = !1;
if ("object" == typeof e)
for (var i in e) "path" === i && this.setPathInfo(), n = n || -1 !== this._dimensionAffectingProps.indexOf(i), r = r || "path" === i;
else n = -1 !== this._dimensionAffectingProps.indexOf(e), r = "path" === e;
return r && this.setPathInfo(), n && (this.initDimensions(), this.setCoords()), this
},
complexity: function() {
return 1
}
}), t.Text.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor".split(" ")), t.Text.DEFAULT_SVG_FONT_SIZE = 16, t.Text.fromElement =
function(e, r, i) {
if (!e) return r(null);
var o = t.parseAttributes(e, t.Text.ATTRIBUTE_NAMES),
a = o.textAnchor || "left";
if ((i = t.util.object.extend(i ? n(i) : {}, o)).top = i.top || 0, i.left = i.left || 0, o.textDecoration) {
var s = o.textDecoration; - 1 !== s.indexOf("underline") && (i.underline = !0), -1 !== s.indexOf("overline") && (i.overline = !0), -1 !== s.indexOf("line-through") && (i.linethrough = !0), delete i.textDecoration
}
"dx" in o && (i.left += o.dx), "dy" in o && (i.top += o.dy), "fontSize" in i || (i.fontSize = t.Text.DEFAULT_SVG_FONT_SIZE);
var l = "";
"textContent" in e ? l = e.textContent : "firstChild" in e && null !== e.firstChild && "data" in e.firstChild && null !== e.firstChild.data && (l = e.firstChild.data), l = l.replace(/^\s+|\s+$|\n+/g, "").replace(/\s+/g, " ");
var c = i.strokeWidth;
i.strokeWidth = 0;
var u = new t.Text(l, i),
h = u.getScaledHeight() / u.height,
p = ((u.height + u.strokeWidth) * u.lineHeight - u.height) * h,
d = u.getScaledHeight() + p,
f = 0;
"center" === a && (f = u.getScaledWidth() / 2), "right" === a && (f = u.getScaledWidth()), u.set({
left: u.left - f,
top: u.top - (d - u.fontSize * (.07 + u._fontSizeFraction)) / u.lineHeight,
strokeWidth: void 0 !== c ? c : 1
}), r(u)
}, t.Text.fromObject = function(e, r) {
var i = n(e),
o = e.path;
return delete i.path, t.Object._fromObject("Text", i, (function(n) {
n.styles = t.util.stylesFromArray(e.styles, e.text), o ? t.Object._fromObject("Path", o, (function(e) {
n.set("path", e), r(n)
}), "path") : r(n)
}), "text")
}, t.Text.genericFonts = ["sans-serif", "serif", "cursive", "fantasy", "monospace"], t.util.createAccessors && t.util.createAccessors(t.Text)
}
}(e), v.util.object.extend(v.Text.prototype, {
isEmptyStyles: function(e) {
if (!this.styles) return !0;
if (void 0 !== e && !this.styles[e]) return !0;
var t = void 0 === e ? this.styles : {
line: this.styles[e]
};
for (var n in t)
for (var r in t[n])
for (var i in t[n][r]) return !1;
return !0
},
styleHas: function(e, t) {
if (!this.styles || !e || "" === e) return !1;
if (void 0 !== t && !this.styles[t]) return !1;
var n = void 0 === t ? this.styles : {
0: this.styles[t]
};
for (var r in n)
for (var i in n[r])
if (void 0 !== n[r][i][e]) return !0;
return !1
},
cleanStyle: function(e) {
if (!this.styles || !e || "" === e) return !1;
var t, n, r = this.styles,
i = 0,
o = !0,
a = 0;
for (var s in r) {
for (var l in t = 0, r[s]) {
var c;
i++, (c = r[s][l]).hasOwnProperty(e) ? (n ? c[e] !== n && (o = !1) : n = c[e], c[e] === this[e] && delete c[e]) : o = !1, 0 !== Object.keys(c).length ? t++ : delete r[s][l]
}
0 === t && delete r[s]
}
for (var u = 0; u < this._textLines.length; u++) a += this._textLines[u].length;
o && i === a && (this[e] = n, this.removeStyle(e))
},
removeStyle: function(e) {
if (this.styles && e && "" !== e) {
var t, n, r, i = this.styles;
for (n in i) {
for (r in t = i[n]) delete t[r][e], 0 === Object.keys(t[r]).length && delete t[r];
0 === Object.keys(t).length && delete i[n]
}
}
},
_extendStyles: function(e, t) {
var n = this.get2DCursorLocation(e);
this._getLineStyle(n.lineIndex) || this._setLineStyle(n.lineIndex), this._getStyleDeclaration(n.lineIndex, n.charIndex) || this._setStyleDeclaration(n.lineIndex, n.charIndex, {}), v.util.object.extend(this
._getStyleDeclaration(n.lineIndex, n.charIndex), t)
},
get2DCursorLocation: function(e, t) {
void 0 === e && (e = this.selectionStart);
for (var n = t ? this._unwrappedTextLines : this._textLines, r = n.length, i = 0; i < r; i++) {
if (e <= n[i].length) return {
lineIndex: i,
charIndex: e
};
e -= n[i].length + this.missingNewlineOffset(i)
}
return {
lineIndex: i - 1,
charIndex: n[i - 1].length < e ? n[i - 1].length : e
}
},
getSelectionStyles: function(e, t, n) {
void 0 === e && (e = this.selectionStart || 0), void 0 === t && (t = this.selectionEnd || e);
for (var r = [], i = e; i < t; i++) r.push(this.getStyleAtPosition(i, n));
return r
},
getStyleAtPosition: function(e, t) {
var n = this.get2DCursorLocation(e);
return (t ? this.getCompleteStyleDeclaration(n.lineIndex, n.charIndex) : this._getStyleDeclaration(n.lineIndex, n.charIndex)) || {}
},
setSelectionStyles: function(e, t, n) {
void 0 === t && (t = this.selectionStart || 0), void 0 === n && (n = this.selectionEnd || t);
for (var r = t; r < n; r++) this._extendStyles(r, e);
return this._forceClearCache = !0, this
},
_getStyleDeclaration: function(e, t) {
var n = this.styles && this.styles[e];
return n ? n[t] : null
},
getCompleteStyleDeclaration: function(e, t) {
for (var n, r = this._getStyleDeclaration(e, t) || {}, i = {}, o = 0; o < this._styleProperties.length; o++) i[n = this._styleProperties[o]] = void 0 === r[n] ? this[n] : r[n];
return i
},
_setStyleDeclaration: function(e, t, n) {
this.styles[e][t] = n
},
_deleteStyleDeclaration: function(e, t) {
delete this.styles[e][t]
},
_getLineStyle: function(e) {
return !!this.styles[e]
},
_setLineStyle: function(e) {
this.styles[e] = {}
},
_deleteLineStyle: function(e) {
delete this.styles[e]
}
}),
function() {
function e(e) {
e.textDecoration && (e.textDecoration.indexOf("underline") > -1 && (e.underline = !0), e.textDecoration.indexOf("line-through") > -1 && (e.linethrough = !0), e.textDecoration.indexOf("overline") > -1 && (e.overline = !0), delete e
.textDecoration)
}
v.IText = v.util.createClass(v.Text, v.Observable, {
type: "i-text",
selectionStart: 0,
selectionEnd: 0,
selectionColor: "rgba(17,119,255,0.3)",
isEditing: !1,
editable: !0,
editingBorderColor: "rgba(102,153,255,0.25)",
cursorWidth: 2,
cursorColor: "",
cursorDelay: 1e3,
cursorDuration: 600,
caching: !0,
hiddenTextareaContainer: null,
_reSpace: /\s|\n/,
_currentCursorOpacity: 0,
_selectionDirection: null,
_abortCursorAnimation: !1,
__widthOfSpace: [],
inCompositionMode: !1,
initialize: function(e, t) {
this.callSuper("initialize", e, t), this.initBehavior()
},
setSelectionStart: function(e) {
e = Math.max(e, 0), this._updateAndFire("selectionStart", e)
},
setSelectionEnd: function(e) {
e = Math.min(e, this.text.length), this._updateAndFire("selectionEnd", e)
},
_updateAndFire: function(e, t) {
this[e] !== t && (this._fireSelectionChanged(), this[e] = t), this._updateTextarea()
},
_fireSelectionChanged: function() {
this.fire("selection:changed"), this.canvas && this.canvas.fire("text:selection:changed", {
target: this
})
},
initDimensions: function() {
this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this.callSuper("initDimensions")
},
render: function(e) {
this.clearContextTop(), this.callSuper("render", e), this.cursorOffsetCache = {}, this.renderCursorOrSelection()
},
_render: function(e) {
this.callSuper("_render", e)
},
clearContextTop: function(e) {
if (this.isEditing && this.canvas && this.canvas.contextTop) {
var t = this.canvas.contextTop,
n = this.canvas.viewportTransform;
t.save(), t.transform(n[0], n[1], n[2], n[3], n[4], n[5]), this.transform(t), this._clearTextArea(t), e || t.restore()
}
},
renderCursorOrSelection: function() {
if (this.isEditing && this.canvas && this.canvas.contextTop) {
var e = this._getCursorBoundaries(),
t = this.canvas.contextTop;
this.clearContextTop(!0), this.selectionStart === this.selectionEnd ? this.renderCursor(e, t) : this.renderSelection(e, t), t.restore()
}
},
_clearTextArea: function(e) {
var t = this.width + 4,
n = this.height + 4;
e.clearRect(-t / 2, -n / 2, t, n)
},
_getCursorBoundaries: function(e) {
void 0 === e && (e = this.selectionStart);
var t = this._getLeftOffset(),
n = this._getTopOffset(),
r = this._getCursorBoundariesOffsets(e);
return {
left: t,
top: n,
leftOffset: r.left,
topOffset: r.top
}
},
_getCursorBoundariesOffsets: function(e) {
if (this.cursorOffsetCache && "top" in this.cursorOffsetCache) return this.cursorOffsetCache;
var t, n, r, i, o = 0,
a = 0,
s = this.get2DCursorLocation(e);
r = s.charIndex, n = s.lineIndex;
for (var l = 0; l < n; l++) o += this.getHeightOfLine(l);
t = this._getLineLeftOffset(n);
var c = this.__charBounds[n][r];
return c && (a = c.left), 0 !== this.charSpacing && r === this._textLines[n].length && (a -= this._getWidthOfCharSpacing()), i = {
top: o,
left: t + (a > 0 ? a : 0)
}, "rtl" === this.direction && (i.left *= -1), this.cursorOffsetCache = i, this.cursorOffsetCache
},
renderCursor: function(e, t) {
var n = this.get2DCursorLocation(),
r = n.lineIndex,
i = n.charIndex > 0 ? n.charIndex - 1 : 0,
o = this.getValueOfPropertyAt(r, i, "fontSize"),
a = this.scaleX * this.canvas.getZoom(),
s = this.cursorWidth / a,
l = e.topOffset,
c = this.getValueOfPropertyAt(r, i, "deltaY");
l += (1 - this._fontSizeFraction) * this.getHeightOfLine(r) / this.lineHeight - o * (1 - this._fontSizeFraction), this.inCompositionMode && this.renderSelection(e, t), t.fillStyle = this.cursorColor || this
.getValueOfPropertyAt(r, i, "fill"), t.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity, t.fillRect(e.left + e.leftOffset - s / 2, l + e.top + c, s, o)
},
renderSelection: function(e, t) {
for (var n = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart, r = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd, i = -1 !== this.textAlign.indexOf(
"justify"), o = this.get2DCursorLocation(n), a = this.get2DCursorLocation(r), s = o.lineIndex, l = a.lineIndex, c = o.charIndex < 0 ? 0 : o.charIndex, u = a.charIndex < 0 ? 0 : a.charIndex, h = s; h <= l; h++) {
var p, d = this._getLineLeftOffset(h) || 0,
f = this.getHeightOfLine(h),
g = 0,
m = 0;
if (h === s && (g = this.__charBounds[s][c].left), h >= s && h < l) m = i && !this.isEndOfWrapping(h) ? this.width : this.getLineWidth(h) || 5;
else if (h === l)
if (0 === u) m = this.__charBounds[l][u].left;
else {
var v = this._getWidthOfCharSpacing();
m = this.__charBounds[l][u - 1].left + this.__charBounds[l][u - 1].width - v
} p = f, (this.lineHeight < 1 || h === l && this.lineHeight > 1) && (f /= this.lineHeight);
var _ = e.left + d + g,
b = m - g,
y = f,
w = 0;
this.inCompositionMode ? (t.fillStyle = this.compositionColor || "black", y = 1, w = f) : t.fillStyle = this.selectionColor, "rtl" === this.direction && (_ = this.width - _ - b), t.fillRect(_, e.top + e.topOffset + w, b,
y), e.topOffset += p
}
},
getCurrentCharFontSize: function() {
var e = this._getCurrentCharIndex();
return this.getValueOfPropertyAt(e.l, e.c, "fontSize")
},
getCurrentCharColor: function() {
var e = this._getCurrentCharIndex();
return this.getValueOfPropertyAt(e.l, e.c, "fill")
},
_getCurrentCharIndex: function() {
var e = this.get2DCursorLocation(this.selectionStart, !0),
t = e.charIndex > 0 ? e.charIndex - 1 : 0;
return {
l: e.lineIndex,
c: t
}
}
}), v.IText.fromObject = function(t, n) {
var r = v.util.stylesFromArray(t.styles, t.text),
i = Object.assign({}, t, {
styles: r
});
if (e(i), i.styles)
for (var o in i.styles)
for (var a in i.styles[o]) e(i.styles[o][a]);
v.Object._fromObject("IText", i, n, "text")
}
}(), m = v.util.object.clone, v.util.object.extend(v.IText.prototype, {
initBehavior: function() {
this.initAddedHandler(), this.initRemovedHandler(), this.initCursorSelectionHandlers(), this.initDoubleClickSimulation(), this.mouseMoveHandler = this.mouseMoveHandler.bind(this)
},
onDeselect: function() {
this.isEditing && this.exitEditing(), this.selected = !1
},
initAddedHandler: function() {
var e = this;
this.on("added", (function() {
var t = e.canvas;
t && (t._hasITextHandlers || (t._hasITextHandlers = !0, e._initCanvasHandlers(t)), t._iTextInstances = t._iTextInstances || [], t._iTextInstances.push(e))
}))
},
initRemovedHandler: function() {
var e = this;
this.on("removed", (function() {
var t = e.canvas;
t && (t._iTextInstances = t._iTextInstances || [], v.util.removeFromArray(t._iTextInstances, e), 0 === t._iTextInstances.length && (t._hasITextHandlers = !1, e._removeCanvasHandlers(t)))
}))
},
_initCanvasHandlers: function(e) {
e._mouseUpITextHandler = function() {
e._iTextInstances && e._iTextInstances.forEach((function(e) {
e.__isMousedown = !1
}))
}, e.on("mouse:up", e._mouseUpITextHandler)
},
_removeCanvasHandlers: function(e) {
e.off("mouse:up", e._mouseUpITextHandler)
},
_tick: function() {
this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, "_onTickComplete")
},
_animateCursor: function(e, t, n, r) {
var i;
return i = {
isAborted: !1,
abort: function() {
this.isAborted = !0
}
}, e.animate("_currentCursorOpacity", t, {
duration: n,
onComplete: function() {
i.isAborted || e[r]()
},
onChange: function() {
e.canvas && e.selectionStart === e.selectionEnd && e.renderCursorOrSelection()
},
abort: function() {
return i.isAborted
}
}), i
},
_onTickComplete: function() {
var e = this;
this._cursorTimeout1 && clearTimeout(this._cursorTimeout1), this._cursorTimeout1 = setTimeout((function() {
e._currentTickCompleteState = e._animateCursor(e, 0, this.cursorDuration / 2, "_tick")
}), 100)
},
initDelayedCursor: function(e) {
var t = this,
n = e ? 0 : this.cursorDelay;
this.abortCursorAnimation(), this._currentCursorOpacity = 1, this._cursorTimeout2 = setTimeout((function() {
t._tick()
}), n)
},
abortCursorAnimation: function() {
var e = this._currentTickState || this._currentTickCompleteState,
t = this.canvas;
this._currentTickState && this._currentTickState.abort(), this._currentTickCompleteState && this._currentTickCompleteState.abort(), clearTimeout(this._cursorTimeout1), clearTimeout(this._cursorTimeout2), this
._currentCursorOpacity = 0, e && t && t.clearContext(t.contextTop || t.contextContainer)
},
selectAll: function() {
return this.selectionStart = 0, this.selectionEnd = this._text.length, this._fireSelectionChanged(), this._updateTextarea(), this
},
getSelectedText: function() {
return this._text.slice(this.selectionStart, this.selectionEnd).join("")
},
findWordBoundaryLeft: function(e) {
var t = 0,
n = e - 1;
if (this._reSpace.test(this._text[n]))
for (; this._reSpace.test(this._text[n]);) t++, n--;
for (;
/\S/.test(this._text[n]) && n > -1;) t++, n--;
return e - t
},
findWordBoundaryRight: function(e) {
var t = 0,
n = e;
if (this._reSpace.test(this._text[n]))
for (; this._reSpace.test(this._text[n]);) t++, n++;
for (;
/\S/.test(this._text[n]) && n < this._text.length;) t++, n++;
return e + t
},
findLineBoundaryLeft: function(e) {
for (var t = 0, n = e - 1; !/\n/.test(this._text[n]) && n > -1;) t++, n--;
return e - t
},
findLineBoundaryRight: function(e) {
for (var t = 0, n = e; !/\n/.test(this._text[n]) && n < this._text.length;) t++, n++;
return e + t
},
searchWordBoundary: function(e, t) {
for (var n = this._text, r = this._reSpace.test(n[e]) ? e - 1 : e, i = n[r], o = v.reNonWord; !o.test(i) && r > 0 && r < n.length;) i = n[r += t];
return o.test(i) && (r += 1 === t ? 0 : 1), r
},
selectWord: function(e) {
e = e || this.selectionStart;
var t = this.searchWordBoundary(e, -1),
n = this.searchWordBoundary(e, 1);
this.selectionStart = t, this.selectionEnd = n, this._fireSelectionChanged(), this._updateTextarea(), this.renderCursorOrSelection()
},
selectLine: function(e) {
e = e || this.selectionStart;
var t = this.findLineBoundaryLeft(e),
n = this.findLineBoundaryRight(e);
return this.selectionStart = t, this.selectionEnd = n, this._fireSelectionChanged(), this._updateTextarea(), this
},
enterEditing: function(e) {
if (!this.isEditing && this.editable) return this.canvas && (this.canvas.calcOffset(), this.exitEditingOnOthers(this.canvas)), this.isEditing = !0, this.initHiddenTextarea(e), this.hiddenTextarea.focus(), this.hiddenTextarea
.value = this.text, this._updateTextarea(), this._saveEditingProps(), this._setEditingProps(), this._textBeforeEdit = this.text, this._tick(), this.fire("editing:entered"), this._fireSelectionChanged(), this.canvas ? (this
.canvas.fire("text:editing:entered", {
target: this
}), this.initMouseMoveHandler(), this.canvas.requestRenderAll(), this) : this
},
exitEditingOnOthers: function(e) {
e._iTextInstances && e._iTextInstances.forEach((function(e) {
e.selected = !1, e.isEditing && e.exitEditing()
}))
},
initMouseMoveHandler: function() {
this.canvas.on("mouse:move", this.mouseMoveHandler)
},
mouseMoveHandler: function(e) {
if (this.__isMousedown && this.isEditing) {
document.activeElement !== this.hiddenTextarea && this.hiddenTextarea.focus();
var t = this.getSelectionStartFromPointer(e.e),
n = this.selectionStart,
r = this.selectionEnd;
(t === this.__selectionStartOnMouseDown && n !== r || n !== t && r !== t) && (t > this.__selectionStartOnMouseDown ? (this.selectionStart = this.__selectionStartOnMouseDown, this.selectionEnd = t) : (this.selectionStart = t,
this.selectionEnd = this.__selectionStartOnMouseDown), this.selectionStart === n && this.selectionEnd === r || (this.restartCursorIfNeeded(), this._fireSelectionChanged(), this._updateTextarea(), this
.renderCursorOrSelection()))
}
},
_setEditingProps: function() {
this.hoverCursor = "text", this.canvas && (this.canvas.defaultCursor = this.canvas.moveCursor = "text"), this.borderColor = this.editingBorderColor, this.hasControls = this.selectable = !1, this.lockMovementX = this
.lockMovementY = !0
},
fromStringToGraphemeSelection: function(e, t, n) {
var r = n.slice(0, e),
i = v.util.string.graphemeSplit(r).length;
if (e === t) return {
selectionStart: i,
selectionEnd: i
};
var o = n.slice(e, t);
return {
selectionStart: i,
selectionEnd: i + v.util.string.graphemeSplit(o).length
}
},
fromGraphemeToStringSelection: function(e, t, n) {
var r = n.slice(0, e).join("").length;
return e === t ? {
selectionStart: r,
selectionEnd: r
} : {
selectionStart: r,
selectionEnd: r + n.slice(e, t).join("").length
}
},
_updateTextarea: function() {
if (this.cursorOffsetCache = {}, this.hiddenTextarea) {
if (!this.inCompositionMode) {
var e = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);
this.hiddenTextarea.selectionStart = e.selectionStart, this.hiddenTextarea.selectionEnd = e.selectionEnd
}
this.updateTextareaPosition()
}
},
updateFromTextArea: function() {
if (this.hiddenTextarea) {
this.cursorOffsetCache = {}, this.text = this.hiddenTextarea.value, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords());
var e = this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);
this.selectionEnd = this.selectionStart = e.selectionEnd, this.inCompositionMode || (this.selectionStart = e.selectionStart), this.updateTextareaPosition()
}
},
updateTextareaPosition: function() {
if (this.selectionStart === this.selectionEnd) {
var e = this._calcTextareaPosition();
this.hiddenTextarea.style.left = e.left, this.hiddenTextarea.style.top = e.top
}
},
_calcTextareaPosition: function() {
if (!this.canvas) return {
x: 1,
y: 1
};
var e = this.inCompositionMode ? this.compositionStart : this.selectionStart,
t = this._getCursorBoundaries(e),
n = this.get2DCursorLocation(e),
r = n.lineIndex,
i = n.charIndex,
o = this.getValueOfPropertyAt(r, i, "fontSize") * this.lineHeight,
a = t.leftOffset,
s = this.calcTransformMatrix(),
l = {
x: t.left + a,
y: t.top + t.topOffset + o
},
c = this.canvas.getRetinaScaling(),
u = this.canvas.upperCanvasEl,
h = u.width / c,
p = u.height / c,
d = h - o,
f = p - o,
g = u.clientWidth / h,
m = u.clientHeight / p;
return l = v.util.transformPoint(l, s), (l = v.util.transformPoint(l, this.canvas.viewportTransform)).x *= g, l.y *= m, l.x < 0 && (l.x = 0), l.x > d && (l.x = d), l.y < 0 && (l.y = 0), l.y > f && (l.y = f), l.x += this.canvas
._offset.left, l.y += this.canvas._offset.top, {
left: l.x + "px",
top: l.y + "px",
fontSize: o + "px",
charHeight: o
}
},
_saveEditingProps: function() {
this._savedProps = {
hasControls: this.hasControls,
borderColor: this.borderColor,
lockMovementX: this.lockMovementX,
lockMovementY: this.lockMovementY,
hoverCursor: this.hoverCursor,
selectable: this.selectable,
defaultCursor: this.canvas && this.canvas.defaultCursor,
moveCursor: this.canvas && this.canvas.moveCursor
}
},
_restoreEditingProps: function() {
this._savedProps && (this.hoverCursor = this._savedProps.hoverCursor, this.hasControls = this._savedProps.hasControls, this.borderColor = this._savedProps.borderColor, this.selectable = this._savedProps.selectable, this
.lockMovementX = this._savedProps.lockMovementX, this.lockMovementY = this._savedProps.lockMovementY, this.canvas && (this.canvas.defaultCursor = this._savedProps.defaultCursor, this.canvas.moveCursor = this._savedProps
.moveCursor))
},
exitEditing: function() {
var e = this._textBeforeEdit !== this.text,
t = this.hiddenTextarea;
return this.selected = !1, this.isEditing = !1, this.selectionEnd = this.selectionStart, t && (t.blur && t.blur(), t.parentNode && t.parentNode.removeChild(t)), this.hiddenTextarea = null, this.abortCursorAnimation(), this
._restoreEditingProps(), this._currentCursorOpacity = 0, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()), this.fire("editing:exited"), e && this.fire("modified"), this.canvas && (this.canvas
.off("mouse:move", this.mouseMoveHandler), this.canvas.fire("text:editing:exited", {
target: this
}), e && this.canvas.fire("object:modified", {
target: this
})), this
},
_removeExtraneousStyles: function() {
for (var e in this.styles) this._textLines[e] || delete this.styles[e]
},
removeStyleFromTo: function(e, t) {
var n, r, i = this.get2DCursorLocation(e, !0),
o = this.get2DCursorLocation(t, !0),
a = i.lineIndex,
s = i.charIndex,
l = o.lineIndex,
c = o.charIndex;
if (a !== l) {
if (this.styles[a])
for (n = s; n < this._unwrappedTextLines[a].length; n++) delete this.styles[a][n];
if (this.styles[l])
for (n = c; n < this._unwrappedTextLines[l].length; n++)(r = this.styles[l][n]) && (this.styles[a] || (this.styles[a] = {}), this.styles[a][s + n - c] = r);
for (n = a + 1; n <= l; n++) delete this.styles[n];
this.shiftLineStyles(l, a - l)
} else if (this.styles[a]) {
r = this.styles[a];
var u, h, p = c - s;
for (n = s; n < c; n++) delete r[n];
for (h in this.styles[a])(u = parseInt(h, 10)) >= c && (r[u - p] = r[h], delete r[h])
}
},
shiftLineStyles: function(e, t) {
var n = m(this.styles);
for (var r in this.styles) {
var i = parseInt(r, 10);
i > e && (this.styles[i + t] = n[i], n[i - t] || delete this.styles[i])
}
},
restartCursorIfNeeded: function() {
this._currentTickState && !this._currentTickState.isAborted && this._currentTickCompleteState && !this._currentTickCompleteState.isAborted || this.initDelayedCursor()
},
insertNewlineStyleObject: function(e, t, n, r) {
var i, o = {},
a = !1,
s = this._unwrappedTextLines[e].length === t;
for (var l in n || (n = 1), this.shiftLineStyles(e, n), this.styles[e] && (i = this.styles[e][0 === t ? t : t - 1]), this.styles[e]) {
var c = parseInt(l, 10);
c >= t && (a = !0, o[c - t] = this.styles[e][l], s && 0 === t || delete this.styles[e][l])
}
var u = !1;
for (a && !s && (this.styles[e + n] = o, u = !0), u && n--; n > 0;) r && r[n - 1] ? this.styles[e + n] = {
0: m(r[n - 1])
} : i ? this.styles[e + n] = {
0: m(i)
} : delete this.styles[e + n], n--;
this._forceClearCache = !0
},
insertCharStyleObject: function(e, t, n, r) {
this.styles || (this.styles = {});
var i = this.styles[e],
o = i ? m(i) : {};
for (var a in n || (n = 1), o) {
var s = parseInt(a, 10);
s >= t && (i[s + n] = o[s], o[s - n] || delete i[s])
}
if (this._forceClearCache = !0, r)
for (; n--;) Object.keys(r[n]).length && (this.styles[e] || (this.styles[e] = {}), this.styles[e][t + n] = m(r[n]));
else if (i)
for (var l = i[t ? t - 1 : 1]; l && n--;) this.styles[e][t + n] = m(l)
},
insertNewStyleBlock: function(e, t, n) {
for (var r = this.get2DCursorLocation(t, !0), i = [0], o = 0, a = 0; a < e.length; a++) "\n" === e[a] ? i[++o] = 0 : i[o]++;
for (i[0] > 0 && (this.insertCharStyleObject(r.lineIndex, r.charIndex, i[0], n), n = n && n.slice(i[0] + 1)), o && this.insertNewlineStyleObject(r.lineIndex, r.charIndex + i[0], o), a = 1; a < o; a++) i[a] > 0 ? this
.insertCharStyleObject(r.lineIndex + a, 0, i[a], n) : n && this.styles[r.lineIndex + a] && n[0] && (this.styles[r.lineIndex + a][0] = n[0]), n = n && n.slice(i[a] + 1);
i[a] > 0 && this.insertCharStyleObject(r.lineIndex + a, 0, i[a], n)
},
setSelectionStartEndWithShift: function(e, t, n) {
n <= e ? (t === e ? this._selectionDirection = "left" : "right" === this._selectionDirection && (this._selectionDirection = "left", this.selectionEnd = e), this.selectionStart = n) : n > e && n < t ? "right" === this
._selectionDirection ? this.selectionEnd = n : this.selectionStart = n : (t === e ? this._selectionDirection = "right" : "left" === this._selectionDirection && (this._selectionDirection = "right", this.selectionStart = t),
this.selectionEnd = n)
},
setSelectionInBoundaries: function() {
var e = this.text.length;
this.selectionStart > e ? this.selectionStart = e : this.selectionStart < 0 && (this.selectionStart = 0), this.selectionEnd > e ? this.selectionEnd = e : this.selectionEnd < 0 && (this.selectionEnd = 0)
}
}), v.util.object.extend(v.IText.prototype, {
initDoubleClickSimulation: function() {
this.__lastClickTime = +new Date, this.__lastLastClickTime = +new Date, this.__lastPointer = {}, this.on("mousedown", this.onMouseDown)
},
onMouseDown: function(e) {
if (this.canvas) {
this.__newClickTime = +new Date;
var t = e.pointer;
this.isTripleClick(t) && (this.fire("tripleclick", e), this._stopEvent(e.e)), this.__lastLastClickTime = this.__lastClickTime, this.__lastClickTime = this.__newClickTime, this.__lastPointer = t, this.__lastIsEditing = this
.isEditing, this.__lastSelected = this.selected
}
},
isTripleClick: function(e) {
return this.__newClickTime - this.__lastClickTime < 500 && this.__lastClickTime - this.__lastLastClickTime < 500 && this.__lastPointer.x === e.x && this.__lastPointer.y === e.y
},
_stopEvent: function(e) {
e.preventDefault && e.preventDefault(), e.stopPropagation && e.stopPropagation()
},
initCursorSelectionHandlers: function() {
this.initMousedownHandler(), this.initMouseupHandler(), this.initClicks()
},
doubleClickHandler: function(e) {
this.isEditing && this.selectWord(this.getSelectionStartFromPointer(e.e))
},
tripleClickHandler: function(e) {
this.isEditing && this.selectLine(this.getSelectionStartFromPointer(e.e))
},
initClicks: function() {
this.on("mousedblclick", this.doubleClickHandler), this.on("tripleclick", this.tripleClickHandler)
},
_mouseDownHandler: function(e) {
!this.canvas || !this.editable || e.e.button && 1 !== e.e.button || (this.__isMousedown = !0, this.selected && (this.inCompositionMode = !1, this.setCursorByClick(e.e)), this.isEditing && (this.__selectionStartOnMouseDown =
this.selectionStart, this.selectionStart === this.selectionEnd && this.abortCursorAnimation(), this.renderCursorOrSelection()))
},
_mouseDownHandlerBefore: function(e) {
!this.canvas || !this.editable || e.e.button && 1 !== e.e.button || (this.selected = this === this.canvas._activeObject)
},
initMousedownHandler: function() {
this.on("mousedown", this._mouseDownHandler), this.on("mousedown:before", this._mouseDownHandlerBefore)
},
initMouseupHandler: function() {
this.on("mouseup", this.mouseUpHandler)
},
mouseUpHandler: function(e) {
if (this.__isMousedown = !1, !(!this.editable || this.group || e.transform && e.transform.actionPerformed || e.e.button && 1 !== e.e.button)) {
if (this.canvas) {
var t = this.canvas._activeObject;
if (t && t !== this) return
}
this.__lastSelected && !this.__corner ? (this.selected = !1, this.__lastSelected = !1, this.enterEditing(e.e), this.selectionStart === this.selectionEnd ? this.initDelayedCursor(!0) : this.renderCursorOrSelection()) : this
.selected = !0
}
},
setCursorByClick: function(e) {
var t = this.getSelectionStartFromPointer(e),
n = this.selectionStart,
r = this.selectionEnd;
e.shiftKey ? this.setSelectionStartEndWithShift(n, r, t) : (this.selectionStart = t, this.selectionEnd = t), this.isEditing && (this._fireSelectionChanged(), this._updateTextarea())
},
getSelectionStartFromPointer: function(e) {
for (var t, n = this.getLocalPointer(e), r = 0, i = 0, o = 0, a = 0, s = 0, l = 0, c = this._textLines.length; l < c && o <= n.y; l++) o += this.getHeightOfLine(l) * this.scaleY, s = l, l > 0 && (a += this._textLines[l - 1]
.length + this.missingNewlineOffset(l - 1));
i = this._getLineLeftOffset(s) * this.scaleX, t = this._textLines[s], "rtl" === this.direction && (n.x = this.width * this.scaleX - n.x + i);
for (var u = 0, h = t.length; u < h && (r = i, (i += this.__charBounds[s][u].kernedWidth * this.scaleX) <= n.x); u++) a++;
return this._getNewSelectionStartFromOffset(n, r, i, a, h)
},
_getNewSelectionStartFromOffset: function(e, t, n, r, i) {
var o = e.x - t,
a = n - e.x,
s = r + (a > o || a < 0 ? 0 : 1);
return this.flipX && (s = i - s), s > this._text.length && (s = this._text.length), s
}
}), v.util.object.extend(v.IText.prototype, {
initHiddenTextarea: function() {
this.hiddenTextarea = v.document.createElement("textarea"), this.hiddenTextarea.setAttribute("autocapitalize", "off"), this.hiddenTextarea.setAttribute("autocorrect", "off"), this.hiddenTextarea.setAttribute("autocomplete",
"off"), this.hiddenTextarea.setAttribute("spellcheck", "false"), this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea", ""), this.hiddenTextarea.setAttribute("wrap", "off");
var e = this._calcTextareaPosition();
this.hiddenTextarea.style.cssText = "position: absolute; top: " + e.top + "; left: " + e.left + "; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: " + e.fontSize + ";", this
.hiddenTextareaContainer ? this.hiddenTextareaContainer.appendChild(this.hiddenTextarea) : v.document.body.appendChild(this.hiddenTextarea), v.util.addListener(this.hiddenTextarea, "keydown", this.onKeyDown.bind(this)), v
.util.addListener(this.hiddenTextarea, "keyup", this.onKeyUp.bind(this)), v.util.addListener(this.hiddenTextarea, "input", this.onInput.bind(this)), v.util.addListener(this.hiddenTextarea, "copy", this.copy.bind(this)), v
.util.addListener(this.hiddenTextarea, "cut", this.copy.bind(this)), v.util.addListener(this.hiddenTextarea, "paste", this.paste.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionstart", this
.onCompositionStart.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionupdate", this.onCompositionUpdate.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionend", this.onCompositionEnd.bind(
this)), !this._clickHandlerInitialized && this.canvas && (v.util.addListener(this.canvas.upperCanvasEl, "click", this.onClick.bind(this)), this._clickHandlerInitialized = !0)
},
keysMap: {
9: "exitEditing",
27: "exitEditing",
33: "moveCursorUp",
34: "moveCursorDown",
35: "moveCursorRight",
36: "moveCursorLeft",
37: "moveCursorLeft",
38: "moveCursorUp",
39: "moveCursorRight",
40: "moveCursorDown"
},
keysMapRtl: {
9: "exitEditing",
27: "exitEditing",
33: "moveCursorUp",
34: "moveCursorDown",
35: "moveCursorLeft",
36: "moveCursorRight",
37: "moveCursorRight",
38: "moveCursorUp",
39: "moveCursorLeft",
40: "moveCursorDown"
},
ctrlKeysMapUp: {
67: "copy",
88: "cut"
},
ctrlKeysMapDown: {
65: "selectAll"
},
onClick: function() {
this.hiddenTextarea && this.hiddenTextarea.focus()
},
onKeyDown: function(e) {
if (this.isEditing) {
var t = "rtl" === this.direction ? this.keysMapRtl : this.keysMap;
if (e.keyCode in t) this[t[e.keyCode]](e);
else {
if (!(e.keyCode in this.ctrlKeysMapDown) || !e.ctrlKey && !e.metaKey) return;
this[this.ctrlKeysMapDown[e.keyCode]](e)
}
e.stopImmediatePropagation(), e.preventDefault(), e.keyCode >= 33 && e.keyCode <= 40 ? (this.inCompositionMode = !1, this.clearContextTop(), this.renderCursorOrSelection()) : this.canvas && this.canvas.requestRenderAll()
}
},
onKeyUp: function(e) {
!this.isEditing || this._copyDone || this.inCompositionMode ? this._copyDone = !1 : e.keyCode in this.ctrlKeysMapUp && (e.ctrlKey || e.metaKey) && (this[this.ctrlKeysMapUp[e.keyCode]](e), e.stopImmediatePropagation(), e
.preventDefault(), this.canvas && this.canvas.requestRenderAll())
},
onInput: function(e) {
var t = this.fromPaste;
if (this.fromPaste = !1, e && e.stopPropagation(), this.isEditing) {
var n, r, i, o, a, s = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,
l = this._text.length,
c = s.length,
u = c - l,
h = this.selectionStart,
p = this.selectionEnd,
d = h !== p;
if ("" === this.hiddenTextarea.value) return this.styles = {}, this.updateFromTextArea(), this.fire("changed"), void(this.canvas && (this.canvas.fire("text:changed", {
target: this
}), this.canvas.requestRenderAll()));
var f = this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value),
g = h > f.selectionStart;
d ? (n = this._text.slice(h, p), u += p - h) : c < l && (n = g ? this._text.slice(p + u, p) : this._text.slice(h, h - u)), r = s.slice(f.selectionEnd - u, f.selectionEnd), n && n.length && (r.length && (i = this
.getSelectionStyles(h, h + 1, !1), i = r.map((function() {
return i[0]
}))), d ? (o = h, a = p) : g ? (o = p - n.length, a = p) : (o = p, a = p + n.length), this.removeStyleFromTo(o, a)), r.length && (t && r.join("") === v.copiedText && !v.disableStyleCopyPaste && (i = v.copiedTextStyle),
this.insertNewStyleBlock(r, h, i)), this.updateFromTextArea(), this.fire("changed"), this.canvas && (this.canvas.fire("text:changed", {
target: this
}), this.canvas.requestRenderAll())
}
},
onCompositionStart: function() {
this.inCompositionMode = !0
},
onCompositionEnd: function() {
this.inCompositionMode = !1
},
onCompositionUpdate: function(e) {
this.compositionStart = e.target.selectionStart, this.compositionEnd = e.target.selectionEnd, this.updateTextareaPosition()
},
copy: function() {
this.selectionStart !== this.selectionEnd && (v.copiedText = this.getSelectedText(), v.disableStyleCopyPaste ? v.copiedTextStyle = null : v.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, !0),
this._copyDone = !0)
},
paste: function() {
this.fromPaste = !0
},
_getClipboardData: function(e) {
return e && e.clipboardData || v.window.clipboardData
},
_getWidthBeforeCursor: function(e, t) {
var n, r = this._getLineLeftOffset(e);
return t > 0 && (r += (n = this.__charBounds[e][t - 1]).left + n.width), r
},
getDownCursorOffset: function(e, t) {
var n = this._getSelectionForOffset(e, t),
r = this.get2DCursorLocation(n),
i = r.lineIndex;
if (i === this._textLines.length - 1 || e.metaKey || 34 === e.keyCode) return this._text.length - n;
var o = r.charIndex,
a = this._getWidthBeforeCursor(i, o),
s = this._getIndexOnLine(i + 1, a);
return this._textLines[i].slice(o).length + s + 1 + this.missingNewlineOffset(i)
},
_getSelectionForOffset: function(e, t) {
return e.shiftKey && this.selectionStart !== this.selectionEnd && t ? this.selectionEnd : this.selectionStart
},
getUpCursorOffset: function(e, t) {
var n = this._getSelectionForOffset(e, t),
r = this.get2DCursorLocation(n),
i = r.lineIndex;
if (0 === i || e.metaKey || 33 === e.keyCode) return -n;
var o = r.charIndex,
a = this._getWidthBeforeCursor(i, o),
s = this._getIndexOnLine(i - 1, a),
l = this._textLines[i].slice(0, o),
c = this.missingNewlineOffset(i - 1);
return -this._textLines[i - 1].length + s - l.length + (1 - c)
},
_getIndexOnLine: function(e, t) {
for (var n, r, i = this._textLines[e], o = this._getLineLeftOffset(e), a = 0, s = 0, l = i.length; s < l; s++)
if ((o += n = this.__charBounds[e][s].width) > t) {
r = !0;
var c = o - n,
u = o,
h = Math.abs(c - t);
a = Math.abs(u - t) < h ? s : s - 1;
break
} return r || (a = i.length - 1), a
},
moveCursorDown: function(e) {
this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorUpOrDown("Down", e)
},
moveCursorUp: function(e) {
0 === this.selectionStart && 0 === this.selectionEnd || this._moveCursorUpOrDown("Up", e)
},
_moveCursorUpOrDown: function(e, t) {
var n = this["get" + e + "CursorOffset"](t, "right" === this._selectionDirection);
t.shiftKey ? this.moveCursorWithShift(n) : this.moveCursorWithoutShift(n), 0 !== n && (this.setSelectionInBoundaries(), this.abortCursorAnimation(), this._currentCursorOpacity = 1, this.initDelayedCursor(), this
._fireSelectionChanged(), this._updateTextarea())
},
moveCursorWithShift: function(e) {
var t = "left" === this._selectionDirection ? this.selectionStart + e : this.selectionEnd + e;
return this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, t), 0 !== e
},
moveCursorWithoutShift: function(e) {
return e < 0 ? (this.selectionStart += e, this.selectionEnd = this.selectionStart) : (this.selectionEnd += e, this.selectionStart = this.selectionEnd), 0 !== e
},
moveCursorLeft: function(e) {
0 === this.selectionStart && 0 === this.selectionEnd || this._moveCursorLeftOrRight("Left", e)
},
_move: function(e, t, n) {
var r;
if (e.altKey) r = this["findWordBoundary" + n](this[t]);
else {
if (!e.metaKey && 35 !== e.keyCode && 36 !== e.keyCode) return this[t] += "Left" === n ? -1 : 1, !0;
r = this["findLineBoundary" + n](this[t])
}
if (void 0 !== r && this[t] !== r) return this[t] = r, !0
},
_moveLeft: function(e, t) {
return this._move(e, t, "Left")
},
_moveRight: function(e, t) {
return this._move(e, t, "Right")
},
moveCursorLeftWithoutShift: function(e) {
var t = !0;
return this._selectionDirection = "left", this.selectionEnd === this.selectionStart && 0 !== this.selectionStart && (t = this._moveLeft(e, "selectionStart")), this.selectionEnd = this.selectionStart, t
},
moveCursorLeftWithShift: function(e) {
return "right" === this._selectionDirection && this.selectionStart !== this.selectionEnd ? this._moveLeft(e, "selectionEnd") : 0 !== this.selectionStart ? (this._selectionDirection = "left", this._moveLeft(e,
"selectionStart")) : void 0
},
moveCursorRight: function(e) {
this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorLeftOrRight("Right", e)
},
_moveCursorLeftOrRight: function(e, t) {
var n = "moveCursor" + e + "With";
this._currentCursorOpacity = 1, t.shiftKey ? n += "Shift" : n += "outShift", this[n](t) && (this.abortCursorAnimation(), this.initDelayedCursor(), this._fireSelectionChanged(), this._updateTextarea())
},
moveCursorRightWithShift: function(e) {
return "left" === this._selectionDirection && this.selectionStart !== this.selectionEnd ? this._moveRight(e, "selectionStart") : this.selectionEnd !== this._text.length ? (this._selectionDirection = "right", this._moveRight(e,
"selectionEnd")) : void 0
},
moveCursorRightWithoutShift: function(e) {
var t = !0;
return this._selectionDirection = "right", this.selectionStart === this.selectionEnd ? (t = this._moveRight(e, "selectionStart"), this.selectionEnd = this.selectionStart) : this.selectionStart = this.selectionEnd, t
},
removeChars: function(e, t) {
void 0 === t && (t = e + 1), this.removeStyleFromTo(e, t), this._text.splice(e, t - e), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()),
this._removeExtraneousStyles()
},
insertChars: function(e, t, n, r) {
void 0 === r && (r = n), r > n && this.removeStyleFromTo(n, r);
var i = v.util.string.graphemeSplit(e);
this.insertNewStyleBlock(i, n, t), this._text = [].concat(this._text.slice(0, n), i, this._text.slice(r)), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(),
this.setCoords()), this._removeExtraneousStyles()
}
}),
function() {
var e = v.util.toFixed,
t = / +/g;
v.util.object.extend(v.Text.prototype, {
_toSVG: function() {
var e = this._getSVGLeftTopOffsets(),
t = this._getSVGTextAndBg(e.textTop, e.textLeft);
return this._wrapSVGTextAndBg(t)
},
toSVG: function(e) {
return this._createBaseSVGMarkup(this._toSVG(), {
reviver: e,
noStyle: !0,
withShadow: !0
})
},
_getSVGLeftTopOffsets: function() {
return {
textLeft: -this.width / 2,
textTop: -this.height / 2,
lineTop: this.getHeightOfLine(0)
}
},
_wrapSVGTextAndBg: function(e) {
var t = this.getSvgTextDecoration(this);
return [e.textBgRects.join(""), '\t\t<text xml:space="preserve" ', this.fontFamily ? 'font-family="' + this.fontFamily.replace(/"/g, "'") + '" ' : "", this.fontSize ? 'font-size="' + this.fontSize + '" ' : "", this
.fontStyle ? 'font-style="' + this.fontStyle + '" ' : "", this.fontWeight ? 'font-weight="' + this.fontWeight + '" ' : "", t ? 'text-decoration="' + t + '" ' : "", 'style="', this.getSvgStyles(!0), '"', this
.addPaintOrder(), " >", e.textSpans.join(""), "</text>\n"
]
},
_getSVGTextAndBg: function(e, t) {
var n, r = [],
i = [],
o = e;
this._setSVGBg(i);
for (var a = 0, s = this._textLines.length; a < s; a++) n = this._getLineLeftOffset(a), (this.textBackgroundColor || this.styleHas("textBackgroundColor", a)) && this._setSVGTextLineBg(i, a, t + n, o), this
._setSVGTextLineText(r, a, t + n, o), o += this.getHeightOfLine(a);
return {
textSpans: r,
textBgRects: i
}
},
_createTextCharSpan: function(n, r, i, o) {
var a = n !== n.trim() || n.match(t),
s = this.getSvgSpanStyles(r, a),
l = s ? 'style="' + s + '"' : "",
c = r.deltaY,
u = "",
h = v.Object.NUM_FRACTION_DIGITS;
return c && (u = ' dy="' + e(c, h) + '" '), ['<tspan x="', e(i, h), '" y="', e(o, h), '" ', u, l, ">", v.util.string.escapeXml(n), "</tspan>"].join("")
},
_setSVGTextLineText: function(e, t, n, r) {
var i, o, a, s, l, c = this.getHeightOfLine(t),
u = -1 !== this.textAlign.indexOf("justify"),
h = "",
p = 0,
d = this._textLines[t];
r += c * (1 - this._fontSizeFraction) / this.lineHeight;
for (var f = 0, g = d.length - 1; f <= g; f++) l = f === g || this.charSpacing, h += d[f], a = this.__charBounds[t][f], 0 === p ? (n += a.kernedWidth - a.width, p += a.width) : p += a.kernedWidth, u && !l && this
._reSpaceAndTab.test(d[f]) && (l = !0), l || (i = i || this.getCompleteStyleDeclaration(t, f), o = this.getCompleteStyleDeclaration(t, f + 1), l = v.util.hasStyleChanged(i, o, !0)), l && (s = this._getStyleDeclaration(t,
f) || {}, e.push(this._createTextCharSpan(h, s, n, r)), h = "", i = o, n += p, p = 0)
},
_pushTextBgRect: function(t, n, r, i, o, a) {
var s = v.Object.NUM_FRACTION_DIGITS;
t.push("\t\t<rect ", this._getFillAttributes(n), ' x="', e(r, s), '" y="', e(i, s), '" width="', e(o, s), '" height="', e(a, s), '"></rect>\n')
},
_setSVGTextLineBg: function(e, t, n, r) {
for (var i, o, a = this._textLines[t], s = this.getHeightOfLine(t) / this.lineHeight, l = 0, c = 0, u = this.getValueOfPropertyAt(t, 0, "textBackgroundColor"), h = 0, p = a.length; h < p; h++) i = this.__charBounds[t][h],
(o = this.getValueOfPropertyAt(t, h, "textBackgroundColor")) !== u ? (u && this._pushTextBgRect(e, u, n + c, r, l, s), c = i.left, l = i.width, u = o) : l += i.kernedWidth;
o && this._pushTextBgRect(e, o, n + c, r, l, s)
},
_getFillAttributes: function(e) {
var t = e && "string" == typeof e ? new v.Color(e) : "";
return t && t.getSource() && 1 !== t.getAlpha() ? 'opacity="' + t.getAlpha() + '" fill="' + t.setAlpha(1).toRgb() + '"' : 'fill="' + e + '"'
},
_getSVGLineTopOffset: function(e) {
for (var t, n = 0, r = 0; r < e; r++) n += this.getHeightOfLine(r);
return t = this.getHeightOfLine(r), {
lineTop: n,
offset: (this._fontSizeMult - this._fontSizeFraction) * t / (this.lineHeight * this._fontSizeMult)
}
},
getSvgStyles: function(e) {
return v.Object.prototype.getSvgStyles.call(this, e) + " white-space: pre;"
}
})
}(),
function(e) {
var t = e.fabric || (e.fabric = {});
t.Textbox = t.util.createClass(t.IText, t.Observable, {
type: "textbox",
minWidth: 20,
dynamicMinWidth: 2,
__cachedLines: null,
lockScalingFlip: !0,
noScaleCache: !1,
_dimensionAffectingProps: t.Text.prototype._dimensionAffectingProps.concat("width"),
_wordJoiners: /[ \t\r]/,
splitByGrapheme: !1,
initDimensions: function() {
this.__skipDimension || (this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this._clearCache(), this.dynamicMinWidth = 0, this._styleMap = this._generateStyleMap(this._splitText()), this.dynamicMinWidth >
this.width && this._set("width", this.dynamicMinWidth), -1 !== this.textAlign.indexOf("justify") && this.enlargeSpaces(), this.height = this.calcTextHeight(), this.saveState({
propertySet: "_dimensionAffectingProps"
}))
},
_generateStyleMap: function(e) {
for (var t = 0, n = 0, r = 0, i = {}, o = 0; o < e.graphemeLines.length; o++) "\n" === e.graphemeText[r] && o > 0 ? (n = 0, r++, t++) : !this.splitByGrapheme && this._reSpaceAndTab.test(e.graphemeText[r]) && o > 0 && (n++,
r++), i[o] = {
line: t,
offset: n
}, r += e.graphemeLines[o].length, n += e.graphemeLines[o].length;
return i
},
styleHas: function(e, n) {
if (this._styleMap && !this.isWrapping) {
var r = this._styleMap[n];
r && (n = r.line)
}
return t.Text.prototype.styleHas.call(this, e, n)
},
isEmptyStyles: function(e) {
if (!this.styles) return !0;
var t, n, r = 0,
i = !1,
o = this._styleMap[e],
a = this._styleMap[e + 1];
for (var s in o && (e = o.line, r = o.offset), a && (i = a.line === e, t = a.offset), n = void 0 === e ? this.styles : {
line: this.styles[e]
})
for (var l in n[s])
if (l >= r && (!i || l < t))
for (var c in n[s][l]) return !1;
return !0
},
_getStyleDeclaration: function(e, t) {
if (this._styleMap && !this.isWrapping) {
var n = this._styleMap[e];
if (!n) return null;
e = n.line, t = n.offset + t
}
return this.callSuper("_getStyleDeclaration", e, t)
},
_setStyleDeclaration: function(e, t, n) {
var r = this._styleMap[e];
e = r.line, t = r.offset + t, this.styles[e][t] = n
},
_deleteStyleDeclaration: function(e, t) {
var n = this._styleMap[e];
e = n.line, t = n.offset + t, delete this.styles[e][t]
},
_getLineStyle: function(e) {
var t = this._styleMap[e];
return !!this.styles[t.line]
},
_setLineStyle: function(e) {
var t = this._styleMap[e];
this.styles[t.line] = {}
},
_wrapText: function(e, t) {
var n, r = [];
for (this.isWrapping = !0, n = 0; n < e.length; n++) r = r.concat(this._wrapLine(e[n], n, t));
return this.isWrapping = !1, r
},
_measureWord: function(e, t, n) {
var r, i = 0;
n = n || 0;
for (var o = 0, a = e.length; o < a; o++) {
i += this._getGraphemeBox(e[o], t, o + n, r, true).kernedWidth, r = e[o]
}
return i
},
_wrapLine: function(e, n, r, i) {
var o = 0,
a = this.splitByGrapheme,
s = [],
l = [],
c = a ? t.util.string.graphemeSplit(e) : e.split(this._wordJoiners),
u = "",
h = 0,
p = a ? "" : " ",
d = 0,
f = 0,
g = 0,
m = !0,
v = this._getWidthOfCharSpacing();
i = i || 0;
0 === c.length && c.push([]), r -= i;
for (var _ = 0; _ < c.length; _++) u = a ? c[_] : t.util.string.graphemeSplit(c[_]), d = this._measureWord(u, n, h), h += u.length, (o += f + d - v) > r && !m ? (s.push(l), l = [], o = d, m = !0) : o += v, m || a || l
.push(p), l = l.concat(u), f = a ? 0 : this._measureWord([p], n, h), h++, m = !1, d > g && (g = d);
return _ && s.push(l), g + i > this.dynamicMinWidth && (this.dynamicMinWidth = g - v + i), s
},
isEndOfWrapping: function(e) {
return !this._styleMap[e + 1] || this._styleMap[e + 1].line !== this._styleMap[e].line
},
missingNewlineOffset: function(e) {
return this.splitByGrapheme ? this.isEndOfWrapping(e) ? 1 : 0 : 1
},
_splitTextIntoLines: function(e) {
for (var n = t.Text.prototype._splitTextIntoLines.call(this, e), r = this._wrapText(n.lines, this.width), i = new Array(r.length), o = 0; o < r.length; o++) i[o] = r[o].join("");
return n.lines = i, n.graphemeLines = r, n
},
getMinWidth: function() {
return Math.max(this.minWidth, this.dynamicMinWidth)
},
_removeExtraneousStyles: function() {
var e = {};
for (var t in this._styleMap) this._textLines[t] && (e[this._styleMap[t].line] = 1);
for (var t in this.styles) e[t] || delete this.styles[t]
},
toObject: function(e) {
return this.callSuper("toObject", ["minWidth", "splitByGrapheme"].concat(e))
}
}), t.Textbox.fromObject = function(e, n) {
var r = t.util.stylesFromArray(e.styles, e.text),
i = Object.assign({}, e, {
styles: r
});
return t.Object._fromObject("Textbox", i, n, "text")
}
}(e),
function() {
var e = v.controlsUtils,
t = e.scaleSkewCursorStyleHandler,
n = e.scaleCursorStyleHandler,
r = e.scalingEqually,
i = e.scalingYOrSkewingX,
o = e.scalingXOrSkewingY,
a = e.scaleOrSkewActionName,
s = v.Object.prototype.controls;
if (s.ml = new v.Control({
x: -.5,
y: 0,
cursorStyleHandler: t,
actionHandler: o,
getActionName: a
}), s.mr = new v.Control({
x: .5,
y: 0,
cursorStyleHandler: t,
actionHandler: o,
getActionName: a
}), s.mb = new v.Control({
x: 0,
y: .5,
cursorStyleHandler: t,
actionHandler: i,
getActionName: a
}), s.mt = new v.Control({
x: 0,
y: -.5,
cursorStyleHandler: t,
actionHandler: i,
getActionName: a
}), s.tl = new v.Control({
x: -.5,
y: -.5,
cursorStyleHandler: n,
actionHandler: r
}), s.tr = new v.Control({
x: .5,
y: -.5,
cursorStyleHandler: n,
actionHandler: r
}), s.bl = new v.Control({
x: -.5,
y: .5,
cursorStyleHandler: n,
actionHandler: r
}), s.br = new v.Control({
x: .5,
y: .5,
cursorStyleHandler: n,
actionHandler: r
}), s.mtr = new v.Control({
x: 0,
y: -.5,
actionHandler: e.rotationWithSnapping,
cursorStyleHandler: e.rotationStyleHandler,
offsetY: -40,
withConnection: !0,
actionName: "rotate"
}), v.Textbox) {
var l = v.Textbox.prototype.controls = {};
l.mtr = s.mtr, l.tr = s.tr, l.br = s.br, l.tl = s.tl, l.bl = s.bl, l.mt = s.mt, l.mb = s.mb, l.mr = new v.Control({
x: .5,
y: 0,
actionHandler: e.changeWidth,
cursorStyleHandler: t,
actionName: "resizing"
}), l.ml = new v.Control({
x: -.5,
y: 0,
actionHandler: e.changeWidth,
cursorStyleHandler: t,
actionName: "resizing"
})
}
}()
}(X);
var Z = $((function(e, t) {
var n = q(e),
r = q(t),
i = Y(e) + Y(t),
o = n * r;
return K(o), o / Math.pow(10, i)
})),
J = $((function(e, t) {
var n = Math.pow(10, Math.max(Y(e), Y(t)));
return (Z(e, n) + Z(t, n)) / n
})),
Q = $((function(e, t) {
var n = Math.pow(10, Math.max(Y(e), Y(t)));
return (Z(e, n) - Z(t, n)) / n
})),
ee = $((function(e, t) {
var n = q(e),
r = q(t);
return K(n), K(r), Z(n / r, G(Math.pow(10, Y(t) - Y(e))))
}));
var te = !0;
var ne = {
strip: G,
plus: J,
minus: Q,
times: Z,
divide: ee,
round: function(e, t) {
var n = Math.pow(10, t),
r = ee(Math.round(Math.abs(Z(e, n))), n);
return e < 0 && 0 !== r && (r = Z(r, -1)), r
},
digitLength: Y,
float2Fixed: q,
enableBoundaryChecking: function(e) {
void 0 === e && (e = !0), te = e
}
},
re = {
exports: {}
};
! function(e, t) {
(function() {
var n, r = "Expected a function",
i = "__lodash_hash_undefined__",
o = "__lodash_placeholder__",
a = 16,
s = 32,
l = 64,
c = 128,
u = 256,
h = 1 / 0,
p = 9007199254740991,
d = NaN,
f = 4294967295,
g = [
["ary", c],
["bind", 1],
["bindKey", 2],
["curry", 8],
["curryRight", a],
["flip", 512],
["partial", s],
["partialRight", l],
["rearg", u]
],
m = "[object Arguments]",
v = "[object Array]",
_ = "[object Boolean]",
b = "[object Date]",
y = "[object Error]",
w = "[object Function]",
x = "[object GeneratorFunction]",
k = "[object Map]",
C = "[object Number]",
S = "[object Object]",
E = "[object Promise]",
T = "[object RegExp]",
O = "[object Set]",
A = "[object String]",
P = "[object Symbol]",
M = "[object WeakMap]",
D = "[object ArrayBuffer]",
I = "[object DataView]",
N = "[object Float32Array]",
R = "[object Float64Array]",
j = "[object Int8Array]",
L = "[object Int16Array]",
F = "[object Int32Array]",
B = "[object Uint8Array]",
z = "[object Uint8ClampedArray]",
H = "[object Uint16Array]",
U = "[object Uint32Array]",
V = /\b__p \+= '';/g,
X = /\b(__p \+=) '' \+/g,
G = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
Y = /&(?:amp|lt|gt|quot|#39);/g,
q = /[&<>"']/g,
K = RegExp(Y.source),
$ = RegExp(q.source),
Z = /<%-([\s\S]+?)%>/g,
J = /<%([\s\S]+?)%>/g,
Q = /<%=([\s\S]+?)%>/g,
ee = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
te = /^\w*$/,
ne = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
re = /[\\^$.*+?()[\]{}|]/g,
ie = RegExp(re.source),
oe = /^\s+/,
ae = /\s/,
se = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
le = /\{\n\/\* \[wrapped with (.+)\] \*/,
ce = /,? & /,
ue = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
he = /[()=,{}\[\]\/\s]/,
pe = /\\(\\)?/g,
de = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
fe = /\w*$/,
ge = /^[-+]0x[0-9a-f]+$/i,
me = /^0b[01]+$/i,
ve = /^\[object .+?Constructor\]$/,
_e = /^0o[0-7]+$/i,
be = /^(?:0|[1-9]\d*)$/,
ye = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
we = /($^)/,
xe = /['\n\r\u2028\u2029\\]/g,
ke = "\\ud800-\\udfff",
Ce = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
Se = "\\u2700-\\u27bf",
Ee = "a-z\\xdf-\\xf6\\xf8-\\xff",
Te = "A-Z\\xc0-\\xd6\\xd8-\\xde",
Oe = "\\ufe0e\\ufe0f",
Ae =
"\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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",
Pe = "['’]",
Me = "[" + ke + "]",
De = "[" + Ae + "]",
Ie = "[" + Ce + "]",
Ne = "\\d+",
Re = "[" + Se + "]",
je = "[" + Ee + "]",
Le = "[^" + ke + Ae + Ne + Se + Ee + Te + "]",
Fe = "\\ud83c[\\udffb-\\udfff]",
Be = "[^" + ke + "]",
ze = "(?:\\ud83c[\\udde6-\\uddff]){2}",
He = "[\\ud800-\\udbff][\\udc00-\\udfff]",
Ue = "[" + Te + "]",
We = "\\u200d",
Ve = "(?:" + je + "|" + Le + ")",
Xe = "(?:" + Ue + "|" + Le + ")",
Ge = "(?:['’](?:d|ll|m|re|s|t|ve))?",
Ye = "(?:['’](?:D|LL|M|RE|S|T|VE))?",
qe = "(?:" + Ie + "|" + Fe + ")" + "?",
Ke = "[" + Oe + "]?",
$e = Ke + qe + ("(?:" + We + "(?:" + [Be, ze, He].join("|") + ")" + Ke + qe + ")*"),
Ze = "(?:" + [Re, ze, He].join("|") + ")" + $e,
Je = "(?:" + [Be + Ie + "?", Ie, ze, He, Me].join("|") + ")",
Qe = RegExp(Pe, "g"),
et = RegExp(Ie, "g"),
tt = RegExp(Fe + "(?=" + Fe + ")|" + Je + $e, "g"),
nt = RegExp([Ue + "?" + je + "+" + Ge + "(?=" + [De, Ue, "$"].join("|") + ")", Xe + "+" + Ye + "(?=" + [De, Ue + Ve, "$"].join("|") + ")", Ue + "?" + Ve + "+" + Ge, Ue + "+" + Ye,
"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Ne, Ze
].join("|"), "g"),
rt = RegExp("[" + We + ke + Ce + Oe + "]"),
it = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
ot = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError",
"Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"
],
at = -1,
st = {};
st[N] = st[R] = st[j] = st[L] = st[F] = st[B] = st[z] = st[H] = st[U] = !0, st[m] = st[v] = st[D] = st[_] = st[I] = st[b] = st[y] = st[w] = st[k] = st[C] = st[S] = st[T] = st[O] = st[A] = st[M] = !1;
var lt = {};
lt[m] = lt[v] = lt[D] = lt[I] = lt[_] = lt[b] = lt[N] = lt[R] = lt[j] = lt[L] = lt[F] = lt[k] = lt[C] = lt[S] = lt[T] = lt[O] = lt[A] = lt[P] = lt[B] = lt[z] = lt[H] = lt[U] = !0, lt[y] = lt[w] = lt[M] = !1;
var ct = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
},
ut = parseFloat,
ht = parseInt,
pt = "object" == typeof W && W && W.Object === Object && W,
dt = "object" == typeof self && self && self.Object === Object && self,
ft = pt || dt || Function("return this")(),
gt = t && !t.nodeType && t,
mt = gt && e && !e.nodeType && e,
vt = mt && mt.exports === gt,
_t = vt && pt.process,
bt = function() {
try {
var e = mt && mt.require && mt.require("util").types;
return e || _t && _t.binding && _t.binding("util")
} catch (e) {}
}(),
yt = bt && bt.isArrayBuffer,
wt = bt && bt.isDate,
xt = bt && bt.isMap,
kt = bt && bt.isRegExp,
Ct = bt && bt.isSet,
St = bt && bt.isTypedArray;
function Et(e, t, n) {
switch (n.length) {
case 0:
return e.call(t);
case 1:
return e.call(t, n[0]);
case 2:
return e.call(t, n[0], n[1]);
case 3:
return e.call(t, n[0], n[1], n[2])
}
return e.apply(t, n)
}
function Tt(e, t, n, r) {
for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
var a = e[i];
t(r, a, n(a), e)
}
return r
}
function Ot(e, t) {
for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
return e
}
function At(e, t) {
for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
return e
}
function Pt(e, t) {
for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
if (!t(e[n], n, e)) return !1;
return !0
}
function Mt(e, t) {
for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
var a = e[n];
t(a, n, e) && (o[i++] = a)
}
return o
}
function Dt(e, t) {
return !!(null == e ? 0 : e.length) && Ut(e, t, 0) > -1
}
function It(e, t, n) {
for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
if (n(t, e[r])) return !0;
return !1
}
function Nt(e, t) {
for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
return i
}
function Rt(e, t) {
for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
return e
}
function jt(e, t, n, r) {
var i = -1,
o = null == e ? 0 : e.length;
for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
return n
}
function Lt(e, t, n, r) {
var i = null == e ? 0 : e.length;
for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
return n
}
function Ft(e, t) {
for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
if (t(e[n], n, e)) return !0;
return !1
}
var Bt = Gt("length");
function zt(e, t, n) {
var r;
return n(e, (function(e, n, i) {
if (t(e, n, i)) return r = n, !1
})), r
}
function Ht(e, t, n, r) {
for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
if (t(e[o], o, e)) return o;
return -1
}
function Ut(e, t, n) {
return t == t ? function(e, t, n) {
var r = n - 1,
i = e.length;
for (; ++r < i;)
if (e[r] === t) return r;
return -1
}(e, t, n) : Ht(e, Vt, n)
}
function Wt(e, t, n, r) {
for (var i = n - 1, o = e.length; ++i < o;)
if (r(e[i], t)) return i;
return -1
}
function Vt(e) {
return e != e
}
function Xt(e, t) {
var n = null == e ? 0 : e.length;
return n ? Kt(e, t) / n : d
}
function Gt(e) {
return function(t) {
return null == t ? n : t[e]
}
}
function Yt(e) {
return function(t) {
return null == e ? n : e[t]
}
}
function qt(e, t, n, r, i) {
return i(e, (function(e, i, o) {
n = r ? (r = !1, e) : t(n, e, i, o)
})), n
}
function Kt(e, t) {
for (var r, i = -1, o = e.length; ++i < o;) {
var a = t(e[i]);
a !== n && (r = r === n ? a : r + a)
}
return r
}
function $t(e, t) {
for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
return r
}
function Zt(e) {
return e ? e.slice(0, gn(e) + 1).replace(oe, "") : e
}
function Jt(e) {
return function(t) {
return e(t)
}
}
function Qt(e, t) {
return Nt(t, (function(t) {
return e[t]
}))
}
function en(e, t) {
return e.has(t)
}
function tn(e, t) {
for (var n = -1, r = e.length; ++n < r && Ut(t, e[n], 0) > -1;);
return n
}
function nn(e, t) {
for (var n = e.length; n-- && Ut(t, e[n], 0) > -1;);
return n
}
var rn = Yt({
"À": "A",
"Á": "A",
"Â": "A",
"Ã": "A",
"Ä": "A",
"Å": "A",
"à": "a",
"á": "a",
"â": "a",
"ã": "a",
"ä": "a",
"å": "a",
"Ç": "C",
"ç": "c",
"Ð": "D",
"ð": "d",
"È": "E",
"É": "E",
"Ê": "E",
"Ë": "E",
"è": "e",
"é": "e",
"ê": "e",
"ë": "e",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ï": "I",
"ì": "i",
"í": "i",
"î": "i",
"ï": "i",
"Ñ": "N",
"ñ": "n",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Õ": "O",
"Ö": "O",
"Ø": "O",
"ò": "o",
"ó": "o",
"ô": "o",
"õ": "o",
"ö": "o",
"ø": "o",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ü": "U",
"ù": "u",
"ú": "u",
"û": "u",
"ü": "u",
"Ý": "Y",
"ý": "y",
"ÿ": "y",
"Æ": "Ae",
"æ": "ae",
"Þ": "Th",
"þ": "th",
"ß": "ss",
"Ā": "A",
"Ă": "A",
"Ą": "A",
"ā": "a",
"ă": "a",
"ą": "a",
"Ć": "C",
"Ĉ": "C",
"Ċ": "C",
"Č": "C",
"ć": "c",
"ĉ": "c",
"ċ": "c",
"č": "c",
"Ď": "D",
"Đ": "D",
"ď": "d",
"đ": "d",
"Ē": "E",
"Ĕ": "E",
"Ė": "E",
"Ę": "E",
"Ě": "E",
"ē": "e",
"ĕ": "e",
"ė": "e",
"ę": "e",
"ě": "e",
"Ĝ": "G",
"Ğ": "G",
"Ġ": "G",
"Ģ": "G",
"ĝ": "g",
"ğ": "g",
"ġ": "g",
"ģ": "g",
"Ĥ": "H",
"Ħ": "H",
"ĥ": "h",
"ħ": "h",
"Ĩ": "I",
"Ī": "I",
"Ĭ": "I",
"Į": "I",
"İ": "I",
"ĩ": "i",
"ī": "i",
"ĭ": "i",
"į": "i",
"ı": "i",
"Ĵ": "J",
"ĵ": "j",
"Ķ": "K",
"ķ": "k",
"ĸ": "k",
"Ĺ": "L",
"Ļ": "L",
"Ľ": "L",
"Ŀ": "L",
"Ł": "L",
"ĺ": "l",
"ļ": "l",
"ľ": "l",
"ŀ": "l",
"ł": "l",
"Ń": "N",
"Ņ": "N",
"Ň": "N",
"Ŋ": "N",
"ń": "n",
"ņ": "n",
"ň": "n",
"ŋ": "n",
"Ō": "O",
"Ŏ": "O",
"Ő": "O",
"ō": "o",
"ŏ": "o",
"ő": "o",
"Ŕ": "R",
"Ŗ": "R",
"Ř": "R",
"ŕ": "r",
"ŗ": "r",
"ř": "r",
"Ś": "S",
"Ŝ": "S",
"Ş": "S",
"Š": "S",
"ś": "s",
"ŝ": "s",
"ş": "s",
"š": "s",
"Ţ": "T",
"Ť": "T",
"Ŧ": "T",
"ţ": "t",
"ť": "t",
"ŧ": "t",
"Ũ": "U",
"Ū": "U",
"Ŭ": "U",
"Ů": "U",
"Ű": "U",
"Ų": "U",
"ũ": "u",
"ū": "u",
"ŭ": "u",
"ů": "u",
"ű": "u",
"ų": "u",
"Ŵ": "W",
"ŵ": "w",
"Ŷ": "Y",
"ŷ": "y",
"Ÿ": "Y",
"Ź": "Z",
"Ż": "Z",
"Ž": "Z",
"ź": "z",
"ż": "z",
"ž": "z",
"IJ": "IJ",
"ij": "ij",
"Œ": "Oe",
"œ": "oe",
"ʼn": "'n",
"ſ": "s"
}),
on = Yt({
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
});
function an(e) {
return "\\" + ct[e]
}
function sn(e) {
return rt.test(e)
}
function ln(e) {
var t = -1,
n = Array(e.size);
return e.forEach((function(e, r) {
n[++t] = [r, e]
})), n
}
function cn(e, t) {
return function(n) {
return e(t(n))
}
}
function un(e, t) {
for (var n = -1, r = e.length, i = 0, a = []; ++n < r;) {
var s = e[n];
s !== t && s !== o || (e[n] = o, a[i++] = n)
}
return a
}
function hn(e) {
var t = -1,
n = Array(e.size);
return e.forEach((function(e) {
n[++t] = e
})), n
}
function pn(e) {
var t = -1,
n = Array(e.size);
return e.forEach((function(e) {
n[++t] = [e, e]
})), n
}
function dn(e) {
return sn(e) ? function(e) {
var t = tt.lastIndex = 0;
for (; tt.test(e);) ++t;
return t
}(e) : Bt(e)
}
function fn(e) {
return sn(e) ? function(e) {
return e.match(tt) || []
}(e) : function(e) {
return e.split("")
}(e)
}
function gn(e) {
for (var t = e.length; t-- && ae.test(e.charAt(t)););
return t
}
var mn = Yt({
"&": "&",
"<": "<",
">": ">",
""": '"',
"'": "'"
});
var vn = function e(t) {
var W = (t = null == t ? ft : vn.defaults(ft.Object(), t, vn.pick(ft, ot))).Array,
ae = t.Date,
ke = t.Error,
Ce = t.Function,
Se = t.Math,
Ee = t.Object,
Te = t.RegExp,
Oe = t.String,
Ae = t.TypeError,
Pe = W.prototype,
Me = Ce.prototype,
De = Ee.prototype,
Ie = t["__core-js_shared__"],
Ne = Me.toString,
Re = De.hasOwnProperty,
je = 0,
Le = function() {
var e = /[^.]+$/.exec(Ie && Ie.keys && Ie.keys.IE_PROTO || "");
return e ? "Symbol(src)_1." + e : ""
}(),
Fe = De.toString,
Be = Ne.call(Ee),
ze = ft._,
He = Te("^" + Ne.call(Re).replace(re, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
Ue = vt ? t.Buffer : n,
We = t.Symbol,
Ve = t.Uint8Array,
Xe = Ue ? Ue.allocUnsafe : n,
Ge = cn(Ee.getPrototypeOf, Ee),
Ye = Ee.create,
qe = De.propertyIsEnumerable,
Ke = Pe.splice,
$e = We ? We.isConcatSpreadable : n,
Ze = We ? We.iterator : n,
Je = We ? We.toStringTag : n,
tt = function() {
try {
var e = ho(Ee, "defineProperty");
return e({}, "", {}), e
} catch (e) {}
}(),
rt = t.clearTimeout !== ft.clearTimeout && t.clearTimeout,
ct = ae && ae.now !== ft.Date.now && ae.now,
pt = t.setTimeout !== ft.setTimeout && t.setTimeout,
dt = Se.ceil,
gt = Se.floor,
mt = Ee.getOwnPropertySymbols,
_t = Ue ? Ue.isBuffer : n,
bt = t.isFinite,
Bt = Pe.join,
Yt = cn(Ee.keys, Ee),
_n = Se.max,
bn = Se.min,
yn = ae.now,
wn = t.parseInt,
xn = Se.random,
kn = Pe.reverse,
Cn = ho(t, "DataView"),
Sn = ho(t, "Map"),
En = ho(t, "Promise"),
Tn = ho(t, "Set"),
On = ho(t, "WeakMap"),
An = ho(Ee, "create"),
Pn = On && new On,
Mn = {},
Dn = Fo(Cn),
In = Fo(Sn),
Nn = Fo(En),
Rn = Fo(Tn),
jn = Fo(On),
Ln = We ? We.prototype : n,
Fn = Ln ? Ln.valueOf : n,
Bn = Ln ? Ln.toString : n;
function zn(e) {
if (ts(e) && !Va(e) && !(e instanceof Vn)) {
if (e instanceof Wn) return e;
if (Re.call(e, "__wrapped__")) return Bo(e)
}
return new Wn(e)
}
var Hn = function() {
function e() {}
return function(t) {
if (!es(t)) return {};
if (Ye) return Ye(t);
e.prototype = t;
var r = new e;
return e.prototype = n, r
}
}();
function Un() {}
function Wn(e, t) {
this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = n
}
function Vn(e) {
this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = f, this.__views__ = []
}
function Xn(e) {
var t = -1,
n = null == e ? 0 : e.length;
for (this.clear(); ++t < n;) {
var r = e[t];
this.set(r[0], r[1])
}
}
function Gn(e) {
var t = -1,
n = null == e ? 0 : e.length;
for (this.clear(); ++t < n;) {
var r = e[t];
this.set(r[0], r[1])
}
}
function Yn(e) {
var t = -1,
n = null == e ? 0 : e.length;
for (this.clear(); ++t < n;) {
var r = e[t];
this.set(r[0], r[1])
}
}
function qn(e) {
var t = -1,
n = null == e ? 0 : e.length;
for (this.__data__ = new Yn; ++t < n;) this.add(e[t])
}
function Kn(e) {
var t = this.__data__ = new Gn(e);
this.size = t.size
}
function $n(e, t) {
var n = Va(e),
r = !n && Wa(e),
i = !n && !r && qa(e),
o = !n && !r && !i && cs(e),
a = n || r || i || o,
s = a ? $t(e.length, Oe) : [],
l = s.length;
for (var c in e) !t && !Re.call(e, c) || a && ("length" == c || i && ("offset" == c || "parent" == c) || o && ("buffer" == c || "byteLength" == c || "byteOffset" == c) || bo(c, l)) || s.push(c);
return s
}
function Zn(e) {
var t = e.length;
return t ? e[qr(0, t - 1)] : n
}
function Jn(e, t) {
return Ro(Ai(e), sr(t, 0, e.length))
}
function Qn(e) {
return Ro(Ai(e))
}
function er(e, t, r) {
(r !== n && !za(e[t], r) || r === n && !(t in e)) && or(e, t, r)
}
function tr(e, t, r) {
var i = e[t];
Re.call(e, t) && za(i, r) && (r !== n || t in e) || or(e, t, r)
}
function nr(e, t) {
for (var n = e.length; n--;)
if (za(e[n][0], t)) return n;
return -1
}
function rr(e, t, n, r) {
return pr(e, (function(e, i, o) {
t(r, e, n(e), o)
})), r
}
function ir(e, t) {
return e && Pi(t, Ms(t), e)
}
function or(e, t, n) {
"__proto__" == t && tt ? tt(e, t, {
configurable: !0,
enumerable: !0,
value: n,
writable: !0
}) : e[t] = n
}
function ar(e, t) {
for (var r = -1, i = t.length, o = W(i), a = null == e; ++r < i;) o[r] = a ? n : Es(e, t[r]);
return o
}
function sr(e, t, r) {
return e == e && (r !== n && (e = e <= r ? e : r), t !== n && (e = e >= t ? e : t)), e
}
function lr(e, t, r, i, o, a) {
var s, l = 1 & t,
c = 2 & t,
u = 4 & t;
if (r && (s = o ? r(e, i, o, a) : r(e)), s !== n) return s;
if (!es(e)) return e;
var h = Va(e);
if (h) {
if (s = function(e) {
var t = e.length,
n = new e.constructor(t);
t && "string" == typeof e[0] && Re.call(e, "index") && (n.index = e.index, n.input = e.input);
return n
}(e), !l) return Ai(e, s)
} else {
var p = go(e),
d = p == w || p == x;
if (qa(e)) return ki(e, l);
if (p == S || p == m || d && !o) {
if (s = c || d ? {} : vo(e), !l) return c ? function(e, t) {
return Pi(e, fo(e), t)
}(e, function(e, t) {
return e && Pi(t, Ds(t), e)
}(s, e)) : function(e, t) {
return Pi(e, po(e), t)
}(e, ir(s, e))
} else {
if (!lt[p]) return o ? e : {};
s = function(e, t, n) {
var r = e.constructor;
switch (t) {
case D:
return Ci(e);
case _:
case b:
return new r(+e);
case I:
return function(e, t) {
var n = t ? Ci(e.buffer) : e.buffer;
return new e.constructor(n, e.byteOffset, e.byteLength)
}(e, n);
case N:
case R:
case j:
case L:
case F:
case B:
case z:
case H:
case U:
return Si(e, n);
case k:
return new r;
case C:
case A:
return new r(e);
case T:
return function(e) {
var t = new e.constructor(e.source, fe.exec(e));
return t.lastIndex = e.lastIndex, t
}(e);
case O:
return new r;
case P:
return i = e, Fn ? Ee(Fn.call(i)) : {}
}
var i
}(e, p, l)
}
}
a || (a = new Kn);
var f = a.get(e);
if (f) return f;
a.set(e, s), as(e) ? e.forEach((function(n) {
s.add(lr(n, t, r, n, e, a))
})) : ns(e) && e.forEach((function(n, i) {
s.set(i, lr(n, t, r, i, e, a))
}));
var g = h ? n : (u ? c ? io : ro : c ? Ds : Ms)(e);
return Ot(g || e, (function(n, i) {
g && (n = e[i = n]), tr(s, i, lr(n, t, r, i, e, a))
})), s
}
function cr(e, t, r) {
var i = r.length;
if (null == e) return !i;
for (e = Ee(e); i--;) {
var o = r[i],
a = t[o],
s = e[o];
if (s === n && !(o in e) || !a(s)) return !1
}
return !0
}
function ur(e, t, i) {
if ("function" != typeof e) throw new Ae(r);
return Mo((function() {
e.apply(n, i)
}), t)
}
function hr(e, t, n, r) {
var i = -1,
o = Dt,
a = !0,
s = e.length,
l = [],
c = t.length;
if (!s) return l;
n && (t = Nt(t, Jt(n))), r ? (o = It, a = !1) : t.length >= 200 && (o = en, a = !1, t = new qn(t));
e: for (; ++i < s;) {
var u = e[i],
h = null == n ? u : n(u);
if (u = r || 0 !== u ? u : 0, a && h == h) {
for (var p = c; p--;)
if (t[p] === h) continue e;
l.push(u)
} else o(t, h, r) || l.push(u)
}
return l
}
zn.templateSettings = {
escape: Z,
evaluate: J,
interpolate: Q,
variable: "",
imports: {
_: zn
}
}, zn.prototype = Un.prototype, zn.prototype.constructor = zn, Wn.prototype = Hn(Un.prototype), Wn.prototype.constructor = Wn, Vn.prototype = Hn(Un.prototype), Vn.prototype.constructor = Vn, Xn.prototype.clear = function() {
this.__data__ = An ? An(null) : {}, this.size = 0
}, Xn.prototype.delete = function(e) {
var t = this.has(e) && delete this.__data__[e];
return this.size -= t ? 1 : 0, t
}, Xn.prototype.get = function(e) {
var t = this.__data__;
if (An) {
var r = t[e];
return r === i ? n : r
}
return Re.call(t, e) ? t[e] : n
}, Xn.prototype.has = function(e) {
var t = this.__data__;
return An ? t[e] !== n : Re.call(t, e)
}, Xn.prototype.set = function(e, t) {
var r = this.__data__;
return this.size += this.has(e) ? 0 : 1, r[e] = An && t === n ? i : t, this
}, Gn.prototype.clear = function() {
this.__data__ = [], this.size = 0
}, Gn.prototype.delete = function(e) {
var t = this.__data__,
n = nr(t, e);
return !(n < 0) && (n == t.length - 1 ? t.pop() : Ke.call(t, n, 1), --this.size, !0)
}, Gn.prototype.get = function(e) {
var t = this.__data__,
r = nr(t, e);
return r < 0 ? n : t[r][1]
}, Gn.prototype.has = function(e) {
return nr(this.__data__, e) > -1
}, Gn.prototype.set = function(e, t) {
var n = this.__data__,
r = nr(n, e);
return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
}, Yn.prototype.clear = function() {
this.size = 0, this.__data__ = {
hash: new Xn,
map: new(Sn || Gn),
string: new Xn
}
}, Yn.prototype.delete = function(e) {
var t = co(this, e).delete(e);
return this.size -= t ? 1 : 0, t
}, Yn.prototype.get = function(e) {
return co(this, e).get(e)
}, Yn.prototype.has = function(e) {
return co(this, e).has(e)
}, Yn.prototype.set = function(e, t) {
var n = co(this, e),
r = n.size;
return n.set(e, t), this.size += n.size == r ? 0 : 1, this
}, qn.prototype.add = qn.prototype.push = function(e) {
return this.__data__.set(e, i), this
}, qn.prototype.has = function(e) {
return this.__data__.has(e)
}, Kn.prototype.clear = function() {
this.__data__ = new Gn, this.size = 0
}, Kn.prototype.delete = function(e) {
var t = this.__data__,
n = t.delete(e);
return this.size = t.size, n
}, Kn.prototype.get = function(e) {
return this.__data__.get(e)
}, Kn.prototype.has = function(e) {
return this.__data__.has(e)
}, Kn.prototype.set = function(e, t) {
var n = this.__data__;
if (n instanceof Gn) {
var r = n.__data__;
if (!Sn || r.length < 199) return r.push([e, t]), this.size = ++n.size, this;
n = this.__data__ = new Yn(r)
}
return n.set(e, t), this.size = n.size, this
};
var pr = Ii(yr),
dr = Ii(wr, !0);
function fr(e, t) {
var n = !0;
return pr(e, (function(e, r, i) {
return n = !!t(e, r, i)
})), n
}
function gr(e, t, r) {
for (var i = -1, o = e.length; ++i < o;) {
var a = e[i],
s = t(a);
if (null != s && (l === n ? s == s && !ls(s) : r(s, l))) var l = s,
c = a
}
return c
}
function mr(e, t) {
var n = [];
return pr(e, (function(e, r, i) {
t(e, r, i) && n.push(e)
})), n
}
function vr(e, t, n, r, i) {
var o = -1,
a = e.length;
for (n || (n = _o), i || (i = []); ++o < a;) {
var s = e[o];
t > 0 && n(s) ? t > 1 ? vr(s, t - 1, n, r, i) : Rt(i, s) : r || (i[i.length] = s)
}
return i
}
var _r = Ni(),
br = Ni(!0);
function yr(e, t) {
return e && _r(e, t, Ms)
}
function wr(e, t) {
return e && br(e, t, Ms)
}
function xr(e, t) {
return Mt(t, (function(t) {
return Za(e[t])
}))
}
function kr(e, t) {
for (var r = 0, i = (t = bi(t, e)).length; null != e && r < i;) e = e[Lo(t[r++])];
return r && r == i ? e : n
}
function Cr(e, t, n) {
var r = t(e);
return Va(e) ? r : Rt(r, n(e))
}
function Sr(e) {
return null == e ? e === n ? "[object Undefined]" : "[object Null]" : Je && Je in Ee(e) ? function(e) {
var t = Re.call(e, Je),
r = e[Je];
try {
e[Je] = n;
var i = !0
} catch (e) {}
var o = Fe.call(e);
i && (t ? e[Je] = r : delete e[Je]);
return o
}(e) : function(e) {
return Fe.call(e)
}(e)
}
function Er(e, t) {
return e > t
}
function Tr(e, t) {
return null != e && Re.call(e, t)
}
function Or(e, t) {
return null != e && t in Ee(e)
}
function Ar(e, t, r) {
for (var i = r ? It : Dt, o = e[0].length, a = e.length, s = a, l = W(a), c = 1 / 0, u = []; s--;) {
var h = e[s];
s && t && (h = Nt(h, Jt(t))), c = bn(h.length, c), l[s] = !r && (t || o >= 120 && h.length >= 120) ? new qn(s && h) : n
}
h = e[0];
var p = -1,
d = l[0];
e: for (; ++p < o && u.length < c;) {
var f = h[p],
g = t ? t(f) : f;
if (f = r || 0 !== f ? f : 0, !(d ? en(d, g) : i(u, g, r))) {
for (s = a; --s;) {
var m = l[s];
if (!(m ? en(m, g) : i(e[s], g, r))) continue e
}
d && d.push(g), u.push(f)
}
}
return u
}
function Pr(e, t, r) {
var i = null == (e = Oo(e, t = bi(t, e))) ? e : e[Lo($o(t))];
return null == i ? n : Et(i, e, r)
}
function Mr(e) {
return ts(e) && Sr(e) == m
}
function Dr(e, t, r, i, o) {
return e === t || (null == e || null == t || !ts(e) && !ts(t) ? e != e && t != t : function(e, t, r, i, o, a) {
var s = Va(e),
l = Va(t),
c = s ? v : go(e),
u = l ? v : go(t),
h = (c = c == m ? S : c) == S,
p = (u = u == m ? S : u) == S,
d = c == u;
if (d && qa(e)) {
if (!qa(t)) return !1;
s = !0, h = !1
}
if (d && !h) return a || (a = new Kn), s || cs(e) ? to(e, t, r, i, o, a) : function(e, t, n, r, i, o, a) {
switch (n) {
case I:
if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
e = e.buffer, t = t.buffer;
case D:
return !(e.byteLength != t.byteLength || !o(new Ve(e), new Ve(t)));
case _:
case b:
case C:
return za(+e, +t);
case y:
return e.name == t.name && e.message == t.message;
case T:
case A:
return e == t + "";
case k:
var s = ln;
case O:
var l = 1 & r;
if (s || (s = hn), e.size != t.size && !l) return !1;
var c = a.get(e);
if (c) return c == t;
r |= 2, a.set(e, t);
var u = to(s(e), s(t), r, i, o, a);
return a.delete(e), u;
case P:
if (Fn) return Fn.call(e) == Fn.call(t)
}
return !1
}(e, t, c, r, i, o, a);
if (!(1 & r)) {
var f = h && Re.call(e, "__wrapped__"),
g = p && Re.call(t, "__wrapped__");
if (f || g) {
var w = f ? e.value() : e,
x = g ? t.value() : t;
return a || (a = new Kn), o(w, x, r, i, a)
}
}
if (!d) return !1;
return a || (a = new Kn),
function(e, t, r, i, o, a) {
var s = 1 & r,
l = ro(e),
c = l.length,
u = ro(t),
h = u.length;
if (c != h && !s) return !1;
var p = c;
for (; p--;) {
var d = l[p];
if (!(s ? d in t : Re.call(t, d))) return !1
}
var f = a.get(e),
g = a.get(t);
if (f && g) return f == t && g == e;
var m = !0;
a.set(e, t), a.set(t, e);
var v = s;
for (; ++p < c;) {
var _ = e[d = l[p]],
b = t[d];
if (i) var y = s ? i(b, _, d, t, e, a) : i(_, b, d, e, t, a);
if (!(y === n ? _ === b || o(_, b, r, i, a) : y)) {
m = !1;
break
}
v || (v = "constructor" == d)
}
if (m && !v) {
var w = e.constructor,
x = t.constructor;
w == x || !("constructor" in e) || !("constructor" in t) || "function" == typeof w && w instanceof w && "function" == typeof x && x instanceof x || (m = !1)
}
return a.delete(e), a.delete(t), m
}(e, t, r, i, o, a)
}(e, t, r, i, Dr, o))
}
function Ir(e, t, r, i) {
var o = r.length,
a = o,
s = !i;
if (null == e) return !a;
for (e = Ee(e); o--;) {
var l = r[o];
if (s && l[2] ? l[1] !== e[l[0]] : !(l[0] in e)) return !1
}
for (; ++o < a;) {
var c = (l = r[o])[0],
u = e[c],
h = l[1];
if (s && l[2]) {
if (u === n && !(c in e)) return !1
} else {
var p = new Kn;
if (i) var d = i(u, h, c, e, t, p);
if (!(d === n ? Dr(h, u, 3, i, p) : d)) return !1
}
}
return !0
}
function Nr(e) {
return !(!es(e) || (t = e, Le && Le in t)) && (Za(e) ? He : ve).test(Fo(e));
var t
}
function Rr(e) {
return "function" == typeof e ? e : null == e ? rl : "object" == typeof e ? Va(e) ? Hr(e[0], e[1]) : zr(e) : pl(e)
}
function jr(e) {
if (!Co(e)) return Yt(e);
var t = [];
for (var n in Ee(e)) Re.call(e, n) && "constructor" != n && t.push(n);
return t
}
function Lr(e) {
if (!es(e)) return function(e) {
var t = [];
if (null != e)
for (var n in Ee(e)) t.push(n);
return t
}(e);
var t = Co(e),
n = [];
for (var r in e)("constructor" != r || !t && Re.call(e, r)) && n.push(r);
return n
}
function Fr(e, t) {
return e < t
}
function Br(e, t) {
var n = -1,
r = Ga(e) ? W(e.length) : [];
return pr(e, (function(e, i, o) {
r[++n] = t(e, i, o)
})), r
}
function zr(e) {
var t = uo(e);
return 1 == t.length && t[0][2] ? Eo(t[0][0], t[0][1]) : function(n) {
return n === e || Ir(n, e, t)
}
}
function Hr(e, t) {
return wo(e) && So(t) ? Eo(Lo(e), t) : function(r) {
var i = Es(r, e);
return i === n && i === t ? Ts(r, e) : Dr(t, i, 3)
}
}
function Ur(e, t, r, i, o) {
e !== t && _r(t, (function(a, s) {
if (o || (o = new Kn), es(a)) ! function(e, t, r, i, o, a, s) {
var l = Ao(e, r),
c = Ao(t, r),
u = s.get(c);
if (u) return void er(e, r, u);
var h = a ? a(l, c, r + "", e, t, s) : n,
p = h === n;
if (p) {
var d = Va(c),
f = !d && qa(c),
g = !d && !f && cs(c);
h = c, d || f || g ? Va(l) ? h = l : Ya(l) ? h = Ai(l) : f ? (p = !1, h = ki(c, !0)) : g ? (p = !1, h = Si(c, !0)) : h = [] : is(c) || Wa(c) ? (h = l, Wa(l) ? h = vs(l) : es(l) && !Za(l) || (h = vo(c))) : p = !1
}
p && (s.set(c, h), o(h, c, i, a, s), s.delete(c));
er(e, r, h)
}(e, t, s, r, Ur, i, o);
else {
var l = i ? i(Ao(e, s), a, s + "", e, t, o) : n;
l === n && (l = a), er(e, s, l)
}
}), Ds)
}
function Wr(e, t) {
var r = e.length;
if (r) return bo(t += t < 0 ? r : 0, r) ? e[t] : n
}
function Vr(e, t, n) {
t = t.length ? Nt(t, (function(e) {
return Va(e) ? function(t) {
return kr(t, 1 === e.length ? e[0] : e)
} : e
})) : [rl];
var r = -1;
t = Nt(t, Jt(lo()));
var i = Br(e, (function(e, n, i) {
var o = Nt(t, (function(t) {
return t(e)
}));
return {
criteria: o,
index: ++r,
value: e
}
}));
return function(e, t) {
var n = e.length;
for (e.sort(t); n--;) e[n] = e[n].value;
return e
}(i, (function(e, t) {
return function(e, t, n) {
var r = -1,
i = e.criteria,
o = t.criteria,
a = i.length,
s = n.length;
for (; ++r < a;) {
var l = Ei(i[r], o[r]);
if (l) return r >= s ? l : l * ("desc" == n[r] ? -1 : 1)
}
return e.index - t.index
}(e, t, n)
}))
}
function Xr(e, t, n) {
for (var r = -1, i = t.length, o = {}; ++r < i;) {
var a = t[r],
s = kr(e, a);
n(s, a) && Qr(o, bi(a, e), s)
}
return o
}
function Gr(e, t, n, r) {
var i = r ? Wt : Ut,
o = -1,
a = t.length,
s = e;
for (e === t && (t = Ai(t)), n && (s = Nt(e, Jt(n))); ++o < a;)
for (var l = 0, c = t[o], u = n ? n(c) : c;
(l = i(s, u, l, r)) > -1;) s !== e && Ke.call(s, l, 1), Ke.call(e, l, 1);
return e
}
function Yr(e, t) {
for (var n = e ? t.length : 0, r = n - 1; n--;) {
var i = t[n];
if (n == r || i !== o) {
var o = i;
bo(i) ? Ke.call(e, i, 1) : hi(e, i)
}
}
return e
}
function qr(e, t) {
return e + gt(xn() * (t - e + 1))
}
function Kr(e, t) {
var n = "";
if (!e || t < 1 || t > p) return n;
do {
t % 2 && (n += e), (t = gt(t / 2)) && (e += e)
} while (t);
return n
}
function $r(e, t) {
return Do(To(e, t, rl), e + "")
}
function Zr(e) {
return Zn(zs(e))
}
function Jr(e, t) {
var n = zs(e);
return Ro(n, sr(t, 0, n.length))
}
function Qr(e, t, r, i) {
if (!es(e)) return e;
for (var o = -1, a = (t = bi(t, e)).length, s = a - 1, l = e; null != l && ++o < a;) {
var c = Lo(t[o]),
u = r;
if ("__proto__" === c || "constructor" === c || "prototype" === c) return e;
if (o != s) {
var h = l[c];
(u = i ? i(h, c, l) : n) === n && (u = es(h) ? h : bo(t[o + 1]) ? [] : {})
}
tr(l, c, u), l = l[c]
}
return e
}
var ei = Pn ? function(e, t) {
return Pn.set(e, t), e
} : rl,
ti = tt ? function(e, t) {
return tt(e, "toString", {
configurable: !0,
enumerable: !1,
value: el(t),
writable: !0
})
} : rl;
function ni(e) {
return Ro(zs(e))
}
function ri(e, t, n) {
var r = -1,
i = e.length;
t < 0 && (t = -t > i ? 0 : i + t), (n = n > i ? i : n) < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0;
for (var o = W(i); ++r < i;) o[r] = e[r + t];
return o
}
function ii(e, t) {
var n;
return pr(e, (function(e, r, i) {
return !(n = t(e, r, i))
})), !!n
}
function oi(e, t, n) {
var r = 0,
i = null == e ? r : e.length;
if ("number" == typeof t && t == t && i <= 2147483647) {
for (; r < i;) {
var o = r + i >>> 1,
a = e[o];
null !== a && !ls(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
}
return i
}
return ai(e, t, rl, n)
}
function ai(e, t, r, i) {
var o = 0,
a = null == e ? 0 : e.length;
if (0 === a) return 0;
for (var s = (t = r(t)) != t, l = null === t, c = ls(t), u = t === n; o < a;) {
var h = gt((o + a) / 2),
p = r(e[h]),
d = p !== n,
f = null === p,
g = p == p,
m = ls(p);
if (s) var v = i || g;
else v = u ? g && (i || d) : l ? g && d && (i || !f) : c ? g && d && !f && (i || !m) : !f && !m && (i ? p <= t : p < t);
v ? o = h + 1 : a = h
}
return bn(a, 4294967294)
}
function si(e, t) {
for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
var a = e[n],
s = t ? t(a) : a;
if (!n || !za(s, l)) {
var l = s;
o[i++] = 0 === a ? 0 : a
}
}
return o
}
function li(e) {
return "number" == typeof e ? e : ls(e) ? d : +e
}
function ci(e) {
if ("string" == typeof e) return e;
if (Va(e)) return Nt(e, ci) + "";
if (ls(e)) return Bn ? Bn.call(e) : "";
var t = e + "";
return "0" == t && 1 / e == -1 / 0 ? "-0" : t
}
function ui(e, t, n) {
var r = -1,
i = Dt,
o = e.length,
a = !0,
s = [],
l = s;
if (n) a = !1, i = It;
else if (o >= 200) {
var c = t ? null : Ki(e);
if (c) return hn(c);
a = !1, i = en, l = new qn
} else l = t ? [] : s;
e: for (; ++r < o;) {
var u = e[r],
h = t ? t(u) : u;
if (u = n || 0 !== u ? u : 0, a && h == h) {
for (var p = l.length; p--;)
if (l[p] === h) continue e;
t && l.push(h), s.push(u)
} else i(l, h, n) || (l !== s && l.push(h), s.push(u))
}
return s
}
function hi(e, t) {
return null == (e = Oo(e, t = bi(t, e))) || delete e[Lo($o(t))]
}
function pi(e, t, n, r) {
return Qr(e, t, n(kr(e, t)), r)
}
function di(e, t, n, r) {
for (var i = e.length, o = r ? i : -1;
(r ? o-- : ++o < i) && t(e[o], o, e););
return n ? ri(e, r ? 0 : o, r ? o + 1 : i) : ri(e, r ? o + 1 : 0, r ? i : o)
}
function fi(e, t) {
var n = e;
return n instanceof Vn && (n = n.value()), jt(t, (function(e, t) {
return t.func.apply(t.thisArg, Rt([e], t.args))
}), n)
}
function gi(e, t, n) {
var r = e.length;
if (r < 2) return r ? ui(e[0]) : [];
for (var i = -1, o = W(r); ++i < r;)
for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = hr(o[i] || a, e[s], t, n));
return ui(vr(o, 1), t, n)
}
function mi(e, t, r) {
for (var i = -1, o = e.length, a = t.length, s = {}; ++i < o;) {
var l = i < a ? t[i] : n;
r(s, e[i], l)
}
return s
}
function vi(e) {
return Ya(e) ? e : []
}
function _i(e) {
return "function" == typeof e ? e : rl
}
function bi(e, t) {
return Va(e) ? e : wo(e, t) ? [e] : jo(_s(e))
}
var yi = $r;
function wi(e, t, r) {
var i = e.length;
return r = r === n ? i : r, !t && r >= i ? e : ri(e, t, r)
}
var xi = rt || function(e) {
return ft.clearTimeout(e)
};
function ki(e, t) {
if (t) return e.slice();
var n = e.length,
r = Xe ? Xe(n) : new e.constructor(n);
return e.copy(r), r
}
function Ci(e) {
var t = new e.constructor(e.byteLength);
return new Ve(t).set(new Ve(e)), t
}
function Si(e, t) {
var n = t ? Ci(e.buffer) : e.buffer;
return new e.constructor(n, e.byteOffset, e.length)
}
function Ei(e, t) {
if (e !== t) {
var r = e !== n,
i = null === e,
o = e == e,
a = ls(e),
s = t !== n,
l = null === t,
c = t == t,
u = ls(t);
if (!l && !u && !a && e > t || a && s && c && !l && !u || i && s && c || !r && c || !o) return 1;
if (!i && !a && !u && e < t || u && r && o && !i && !a || l && r && o || !s && o || !c) return -1
}
return 0
}
function Ti(e, t, n, r) {
for (var i = -1, o = e.length, a = n.length, s = -1, l = t.length, c = _n(o - a, 0), u = W(l + c), h = !r; ++s < l;) u[s] = t[s];
for (; ++i < a;)(h || i < o) && (u[n[i]] = e[i]);
for (; c--;) u[s++] = e[i++];
return u
}
function Oi(e, t, n, r) {
for (var i = -1, o = e.length, a = -1, s = n.length, l = -1, c = t.length, u = _n(o - s, 0), h = W(u + c), p = !r; ++i < u;) h[i] = e[i];
for (var d = i; ++l < c;) h[d + l] = t[l];
for (; ++a < s;)(p || i < o) && (h[d + n[a]] = e[i++]);
return h
}
function Ai(e, t) {
var n = -1,
r = e.length;
for (t || (t = W(r)); ++n < r;) t[n] = e[n];
return t
}
function Pi(e, t, r, i) {
var o = !r;
r || (r = {});
for (var a = -1, s = t.length; ++a < s;) {
var l = t[a],
c = i ? i(r[l], e[l], l, r, e) : n;
c === n && (c = e[l]), o ? or(r, l, c) : tr(r, l, c)
}
return r
}
function Mi(e, t) {
return function(n, r) {
var i = Va(n) ? Tt : rr,
o = t ? t() : {};
return i(n, e, lo(r, 2), o)
}
}
function Di(e) {
return $r((function(t, r) {
var i = -1,
o = r.length,
a = o > 1 ? r[o - 1] : n,
s = o > 2 ? r[2] : n;
for (a = e.length > 3 && "function" == typeof a ? (o--, a) : n, s && yo(r[0], r[1], s) && (a = o < 3 ? n : a, o = 1), t = Ee(t); ++i < o;) {
var l = r[i];
l && e(t, l, i, a)
}
return t
}))
}
function Ii(e, t) {
return function(n, r) {
if (null == n) return n;
if (!Ga(n)) return e(n, r);
for (var i = n.length, o = t ? i : -1, a = Ee(n);
(t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
return n
}
}
function Ni(e) {
return function(t, n, r) {
for (var i = -1, o = Ee(t), a = r(t), s = a.length; s--;) {
var l = a[e ? s : ++i];
if (!1 === n(o[l], l, o)) break
}
return t
}
}
function Ri(e) {
return function(t) {
var r = sn(t = _s(t)) ? fn(t) : n,
i = r ? r[0] : t.charAt(0),
o = r ? wi(r, 1).join("") : t.slice(1);
return i[e]() + o
}
}
function ji(e) {
return function(t) {
return jt(Zs(Ws(t).replace(Qe, "")), e, "")
}
}
function Li(e) {
return function() {
var t = arguments;
switch (t.length) {
case 0:
return new e;
case 1:
return new e(t[0]);
case 2:
return new e(t[0], t[1]);
case 3:
return new e(t[0], t[1], t[2]);
case 4:
return new e(t[0], t[1], t[2], t[3]);
case 5:
return new e(t[0], t[1], t[2], t[3], t[4]);
case 6:
return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
case 7:
return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
}
var n = Hn(e.prototype),
r = e.apply(n, t);
return es(r) ? r : n
}
}
function Fi(e) {
return function(t, r, i) {
var o = Ee(t);
if (!Ga(t)) {
var a = lo(r, 3);
t = Ms(t), r = function(e) {
return a(o[e], e, o)
}
}
var s = e(t, r, i);
return s > -1 ? o[a ? t[s] : s] : n
}
}
function Bi(e) {
return no((function(t) {
var i = t.length,
o = i,
a = Wn.prototype.thru;
for (e && t.reverse(); o--;) {
var s = t[o];
if ("function" != typeof s) throw new Ae(r);
if (a && !l && "wrapper" == ao(s)) var l = new Wn([], !0)
}
for (o = l ? o : i; ++o < i;) {
var c = ao(s = t[o]),
u = "wrapper" == c ? oo(s) : n;
l = u && xo(u[0]) && 424 == u[1] && !u[4].length && 1 == u[9] ? l[ao(u[0])].apply(l, u[3]) : 1 == s.length && xo(s) ? l[c]() : l.thru(s)
}
return function() {
var e = arguments,
n = e[0];
if (l && 1 == e.length && Va(n)) return l.plant(n).value();
for (var r = 0, o = i ? t[r].apply(this, e) : n; ++r < i;) o = t[r].call(this, o);
return o
}
}))
}
function zi(e, t, r, i, o, a, s, l, u, h) {
var p = t & c,
d = 1 & t,
f = 2 & t,
g = 24 & t,
m = 512 & t,
v = f ? n : Li(e);
return function c() {
for (var _ = arguments.length, b = W(_), y = _; y--;) b[y] = arguments[y];
if (g) var w = so(c),
x = function(e, t) {
for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
return r
}(b, w);
if (i && (b = Ti(b, i, o, g)), a && (b = Oi(b, a, s, g)), _ -= x, g && _ < h) {
var k = un(b, w);
return Yi(e, t, zi, c.placeholder, r, b, k, l, u, h - _)
}
var C = d ? r : this,
S = f ? C[e] : e;
return _ = b.length, l ? b = function(e, t) {
var r = e.length,
i = bn(t.length, r),
o = Ai(e);
for (; i--;) {
var a = t[i];
e[i] = bo(a, r) ? o[a] : n
}
return e
}(b, l) : m && _ > 1 && b.reverse(), p && u < _ && (b.length = u), this && this !== ft && this instanceof c && (S = v || Li(S)), S.apply(C, b)
}
}
function Hi(e, t) {
return function(n, r) {
return function(e, t, n, r) {
return yr(e, (function(e, i, o) {
t(r, n(e), i, o)
})), r
}(n, e, t(r), {})
}
}
function Ui(e, t) {
return function(r, i) {
var o;
if (r === n && i === n) return t;
if (r !== n && (o = r), i !== n) {
if (o === n) return i;
"string" == typeof r || "string" == typeof i ? (r = ci(r), i = ci(i)) : (r = li(r), i = li(i)), o = e(r, i)
}
return o
}
}
function Wi(e) {
return no((function(t) {
return t = Nt(t, Jt(lo())), $r((function(n) {
var r = this;
return e(t, (function(e) {
return Et(e, r, n)
}))
}))
}))
}
function Vi(e, t) {
var r = (t = t === n ? " " : ci(t)).length;
if (r < 2) return r ? Kr(t, e) : t;
var i = Kr(t, dt(e / dn(t)));
return sn(t) ? wi(fn(i), 0, e).join("") : i.slice(0, e)
}
function Xi(e) {
return function(t, r, i) {
return i && "number" != typeof i && yo(t, r, i) && (r = i = n), t = ds(t), r === n ? (r = t, t = 0) : r = ds(r),
function(e, t, n, r) {
for (var i = -1, o = _n(dt((t - e) / (n || 1)), 0), a = W(o); o--;) a[r ? o : ++i] = e, e += n;
return a
}(t, r, i = i === n ? t < r ? 1 : -1 : ds(i), e)
}
}
function Gi(e) {
return function(t, n) {
return "string" == typeof t && "string" == typeof n || (t = ms(t), n = ms(n)), e(t, n)
}
}
function Yi(e, t, r, i, o, a, c, u, h, p) {
var d = 8 & t;
t |= d ? s : l, 4 & (t &= ~(d ? l : s)) || (t &= -4);
var f = [e, t, o, d ? a : n, d ? c : n, d ? n : a, d ? n : c, u, h, p],
g = r.apply(n, f);
return xo(e) && Po(g, f), g.placeholder = i, Io(g, e, t)
}
function qi(e) {
var t = Se[e];
return function(e, n) {
if (e = ms(e), (n = null == n ? 0 : bn(fs(n), 292)) && bt(e)) {
var r = (_s(e) + "e").split("e");
return +((r = (_s(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
}
return t(e)
}
}
var Ki = Tn && 1 / hn(new Tn([, -0]))[1] == h ? function(e) {
return new Tn(e)
} : ll;
function $i(e) {
return function(t) {
var n = go(t);
return n == k ? ln(t) : n == O ? pn(t) : function(e, t) {
return Nt(t, (function(t) {
return [t, e[t]]
}))
}(t, e(t))
}
}
function Zi(e, t, i, h, p, d, f, g) {
var m = 2 & t;
if (!m && "function" != typeof e) throw new Ae(r);
var v = h ? h.length : 0;
if (v || (t &= -97, h = p = n), f = f === n ? f : _n(fs(f), 0), g = g === n ? g : fs(g), v -= p ? p.length : 0, t & l) {
var _ = h,
b = p;
h = p = n
}
var y = m ? n : oo(e),
w = [e, t, i, h, p, _, b, d, f, g];
if (y && function(e, t) {
var n = e[1],
r = t[1],
i = n | r,
a = i < 131,
s = r == c && 8 == n || r == c && n == u && e[7].length <= t[8] || 384 == r && t[7].length <= t[8] && 8 == n;
if (!a && !s) return e;
1 & r && (e[2] = t[2], i |= 1 & n ? 0 : 4);
var l = t[3];
if (l) {
var h = e[3];
e[3] = h ? Ti(h, l, t[4]) : l, e[4] = h ? un(e[3], o) : t[4]
}(l = t[5]) && (h = e[5], e[5] = h ? Oi(h, l, t[6]) : l, e[6] = h ? un(e[5], o) : t[6]);
(l = t[7]) && (e[7] = l);
r & c && (e[8] = null == e[8] ? t[8] : bn(e[8], t[8]));
null == e[9] && (e[9] = t[9]);
e[0] = t[0], e[1] = i
}(w, y), e = w[0], t = w[1], i = w[2], h = w[3], p = w[4], !(g = w[9] = w[9] === n ? m ? 0 : e.length : _n(w[9] - v, 0)) && 24 & t && (t &= -25), t && 1 != t) x = 8 == t || t == a ? function(e, t, r) {
var i = Li(e);
return function o() {
for (var a = arguments.length, s = W(a), l = a, c = so(o); l--;) s[l] = arguments[l];
var u = a < 3 && s[0] !== c && s[a - 1] !== c ? [] : un(s, c);
return (a -= u.length) < r ? Yi(e, t, zi, o.placeholder, n, s, u, n, n, r - a) : Et(this && this !== ft && this instanceof o ? i : e, this, s)
}
}(e, t, g) : t != s && 33 != t || p.length ? zi.apply(n, w) : function(e, t, n, r) {
var i = 1 & t,
o = Li(e);
return function t() {
for (var a = -1, s = arguments.length, l = -1, c = r.length, u = W(c + s), h = this && this !== ft && this instanceof t ? o : e; ++l < c;) u[l] = r[l];
for (; s--;) u[l++] = arguments[++a];
return Et(h, i ? n : this, u)
}
}(e, t, i, h);
else var x = function(e, t, n) {
var r = 1 & t,
i = Li(e);
return function t() {
return (this && this !== ft && this instanceof t ? i : e).apply(r ? n : this, arguments)
}
}(e, t, i);
return Io((y ? ei : Po)(x, w), e, t)
}
function Ji(e, t, r, i) {
return e === n || za(e, De[r]) && !Re.call(i, r) ? t : e
}
function Qi(e, t, r, i, o, a) {
return es(e) && es(t) && (a.set(t, e), Ur(e, t, n, Qi, a), a.delete(t)), e
}
function eo(e) {
return is(e) ? n : e
}
function to(e, t, r, i, o, a) {
var s = 1 & r,
l = e.length,
c = t.length;
if (l != c && !(s && c > l)) return !1;
var u = a.get(e),
h = a.get(t);
if (u && h) return u == t && h == e;
var p = -1,
d = !0,
f = 2 & r ? new qn : n;
for (a.set(e, t), a.set(t, e); ++p < l;) {
var g = e[p],
m = t[p];
if (i) var v = s ? i(m, g, p, t, e, a) : i(g, m, p, e, t, a);
if (v !== n) {
if (v) continue;
d = !1;
break
}
if (f) {
if (!Ft(t, (function(e, t) {
if (!en(f, t) && (g === e || o(g, e, r, i, a))) return f.push(t)
}))) {
d = !1;
break
}
} else if (g !== m && !o(g, m, r, i, a)) {
d = !1;
break
}
}
return a.delete(e), a.delete(t), d
}
function no(e) {
return Do(To(e, n, Xo), e + "")
}
function ro(e) {
return Cr(e, Ms, po)
}
function io(e) {
return Cr(e, Ds, fo)
}
var oo = Pn ? function(e) {
return Pn.get(e)
} : ll;
function ao(e) {
for (var t = e.name + "", n = Mn[t], r = Re.call(Mn, t) ? n.length : 0; r--;) {
var i = n[r],
o = i.func;
if (null == o || o == e) return i.name
}
return t
}
function so(e) {
return (Re.call(zn, "placeholder") ? zn : e).placeholder
}
function lo() {
var e = zn.iteratee || il;
return e = e === il ? Rr : e, arguments.length ? e(arguments[0], arguments[1]) : e
}
function co(e, t) {
var n, r, i = e.__data__;
return ("string" == (r = typeof(n = t)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== n : null === n) ? i["string" == typeof t ? "string" : "hash"] : i.map
}
function uo(e) {
for (var t = Ms(e), n = t.length; n--;) {
var r = t[n],
i = e[r];
t[n] = [r, i, So(i)]
}
return t
}
function ho(e, t) {
var r = function(e, t) {
return null == e ? n : e[t]
}(e, t);
return Nr(r) ? r : n
}
var po = mt ? function(e) {
return null == e ? [] : (e = Ee(e), Mt(mt(e), (function(t) {
return qe.call(e, t)
})))
} : gl,
fo = mt ? function(e) {
for (var t = []; e;) Rt(t, po(e)), e = Ge(e);
return t
} : gl,
go = Sr;
function mo(e, t, n) {
for (var r = -1, i = (t = bi(t, e)).length, o = !1; ++r < i;) {
var a = Lo(t[r]);
if (!(o = null != e && n(e, a))) break;
e = e[a]
}
return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Qa(i) && bo(a, i) && (Va(e) || Wa(e))
}
function vo(e) {
return "function" != typeof e.constructor || Co(e) ? {} : Hn(Ge(e))
}
function _o(e) {
return Va(e) || Wa(e) || !!($e && e && e[$e])
}
function bo(e, t) {
var n = typeof e;
return !!(t = null == t ? p : t) && ("number" == n || "symbol" != n && be.test(e)) && e > -1 && e % 1 == 0 && e < t
}
function yo(e, t, n) {
if (!es(n)) return !1;
var r = typeof t;
return !!("number" == r ? Ga(n) && bo(t, n.length) : "string" == r && t in n) && za(n[t], e)
}
function wo(e, t) {
if (Va(e)) return !1;
var n = typeof e;
return !("number" != n && "symbol" != n && "boolean" != n && null != e && !ls(e)) || (te.test(e) || !ee.test(e) || null != t && e in Ee(t))
}
function xo(e) {
var t = ao(e),
n = zn[t];
if ("function" != typeof n || !(t in Vn.prototype)) return !1;
if (e === n) return !0;
var r = oo(n);
return !!r && e === r[0]
}(Cn && go(new Cn(new ArrayBuffer(1))) != I || Sn && go(new Sn) != k || En && go(En.resolve()) != E || Tn && go(new Tn) != O || On && go(new On) != M) && (go = function(e) {
var t = Sr(e),
r = t == S ? e.constructor : n,
i = r ? Fo(r) : "";
if (i) switch (i) {
case Dn:
return I;
case In:
return k;
case Nn:
return E;
case Rn:
return O;
case jn:
return M
}
return t
});
var ko = Ie ? Za : ml;
function Co(e) {
var t = e && e.constructor;
return e === ("function" == typeof t && t.prototype || De)
}
function So(e) {
return e == e && !es(e)
}
function Eo(e, t) {
return function(r) {
return null != r && (r[e] === t && (t !== n || e in Ee(r)))
}
}
function To(e, t, r) {
return t = _n(t === n ? e.length - 1 : t, 0),
function() {
for (var n = arguments, i = -1, o = _n(n.length - t, 0), a = W(o); ++i < o;) a[i] = n[t + i];
i = -1;
for (var s = W(t + 1); ++i < t;) s[i] = n[i];
return s[t] = r(a), Et(e, this, s)
}
}
function Oo(e, t) {
return t.length < 2 ? e : kr(e, ri(t, 0, -1))
}
function Ao(e, t) {
if (("constructor" !== t || "function" != typeof e[t]) && "__proto__" != t) return e[t]
}
var Po = No(ei),
Mo = pt || function(e, t) {
return ft.setTimeout(e, t)
},
Do = No(ti);
function Io(e, t, n) {
var r = t + "";
return Do(e, function(e, t) {
var n = t.length;
if (!n) return e;
var r = n - 1;
return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(se, "{\n/* [wrapped with " + t + "] */\n")
}(r, function(e, t) {
return Ot(g, (function(n) {
var r = "_." + n[0];
t & n[1] && !Dt(e, r) && e.push(r)
})), e.sort()
}(function(e) {
var t = e.match(le);
return t ? t[1].split(ce) : []
}(r), n)))
}
function No(e) {
var t = 0,
r = 0;
return function() {
var i = yn(),
o = 16 - (i - r);
if (r = i, o > 0) {
if (++t >= 800) return arguments[0]
} else t = 0;
return e.apply(n, arguments)
}
}
function Ro(e, t) {
var r = -1,
i = e.length,
o = i - 1;
for (t = t === n ? i : t; ++r < t;) {
var a = qr(r, o),
s = e[a];
e[a] = e[r], e[r] = s
}
return e.length = t, e
}
var jo = function(e) {
var t = Na(e, (function(e) {
return 500 === n.size && n.clear(), e
})),
n = t.cache;
return t
}((function(e) {
var t = [];
return 46 === e.charCodeAt(0) && t.push(""), e.replace(ne, (function(e, n, r, i) {
t.push(r ? i.replace(pe, "$1") : n || e)
})), t
}));
function Lo(e) {
if ("string" == typeof e || ls(e)) return e;
var t = e + "";
return "0" == t && 1 / e == -1 / 0 ? "-0" : t
}
function Fo(e) {
if (null != e) {
try {
return Ne.call(e)
} catch (e) {}
try {
return e + ""
} catch (e) {}
}
return ""
}
function Bo(e) {
if (e instanceof Vn) return e.clone();
var t = new Wn(e.__wrapped__, e.__chain__);
return t.__actions__ = Ai(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
}
var zo = $r((function(e, t) {
return Ya(e) ? hr(e, vr(t, 1, Ya, !0)) : []
})),
Ho = $r((function(e, t) {
var r = $o(t);
return Ya(r) && (r = n), Ya(e) ? hr(e, vr(t, 1, Ya, !0), lo(r, 2)) : []
})),
Uo = $r((function(e, t) {
var r = $o(t);
return Ya(r) && (r = n), Ya(e) ? hr(e, vr(t, 1, Ya, !0), n, r) : []
}));
function Wo(e, t, n) {
var r = null == e ? 0 : e.length;
if (!r) return -1;
var i = null == n ? 0 : fs(n);
return i < 0 && (i = _n(r + i, 0)), Ht(e, lo(t, 3), i)
}
function Vo(e, t, r) {
var i = null == e ? 0 : e.length;
if (!i) return -1;
var o = i - 1;
return r !== n && (o = fs(r), o = r < 0 ? _n(i + o, 0) : bn(o, i - 1)), Ht(e, lo(t, 3), o, !0)
}
function Xo(e) {
return (null == e ? 0 : e.length) ? vr(e, 1) : []
}
function Go(e) {
return e && e.length ? e[0] : n
}
var Yo = $r((function(e) {
var t = Nt(e, vi);
return t.length && t[0] === e[0] ? Ar(t) : []
})),
qo = $r((function(e) {
var t = $o(e),
r = Nt(e, vi);
return t === $o(r) ? t = n : r.pop(), r.length && r[0] === e[0] ? Ar(r, lo(t, 2)) : []
})),
Ko = $r((function(e) {
var t = $o(e),
r = Nt(e, vi);
return (t = "function" == typeof t ? t : n) && r.pop(), r.length && r[0] === e[0] ? Ar(r, n, t) : []
}));
function $o(e) {
var t = null == e ? 0 : e.length;
return t ? e[t - 1] : n
}
var Zo = $r(Jo);
function Jo(e, t) {
return e && e.length && t && t.length ? Gr(e, t) : e
}
var Qo = no((function(e, t) {
var n = null == e ? 0 : e.length,
r = ar(e, t);
return Yr(e, Nt(t, (function(e) {
return bo(e, n) ? +e : e
})).sort(Ei)), r
}));
function ea(e) {
return null == e ? e : kn.call(e)
}
var ta = $r((function(e) {
return ui(vr(e, 1, Ya, !0))
})),
na = $r((function(e) {
var t = $o(e);
return Ya(t) && (t = n), ui(vr(e, 1, Ya, !0), lo(t, 2))
})),
ra = $r((function(e) {
var t = $o(e);
return t = "function" == typeof t ? t : n, ui(vr(e, 1, Ya, !0), n, t)
}));
function ia(e) {
if (!e || !e.length) return [];
var t = 0;
return e = Mt(e, (function(e) {
if (Ya(e)) return t = _n(e.length, t), !0
})), $t(t, (function(t) {
return Nt(e, Gt(t))
}))
}
function oa(e, t) {
if (!e || !e.length) return [];
var r = ia(e);
return null == t ? r : Nt(r, (function(e) {
return Et(t, n, e)
}))
}
var aa = $r((function(e, t) {
return Ya(e) ? hr(e, t) : []
})),
sa = $r((function(e) {
return gi(Mt(e, Ya))
})),
la = $r((function(e) {
var t = $o(e);
return Ya(t) && (t = n), gi(Mt(e, Ya), lo(t, 2))
})),
ca = $r((function(e) {
var t = $o(e);
return t = "function" == typeof t ? t : n, gi(Mt(e, Ya), n, t)
})),
ua = $r(ia);
var ha = $r((function(e) {
var t = e.length,
r = t > 1 ? e[t - 1] : n;
return r = "function" == typeof r ? (e.pop(), r) : n, oa(e, r)
}));
function pa(e) {
var t = zn(e);
return t.__chain__ = !0, t
}
function da(e, t) {
return t(e)
}
var fa = no((function(e) {
var t = e.length,
r = t ? e[0] : 0,
i = this.__wrapped__,
o = function(t) {
return ar(t, e)
};
return !(t > 1 || this.__actions__.length) && i instanceof Vn && bo(r) ? ((i = i.slice(r, +r + (t ? 1 : 0))).__actions__.push({
func: da,
args: [o],
thisArg: n
}), new Wn(i, this.__chain__).thru((function(e) {
return t && !e.length && e.push(n), e
}))) : this.thru(o)
}));
var ga = Mi((function(e, t, n) {
Re.call(e, n) ? ++e[n] : or(e, n, 1)
}));
var ma = Fi(Wo),
va = Fi(Vo);
function _a(e, t) {
return (Va(e) ? Ot : pr)(e, lo(t, 3))
}
function ba(e, t) {
return (Va(e) ? At : dr)(e, lo(t, 3))
}
var ya = Mi((function(e, t, n) {
Re.call(e, n) ? e[n].push(t) : or(e, n, [t])
}));
var wa = $r((function(e, t, n) {
var r = -1,
i = "function" == typeof t,
o = Ga(e) ? W(e.length) : [];
return pr(e, (function(e) {
o[++r] = i ? Et(t, e, n) : Pr(e, t, n)
})), o
})),
xa = Mi((function(e, t, n) {
or(e, n, t)
}));
function ka(e, t) {
return (Va(e) ? Nt : Br)(e, lo(t, 3))
}
var Ca = Mi((function(e, t, n) {
e[n ? 0 : 1].push(t)
}), (function() {
return [
[],
[]
]
}));
var Sa = $r((function(e, t) {
if (null == e) return [];
var n = t.length;
return n > 1 && yo(e, t[0], t[1]) ? t = [] : n > 2 && yo(t[0], t[1], t[2]) && (t = [t[0]]), Vr(e, vr(t, 1), [])
})),
Ea = ct || function() {
return ft.Date.now()
};
function Ta(e, t, r) {
return t = r ? n : t, t = e && null == t ? e.length : t, Zi(e, c, n, n, n, n, t)
}
function Oa(e, t) {
var i;
if ("function" != typeof t) throw new Ae(r);
return e = fs(e),
function() {
return --e > 0 && (i = t.apply(this, arguments)), e <= 1 && (t = n), i
}
}
var Aa = $r((function(e, t, n) {
var r = 1;
if (n.length) {
var i = un(n, so(Aa));
r |= s
}
return Zi(e, r, t, n, i)
})),
Pa = $r((function(e, t, n) {
var r = 3;
if (n.length) {
var i = un(n, so(Pa));
r |= s
}
return Zi(t, r, e, n, i)
}));
function Ma(e, t, i) {
var o, a, s, l, c, u, h = 0,
p = !1,
d = !1,
f = !0;
if ("function" != typeof e) throw new Ae(r);
function g(t) {
var r = o,
i = a;
return o = a = n, h = t, l = e.apply(i, r)
}
function m(e) {
var r = e - u;
return u === n || r >= t || r < 0 || d && e - h >= s
}
function v() {
var e = Ea();
if (m(e)) return _(e);
c = Mo(v, function(e) {
var n = t - (e - u);
return d ? bn(n, s - (e - h)) : n
}(e))
}
function _(e) {
return c = n, f && o ? g(e) : (o = a = n, l)
}
function b() {
var e = Ea(),
r = m(e);
if (o = arguments, a = this, u = e, r) {
if (c === n) return function(e) {
return h = e, c = Mo(v, t), p ? g(e) : l
}(u);
if (d) return xi(c), c = Mo(v, t), g(u)
}
return c === n && (c = Mo(v, t)), l
}
return t = ms(t) || 0, es(i) && (p = !!i.leading, s = (d = "maxWait" in i) ? _n(ms(i.maxWait) || 0, t) : s, f = "trailing" in i ? !!i.trailing : f), b.cancel = function() {
c !== n && xi(c), h = 0, o = u = a = c = n
}, b.flush = function() {
return c === n ? l : _(Ea())
}, b
}
var Da = $r((function(e, t) {
return ur(e, 1, t)
})),
Ia = $r((function(e, t, n) {
return ur(e, ms(t) || 0, n)
}));
function Na(e, t) {
if ("function" != typeof e || null != t && "function" != typeof t) throw new Ae(r);
var n = function() {
var r = arguments,
i = t ? t.apply(this, r) : r[0],
o = n.cache;
if (o.has(i)) return o.get(i);
var a = e.apply(this, r);
return n.cache = o.set(i, a) || o, a
};
return n.cache = new(Na.Cache || Yn), n
}
function Ra(e) {
if ("function" != typeof e) throw new Ae(r);
return function() {
var t = arguments;
switch (t.length) {
case 0:
return !e.call(this);
case 1:
return !e.call(this, t[0]);
case 2:
return !e.call(this, t[0], t[1]);
case 3:
return !e.call(this, t[0], t[1], t[2])
}
return !e.apply(this, t)
}
}
Na.Cache = Yn;
var ja = yi((function(e, t) {
var n = (t = 1 == t.length && Va(t[0]) ? Nt(t[0], Jt(lo())) : Nt(vr(t, 1), Jt(lo()))).length;
return $r((function(r) {
for (var i = -1, o = bn(r.length, n); ++i < o;) r[i] = t[i].call(this, r[i]);
return Et(e, this, r)
}))
})),
La = $r((function(e, t) {
var r = un(t, so(La));
return Zi(e, s, n, t, r)
})),
Fa = $r((function(e, t) {
var r = un(t, so(Fa));
return Zi(e, l, n, t, r)
})),
Ba = no((function(e, t) {
return Zi(e, u, n, n, n, t)
}));
function za(e, t) {
return e === t || e != e && t != t
}
var Ha = Gi(Er),
Ua = Gi((function(e, t) {
return e >= t
})),
Wa = Mr(function() {
return arguments
}()) ? Mr : function(e) {
return ts(e) && Re.call(e, "callee") && !qe.call(e, "callee")
},
Va = W.isArray,
Xa = yt ? Jt(yt) : function(e) {
return ts(e) && Sr(e) == D
};
function Ga(e) {
return null != e && Qa(e.length) && !Za(e)
}
function Ya(e) {
return ts(e) && Ga(e)
}
var qa = _t || ml,
Ka = wt ? Jt(wt) : function(e) {
return ts(e) && Sr(e) == b
};
function $a(e) {
if (!ts(e)) return !1;
var t = Sr(e);
return t == y || "[object DOMException]" == t || "string" == typeof e.message && "string" == typeof e.name && !is(e)
}
function Za(e) {
if (!es(e)) return !1;
var t = Sr(e);
return t == w || t == x || "[object AsyncFunction]" == t || "[object Proxy]" == t
}
function Ja(e) {
return "number" == typeof e && e == fs(e)
}
function Qa(e) {
return "number" == typeof e && e > -1 && e % 1 == 0 && e <= p
}
function es(e) {
var t = typeof e;
return null != e && ("object" == t || "function" == t)
}
function ts(e) {
return null != e && "object" == typeof e
}
var ns = xt ? Jt(xt) : function(e) {
return ts(e) && go(e) == k
};
function rs(e) {
return "number" == typeof e || ts(e) && Sr(e) == C
}
function is(e) {
if (!ts(e) || Sr(e) != S) return !1;
var t = Ge(e);
if (null === t) return !0;
var n = Re.call(t, "constructor") && t.constructor;
return "function" == typeof n && n instanceof n && Ne.call(n) == Be
}
var os = kt ? Jt(kt) : function(e) {
return ts(e) && Sr(e) == T
};
var as = Ct ? Jt(Ct) : function(e) {
return ts(e) && go(e) == O
};
function ss(e) {
return "string" == typeof e || !Va(e) && ts(e) && Sr(e) == A
}
function ls(e) {
return "symbol" == typeof e || ts(e) && Sr(e) == P
}
var cs = St ? Jt(St) : function(e) {
return ts(e) && Qa(e.length) && !!st[Sr(e)]
};
var us = Gi(Fr),
hs = Gi((function(e, t) {
return e <= t
}));
function ps(e) {
if (!e) return [];
if (Ga(e)) return ss(e) ? fn(e) : Ai(e);
if (Ze && e[Ze]) return function(e) {
for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
return n
}(e[Ze]());
var t = go(e);
return (t == k ? ln : t == O ? hn : zs)(e)
}
function ds(e) {
return e ? (e = ms(e)) === h || e === -1 / 0 ? 17976931348623157e292 * (e < 0 ? -1 : 1) : e == e ? e : 0 : 0 === e ? e : 0
}
function fs(e) {
var t = ds(e),
n = t % 1;
return t == t ? n ? t - n : t : 0
}
function gs(e) {
return e ? sr(fs(e), 0, f) : 0
}
function ms(e) {
if ("number" == typeof e) return e;
if (ls(e)) return d;
if (es(e)) {
var t = "function" == typeof e.valueOf ? e.valueOf() : e;
e = es(t) ? t + "" : t
}
if ("string" != typeof e) return 0 === e ? e : +e;
e = Zt(e);
var n = me.test(e);
return n || _e.test(e) ? ht(e.slice(2), n ? 2 : 8) : ge.test(e) ? d : +e
}
function vs(e) {
return Pi(e, Ds(e))
}
function _s(e) {
return null == e ? "" : ci(e)
}
var bs = Di((function(e, t) {
if (Co(t) || Ga(t)) Pi(t, Ms(t), e);
else
for (var n in t) Re.call(t, n) && tr(e, n, t[n])
})),
ys = Di((function(e, t) {
Pi(t, Ds(t), e)
})),
ws = Di((function(e, t, n, r) {
Pi(t, Ds(t), e, r)
})),
xs = Di((function(e, t, n, r) {
Pi(t, Ms(t), e, r)
})),
ks = no(ar);
var Cs = $r((function(e, t) {
e = Ee(e);
var r = -1,
i = t.length,
o = i > 2 ? t[2] : n;
for (o && yo(t[0], t[1], o) && (i = 1); ++r < i;)
for (var a = t[r], s = Ds(a), l = -1, c = s.length; ++l < c;) {
var u = s[l],
h = e[u];
(h === n || za(h, De[u]) && !Re.call(e, u)) && (e[u] = a[u])
}
return e
})),
Ss = $r((function(e) {
return e.push(n, Qi), Et(Ns, n, e)
}));
function Es(e, t, r) {
var i = null == e ? n : kr(e, t);
return i === n ? r : i
}
function Ts(e, t) {
return null != e && mo(e, t, Or)
}
var Os = Hi((function(e, t, n) {
null != t && "function" != typeof t.toString && (t = Fe.call(t)), e[t] = n
}), el(rl)),
As = Hi((function(e, t, n) {
null != t && "function" != typeof t.toString && (t = Fe.call(t)), Re.call(e, t) ? e[t].push(n) : e[t] = [n]
}), lo),
Ps = $r(Pr);
function Ms(e) {
return Ga(e) ? $n(e) : jr(e)
}
function Ds(e) {
return Ga(e) ? $n(e, !0) : Lr(e)
}
var Is = Di((function(e, t, n) {
Ur(e, t, n)
})),
Ns = Di((function(e, t, n, r) {
Ur(e, t, n, r)
})),
Rs = no((function(e, t) {
var n = {};
if (null == e) return n;
var r = !1;
t = Nt(t, (function(t) {
return t = bi(t, e), r || (r = t.length > 1), t
})), Pi(e, io(e), n), r && (n = lr(n, 7, eo));
for (var i = t.length; i--;) hi(n, t[i]);
return n
}));
var js = no((function(e, t) {
return null == e ? {} : function(e, t) {
return Xr(e, t, (function(t, n) {
return Ts(e, n)
}))
}(e, t)
}));
function Ls(e, t) {
if (null == e) return {};
var n = Nt(io(e), (function(e) {
return [e]
}));
return t = lo(t), Xr(e, n, (function(e, n) {
return t(e, n[0])
}))
}
var Fs = $i(Ms),
Bs = $i(Ds);
function zs(e) {
return null == e ? [] : Qt(e, Ms(e))
}
var Hs = ji((function(e, t, n) {
return t = t.toLowerCase(), e + (n ? Us(t) : t)
}));
function Us(e) {
return $s(_s(e).toLowerCase())
}
function Ws(e) {
return (e = _s(e)) && e.replace(ye, rn).replace(et, "")
}
var Vs = ji((function(e, t, n) {
return e + (n ? "-" : "") + t.toLowerCase()
})),
Xs = ji((function(e, t, n) {
return e + (n ? " " : "") + t.toLowerCase()
})),
Gs = Ri("toLowerCase");
var Ys = ji((function(e, t, n) {
return e + (n ? "_" : "") + t.toLowerCase()
}));
var qs = ji((function(e, t, n) {
return e + (n ? " " : "") + $s(t)
}));
var Ks = ji((function(e, t, n) {
return e + (n ? " " : "") + t.toUpperCase()
})),
$s = Ri("toUpperCase");
function Zs(e, t, r) {
return e = _s(e), (t = r ? n : t) === n ? function(e) {
return it.test(e)
}(e) ? function(e) {
return e.match(nt) || []
}(e) : function(e) {
return e.match(ue) || []
}(e) : e.match(t) || []
}
var Js = $r((function(e, t) {
try {
return Et(e, n, t)
} catch (e) {
return $a(e) ? e : new ke(e)
}
})),
Qs = no((function(e, t) {
return Ot(t, (function(t) {
t = Lo(t), or(e, t, Aa(e[t], e))
})), e
}));
function el(e) {
return function() {
return e
}
}
var tl = Bi(),
nl = Bi(!0);
function rl(e) {
return e
}
function il(e) {
return Rr("function" == typeof e ? e : lr(e, 1))
}
var ol = $r((function(e, t) {
return function(n) {
return Pr(n, e, t)
}
})),
al = $r((function(e, t) {
return function(n) {
return Pr(e, n, t)
}
}));
function sl(e, t, n) {
var r = Ms(t),
i = xr(t, r);
null != n || es(t) && (i.length || !r.length) || (n = t, t = e, e = this, i = xr(t, Ms(t)));
var o = !(es(n) && "chain" in n && !n.chain),
a = Za(e);
return Ot(i, (function(n) {
var r = t[n];
e[n] = r, a && (e.prototype[n] = function() {
var t = this.__chain__;
if (o || t) {
var n = e(this.__wrapped__);
return (n.__actions__ = Ai(this.__actions__)).push({
func: r,
args: arguments,
thisArg: e
}), n.__chain__ = t, n
}
return r.apply(e, Rt([this.value()], arguments))
})
})), e
}
function ll() {}
var cl = Wi(Nt),
ul = Wi(Pt),
hl = Wi(Ft);
function pl(e) {
return wo(e) ? Gt(Lo(e)) : function(e) {
return function(t) {
return kr(t, e)
}
}(e)
}
var dl = Xi(),
fl = Xi(!0);
function gl() {
return []
}
function ml() {
return !1
}
var vl = Ui((function(e, t) {
return e + t
}), 0),
_l = qi("ceil"),
bl = Ui((function(e, t) {
return e / t
}), 1),
yl = qi("floor");
var wl, xl = Ui((function(e, t) {
return e * t
}), 1),
kl = qi("round"),
Cl = Ui((function(e, t) {
return e - t
}), 0);
return zn.after = function(e, t) {
if ("function" != typeof t) throw new Ae(r);
return e = fs(e),
function() {
if (--e < 1) return t.apply(this, arguments)
}
}, zn.ary = Ta, zn.assign = bs, zn.assignIn = ys, zn.assignInWith = ws, zn.assignWith = xs, zn.at = ks, zn.before = Oa, zn.bind = Aa, zn.bindAll = Qs, zn.bindKey = Pa, zn.castArray = function() {
if (!arguments.length) return [];
var e = arguments[0];
return Va(e) ? e : [e]
}, zn.chain = pa, zn.chunk = function(e, t, r) {
t = (r ? yo(e, t, r) : t === n) ? 1 : _n(fs(t), 0);
var i = null == e ? 0 : e.length;
if (!i || t < 1) return [];
for (var o = 0, a = 0, s = W(dt(i / t)); o < i;) s[a++] = ri(e, o, o += t);
return s
}, zn.compact = function(e) {
for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
var o = e[t];
o && (i[r++] = o)
}
return i
}, zn.concat = function() {
var e = arguments.length;
if (!e) return [];
for (var t = W(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
return Rt(Va(n) ? Ai(n) : [n], vr(t, 1))
}, zn.cond = function(e) {
var t = null == e ? 0 : e.length,
n = lo();
return e = t ? Nt(e, (function(e) {
if ("function" != typeof e[1]) throw new Ae(r);
return [n(e[0]), e[1]]
})) : [], $r((function(n) {
for (var r = -1; ++r < t;) {
var i = e[r];
if (Et(i[0], this, n)) return Et(i[1], this, n)
}
}))
}, zn.conforms = function(e) {
return function(e) {
var t = Ms(e);
return function(n) {
return cr(n, e, t)
}
}(lr(e, 1))
}, zn.constant = el, zn.countBy = ga, zn.create = function(e, t) {
var n = Hn(e);
return null == t ? n : ir(n, t)
}, zn.curry = function e(t, r, i) {
var o = Zi(t, 8, n, n, n, n, n, r = i ? n : r);
return o.placeholder = e.placeholder, o
}, zn.curryRight = function e(t, r, i) {
var o = Zi(t, a, n, n, n, n, n, r = i ? n : r);
return o.placeholder = e.placeholder, o
}, zn.debounce = Ma, zn.defaults = Cs, zn.defaultsDeep = Ss, zn.defer = Da, zn.delay = Ia, zn.difference = zo, zn.differenceBy = Ho, zn.differenceWith = Uo, zn.drop = function(e, t, r) {
var i = null == e ? 0 : e.length;
return i ? ri(e, (t = r || t === n ? 1 : fs(t)) < 0 ? 0 : t, i) : []
}, zn.dropRight = function(e, t, r) {
var i = null == e ? 0 : e.length;
return i ? ri(e, 0, (t = i - (t = r || t === n ? 1 : fs(t))) < 0 ? 0 : t) : []
}, zn.dropRightWhile = function(e, t) {
return e && e.length ? di(e, lo(t, 3), !0, !0) : []
}, zn.dropWhile = function(e, t) {
return e && e.length ? di(e, lo(t, 3), !0) : []
}, zn.fill = function(e, t, r, i) {
var o = null == e ? 0 : e.length;
return o ? (r && "number" != typeof r && yo(e, t, r) && (r = 0, i = o), function(e, t, r, i) {
var o = e.length;
for ((r = fs(r)) < 0 && (r = -r > o ? 0 : o + r), (i = i === n || i > o ? o : fs(i)) < 0 && (i += o), i = r > i ? 0 : gs(i); r < i;) e[r++] = t;
return e
}(e, t, r, i)) : []
}, zn.filter = function(e, t) {
return (Va(e) ? Mt : mr)(e, lo(t, 3))
}, zn.flatMap = function(e, t) {
return vr(ka(e, t), 1)
}, zn.flatMapDeep = function(e, t) {
return vr(ka(e, t), h)
}, zn.flatMapDepth = function(e, t, r) {
return r = r === n ? 1 : fs(r), vr(ka(e, t), r)
}, zn.flatten = Xo, zn.flattenDeep = function(e) {
return (null == e ? 0 : e.length) ? vr(e, h) : []
}, zn.flattenDepth = function(e, t) {
return (null == e ? 0 : e.length) ? vr(e, t = t === n ? 1 : fs(t)) : []
}, zn.flip = function(e) {
return Zi(e, 512)
}, zn.flow = tl, zn.flowRight = nl, zn.fromPairs = function(e) {
for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
var i = e[t];
r[i[0]] = i[1]
}
return r
}, zn.functions = function(e) {
return null == e ? [] : xr(e, Ms(e))
}, zn.functionsIn = function(e) {
return null == e ? [] : xr(e, Ds(e))
}, zn.groupBy = ya, zn.initial = function(e) {
return (null == e ? 0 : e.length) ? ri(e, 0, -1) : []
}, zn.intersection = Yo, zn.intersectionBy = qo, zn.intersectionWith = Ko, zn.invert = Os, zn.invertBy = As, zn.invokeMap = wa, zn.iteratee = il, zn.keyBy = xa, zn.keys = Ms, zn.keysIn = Ds, zn.map = ka, zn.mapKeys = function(
e, t) {
var n = {};
return t = lo(t, 3), yr(e, (function(e, r, i) {
or(n, t(e, r, i), e)
})), n
}, zn.mapValues = function(e, t) {
var n = {};
return t = lo(t, 3), yr(e, (function(e, r, i) {
or(n, r, t(e, r, i))
})), n
}, zn.matches = function(e) {
return zr(lr(e, 1))
}, zn.matchesProperty = function(e, t) {
return Hr(e, lr(t, 1))
}, zn.memoize = Na, zn.merge = Is, zn.mergeWith = Ns, zn.method = ol, zn.methodOf = al, zn.mixin = sl, zn.negate = Ra, zn.nthArg = function(e) {
return e = fs(e), $r((function(t) {
return Wr(t, e)
}))
}, zn.omit = Rs, zn.omitBy = function(e, t) {
return Ls(e, Ra(lo(t)))
}, zn.once = function(e) {
return Oa(2, e)
}, zn.orderBy = function(e, t, r, i) {
return null == e ? [] : (Va(t) || (t = null == t ? [] : [t]), Va(r = i ? n : r) || (r = null == r ? [] : [r]), Vr(e, t, r))
}, zn.over = cl, zn.overArgs = ja, zn.overEvery = ul, zn.overSome = hl, zn.partial = La, zn.partialRight = Fa, zn.partition = Ca, zn.pick = js, zn.pickBy = Ls, zn.property = pl, zn.propertyOf = function(e) {
return function(t) {
return null == e ? n : kr(e, t)
}
}, zn.pull = Zo, zn.pullAll = Jo, zn.pullAllBy = function(e, t, n) {
return e && e.length && t && t.length ? Gr(e, t, lo(n, 2)) : e
}, zn.pullAllWith = function(e, t, r) {
return e && e.length && t && t.length ? Gr(e, t, n, r) : e
}, zn.pullAt = Qo, zn.range = dl, zn.rangeRight = fl, zn.rearg = Ba, zn.reject = function(e, t) {
return (Va(e) ? Mt : mr)(e, Ra(lo(t, 3)))
}, zn.remove = function(e, t) {
var n = [];
if (!e || !e.length) return n;
var r = -1,
i = [],
o = e.length;
for (t = lo(t, 3); ++r < o;) {
var a = e[r];
t(a, r, e) && (n.push(a), i.push(r))
}
return Yr(e, i), n
}, zn.rest = function(e, t) {
if ("function" != typeof e) throw new Ae(r);
return $r(e, t = t === n ? t : fs(t))
}, zn.reverse = ea, zn.sampleSize = function(e, t, r) {
return t = (r ? yo(e, t, r) : t === n) ? 1 : fs(t), (Va(e) ? Jn : Jr)(e, t)
}, zn.set = function(e, t, n) {
return null == e ? e : Qr(e, t, n)
}, zn.setWith = function(e, t, r, i) {
return i = "function" == typeof i ? i : n, null == e ? e : Qr(e, t, r, i)
}, zn.shuffle = function(e) {
return (Va(e) ? Qn : ni)(e)
}, zn.slice = function(e, t, r) {
var i = null == e ? 0 : e.length;
return i ? (r && "number" != typeof r && yo(e, t, r) ? (t = 0, r = i) : (t = null == t ? 0 : fs(t), r = r === n ? i : fs(r)), ri(e, t, r)) : []
}, zn.sortBy = Sa, zn.sortedUniq = function(e) {
return e && e.length ? si(e) : []
}, zn.sortedUniqBy = function(e, t) {
return e && e.length ? si(e, lo(t, 2)) : []
}, zn.split = function(e, t, r) {
return r && "number" != typeof r && yo(e, t, r) && (t = r = n), (r = r === n ? f : r >>> 0) ? (e = _s(e)) && ("string" == typeof t || null != t && !os(t)) && !(t = ci(t)) && sn(e) ? wi(fn(e), 0, r) : e.split(t, r) : []
}, zn.spread = function(e, t) {
if ("function" != typeof e) throw new Ae(r);
return t = null == t ? 0 : _n(fs(t), 0), $r((function(n) {
var r = n[t],
i = wi(n, 0, t);
return r && Rt(i, r), Et(e, this, i)
}))
}, zn.tail = function(e) {
var t = null == e ? 0 : e.length;
return t ? ri(e, 1, t) : []
}, zn.take = function(e, t, r) {
return e && e.length ? ri(e, 0, (t = r || t === n ? 1 : fs(t)) < 0 ? 0 : t) : []
}, zn.takeRight = function(e, t, r) {
var i = null == e ? 0 : e.length;
return i ? ri(e, (t = i - (t = r || t === n ? 1 : fs(t))) < 0 ? 0 : t, i) : []
}, zn.takeRightWhile = function(e, t) {
return e && e.length ? di(e, lo(t, 3), !1, !0) : []
}, zn.takeWhile = function(e, t) {
return e && e.length ? di(e, lo(t, 3)) : []
}, zn.tap = function(e, t) {
return t(e), e
}, zn.throttle = function(e, t, n) {
var i = !0,
o = !0;
if ("function" != typeof e) throw new Ae(r);
return es(n) && (i = "leading" in n ? !!n.leading : i, o = "trailing" in n ? !!n.trailing : o), Ma(e, t, {
leading: i,
maxWait: t,
trailing: o
})
}, zn.thru = da, zn.toArray = ps, zn.toPairs = Fs, zn.toPairsIn = Bs, zn.toPath = function(e) {
return Va(e) ? Nt(e, Lo) : ls(e) ? [e] : Ai(jo(_s(e)))
}, zn.toPlainObject = vs, zn.transform = function(e, t, n) {
var r = Va(e),
i = r || qa(e) || cs(e);
if (t = lo(t, 4), null == n) {
var o = e && e.constructor;
n = i ? r ? new o : [] : es(e) && Za(o) ? Hn(Ge(e)) : {}
}
return (i ? Ot : yr)(e, (function(e, r, i) {
return t(n, e, r, i)
})), n
}, zn.unary = function(e) {
return Ta(e, 1)
}, zn.union = ta, zn.unionBy = na, zn.unionWith = ra, zn.uniq = function(e) {
return e && e.length ? ui(e) : []
}, zn.uniqBy = function(e, t) {
return e && e.length ? ui(e, lo(t, 2)) : []
}, zn.uniqWith = function(e, t) {
return t = "function" == typeof t ? t : n, e && e.length ? ui(e, n, t) : []
}, zn.unset = function(e, t) {
return null == e || hi(e, t)
}, zn.unzip = ia, zn.unzipWith = oa, zn.update = function(e, t, n) {
return null == e ? e : pi(e, t, _i(n))
}, zn.updateWith = function(e, t, r, i) {
return i = "function" == typeof i ? i : n, null == e ? e : pi(e, t, _i(r), i)
}, zn.values = zs, zn.valuesIn = function(e) {
return null == e ? [] : Qt(e, Ds(e))
}, zn.without = aa, zn.words = Zs, zn.wrap = function(e, t) {
return La(_i(t), e)
}, zn.xor = sa, zn.xorBy = la, zn.xorWith = ca, zn.zip = ua, zn.zipObject = function(e, t) {
return mi(e || [], t || [], tr)
}, zn.zipObjectDeep = function(e, t) {
return mi(e || [], t || [], Qr)
}, zn.zipWith = ha, zn.entries = Fs, zn.entriesIn = Bs, zn.extend = ys, zn.extendWith = ws, sl(zn, zn), zn.add = vl, zn.attempt = Js, zn.camelCase = Hs, zn.capitalize = Us, zn.ceil = _l, zn.clamp = function(e, t, r) {
return r === n && (r = t, t = n), r !== n && (r = (r = ms(r)) == r ? r : 0), t !== n && (t = (t = ms(t)) == t ? t : 0), sr(ms(e), t, r)
}, zn.clone = function(e) {
return lr(e, 4)
}, zn.cloneDeep = function(e) {
return lr(e, 5)
}, zn.cloneDeepWith = function(e, t) {
return lr(e, 5, t = "function" == typeof t ? t : n)
}, zn.cloneWith = function(e, t) {
return lr(e, 4, t = "function" == typeof t ? t : n)
}, zn.conformsTo = function(e, t) {
return null == t || cr(e, t, Ms(t))
}, zn.deburr = Ws, zn.defaultTo = function(e, t) {
return null == e || e != e ? t : e
}, zn.divide = bl, zn.endsWith = function(e, t, r) {
e = _s(e), t = ci(t);
var i = e.length,
o = r = r === n ? i : sr(fs(r), 0, i);
return (r -= t.length) >= 0 && e.slice(r, o) == t
}, zn.eq = za, zn.escape = function(e) {
return (e = _s(e)) && $.test(e) ? e.replace(q, on) : e
}, zn.escapeRegExp = function(e) {
return (e = _s(e)) && ie.test(e) ? e.replace(re, "\\$&") : e
}, zn.every = function(e, t, r) {
var i = Va(e) ? Pt : fr;
return r && yo(e, t, r) && (t = n), i(e, lo(t, 3))
}, zn.find = ma, zn.findIndex = Wo, zn.findKey = function(e, t) {
return zt(e, lo(t, 3), yr)
}, zn.findLast = va, zn.findLastIndex = Vo, zn.findLastKey = function(e, t) {
return zt(e, lo(t, 3), wr)
}, zn.floor = yl, zn.forEach = _a, zn.forEachRight = ba, zn.forIn = function(e, t) {
return null == e ? e : _r(e, lo(t, 3), Ds)
}, zn.forInRight = function(e, t) {
return null == e ? e : br(e, lo(t, 3), Ds)
}, zn.forOwn = function(e, t) {
return e && yr(e, lo(t, 3))
}, zn.forOwnRight = function(e, t) {
return e && wr(e, lo(t, 3))
}, zn.get = Es, zn.gt = Ha, zn.gte = Ua, zn.has = function(e, t) {
return null != e && mo(e, t, Tr)
}, zn.hasIn = Ts, zn.head = Go, zn.identity = rl, zn.includes = function(e, t, n, r) {
e = Ga(e) ? e : zs(e), n = n && !r ? fs(n) : 0;
var i = e.length;
return n < 0 && (n = _n(i + n, 0)), ss(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && Ut(e, t, n) > -1
}, zn.indexOf = function(e, t, n) {
var r = null == e ? 0 : e.length;
if (!r) return -1;
var i = null == n ? 0 : fs(n);
return i < 0 && (i = _n(r + i, 0)), Ut(e, t, i)
}, zn.inRange = function(e, t, r) {
return t = ds(t), r === n ? (r = t, t = 0) : r = ds(r),
function(e, t, n) {
return e >= bn(t, n) && e < _n(t, n)
}(e = ms(e), t, r)
}, zn.invoke = Ps, zn.isArguments = Wa, zn.isArray = Va, zn.isArrayBuffer = Xa, zn.isArrayLike = Ga, zn.isArrayLikeObject = Ya, zn.isBoolean = function(e) {
return !0 === e || !1 === e || ts(e) && Sr(e) == _
}, zn.isBuffer = qa, zn.isDate = Ka, zn.isElement = function(e) {
return ts(e) && 1 === e.nodeType && !is(e)
}, zn.isEmpty = function(e) {
if (null == e) return !0;
if (Ga(e) && (Va(e) || "string" == typeof e || "function" == typeof e.splice || qa(e) || cs(e) || Wa(e))) return !e.length;
var t = go(e);
if (t == k || t == O) return !e.size;
if (Co(e)) return !jr(e).length;
for (var n in e)
if (Re.call(e, n)) return !1;
return !0
}, zn.isEqual = function(e, t) {
return Dr(e, t)
}, zn.isEqualWith = function(e, t, r) {
var i = (r = "function" == typeof r ? r : n) ? r(e, t) : n;
return i === n ? Dr(e, t, n, r) : !!i
}, zn.isError = $a, zn.isFinite = function(e) {
return "number" == typeof e && bt(e)
}, zn.isFunction = Za, zn.isInteger = Ja, zn.isLength = Qa, zn.isMap = ns, zn.isMatch = function(e, t) {
return e === t || Ir(e, t, uo(t))
}, zn.isMatchWith = function(e, t, r) {
return r = "function" == typeof r ? r : n, Ir(e, t, uo(t), r)
}, zn.isNaN = function(e) {
return rs(e) && e != +e
}, zn.isNative = function(e) {
if (ko(e)) throw new ke("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
return Nr(e)
}, zn.isNil = function(e) {
return null == e
}, zn.isNull = function(e) {
return null === e
}, zn.isNumber = rs, zn.isObject = es, zn.isObjectLike = ts, zn.isPlainObject = is, zn.isRegExp = os, zn.isSafeInteger = function(e) {
return Ja(e) && e >= -9007199254740991 && e <= p
}, zn.isSet = as, zn.isString = ss, zn.isSymbol = ls, zn.isTypedArray = cs, zn.isUndefined = function(e) {
return e === n
}, zn.isWeakMap = function(e) {
return ts(e) && go(e) == M
}, zn.isWeakSet = function(e) {
return ts(e) && "[object WeakSet]" == Sr(e)
}, zn.join = function(e, t) {
return null == e ? "" : Bt.call(e, t)
}, zn.kebabCase = Vs, zn.last = $o, zn.lastIndexOf = function(e, t, r) {
var i = null == e ? 0 : e.length;
if (!i) return -1;
var o = i;
return r !== n && (o = (o = fs(r)) < 0 ? _n(i + o, 0) : bn(o, i - 1)), t == t ? function(e, t, n) {
for (var r = n + 1; r--;)
if (e[r] === t) return r;
return r
}(e, t, o) : Ht(e, Vt, o, !0)
}, zn.lowerCase = Xs, zn.lowerFirst = Gs, zn.lt = us, zn.lte = hs, zn.max = function(e) {
return e && e.length ? gr(e, rl, Er) : n
}, zn.maxBy = function(e, t) {
return e && e.length ? gr(e, lo(t, 2), Er) : n
}, zn.mean = function(e) {
return Xt(e, rl)
}, zn.meanBy = function(e, t) {
return Xt(e, lo(t, 2))
}, zn.min = function(e) {
return e && e.length ? gr(e, rl, Fr) : n
}, zn.minBy = function(e, t) {
return e && e.length ? gr(e, lo(t, 2), Fr) : n
}, zn.stubArray = gl, zn.stubFalse = ml, zn.stubObject = function() {
return {}
}, zn.stubString = function() {
return ""
}, zn.stubTrue = function() {
return !0
}, zn.multiply = xl, zn.nth = function(e, t) {
return e && e.length ? Wr(e, fs(t)) : n
}, zn.noConflict = function() {
return ft._ === this && (ft._ = ze), this
}, zn.noop = ll, zn.now = Ea, zn.pad = function(e, t, n) {
e = _s(e);
var r = (t = fs(t)) ? dn(e) : 0;
if (!t || r >= t) return e;
var i = (t - r) / 2;
return Vi(gt(i), n) + e + Vi(dt(i), n)
}, zn.padEnd = function(e, t, n) {
e = _s(e);
var r = (t = fs(t)) ? dn(e) : 0;
return t && r < t ? e + Vi(t - r, n) : e
}, zn.padStart = function(e, t, n) {
e = _s(e);
var r = (t = fs(t)) ? dn(e) : 0;
return t && r < t ? Vi(t - r, n) + e : e
}, zn.parseInt = function(e, t, n) {
return n || null == t ? t = 0 : t && (t = +t), wn(_s(e).replace(oe, ""), t || 0)
}, zn.random = function(e, t, r) {
if (r && "boolean" != typeof r && yo(e, t, r) && (t = r = n), r === n && ("boolean" == typeof t ? (r = t, t = n) : "boolean" == typeof e && (r = e, e = n)), e === n && t === n ? (e = 0, t = 1) : (e = ds(e), t === n ? (t = e,
e = 0) : t = ds(t)), e > t) {
var i = e;
e = t, t = i
}
if (r || e % 1 || t % 1) {
var o = xn();
return bn(e + o * (t - e + ut("1e-" + ((o + "").length - 1))), t)
}
return qr(e, t)
}, zn.reduce = function(e, t, n) {
var r = Va(e) ? jt : qt,
i = arguments.length < 3;
return r(e, lo(t, 4), n, i, pr)
}, zn.reduceRight = function(e, t, n) {
var r = Va(e) ? Lt : qt,
i = arguments.length < 3;
return r(e, lo(t, 4), n, i, dr)
}, zn.repeat = function(e, t, r) {
return t = (r ? yo(e, t, r) : t === n) ? 1 : fs(t), Kr(_s(e), t)
}, zn.replace = function() {
var e = arguments,
t = _s(e[0]);
return e.length < 3 ? t : t.replace(e[1], e[2])
}, zn.result = function(e, t, r) {
var i = -1,
o = (t = bi(t, e)).length;
for (o || (o = 1, e = n); ++i < o;) {
var a = null == e ? n : e[Lo(t[i])];
a === n && (i = o, a = r), e = Za(a) ? a.call(e) : a
}
return e
}, zn.round = kl, zn.runInContext = e, zn.sample = function(e) {
return (Va(e) ? Zn : Zr)(e)
}, zn.size = function(e) {
if (null == e) return 0;
if (Ga(e)) return ss(e) ? dn(e) : e.length;
var t = go(e);
return t == k || t == O ? e.size : jr(e).length
}, zn.snakeCase = Ys, zn.some = function(e, t, r) {
var i = Va(e) ? Ft : ii;
return r && yo(e, t, r) && (t = n), i(e, lo(t, 3))
}, zn.sortedIndex = function(e, t) {
return oi(e, t)
}, zn.sortedIndexBy = function(e, t, n) {
return ai(e, t, lo(n, 2))
}, zn.sortedIndexOf = function(e, t) {
var n = null == e ? 0 : e.length;
if (n) {
var r = oi(e, t);
if (r < n && za(e[r], t)) return r
}
return -1
}, zn.sortedLastIndex = function(e, t) {
return oi(e, t, !0)
}, zn.sortedLastIndexBy = function(e, t, n) {
return ai(e, t, lo(n, 2), !0)
}, zn.sortedLastIndexOf = function(e, t) {
if (null == e ? 0 : e.length) {
var n = oi(e, t, !0) - 1;
if (za(e[n], t)) return n
}
return -1
}, zn.startCase = qs, zn.startsWith = function(e, t, n) {
return e = _s(e), n = null == n ? 0 : sr(fs(n), 0, e.length), t = ci(t), e.slice(n, n + t.length) == t
}, zn.subtract = Cl, zn.sum = function(e) {
return e && e.length ? Kt(e, rl) : 0
}, zn.sumBy = function(e, t) {
return e && e.length ? Kt(e, lo(t, 2)) : 0
}, zn.template = function(e, t, r) {
var i = zn.templateSettings;
r && yo(e, t, r) && (t = n), e = _s(e), t = ws({}, t, i, Ji);
var o, a, s = ws({}, t.imports, i.imports, Ji),
l = Ms(s),
c = Qt(s, l),
u = 0,
h = t.interpolate || we,
p = "__p += '",
d = Te((t.escape || we).source + "|" + h.source + "|" + (h === Q ? de : we).source + "|" + (t.evaluate || we).source + "|$", "g"),
f = "//# sourceURL=" + (Re.call(t, "sourceURL") ? (t.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++at + "]") + "\n";
e.replace(d, (function(t, n, r, i, s, l) {
return r || (r = i), p += e.slice(u, l).replace(xe, an), n && (o = !0, p += "' +\n__e(" + n + ") +\n'"), s && (a = !0, p += "';\n" + s + ";\n__p += '"), r && (p += "' +\n((__t = (" + r +
")) == null ? '' : __t) +\n'"), u = l + t.length, t
})), p += "';\n";
var g = Re.call(t, "variable") && t.variable;
if (g) {
if (he.test(g)) throw new ke("Invalid `variable` option passed into `_.template`")
} else p = "with (obj) {\n" + p + "\n}\n";
p = (a ? p.replace(V, "") : p).replace(X, "$1").replace(G, "$1;"), p = "function(" + (g || "obj") + ") {\n" + (g ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (o ? ", __e = _.escape" : "") + (a ?
", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + p + "return __p\n}";
var m = Js((function() {
return Ce(l, f + "return " + p).apply(n, c)
}));
if (m.source = p, $a(m)) throw m;
return m
}, zn.times = function(e, t) {
if ((e = fs(e)) < 1 || e > p) return [];
var n = f,
r = bn(e, f);
t = lo(t), e -= f;
for (var i = $t(r, t); ++n < e;) t(n);
return i
}, zn.toFinite = ds, zn.toInteger = fs, zn.toLength = gs, zn.toLower = function(e) {
return _s(e).toLowerCase()
}, zn.toNumber = ms, zn.toSafeInteger = function(e) {
return e ? sr(fs(e), -9007199254740991, p) : 0 === e ? e : 0
}, zn.toString = _s, zn.toUpper = function(e) {
return _s(e).toUpperCase()
}, zn.trim = function(e, t, r) {
if ((e = _s(e)) && (r || t === n)) return Zt(e);
if (!e || !(t = ci(t))) return e;
var i = fn(e),
o = fn(t);
return wi(i, tn(i, o), nn(i, o) + 1).join("")
}, zn.trimEnd = function(e, t, r) {
if ((e = _s(e)) && (r || t === n)) return e.slice(0, gn(e) + 1);
if (!e || !(t = ci(t))) return e;
var i = fn(e);
return wi(i, 0, nn(i, fn(t)) + 1).join("")
}, zn.trimStart = function(e, t, r) {
if ((e = _s(e)) && (r || t === n)) return e.replace(oe, "");
if (!e || !(t = ci(t))) return e;
var i = fn(e);
return wi(i, tn(i, fn(t))).join("")
}, zn.truncate = function(e, t) {
var r = 30,
i = "...";
if (es(t)) {
var o = "separator" in t ? t.separator : o;
r = "length" in t ? fs(t.length) : r, i = "omission" in t ? ci(t.omission) : i
}
var a = (e = _s(e)).length;
if (sn(e)) {
var s = fn(e);
a = s.length
}
if (r >= a) return e;
var l = r - dn(i);
if (l < 1) return i;
var c = s ? wi(s, 0, l).join("") : e.slice(0, l);
if (o === n) return c + i;
if (s && (l += c.length - l), os(o)) {
if (e.slice(l).search(o)) {
var u, h = c;
for (o.global || (o = Te(o.source, _s(fe.exec(o)) + "g")), o.lastIndex = 0; u = o.exec(h);) var p = u.index;
c = c.slice(0, p === n ? l : p)
}
} else if (e.indexOf(ci(o), l) != l) {
var d = c.lastIndexOf(o);
d > -1 && (c = c.slice(0, d))
}
return c + i
}, zn.unescape = function(e) {
return (e = _s(e)) && K.test(e) ? e.replace(Y, mn) : e
}, zn.uniqueId = function(e) {
var t = ++je;
return _s(e) + t
}, zn.upperCase = Ks, zn.upperFirst = $s, zn.each = _a, zn.eachRight = ba, zn.first = Go, sl(zn, (wl = {}, yr(zn, (function(e, t) {
Re.call(zn.prototype, t) || (wl[t] = e)
})), wl), {
chain: !1
}), zn.VERSION = "4.17.21", Ot(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function(e) {
zn[e].placeholder = zn
})), Ot(["drop", "take"], (function(e, t) {
Vn.prototype[e] = function(r) {
r = r === n ? 1 : _n(fs(r), 0);
var i = this.__filtered__ && !t ? new Vn(this) : this.clone();
return i.__filtered__ ? i.__takeCount__ = bn(r, i.__takeCount__) : i.__views__.push({
size: bn(r, f),
type: e + (i.__dir__ < 0 ? "Right" : "")
}), i
}, Vn.prototype[e + "Right"] = function(t) {
return this.reverse()[e](t).reverse()
}
})), Ot(["filter", "map", "takeWhile"], (function(e, t) {
var n = t + 1,
r = 1 == n || 3 == n;
Vn.prototype[e] = function(e) {
var t = this.clone();
return t.__iteratees__.push({
iteratee: lo(e, 3),
type: n
}), t.__filtered__ = t.__filtered__ || r, t
}
})), Ot(["head", "last"], (function(e, t) {
var n = "take" + (t ? "Right" : "");
Vn.prototype[e] = function() {
return this[n](1).value()[0]
}
})), Ot(["initial", "tail"], (function(e, t) {
var n = "drop" + (t ? "" : "Right");
Vn.prototype[e] = function() {
return this.__filtered__ ? new Vn(this) : this[n](1)
}
})), Vn.prototype.compact = function() {
return this.filter(rl)
}, Vn.prototype.find = function(e) {
return this.filter(e).head()
}, Vn.prototype.findLast = function(e) {
return this.reverse().find(e)
}, Vn.prototype.invokeMap = $r((function(e, t) {
return "function" == typeof e ? new Vn(this) : this.map((function(n) {
return Pr(n, e, t)
}))
})), Vn.prototype.reject = function(e) {
return this.filter(Ra(lo(e)))
}, Vn.prototype.slice = function(e, t) {
e = fs(e);
var r = this;
return r.__filtered__ && (e > 0 || t < 0) ? new Vn(r) : (e < 0 ? r = r.takeRight(-e) : e && (r = r.drop(e)), t !== n && (r = (t = fs(t)) < 0 ? r.dropRight(-t) : r.take(t - e)), r)
}, Vn.prototype.takeRightWhile = function(e) {
return this.reverse().takeWhile(e).reverse()
}, Vn.prototype.toArray = function() {
return this.take(f)
}, yr(Vn.prototype, (function(e, t) {
var r = /^(?:filter|find|map|reject)|While$/.test(t),
i = /^(?:head|last)$/.test(t),
o = zn[i ? "take" + ("last" == t ? "Right" : "") : t],
a = i || /^find/.test(t);
o && (zn.prototype[t] = function() {
var t = this.__wrapped__,
s = i ? [1] : arguments,
l = t instanceof Vn,
c = s[0],
u = l || Va(t),
h = function(e) {
var t = o.apply(zn, Rt([e], s));
return i && p ? t[0] : t
};
u && r && "function" == typeof c && 1 != c.length && (l = u = !1);
var p = this.__chain__,
d = !!this.__actions__.length,
f = a && !p,
g = l && !d;
if (!a && u) {
t = g ? t : new Vn(this);
var m = e.apply(t, s);
return m.__actions__.push({
func: da,
args: [h],
thisArg: n
}), new Wn(m, p)
}
return f && g ? e.apply(this, s) : (m = this.thru(h), f ? i ? m.value()[0] : m.value() : m)
})
})), Ot(["pop", "push", "shift", "sort", "splice", "unshift"], (function(e) {
var t = Pe[e],
n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
r = /^(?:pop|shift)$/.test(e);
zn.prototype[e] = function() {
var e = arguments;
if (r && !this.__chain__) {
var i = this.value();
return t.apply(Va(i) ? i : [], e)
}
return this[n]((function(n) {
return t.apply(Va(n) ? n : [], e)
}))
}
})), yr(Vn.prototype, (function(e, t) {
var n = zn[t];
if (n) {
var r = n.name + "";
Re.call(Mn, r) || (Mn[r] = []), Mn[r].push({
name: t,
func: n
})
}
})), Mn[zi(n, 2).name] = [{
name: "wrapper",
func: n
}], Vn.prototype.clone = function() {
var e = new Vn(this.__wrapped__);
return e.__actions__ = Ai(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = Ai(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = Ai(this.__views__), e
}, Vn.prototype.reverse = function() {
if (this.__filtered__) {
var e = new Vn(this);
e.__dir__ = -1, e.__filtered__ = !0
} else(e = this.clone()).__dir__ *= -1;
return e
}, Vn.prototype.value = function() {
var e = this.__wrapped__.value(),
t = this.__dir__,
n = Va(e),
r = t < 0,
i = n ? e.length : 0,
o = function(e, t, n) {
var r = -1,
i = n.length;
for (; ++r < i;) {
var o = n[r],
a = o.size;
switch (o.type) {
case "drop":
e += a;
break;
case "dropRight":
t -= a;
break;
case "take":
t = bn(t, e + a);
break;
case "takeRight":
e = _n(e, t - a)
}
}
return {
start: e,
end: t
}
}(0, i, this.__views__),
a = o.start,
s = o.end,
l = s - a,
c = r ? s : a - 1,
u = this.__iteratees__,
h = u.length,
p = 0,
d = bn(l, this.__takeCount__);
if (!n || !r && i == l && d == l) return fi(e, this.__actions__);
var f = [];
e: for (; l-- && p < d;) {
for (var g = -1, m = e[c += t]; ++g < h;) {
var v = u[g],
_ = v.iteratee,
b = v.type,
y = _(m);
if (2 == b) m = y;
else if (!y) {
if (1 == b) continue e;
break e
}
}
f[p++] = m
}
return f
}, zn.prototype.at = fa, zn.prototype.chain = function() {
return pa(this)
}, zn.prototype.commit = function() {
return new Wn(this.value(), this.__chain__)
}, zn.prototype.next = function() {
this.__values__ === n && (this.__values__ = ps(this.value()));
var e = this.__index__ >= this.__values__.length;
return {
done: e,
value: e ? n : this.__values__[this.__index__++]
}
}, zn.prototype.plant = function(e) {
for (var t, r = this; r instanceof Un;) {
var i = Bo(r);
i.__index__ = 0, i.__values__ = n, t ? o.__wrapped__ = i : t = i;
var o = i;
r = r.__wrapped__
}
return o.__wrapped__ = e, t
}, zn.prototype.reverse = function() {
var e = this.__wrapped__;
if (e instanceof Vn) {
var t = e;
return this.__actions__.length && (t = new Vn(this)), (t = t.reverse()).__actions__.push({
func: da,
args: [ea],
thisArg: n
}), new Wn(t, this.__chain__)
}
return this.thru(ea)
}, zn.prototype.toJSON = zn.prototype.valueOf = zn.prototype.value = function() {
return fi(this.__wrapped__, this.__actions__)
}, zn.prototype.first = zn.prototype.head, Ze && (zn.prototype[Ze] = function() {
return this
}), zn
}();
mt ? ((mt.exports = vn)._ = vn, gt._ = vn) : ft._ = vn
}).call(W)
}(re, re.exports);
var ie = new class {
constructor() {
f(this, "instances", []), f(this, "imgOrders", []), f(this, "customOrder", [])
}
addInstance(e, t) {
e && (this.instances[t] = e, window.appparakeet_fabric_instance = this.instances)
}
addImgOrders(e, t) {
!this.imgOrders[t] && e && (this.imgOrders[t] = e)
}
getCoordinates() {
var e = this;
if (this.instances.length > 0) {
var t = function() {
var t = [],
n = e.instances.reduce(((e, t) => t === e)),
r = e.instances.length;
n && (r = 1);
for (var i = function(n) {
var r = e.instances[n].getObjects(),
i = e.instances[n].height,
o = e.instances[n].width;
r.forEach(((e, n) => {
"text" === e.configType ? t.push({
canvasHeight: i,
canvasWidth: o,
configType: e.configType,
left: e.left - e.width / 2,
top: e.top - e.height / 2,
height: e.height * e.scaleY,
width: e.width * e.scaleX,
angle: e.angle,
oid: e.oid,
fid: e.fid
}) : "boundsReact" !== e.shapeType && "overlay" !== e.shapeType && t.push({
canvasHeight: i,
canvasWidth: o,
configType: e.configType,
oid: e.oid,
fid: e.fid,
left: e.left,
top: e.top,
height: e.height * e.scaleY,
width: e.width * e.scaleX,
angle: e.angle
})
}))
}, o = 0; o < r; o++) i(o);
return {
v: t
}
}();
if ("object" == typeof t) return t.v
}
}
createImgs() {
var e = this;
return d((function*() {
for (var t = [], n = 0; n < (null === (r = e.instances) || void 0 === r ? void 0 : r.length); n++) {
var r, i = yield e._createImg(e.instances[n], n);
i && t.push(i)
}
return t
}))()
}
_createImg(e, t) {
var n = this;
return d((function*() {
var r, i, o;
if (null === (r = e.getObjects()) || void 0 === r || !r.length) return null;
e.discardActiveObject(), null === (i = e.getObjects("rect")) || void 0 === i || i.forEach((function(e) {
e.set({
fill: "transparent"
})
})), null === (o = e.getObjects()) || void 0 === o || o.forEach((function(e) {
"text" == e.configTye && e.previewOrder && e.moveTo(e.previewOrder)
}));
var a = e.toDataURL({
multiplier: 2,
format: A
}),
s = S(A),
l = "";
try {
l = yield _(E(a), s)
} catch (e) {
return null
}
return {
type: "preview",
key: ["composite", "image"].concat(n.imgOrders[t]).join("_"),
value: l
}
}))()
}
createPrintImgs(e) {
var t = this;
return d((function*() {
var n = [];
t.customOrder = e;
for (var r = 0; r < (null === (i = t.instances) || void 0 === i ? void 0 : i.length); r++) {
var i, o = yield t._createPrintImg(t.instances[r], r);
o && n.push(o)
}
return n
}))()
}
_createPrintImg(e, t) {
var n = this;
return d((function*() {
var t, r, i;
return null !== (t = e.getObjects()) && void 0 !== t && t.length ? (e.discardActiveObject(), null === (r = e.getObjects("rect")) || void 0 === r || r.forEach((function(e) {
e.set({
fill: "transparent"
})
})), null === (i = e.getObjects()) || void 0 === i || i.forEach((function(e) {
"text" == e.configTye && e.previewOrder && e.moveTo(e.previewOrder)
})), n.createPrintResults(e)) : null
}))()
}
createPrintResults(e) {
var t = this;
return d((function*() {
var n = t,
r = re.exports.cloneDeep(e).getObjects().filter((e => "boundsReact" !== e.shapeType)),
i = r.map(((e, t) => n.getPrintUrl(e).then((t => {
var r = n.customOrder.find((t => e.fid === t.fid)).order;
return {
type: "print",
key: ["print", "image"].concat([r]).join("_"),
value: t
}
})))),
o = new X.fabric.Group(r),
a = n.getPrintUrl(o).then((e => {
var t = n.customOrder.map((e => e.order));
return {
type: "print",
key: ["print", "image"].concat(t).join("_"),
value: e
}
}));
i.push(a);
var s = [];
try {
s = (yield Promise.allSettled(i)).filter((e => "fulfilled" === e.status)).map((e => e.value))
} catch (e) {}
return s
}))()
}
getPrintUrl(e) {
return d((function*() {
var t = e.toDataURL({
multiplier: ne.divide(3500, e.getScaledWidth()),
format: A
}),
n = S(A),
r = "";
try {
r = yield _(E(t), n)
} catch (e) {
return null
}
return r
}))()
}
},
oe = function(e, t) {
return oe = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(e, t) {
e.__proto__ = t
} || function(e, t) {
for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
}, oe(e, t)
};
function ae(e, t) {
if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
function n() {
this.constructor = e
}
oe(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
}
var se = function() {
return se = Object.assign || function(e) {
for (var t, n = 1, r = arguments.length; n < r; n++)
for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
return e
}, se.apply(this, arguments)
};
function le(e, t) {
var n = {};
for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
if (null != e && "function" == typeof Object.getOwnPropertySymbols) {
var i = 0;
for (r = Object.getOwnPropertySymbols(e); i < r.length; i++) t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]])
}
return n
}
function ce(e, t, n, r) {
return new(n || (n = Promise))((function(i, o) {
function a(e) {
try {
l(r.next(e))
} catch (e) {
o(e)
}
}
function s(e) {
try {
l(r.throw(e))
} catch (e) {
o(e)
}
}
function l(e) {
var t;
e.done ? i(e.value) : (t = e.value, t instanceof n ? t : new n((function(e) {
e(t)
}))).then(a, s)
}
l((r = r.apply(e, t || [])).next())
}))
}
function ue(e, t) {
var n, r, i, o, a = {
label: 0,
sent: function() {
if (1 & i[0]) throw i[1];
return i[1]
},
trys: [],
ops: []
};
return o = {
next: s(0),
throw: s(1),
return: s(2)
}, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
return this
}), o;
function s(s) {
return function(l) {
return function(s) {
if (n) throw new TypeError("Generator is already executing.");
for (; o && (o = 0, s[0] && (a = 0)), a;) try {
if (n = 1, r && (i = 2 & s[0] ? r.return : s[0] ? r.throw || ((i = r.return) && i.call(r), 0) : r.next) && !(i = i.call(r, s[1])).done) return i;
switch (r = 0, i && (s = [2 & s[0], i.value]), s[0]) {
case 0:
case 1:
i = s;
break;
case 4:
return a.label++, {
value: s[1],
done: !1
};
case 5:
a.label++, r = s[1], s = [0];
continue;
case 7:
s = a.ops.pop(), a.trys.pop();
continue;
default:
if (!(i = a.trys, (i = i.length > 0 && i[i.length - 1]) || 6 !== s[0] && 2 !== s[0])) {
a = 0;
continue
}
if (3 === s[0] && (!i || s[1] > i[0] && s[1] < i[3])) {
a.label = s[1];
break
}
if (6 === s[0] && a.label < i[1]) {
a.label = i[1], i = s;
break
}
if (i && a.label < i[2]) {
a.label = i[2], a.ops.push(s);
break
}
i[2] && a.ops.pop(), a.trys.pop();
continue
}
s = t.call(e, a)
} catch (e) {
s = [6, e], r = 0
} finally {
n = i = 0
}
if (5 & s[0]) throw s[1];
return {
value: s[0] ? s[1] : void 0,
done: !0
}
}([s, l])
}
}
}
function he(e, t) {
var n = "function" == typeof Symbol && e[Symbol.iterator];
if (!n) return e;
var r, i, o = n.call(e),
a = [];
try {
for (;
(void 0 === t || t-- > 0) && !(r = o.next()).done;) a.push(r.value)
} catch (e) {
i = {
error: e
}
} finally {
try {
r && !r.done && (n = o.return) && n.call(o)
} finally {
if (i) throw i.error
}
}
return a
}
function pe(e, t, n) {
if (n || 2 === arguments.length)
for (var r, i = 0, o = t.length; i < o; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]);
return e.concat(r || Array.prototype.slice.call(t))
}
var de, fe, ge, me, ve, _e, be, ye, we = {},
xe = [],
ke = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,
Ce = Array.isArray;
function Se(e, t) {
for (var n in t) e[n] = t[n];
return e
}
function Ee(e) {
var t = e.parentNode;
t && t.removeChild(e)
}
function Te(e, t, n) {
var r, i, o, a = {};
for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
if (arguments.length > 2 && (a.children = arguments.length > 3 ? de.call(arguments, 2) : n), "function" == typeof e && null != e.defaultProps)
for (o in e.defaultProps) void 0 === a[o] && (a[o] = e.defaultProps[o]);
return Oe(e, a, r, i, null)
}
function Oe(e, t, n, r, i) {
var o = {
type: e,
props: t,
key: n,
ref: r,
__k: null,
__: null,
__b: 0,
__e: null,
__d: void 0,
__c: null,
__h: null,
constructor: void 0,
__v: null == i ? ++ge : i
};
return null == i && null != fe.vnode && fe.vnode(o), o
}
function Ae() {
return {
current: null
}
}
function Pe(e) {
return e.children
}
function Me(e, t) {
this.props = e, this.context = t
}
function De(e, t) {
if (null == t) return e.__ ? De(e.__, e.__.__k.indexOf(e) + 1) : null;
for (var n; t < e.__k.length; t++)
if (null != (n = e.__k[t]) && null != n.__e) return n.__e;
return "function" == typeof e.type ? De(e) : null
}
function Ie(e) {
var t, n;
if (null != (e = e.__) && null != e.__c) {
for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)
if (null != (n = e.__k[t]) && null != n.__e) {
e.__e = e.__c.base = n.__e;
break
} return Ie(e)
}
}
function Ne(e) {
(!e.__d && (e.__d = !0) && me.push(e) && !Re.__r++ || ve !== fe.debounceRendering) && ((ve = fe.debounceRendering) || _e)(Re)
}
function Re() {
var e, t, n, r, i, o, a, s, l;
for (me.sort(be); e = me.shift();) e.__d && (t = me.length, r = void 0, i = void 0, o = void 0, s = (a = (n = e).__v).__e, (l = n.__P) && (r = [], i = [], (o = Se({}, a)).__v = a.__v + 1, Xe(l, a, o, n.__n, void 0 !== l.ownerSVGElement,
null != a.__h ? [s] : null, r, null == s ? De(a) : s, a.__h, i), Ge(r, a, i), a.__e != s && Ie(a)), me.length > t && me.sort(be));
Re.__r = 0
}
function je(e, t, n, r, i, o, a, s, l, c, u) {
var h, p, d, f, g, m, v, _, b, y, w = 0,
x = r && r.__k || xe,
k = x.length,
C = k,
S = t.length;
for (n.__k = [], h = 0; h < S; h++) null != (f = n.__k[h] = null == (f = t[h]) || "boolean" == typeof f || "function" == typeof f ? null : "string" == typeof f || "number" == typeof f || "bigint" == typeof f ? Oe(null, f, null, null,
f) : Ce(f) ? Oe(Pe, {
children: f
}, null, null, null) : f.__b > 0 ? Oe(f.type, f.props, f.key, f.ref ? f.ref : null, f.__v) : f) && (f.__ = n, f.__b = n.__b + 1, -1 === (_ = ze(f, x, v = h + w, C)) ? d = we : (d = x[_] || we, x[_] = void 0, C--), Xe(e, f, d, i, o,
a, s, l, c, u), g = f.__e, (p = f.ref) && d.ref != p && (d.ref && Ye(d.ref, null, f), u.push(p, f.__c || g, f)), null != g && (null == m && (m = g), y = !(b = d === we || null === d.__v) && _ === v, b ? -1 == _ && w-- : _ !== v &&
(_ === v + 1 ? (w++, y = !0) : _ > v ? C > S - v ? (w += _ - v, y = !0) : w-- : w = _ < v && _ == v - 1 ? _ - v : 0), v = h + w, y = y || _ == h && !b, "function" != typeof f.type || _ === v && d.__k !== f.__k ? "function" ==
typeof f.type || y ? void 0 !== f.__d ? (l = f.__d, f.__d = void 0) : l = g.nextSibling : l = Be(e, g, l) : l = Le(f, l, e), "function" == typeof n.type && (n.__d = l)));
for (n.__e = m, h = k; h--;) null != x[h] && ("function" == typeof n.type && null != x[h].__e && x[h].__e == n.__d && (n.__d = x[h].__e.nextSibling), qe(x[h], x[h]))
}
function Le(e, t, n) {
for (var r, i = e.__k, o = 0; i && o < i.length; o++)(r = i[o]) && (r.__ = e, t = "function" == typeof r.type ? Le(r, t, n) : Be(n, r.__e, t));
return t
}
function Fe(e, t) {
return t = t || [], null == e || "boolean" == typeof e || (Ce(e) ? e.some((function(e) {
Fe(e, t)
})) : t.push(e)), t
}
function Be(e, t, n) {
return null == n || n.parentNode !== e ? e.insertBefore(t, null) : t == n && null != t.parentNode || e.insertBefore(t, n), t.nextSibling
}
function ze(e, t, n, r) {
var i = e.key,
o = e.type,
a = n - 1,
s = n + 1,
l = t[n];
if (null === l || l && i == l.key && o === l.type) return n;
if (r > (null != l ? 1 : 0))
for (; a >= 0 || s < t.length;) {
if (a >= 0) {
if ((l = t[a]) && i == l.key && o === l.type) return a;
a--
}
if (s < t.length) {
if ((l = t[s]) && i == l.key && o === l.type) return s;
s++
}
}
return -1
}
function He(e, t, n) {
"-" === t[0] ? e.setProperty(t, null == n ? "" : n) : e[t] = null == n ? "" : "number" != typeof n || ke.test(t) ? n : n + "px"
}
function Ue(e, t, n, r, i) {
var o;
e: if ("style" === t)
if ("string" == typeof n) e.style.cssText = n;
else {
if ("string" == typeof r && (e.style.cssText = r = ""), r)
for (t in r) n && t in n || He(e.style, t, "");
if (n)
for (t in n) r && n[t] === r[t] || He(e.style, t, n[t])
}
else if ("o" === t[0] && "n" === t[1]) o = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + o] = n, n ? r || e.addEventListener(t, o ? Ve : We, o) : e
.removeEventListener(t, o ? Ve : We, o);
else if ("dangerouslySetInnerHTML" !== t) {
if (i) t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
else if ("width" !== t && "height" !== t && "href" !== t && "list" !== t && "form" !== t && "tabIndex" !== t && "download" !== t && "rowSpan" !== t && "colSpan" !== t && t in e) try {
e[t] = null == n ? "" : n;
break e
} catch (e) {}
"function" == typeof n || (null == n || !1 === n && "-" !== t[4] ? e.removeAttribute(t) : e.setAttribute(t, n))
}
}
function We(e) {
return this.l[e.type + !1](fe.event ? fe.event(e) : e)
}
function Ve(e) {
return this.l[e.type + !0](fe.event ? fe.event(e) : e)
}
function Xe(e, t, n, r, i, o, a, s, l, c) {
var u, h, p, d, f, g, m, v, _, b, y, w, x, k, C, S = t.type;
if (void 0 !== t.constructor) return null;
null != n.__h && (l = n.__h, s = t.__e = n.__e, t.__h = null, o = [s]), (u = fe.__b) && u(t);
try {
e: if ("function" == typeof S) {
if (v = t.props, _ = (u = S.contextType) && r[u.__c], b = u ? _ ? _.props.value : u.__ : r, n.__c ? m = (h = t.__c = n.__c).__ = h.__E : ("prototype" in S && S.prototype.render ? t.__c = h = new S(v, b) : (t.__c = h = new Me(v,
b), h.constructor = S, h.render = Ke), _ && _.sub(h), h.props = v, h.state || (h.state = {}), h.context = b, h.__n = r, p = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != S
.getDerivedStateFromProps && (h.__s == h.state && (h.__s = Se({}, h.__s)), Se(h.__s, S.getDerivedStateFromProps(v, h.__s))), d = h.props, f = h.state, h.__v = t, p) null == S.getDerivedStateFromProps && null != h
.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);
else {
if (null == S.getDerivedStateFromProps && v !== d && null != h.componentWillReceiveProps && h.componentWillReceiveProps(v, b), !h.__e && (null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(v, h.__s, b) || t
.__v === n.__v)) {
for (t.__v !== n.__v && (h.props = v, h.state = h.__s, h.__d = !1), t.__e = n.__e, t.__k = n.__k, t.__k.forEach((function(e) {
e && (e.__ = t)
})), y = 0; y < h._sb.length; y++) h.__h.push(h._sb[y]);
h._sb = [], h.__h.length && a.push(h);
break e
}
null != h.componentWillUpdate && h.componentWillUpdate(v, h.__s, b), null != h.componentDidUpdate && h.__h.push((function() {
h.componentDidUpdate(d, f, g)
}))
}
if (h.context = b, h.props = v, h.__P = e, h.__e = !1, w = fe.__r, x = 0, "prototype" in S && S.prototype.render) {
for (h.state = h.__s, h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), k = 0; k < h._sb.length; k++) h.__h.push(h._sb[k]);
h._sb = []
} else
do {
h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), h.state = h.__s
} while (h.__d && ++x < 25);
h.state = h.__s, null != h.getChildContext && (r = Se(Se({}, r), h.getChildContext())), p || null == h.getSnapshotBeforeUpdate || (g = h.getSnapshotBeforeUpdate(d, f)), je(e, Ce(C = null != u && u.type === Pe && null == u.key ? u
.props.children : u) ? C : [C], t, n, r, i, o, a, s, l, c), h.base = t.__e, t.__h = null, h.__h.length && a.push(h), m && (h.__E = h.__ = null)
} else null == o && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = function(e, t, n, r, i, o, a, s, l) {
var c, u, h, p = n.props,
d = t.props,
f = t.type,
g = 0;
if ("svg" === f && (i = !0), null != o)
for (; g < o.length; g++)
if ((c = o[g]) && "setAttribute" in c == !!f && (f ? c.localName === f : 3 === c.nodeType)) {
e = c, o[g] = null;
break
} if (null == e) {
if (null === f) return document.createTextNode(d);
e = i ? document.createElementNS("http://www.w3.org/2000/svg", f) : document.createElement(f, d.is && d), o = null, s = !1
}
if (null === f) p === d || s && e.data === d || (e.data = d);
else {
if (o = o && de.call(e.childNodes), u = (p = n.props || we).dangerouslySetInnerHTML, h = d.dangerouslySetInnerHTML, !s) {
if (null != o)
for (p = {}, g = 0; g < e.attributes.length; g++) p[e.attributes[g].name] = e.attributes[g].value;
(h || u) && (h && (u && h.__html == u.__html || h.__html === e.innerHTML) || (e.innerHTML = h && h.__html || ""))
}
if (function(e, t, n, r, i) {
var o;
for (o in n) "children" === o || "key" === o || o in t || Ue(e, o, null, n[o], r);
for (o in t) i && "function" != typeof t[o] || "children" === o || "key" === o || "value" === o || "checked" === o || n[o] === t[o] || Ue(e, o, t[o], n[o], r)
}(e, d, p, i, s), h) t.__k = [];
else if (je(e, Ce(g = t.props.children) ? g : [g], t, n, r, i && "foreignObject" !== f, o, a, o ? o[0] : n.__k && De(n, 0), s, l), null != o)
for (g = o.length; g--;) null != o[g] && Ee(o[g]);
s || ("value" in d && void 0 !== (g = d.value) && (g !== e.value || "progress" === f && !g || "option" === f && g !== p.value) && Ue(e, "value", g, p.value, !1), "checked" in d && void 0 !== (g = d.checked) && g !== e
.checked && Ue(e, "checked", g, p.checked, !1))
}
return e
}(n.__e, t, n, r, i, o, a, l, c);
(u = fe.diffed) && u(t)
}
catch (e) {
t.__v = null, (l || null != o) && (t.__e = s, t.__h = !!l, o[o.indexOf(s)] = null), fe.__e(e, t, n)
}
}
function Ge(e, t, n) {
for (var r = 0; r < n.length; r++) Ye(n[r], n[++r], n[++r]);
fe.__c && fe.__c(t, e), e.some((function(t) {
try {
e = t.__h, t.__h = [], e.some((function(e) {
e.call(t)
}))
} catch (e) {
fe.__e(e, t.__v)
}
}))
}
function Ye(e, t, n) {
try {
"function" == typeof e ? e(t) : e.current = t
} catch (e) {
fe.__e(e, n)
}
}
function qe(e, t, n) {
var r, i;
if (fe.unmount && fe.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || Ye(r, null, t)), null != (r = e.__c)) {
if (r.componentWillUnmount) try {
r.componentWillUnmount()
} catch (e) {
fe.__e(e, t)
}
r.base = r.__P = null, e.__c = void 0
}
if (r = e.__k)
for (i = 0; i < r.length; i++) r[i] && qe(r[i], t, n || "function" != typeof e.type);
n || null == e.__e || Ee(e.__e), e.__ = e.__e = e.__d = void 0
}
function Ke(e, t, n) {
return this.constructor(e, n)
}
function $e(e, t, n) {
var r, i, o, a;
fe.__ && fe.__(e, t), i = (r = "function" == typeof n) ? null : n && n.__k || t.__k, o = [], a = [], Xe(t, e = (!r && n || t).__k = Te(Pe, null, [e]), i || we, we, void 0 !== t.ownerSVGElement, !r && n ? [n] : i ? null : t.firstChild ?
de.call(t.childNodes) : null, o, !r && n ? n : i ? i.__e : t.firstChild, r, a), Ge(o, e, a)
}
function Ze(e, t) {
$e(e, t, Ze)
}
function Je(e, t, n) {
var r, i, o, a, s = Se({}, e.props);
for (o in e.type && e.type.defaultProps && (a = e.type.defaultProps), t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : s[o] = void 0 === t[o] && void 0 !== a ? a[o] : t[o];
return arguments.length > 2 && (s.children = arguments.length > 3 ? de.call(arguments, 2) : n), Oe(e.type, s, r || e.key, i || e.ref, null)
}
function Qe(e, t) {
var n = {
__c: t = "__cC" + ye++,
__: e,
Consumer: function(e, t) {
return e.children(t)
},
Provider: function(e) {
var n, r;
return this.getChildContext || (n = [], (r = {})[t] = this, this.getChildContext = function() {
return r
}, this.shouldComponentUpdate = function(e) {
this.props.value !== e.value && n.some((function(e) {
e.__e = !0, Ne(e)
}))
}, this.sub = function(e) {
n.push(e);
var t = e.componentWillUnmount;
e.componentWillUnmount = function() {
n.splice(n.indexOf(e), 1), t && t.call(e)
}
}), e.children
}
};
return n.Provider.__ = n.Consumer.contextType = n
}
de = xe.slice, fe = {
__e: function(e, t, n, r) {
for (var i, o, a; t = t.__;)
if ((i = t.__c) && !i.__) try {
if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(e)), a = i.__d), null != i.componentDidCatch && (i.componentDidCatch(e, r || {}), a = i.__d), a) return i.__E = i
} catch (t) {
e = t
}
throw e
}
}, ge = 0, Me.prototype.setState = function(e, t) {
var n;
n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = Se({}, this.state), "function" == typeof e && (e = e(Se({}, n), this.props)), e && Se(n, e), null != e && this.__v && (t && this._sb.push(t), Ne(this))
}, Me.prototype.forceUpdate = function(e) {
this.__v && (this.__e = !0, e && this.__h.push(e), Ne(this))
}, Me.prototype.render = Pe, me = [], _e = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, be = function(e, t) {
return e.__v.__b - t.__v.__b
}, Re.__r = 0, ye = 0;
var et, tt, nt, rt, it = 0,
ot = [],
at = [],
st = fe.__b,
lt = fe.__r,
ct = fe.diffed,
ut = fe.__c,
ht = fe.unmount;
function pt(e, t) {
fe.__h && fe.__h(tt, e, it || t), it = 0;
var n = tt.__H || (tt.__H = {
__: [],
__h: []
});
return e >= n.__.length && n.__.push({
__V: at
}), n.__[e]
}
function dt(e) {
return it = 1, ft(Pt, e)
}
function ft(e, t, n) {
var r = pt(et++, 2);
if (r.t = e, !r.__c && (r.__ = [n ? n(t) : Pt(void 0, t), function(e) {
var t = r.__N ? r.__N[0] : r.__[0],
n = r.t(t, e);
t !== n && (r.__N = [n, r.__[1]], r.__c.setState({}))
}], r.__c = tt, !tt.u)) {
var i = function(e, t, n) {
if (!r.__c.__H) return !0;
var i = r.__c.__H.__.filter((function(e) {
return e.__c
}));
if (i.every((function(e) {
return !e.__N
}))) return !o || o.call(this, e, t, n);
var a = !1;
return i.forEach((function(e) {
if (e.__N) {
var t = e.__[0];
e.__ = e.__N, e.__N = void 0, t !== e.__[0] && (a = !0)
}
})), !(!a && r.__c.props === e) && (!o || o.call(this, e, t, n))
};
tt.u = !0;
var o = tt.shouldComponentUpdate,
a = tt.componentWillUpdate;
tt.componentWillUpdate = function(e, t, n) {
if (this.__e) {
var r = o;
o = void 0, i(e, t, n), o = r
}
a && a.call(this, e, t, n)
}, tt.shouldComponentUpdate = i
}
return r.__N || r.__
}
function gt(e, t) {
var n = pt(et++, 3);
!fe.__s && At(n.__H, t) && (n.__ = e, n.i = t, tt.__H.__h.push(n))
}
function mt(e, t) {
var n = pt(et++, 4);
!fe.__s && At(n.__H, t) && (n.__ = e, n.i = t, tt.__h.push(n))
}
function vt(e) {
return it = 5, bt((function() {
return {
current: e
}
}), [])
}
function _t(e, t, n) {
it = 6, mt((function() {
return "function" == typeof e ? (e(t()), function() {
return e(null)
}) : e ? (e.current = t(), function() {
return e.current = null
}) : void 0
}), null == n ? n : n.concat(e))
}
function bt(e, t) {
var n = pt(et++, 7);
return At(n.__H, t) ? (n.__V = e(), n.i = t, n.__h = e, n.__V) : n.__
}
function yt(e, t) {
return it = 8, bt((function() {
return e
}), t)
}
function wt(e) {
var t = tt.context[e.__c],
n = pt(et++, 9);
return n.c = e, t ? (null == n.__ && (n.__ = !0, t.sub(tt)), t.props.value) : e.__
}
function xt(e, t) {
fe.useDebugValue && fe.useDebugValue(t ? t(e) : e)
}
function kt() {
var e = pt(et++, 11);
if (!e.__) {
for (var t = tt.__v; null !== t && !t.__m && null !== t.__;) t = t.__;
var n = t.__m || (t.__m = [0, 0]);
e.__ = "P" + n[0] + "-" + n[1]++
}
return e.__
}
function Ct() {
for (var e; e = ot.shift();)
if (e.__P && e.__H) try {
e.__H.__h.forEach(Tt), e.__H.__h.forEach(Ot), e.__H.__h = []
} catch (t) {
e.__H.__h = [], fe.__e(t, e.__v)
}
}
fe.__b = function(e) {
tt = null, st && st(e)
}, fe.__r = function(e) {
lt && lt(e), et = 0;
var t = (tt = e.__c).__H;
t && (nt === tt ? (t.__h = [], tt.__h = [], t.__.forEach((function(e) {
e.__N && (e.__ = e.__N), e.__V = at, e.__N = e.i = void 0
}))) : (t.__h.forEach(Tt), t.__h.forEach(Ot), t.__h = [], et = 0)), nt = tt
}, fe.diffed = function(e) {
ct && ct(e);
var t = e.__c;
t && t.__H && (t.__H.__h.length && (1 !== ot.push(t) && rt === fe.requestAnimationFrame || ((rt = fe.requestAnimationFrame) || Et)(Ct)), t.__H.__.forEach((function(e) {
e.i && (e.__H = e.i), e.__V !== at && (e.__ = e.__V), e.i = void 0, e.__V = at
}))), nt = tt = null
}, fe.__c = function(e, t) {
t.some((function(e) {
try {
e.__h.forEach(Tt), e.__h = e.__h.filter((function(e) {
return !e.__ || Ot(e)
}))
} catch (n) {
t.some((function(e) {
e.__h && (e.__h = [])
})), t = [], fe.__e(n, e.__v)
}
})), ut && ut(e, t)
}, fe.unmount = function(e) {
ht && ht(e);
var t, n = e.__c;
n && n.__H && (n.__H.__.forEach((function(e) {
try {
Tt(e)
} catch (e) {
t = e
}
})), n.__H = void 0, t && fe.__e(t, n.__v))
};
var St = "function" == typeof requestAnimationFrame;
function Et(e) {
var t, n = function() {
clearTimeout(r), St && cancelAnimationFrame(t), setTimeout(e)
},
r = setTimeout(n, 100);
St && (t = requestAnimationFrame(n))
}
function Tt(e) {
var t = tt,
n = e.__c;
"function" == typeof n && (e.__c = void 0, n()), tt = t
}
function Ot(e) {
var t = tt;
e.__c = e.__(), tt = t
}
function At(e, t) {
return !e || e.length !== t.length || t.some((function(t, n) {
return t !== e[n]
}))
}
function Pt(e, t) {
return "function" == typeof t ? t(e) : t
}
function Mt(e, t) {
for (var n in t) e[n] = t[n];
return e
}
function Dt(e, t) {
for (var n in e)
if ("__source" !== n && !(n in t)) return !0;
for (var r in t)
if ("__source" !== r && e[r] !== t[r]) return !0;
return !1
}
function It(e, t) {
return e === t && (0 !== e || 1 / e == 1 / t) || e != e && t != t
}
function Nt(e) {
this.props = e
}
function Rt(e, t) {
function n(e) {
var n = this.props.ref,
r = n == e.ref;
return !r && n && (n.call ? n(null) : n.current = null), t ? !t(this.props, e) || !r : Dt(this.props, e)
}
function r(t) {
return this.shouldComponentUpdate = n, Te(e, t)
}
return r.displayName = "Memo(" + (e.displayName || e.name) + ")", r.prototype.isReactComponent = !0, r.__f = !0, r
}(Nt.prototype = new Me).isPureReactComponent = !0, Nt.prototype.shouldComponentUpdate = function(e, t) {
return Dt(this.props, e) || Dt(this.state, t)
};
var jt = fe.__b;
fe.__b = function(e) {
e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), jt && jt(e)
};
var Lt = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;
function Ft(e) {
function t(t) {
var n = Mt({}, t);
return delete n.ref, e(n, t.ref || null)
}
return t.$$typeof = Lt, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = "ForwardRef(" + (e.displayName || e.name) + ")", t
}
var Bt = function(e, t) {
return null == e ? null : Fe(Fe(e).map(t))
},
zt = {
map: Bt,
forEach: Bt,
count: function(e) {
return e ? Fe(e).length : 0
},
only: function(e) {
var t = Fe(e);
if (1 !== t.length) throw "Children.only";
return t[0]
},
toArray: Fe
},
Ht = fe.__e;
fe.__e = function(e, t, n, r) {
if (e.then)
for (var i, o = t; o = o.__;)
if ((i = o.__c) && i.__c) return null == t.__e && (t.__e = n.__e, t.__k = n.__k), i.__c(e, t);
Ht(e, t, n, r)
};
var Ut = fe.unmount;
function Wt(e, t, n) {
return e && (e.__c && e.__c.__H && (e.__c.__H.__.forEach((function(e) {
"function" == typeof e.__c && e.__c()
})), e.__c.__H = null), null != (e = Mt({}, e)).__c && (e.__c.__P === n && (e.__c.__P = t), e.__c = null), e.__k = e.__k && e.__k.map((function(e) {
return Wt(e, t, n)
}))), e
}
function Vt(e, t, n) {
return e && (e.__v = null, e.__k = e.__k && e.__k.map((function(e) {
return Vt(e, t, n)
})), e.__c && e.__c.__P === t && (e.__e && n.insertBefore(e.__e, e.__d), e.__c.__e = !0, e.__c.__P = n)), e
}
function Xt() {
this.__u = 0, this.t = null, this.__b = null
}
function Gt(e) {
var t = e.__.__c;
return t && t.__a && t.__a(e)
}
function Yt(e) {
var t, n, r;
function i(i) {
if (t || (t = e()).then((function(e) {
n = e.default || e
}), (function(e) {
r = e
})), r) throw r;
if (!n) throw t;
return Te(n, i)
}
return i.displayName = "Lazy", i.__f = !0, i
}
function qt() {
this.u = null, this.o = null
}
fe.unmount = function(e) {
var t = e.__c;
t && t.__R && t.__R(), t && !0 === e.__h && (e.type = null), Ut && Ut(e)
}, (Xt.prototype = new Me).__c = function(e, t) {
var n = t.__c,
r = this;
null == r.t && (r.t = []), r.t.push(n);
var i = Gt(r.__v),
o = !1,
a = function() {
o || (o = !0, n.__R = null, i ? i(s) : s())
};
n.__R = a;
var s = function() {
if (!--r.__u) {
if (r.state.__a) {
var e = r.state.__a;
r.__v.__k[0] = Vt(e, e.__c.__P, e.__c.__O)
}
var t;
for (r.setState({
__a: r.__b = null
}); t = r.t.pop();) t.forceUpdate()
}
},
l = !0 === t.__h;
r.__u++ || l || r.setState({
__a: r.__b = r.__v.__k[0]
}), e.then(a, a)
}, Xt.prototype.componentWillUnmount = function() {
this.t = []
}, Xt.prototype.render = function(e, t) {
if (this.__b) {
if (this.__v.__k) {
var n = document.createElement("div"),
r = this.__v.__k[0].__c;
this.__v.__k[0] = Wt(this.__b, n, r.__O = r.__P)
}
this.__b = null
}
var i = t.__a && Te(Pe, null, e.fallback);
return i && (i.__h = null), [Te(Pe, null, t.__a ? null : e.children), i]
};
var Kt = function(e, t, n) {
if (++n[1] === n[0] && e.o.delete(t), e.props.revealOrder && ("t" !== e.props.revealOrder[0] || !e.o.size))
for (n = e.u; n;) {
for (; n.length > 3;) n.pop()();
if (n[1] < n[0]) break;
e.u = n = n[2]
}
};
function $t(e) {
return this.getChildContext = function() {
return e.context
}, e.children
}
function Zt(e) {
var t = this,
n = e.i;
t.componentWillUnmount = function() {
$e(null, t.l), t.l = null, t.i = null
}, t.i && t.i !== n && t.componentWillUnmount(), e.__v ? (t.l || (t.i = n, t.l = {
nodeType: 1,
parentNode: n,
childNodes: [],
appendChild: function(e) {
this.childNodes.push(e), t.i.appendChild(e)
},
insertBefore: function(e, n) {
this.childNodes.push(e), t.i.appendChild(e)
},
removeChild: function(e) {
this.childNodes.splice(this.childNodes.indexOf(e) >>> 1, 1), t.i.removeChild(e)
}
}), $e(Te($t, {
context: t.context
}, e.__v), t.l)) : t.l && t.componentWillUnmount()
}
function Jt(e, t) {
var n = Te(Zt, {
__v: e,
i: t
});
return n.containerInfo = t, n
}(qt.prototype = new Me).__a = function(e) {
var t = this,
n = Gt(t.__v),
r = t.o.get(e);
return r[0]++,
function(i) {
var o = function() {
t.props.revealOrder ? (r.push(i), Kt(t, e, r)) : i()
};
n ? n(o) : o()
}
}, qt.prototype.render = function(e) {
this.u = null, this.o = new Map;
var t = Fe(e.children);
e.revealOrder && "b" === e.revealOrder[0] && t.reverse();
for (var n = t.length; n--;) this.o.set(t[n], this.u = [1, 0, this.u]);
return e.children
}, qt.prototype.componentDidUpdate = qt.prototype.componentDidMount = function() {
var e = this;
this.o.forEach((function(t, n) {
Kt(e, n, t)
}))
};
var Qt = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103,
en =
/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,
tn = /^on(Ani|Tra|Tou|BeforeInp|Compo)/,
nn = /[A-Z0-9]/g,
rn = "undefined" != typeof document,
on = function(e) {
return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(e)
};
function an(e, t, n) {
return null == t.__k && (t.textContent = ""), $e(e, t), "function" == typeof n && n(), e ? e.__c : null
}
function sn(e, t, n) {
return Ze(e, t), "function" == typeof n && n(), e ? e.__c : null
}
Me.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach((function(e) {
Object.defineProperty(Me.prototype, e, {
configurable: !0,
get: function() {
return this["UNSAFE_" + e]
},
set: function(t) {
Object.defineProperty(this, e, {
configurable: !0,
writable: !0,
value: t
})
}
})
}));
var ln = fe.event;
function cn() {}
function un() {
return this.cancelBubble
}
function hn() {
return this.defaultPrevented
}
fe.event = function(e) {
return ln && (e = ln(e)), e.persist = cn, e.isPropagationStopped = un, e.isDefaultPrevented = hn, e.nativeEvent = e
};
var pn, dn = {
enumerable: !1,
configurable: !0,
get: function() {
return this.class
}
},
fn = fe.vnode;
fe.vnode = function(e) {
"string" == typeof e.type && function(e) {
var t = e.props,
n = e.type,
r = {};
for (var i in t) {
var o = t[i];
if (!("value" === i && "defaultValue" in t && null == o || rn && "children" === i && "noscript" === n || "class" === i || "className" === i)) {
var a = i.toLowerCase();
"defaultValue" === i && "value" in t && null == t.value ? i = "value" : "download" === i && !0 === o ? o = "" : "ondoubleclick" === a ? i = "ondblclick" : "onchange" !== a || "input" !== n && "textarea" !== n || on(t.type) ?
"onfocus" === a ? i = "onfocusin" : "onblur" === a ? i = "onfocusout" : tn.test(i) ? i = a : -1 === n.indexOf("-") && en.test(i) ? i = i.replace(nn, "-$&").toLowerCase() : null === o && (o = void 0) : a = i = "oninput",
"oninput" === a && r[i = a] && (i = "oninputCapture"), r[i] = o
}
}
"select" == n && r.multiple && Array.isArray(r.value) && (r.value = Fe(t.children).forEach((function(e) {
e.props.selected = -1 != r.value.indexOf(e.props.value)
}))), "select" == n && null != r.defaultValue && (r.value = Fe(t.children).forEach((function(e) {
e.props.selected = r.multiple ? -1 != r.defaultValue.indexOf(e.props.value) : r.defaultValue == e.props.value
}))), t.class && !t.className ? (r.class = t.class, Object.defineProperty(r, "className", dn)) : (t.className && !t.class || t.class && t.className) && (r.class = r.className = t.className), e.props = r
}(e), e.$$typeof = Qt, fn && fn(e)
};
var gn = fe.__r;
fe.__r = function(e) {
gn && gn(e), pn = e.__c
};
var mn = fe.diffed;
fe.diffed = function(e) {
mn && mn(e);
var t = e.props,
n = e.__e;
null != n && "textarea" === e.type && "value" in t && t.value !== n.value && (n.value = null == t.value ? "" : t.value), pn = null
};
var vn = {
ReactCurrentDispatcher: {
current: {
readContext: function(e) {
return pn.__n[e.__c].props.value
}
}
}
};
function _n(e) {
return Te.bind(null, e)
}
function bn(e) {
return !!e && e.$$typeof === Qt
}
function yn(e) {
return bn(e) ? Je.apply(null, arguments) : e
}
function wn(e) {
return !!e.__k && ($e(null, e), !0)
}
function xn(e) {
return e && (e.base || 1 === e.nodeType && e) || null
}
var kn = function(e, t) {
return e(t)
},
Cn = function(e, t) {
return e(t)
},
Sn = Pe;
function En(e) {
e()
}
function Tn(e) {
return e
}
function On() {
return [!1, En]
}
var An = mt;
function Pn(e, t) {
var n = t(),
r = dt({
h: {
__: n,
v: t
}
}),
i = r[0].h,
o = r[1];
return mt((function() {
i.__ = n, i.v = t, It(i.__, t()) || o({
h: i
})
}), [e, n, t]), gt((function() {
return It(i.__, i.v()) || o({
h: i
}), e((function() {
It(i.__, i.v()) || o({
h: i
})
}))
}), [e]), n
}
var Mn, Dn, In, Nn = {
useState: dt,
useId: kt,
useReducer: ft,
useEffect: gt,
useLayoutEffect: mt,
useInsertionEffect: An,
useTransition: On,
useDeferredValue: Tn,
useSyncExternalStore: Pn,
startTransition: En,
useRef: vt,
useImperativeHandle: _t,
useMemo: bt,
useCallback: yt,
useContext: wt,
useDebugValue: xt,
version: "17.0.2",
Children: zt,
render: an,
hydrate: sn,
unmountComponentAtNode: wn,
createPortal: Jt,
createElement: Te,
createContext: Qe,
createFactory: _n,
cloneElement: yn,
createRef: Ae,
Fragment: Pe,
isValidElement: bn,
findDOMNode: xn,
Component: Me,
PureComponent: Nt,
memo: Rt,
forwardRef: Ft,
flushSync: Cn,
unstable_batchedUpdates: kn,
StrictMode: Sn,
Suspense: Xt,
SuspenseList: qt,
lazy: Yt,
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: vn
},
Rn = Object.freeze({
__proto__: null,
Children: zt,
PureComponent: Nt,
StrictMode: Sn,
Suspense: Xt,
SuspenseList: qt,
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: vn,
cloneElement: yn,
createFactory: _n,
createPortal: Jt,
default: Nn,
findDOMNode: xn,
flushSync: Cn,
forwardRef: Ft,
hydrate: sn,
isValidElement: bn,
lazy: Yt,
memo: Rt,
render: an,
startTransition: En,
unmountComponentAtNode: wn,
unstable_batchedUpdates: kn,
useDeferredValue: Tn,
useInsertionEffect: An,
useSyncExternalStore: Pn,
useTransition: On,
version: "17.0.2",
Component: Me,
Fragment: Pe,
createContext: Qe,
createElement: Te,
createRef: Ae,
useCallback: yt,
useContext: wt,
useDebugValue: xt,
useEffect: gt,
useErrorBoundary: function(e) {
var t = pt(et++, 10),
n = dt();
return t.__ = e, tt.componentDidCatch || (tt.componentDidCatch = function(e, r) {
t.__ && t.__(e, r), n[1](e)
}), [n[0], function() {
n[1](void 0)
}]
},
useId: kt,
useImperativeHandle: _t,
useLayoutEffect: mt,
useMemo: bt,
useReducer: ft,
useRef: vt,
useState: dt
}),
jn = {
exports: {}
},
Ln = {},
Fn = "function" == typeof Symbol && Symbol.for,
Bn = Fn ? Symbol.for("react.element") : 60103,
zn = Fn ? Symbol.for("react.portal") : 60106,
Hn = Fn ? Symbol.for("react.fragment") : 60107,
Un = Fn ? Symbol.for("react.strict_mode") : 60108,
Wn = Fn ? Symbol.for("react.profiler") : 60114,
Vn = Fn ? Symbol.for("react.provider") : 60109,
Xn = Fn ? Symbol.for("react.context") : 60110,
Gn = Fn ? Symbol.for("react.async_mode") : 60111,
Yn = Fn ? Symbol.for("react.concurrent_mode") : 60111,
qn = Fn ? Symbol.for("react.forward_ref") : 60112,
Kn = Fn ? Symbol.for("react.suspense") : 60113,
$n = Fn ? Symbol.for("react.suspense_list") : 60120,
Zn = Fn ? Symbol.for("react.memo") : 60115,
Jn = Fn ? Symbol.for("react.lazy") : 60116,
Qn = Fn ? Symbol.for("react.block") : 60121,
er = Fn ? Symbol.for("react.fundamental") : 60117,
tr = Fn ? Symbol.for("react.responder") : 60118,
nr = Fn ? Symbol.for("react.scope") : 60119;
function rr(e) {
if ("object" == typeof e && null !== e) {
var t = e.$$typeof;
switch (t) {
case Bn:
switch (e = e.type) {
case Gn:
case Yn:
case Hn:
case Wn:
case Un:
case Kn:
return e;
default:
switch (e = e && e.$$typeof) {
case Xn:
case qn:
case Jn:
case Zn:
case Vn:
return e;
default:
return t
}
}
case zn:
return t
}
}
}
function ir(e) {
return rr(e) === Yn
}
function or(e, t, n) {
if (void 0 === n && (n = Error), !e) throw new n(t)
}
function ar(e) {
return e.type === Dn.literal
}
function sr(e) {
return e.type === Dn.argument
}
function lr(e) {
return e.type === Dn.number
}
function cr(e) {
return e.type === Dn.date
}
function ur(e) {
return e.type === Dn.time
}
function hr(e) {
return e.type === Dn.select
}
function pr(e) {
return e.type === Dn.plural
}
function dr(e) {
return e.type === Dn.pound
}
function fr(e) {
return e.type === Dn.tag
}
function gr(e) {
return !(!e || "object" != typeof e || e.type !== In.number)
}
function mr(e) {
return !(!e || "object" != typeof e || e.type !== In.dateTime)
}
Ln.AsyncMode = Gn, Ln.ConcurrentMode = Yn, Ln.ContextConsumer = Xn, Ln.ContextProvider = Vn, Ln.Element = Bn, Ln.ForwardRef = qn, Ln.Fragment = Hn, Ln.Lazy = Jn, Ln.Memo = Zn, Ln.Portal = zn, Ln.Profiler = Wn, Ln.StrictMode = Un, Ln
.Suspense = Kn, Ln.isAsyncMode = function(e) {
return ir(e) || rr(e) === Gn
}, Ln.isConcurrentMode = ir, Ln.isContextConsumer = function(e) {
return rr(e) === Xn
}, Ln.isContextProvider = function(e) {
return rr(e) === Vn
}, Ln.isElement = function(e) {
return "object" == typeof e && null !== e && e.$$typeof === Bn
}, Ln.isForwardRef = function(e) {
return rr(e) === qn
}, Ln.isFragment = function(e) {
return rr(e) === Hn
}, Ln.isLazy = function(e) {
return rr(e) === Jn
}, Ln.isMemo = function(e) {
return rr(e) === Zn
}, Ln.isPortal = function(e) {
return rr(e) === zn
}, Ln.isProfiler = function(e) {
return rr(e) === Wn
}, Ln.isStrictMode = function(e) {
return rr(e) === Un
}, Ln.isSuspense = function(e) {
return rr(e) === Kn
}, Ln.isValidElementType = function(e) {
return "string" == typeof e || "function" == typeof e || e === Hn || e === Yn || e === Wn || e === Un || e === Kn || e === $n || "object" == typeof e && null !== e && (e.$$typeof === Jn || e.$$typeof === Zn || e.$$typeof === Vn || e
.$$typeof === Xn || e.$$typeof === qn || e.$$typeof === er || e.$$typeof === tr || e.$$typeof === nr || e.$$typeof === Qn)
}, Ln.typeOf = rr,
function(e) {
e.exports = Ln
}(jn),
function(e) {
e[e.EXPECT_ARGUMENT_CLOSING_BRACE = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE", e[e.EMPTY_ARGUMENT = 2] = "EMPTY_ARGUMENT", e[e.MALFORMED_ARGUMENT = 3] = "MALFORMED_ARGUMENT", e[e.EXPECT_ARGUMENT_TYPE = 4] = "EXPECT_ARGUMENT_TYPE", e[e
.INVALID_ARGUMENT_TYPE = 5] = "INVALID_ARGUMENT_TYPE", e[e.EXPECT_ARGUMENT_STYLE = 6] = "EXPECT_ARGUMENT_STYLE", e[e.INVALID_NUMBER_SKELETON = 7] = "INVALID_NUMBER_SKELETON", e[e.INVALID_DATE_TIME_SKELETON = 8] =
"INVALID_DATE_TIME_SKELETON", e[e.EXPECT_NUMBER_SKELETON = 9] = "EXPECT_NUMBER_SKELETON", e[e.EXPECT_DATE_TIME_SKELETON = 10] = "EXPECT_DATE_TIME_SKELETON", e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE = 11] =
"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE", e[e.EXPECT_SELECT_ARGUMENT_OPTIONS = 12] = "EXPECT_SELECT_ARGUMENT_OPTIONS", e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE = 13] = "EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE", e[e
.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE = 14] = "INVALID_PLURAL_ARGUMENT_OFFSET_VALUE", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR = 15] = "EXPECT_SELECT_ARGUMENT_SELECTOR", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR = 16] =
"EXPECT_PLURAL_ARGUMENT_SELECTOR", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT = 17] = "EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT = 18] = "EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT", e[e
.INVALID_PLURAL_ARGUMENT_SELECTOR = 19] = "INVALID_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR = 20] = "DUPLICATE_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR = 21] =
"DUPLICATE_SELECT_ARGUMENT_SELECTOR", e[e.MISSING_OTHER_CLAUSE = 22] = "MISSING_OTHER_CLAUSE", e[e.INVALID_TAG = 23] = "INVALID_TAG", e[e.INVALID_TAG_NAME = 25] = "INVALID_TAG_NAME", e[e.UNMATCHED_CLOSING_TAG = 26] =
"UNMATCHED_CLOSING_TAG", e[e.UNCLOSED_TAG = 27] = "UNCLOSED_TAG"
}(Mn || (Mn = {})),
function(e) {
e[e.literal = 0] = "literal", e[e.argument = 1] = "argument", e[e.number = 2] = "number", e[e.date = 3] = "date", e[e.time = 4] = "time", e[e.select = 5] = "select", e[e.plural = 6] = "plural", e[e.pound = 7] = "pound", e[e.tag = 8] =
"tag"
}(Dn || (Dn = {})),
function(e) {
e[e.number = 0] = "number", e[e.dateTime = 1] = "dateTime"
}(In || (In = {}));
var vr = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/,
_r = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
function br(e) {
var t = {};
return e.replace(_r, (function(e) {
var n = e.length;
switch (e[0]) {
case "G":
t.era = 4 === n ? "long" : 5 === n ? "narrow" : "short";
break;
case "y":
t.year = 2 === n ? "2-digit" : "numeric";
break;
case "Y":
case "u":
case "U":
case "r":
throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");
case "q":
case "Q":
throw new RangeError("`q/Q` (quarter) patterns are not supported");
case "M":
case "L":
t.month = ["numeric", "2-digit", "short", "long", "narrow"][n - 1];
break;
case "w":
case "W":
throw new RangeError("`w/W` (week) patterns are not supported");
case "d":
t.day = ["numeric", "2-digit"][n - 1];
break;
case "D":
case "F":
case "g":
throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");
case "E":
t.weekday = 4 === n ? "short" : 5 === n ? "narrow" : "short";
break;
case "e":
if (n < 4) throw new RangeError("`e..eee` (weekday) patterns are not supported");
t.weekday = ["short", "long", "narrow", "short"][n - 4];
break;
case "c":
if (n < 4) throw new RangeError("`c..ccc` (weekday) patterns are not supported");
t.weekday = ["short", "long", "narrow", "short"][n - 4];
break;
case "a":
t.hour12 = !0;
break;
case "b":
case "B":
throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead");
case "h":
t.hourCycle = "h12", t.hour = ["numeric", "2-digit"][n - 1];
break;
case "H":
t.hourCycle = "h23", t.hour = ["numeric", "2-digit"][n - 1];
break;
case "K":
t.hourCycle = "h11", t.hour = ["numeric", "2-digit"][n - 1];
break;
case "k":
t.hourCycle = "h24", t.hour = ["numeric", "2-digit"][n - 1];
break;
case "j":
case "J":
case "C":
throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");
case "m":
t.minute = ["numeric", "2-digit"][n - 1];
break;
case "s":
t.second = ["numeric", "2-digit"][n - 1];
break;
case "S":
case "A":
throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead");
case "z":
t.timeZoneName = n < 4 ? "short" : "long";
break;
case "Z":
case "O":
case "v":
case "V":
case "X":
case "x":
throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")
}
return ""
})), t
}
var yr = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
var wr = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,
xr = /^(@+)?(\+|#+)?[rs]?$/g,
kr = /(\*)(0+)|(#+)(0+)|(0+)/g,
Cr = /^(0+)$/;
function Sr(e) {
var t = {};
return "r" === e[e.length - 1] ? t.roundingPriority = "morePrecision" : "s" === e[e.length - 1] && (t.roundingPriority = "lessPrecision"), e.replace(xr, (function(e, n, r) {
return "string" != typeof r ? (t.minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length) : "+" === r ? t.minimumSignificantDigits = n.length : "#" === n[0] ? t.maximumSignificantDigits = n.length : (t
.minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length + ("string" == typeof r ? r.length : 0)), ""
})), t
}
function Er(e) {
switch (e) {
case "sign-auto":
return {
signDisplay: "auto"
};
case "sign-accounting":
case "()":
return {
currencySign: "accounting"
};
case "sign-always":
case "+!":
return {
signDisplay: "always"
};
case "sign-accounting-always":
case "()!":
return {
signDisplay: "always", currencySign: "accounting"
};
case "sign-except-zero":
case "+?":
return {
signDisplay: "exceptZero"
};
case "sign-accounting-except-zero":
case "()?":
return {
signDisplay: "exceptZero", currencySign: "accounting"
};
case "sign-never":
case "+_":
return {
signDisplay: "never"
}
}
}
function Tr(e) {
var t;
if ("E" === e[0] && "E" === e[1] ? (t = {
notation: "engineering"
}, e = e.slice(2)) : "E" === e[0] && (t = {
notation: "scientific"
}, e = e.slice(1)), t) {
var n = e.slice(0, 2);
if ("+!" === n ? (t.signDisplay = "always", e = e.slice(2)) : "+?" === n && (t.signDisplay = "exceptZero", e = e.slice(2)), !Cr.test(e)) throw new Error("Malformed concise eng/scientific notation");
t.minimumIntegerDigits = e.length
}
return t
}
function Or(e) {
var t = Er(e);
return t || {}
}
function Ar(e) {
for (var t = {}, n = 0, r = e; n < r.length; n++) {
var i = r[n];
switch (i.stem) {
case "percent":
case "%":
t.style = "percent";
continue;
case "%x100":
t.style = "percent", t.scale = 100;
continue;
case "currency":
t.style = "currency", t.currency = i.options[0];
continue;
case "group-off":
case ",_":
t.useGrouping = !1;
continue;
case "precision-integer":
case ".":
t.maximumFractionDigits = 0;
continue;
case "measure-unit":
case "unit":
t.style = "unit", t.unit = i.options[0].replace(/^(.*?)-/, "");
continue;
case "compact-short":
case "K":
t.notation = "compact", t.compactDisplay = "short";
continue;
case "compact-long":
case "KK":
t.notation = "compact", t.compactDisplay = "long";
continue;
case "scientific":
t = se(se(se({}, t), {
notation: "scientific"
}), i.options.reduce((function(e, t) {
return se(se({}, e), Or(t))
}), {}));
continue;
case "engineering":
t = se(se(se({}, t), {
notation: "engineering"
}), i.options.reduce((function(e, t) {
return se(se({}, e), Or(t))
}), {}));
continue;
case "notation-simple":
t.notation = "standard";
continue;
case "unit-width-narrow":
t.currencyDisplay = "narrowSymbol", t.unitDisplay = "narrow";
continue;
case "unit-width-short":
t.currencyDisplay = "code", t.unitDisplay = "short";
continue;
case "unit-width-full-name":
t.currencyDisplay = "name", t.unitDisplay = "long";
continue;
case "unit-width-iso-code":
t.currencyDisplay = "symbol";
continue;
case "scale":
t.scale = parseFloat(i.options[0]);
continue;
case "integer-width":
if (i.options.length > 1) throw new RangeError("integer-width stems only accept a single optional option");
i.options[0].replace(kr, (function(e, n, r, i, o, a) {
if (n) t.minimumIntegerDigits = r.length;
else {
if (i && o) throw new Error("We currently do not support maximum integer digits");
if (a) throw new Error("We currently do not support exact integer digits")
}
return ""
}));
continue
}
if (Cr.test(i.stem)) t.minimumIntegerDigits = i.stem.length;
else if (wr.test(i.stem)) {
if (i.options.length > 1) throw new RangeError("Fraction-precision stems only accept a single optional option");
i.stem.replace(wr, (function(e, n, r, i, o, a) {
return "*" === r ? t.minimumFractionDigits = n.length : i && "#" === i[0] ? t.maximumFractionDigits = i.length : o && a ? (t.minimumFractionDigits = o.length, t.maximumFractionDigits = o.length + a.length) : (t
.minimumFractionDigits = n.length, t.maximumFractionDigits = n.length), ""
}));
var o = i.options[0];
"w" === o ? t = se(se({}, t), {
trailingZeroDisplay: "stripIfInteger"
}) : o && (t = se(se({}, t), Sr(o)))
} else if (xr.test(i.stem)) t = se(se({}, t), Sr(i.stem));
else {
var a = Er(i.stem);
a && (t = se(se({}, t), a));
var s = Tr(i.stem);
s && (t = se(se({}, t), s))
}
}
return t
}
var Pr, Mr = {
AX: ["H"],
BQ: ["H"],
CP: ["H"],
CZ: ["H"],
DK: ["H"],
FI: ["H"],
ID: ["H"],
IS: ["H"],
ML: ["H"],
NE: ["H"],
RU: ["H"],
SE: ["H"],
SJ: ["H"],
SK: ["H"],
AS: ["h", "H"],
BT: ["h", "H"],
DJ: ["h", "H"],
ER: ["h", "H"],
GH: ["h", "H"],
IN: ["h", "H"],
LS: ["h", "H"],
PG: ["h", "H"],
PW: ["h", "H"],
SO: ["h", "H"],
TO: ["h", "H"],
VU: ["h", "H"],
WS: ["h", "H"],
"001": ["H", "h"],
AL: ["h", "H", "hB"],
TD: ["h", "H", "hB"],
"ca-ES": ["H", "h", "hB"],
CF: ["H", "h", "hB"],
CM: ["H", "h", "hB"],
"fr-CA": ["H", "h", "hB"],
"gl-ES": ["H", "h", "hB"],
"it-CH": ["H", "h", "hB"],
"it-IT": ["H", "h", "hB"],
LU: ["H", "h", "hB"],
NP: ["H", "h", "hB"],
PF: ["H", "h", "hB"],
SC: ["H", "h", "hB"],
SM: ["H", "h", "hB"],
SN: ["H", "h", "hB"],
TF: ["H", "h", "hB"],
VA: ["H", "h", "hB"],
CY: ["h", "H", "hb", "hB"],
GR: ["h", "H", "hb", "hB"],
CO: ["h", "H", "hB", "hb"],
DO: ["h", "H", "hB", "hb"],
KP: ["h", "H", "hB", "hb"],
KR: ["h", "H", "hB", "hb"],
NA: ["h", "H", "hB", "hb"],
PA: ["h", "H", "hB", "hb"],
PR: ["h", "H", "hB", "hb"],
VE: ["h", "H", "hB", "hb"],
AC: ["H", "h", "hb", "hB"],
AI: ["H", "h", "hb", "hB"],
BW: ["H", "h", "hb", "hB"],
BZ: ["H", "h", "hb", "hB"],
CC: ["H", "h", "hb", "hB"],
CK: ["H", "h", "hb", "hB"],
CX: ["H", "h", "hb", "hB"],
DG: ["H", "h", "hb", "hB"],
FK: ["H", "h", "hb", "hB"],
GB: ["H", "h", "hb", "hB"],
GG: ["H", "h", "hb", "hB"],
GI: ["H", "h", "hb", "hB"],
IE: ["H", "h", "hb", "hB"],
IM: ["H", "h", "hb", "hB"],
IO: ["H", "h", "hb", "hB"],
JE: ["H", "h", "hb", "hB"],
LT: ["H", "h", "hb", "hB"],
MK: ["H", "h", "hb", "hB"],
MN: ["H", "h", "hb", "hB"],
MS: ["H", "h", "hb", "hB"],
NF: ["H", "h", "hb", "hB"],
NG: ["H", "h", "hb", "hB"],
NR: ["H", "h", "hb", "hB"],
NU: ["H", "h", "hb", "hB"],
PN: ["H", "h", "hb", "hB"],
SH: ["H", "h", "hb", "hB"],
SX: ["H", "h", "hb", "hB"],
TA: ["H", "h", "hb", "hB"],
ZA: ["H", "h", "hb", "hB"],
"af-ZA": ["H", "h", "hB", "hb"],
AR: ["H", "h", "hB", "hb"],
CL: ["H", "h", "hB", "hb"],
CR: ["H", "h", "hB", "hb"],
CU: ["H", "h", "hB", "hb"],
EA: ["H", "h", "hB", "hb"],
"es-BO": ["H", "h", "hB", "hb"],
"es-BR": ["H", "h", "hB", "hb"],
"es-EC": ["H", "h", "hB", "hb"],
"es-ES": ["H", "h", "hB", "hb"],
"es-GQ": ["H", "h", "hB", "hb"],
"es-PE": ["H", "h", "hB", "hb"],
GT: ["H", "h", "hB", "hb"],
HN: ["H", "h", "hB", "hb"],
IC: ["H", "h", "hB", "hb"],
KG: ["H", "h", "hB", "hb"],
KM: ["H", "h", "hB", "hb"],
LK: ["H", "h", "hB", "hb"],
MA: ["H", "h", "hB", "hb"],
MX: ["H", "h", "hB", "hb"],
NI: ["H", "h", "hB", "hb"],
PY: ["H", "h", "hB", "hb"],
SV: ["H", "h", "hB", "hb"],
UY: ["H", "h", "hB", "hb"],
JP: ["H", "h", "K"],
AD: ["H", "hB"],
AM: ["H", "hB"],
AO: ["H", "hB"],
AT: ["H", "hB"],
AW: ["H", "hB"],
BE: ["H", "hB"],
BF: ["H", "hB"],
BJ: ["H", "hB"],
BL: ["H", "hB"],
BR: ["H", "hB"],
CG: ["H", "hB"],
CI: ["H", "hB"],
CV: ["H", "hB"],
DE: ["H", "hB"],
EE: ["H", "hB"],
FR: ["H", "hB"],
GA: ["H", "hB"],
GF: ["H", "hB"],
GN: ["H", "hB"],
GP: ["H", "hB"],
GW: ["H", "hB"],
HR: ["H", "hB"],
IL: ["H", "hB"],
IT: ["H", "hB"],
KZ: ["H", "hB"],
MC: ["H", "hB"],
MD: ["H", "hB"],
MF: ["H", "hB"],
MQ: ["H", "hB"],
MZ: ["H", "hB"],
NC: ["H", "hB"],
NL: ["H", "hB"],
PM: ["H", "hB"],
PT: ["H", "hB"],
RE: ["H", "hB"],
RO: ["H", "hB"],
SI: ["H", "hB"],
SR: ["H", "hB"],
ST: ["H", "hB"],
TG: ["H", "hB"],
TR: ["H", "hB"],
WF: ["H", "hB"],
YT: ["H", "hB"],
BD: ["h", "hB", "H"],
PK: ["h", "hB", "H"],
AZ: ["H", "hB", "h"],
BA: ["H", "hB", "h"],
BG: ["H", "hB", "h"],
CH: ["H", "hB", "h"],
GE: ["H", "hB", "h"],
LI: ["H", "hB", "h"],
ME: ["H", "hB", "h"],
RS: ["H", "hB", "h"],
UA: ["H", "hB", "h"],
UZ: ["H", "hB", "h"],
XK: ["H", "hB", "h"],
AG: ["h", "hb", "H", "hB"],
AU: ["h", "hb", "H", "hB"],
BB: ["h", "hb", "H", "hB"],
BM: ["h", "hb", "H", "hB"],
BS: ["h", "hb", "H", "hB"],
CA: ["h", "hb", "H", "hB"],
DM: ["h", "hb", "H", "hB"],
"en-001": ["h", "hb", "H", "hB"],
FJ: ["h", "hb", "H", "hB"],
FM: ["h", "hb", "H", "hB"],
GD: ["h", "hb", "H", "hB"],
GM: ["h", "hb", "H", "hB"],
GU: ["h", "hb", "H", "hB"],
GY: ["h", "hb", "H", "hB"],
JM: ["h", "hb", "H", "hB"],
KI: ["h", "hb", "H", "hB"],
KN: ["h", "hb", "H", "hB"],
KY: ["h", "hb", "H", "hB"],
LC: ["h", "hb", "H", "hB"],
LR: ["h", "hb", "H", "hB"],
MH: ["h", "hb", "H", "hB"],
MP: ["h", "hb", "H", "hB"],
MW: ["h", "hb", "H", "hB"],
NZ: ["h", "hb", "H", "hB"],
SB: ["h", "hb", "H", "hB"],
SG: ["h", "hb", "H", "hB"],
SL: ["h", "hb", "H", "hB"],
SS: ["h", "hb", "H", "hB"],
SZ: ["h", "hb", "H", "hB"],
TC: ["h", "hb", "H", "hB"],
TT: ["h", "hb", "H", "hB"],
UM: ["h", "hb", "H", "hB"],
US: ["h", "hb", "H", "hB"],
VC: ["h", "hb", "H", "hB"],
VG: ["h", "hb", "H", "hB"],
VI: ["h", "hb", "H", "hB"],
ZM: ["h", "hb", "H", "hB"],
BO: ["H", "hB", "h", "hb"],
EC: ["H", "hB", "h", "hb"],
ES: ["H", "hB", "h", "hb"],
GQ: ["H", "hB", "h", "hb"],
PE: ["H", "hB", "h", "hb"],
AE: ["h", "hB", "hb", "H"],
"ar-001": ["h", "hB", "hb", "H"],
BH: ["h", "hB", "hb", "H"],
DZ: ["h", "hB", "hb", "H"],
EG: ["h", "hB", "hb", "H"],
EH: ["h", "hB", "hb", "H"],
HK: ["h", "hB", "hb", "H"],
IQ: ["h", "hB", "hb", "H"],
JO: ["h", "hB", "hb", "H"],
KW: ["h", "hB", "hb", "H"],
LB: ["h", "hB", "hb", "H"],
LY: ["h", "hB", "hb", "H"],
MO: ["h", "hB", "hb", "H"],
MR: ["h", "hB", "hb", "H"],
OM: ["h", "hB", "hb", "H"],
PH: ["h", "hB", "hb", "H"],
PS: ["h", "hB", "hb", "H"],
QA: ["h", "hB", "hb", "H"],
SA: ["h", "hB", "hb", "H"],
SD: ["h", "hB", "hb", "H"],
SY: ["h", "hB", "hb", "H"],
TN: ["h", "hB", "hb", "H"],
YE: ["h", "hB", "hb", "H"],
AF: ["H", "hb", "hB", "h"],
LA: ["H", "hb", "hB", "h"],
CN: ["H", "hB", "hb", "h"],
LV: ["H", "hB", "hb", "h"],
TL: ["H", "hB", "hb", "h"],
"zu-ZA": ["H", "hB", "hb", "h"],
CD: ["hB", "H"],
IR: ["hB", "H"],
"hi-IN": ["hB", "h", "H"],
"kn-IN": ["hB", "h", "H"],
"ml-IN": ["hB", "h", "H"],
"te-IN": ["hB", "h", "H"],
KH: ["hB", "h", "H", "hb"],
"ta-IN": ["hB", "h", "hb", "H"],
BN: ["hb", "hB", "h", "H"],
MY: ["hb", "hB", "h", "H"],
ET: ["hB", "hb", "h", "H"],
"gu-IN": ["hB", "hb", "h", "H"],
"mr-IN": ["hB", "hb", "h", "H"],
"pa-IN": ["hB", "hb", "h", "H"],
TW: ["hB", "hb", "h", "H"],
KE: ["hB", "hb", "H", "h"],
MM: ["hB", "hb", "H", "h"],
TZ: ["hB", "hb", "H", "h"],
UG: ["hB", "hb", "H", "h"]
};
function Dr(e) {
var t = e.hourCycle;
if (void 0 === t && e.hourCycles && e.hourCycles.length && (t = e.hourCycles[0]), t) switch (t) {
case "h24":
return "k";
case "h23":
return "H";
case "h12":
return "h";
case "h11":
return "K";
default:
throw new Error("Invalid hourCycle")
}
var n, r = e.language;
return "root" !== r && (n = e.maximize().region), (Mr[n || ""] || Mr[r || ""] || Mr["".concat(r, "-001")] || Mr["001"])[0]
}
var Ir = new RegExp("^".concat(vr.source, "*")),
Nr = new RegExp("".concat(vr.source, "*$"));
function Rr(e, t) {
return {
start: e,
end: t
}
}
var jr = !!String.prototype.startsWith,
Lr = !!String.fromCodePoint,
Fr = !!Object.fromEntries,
Br = !!String.prototype.codePointAt,
zr = !!String.prototype.trimStart,
Hr = !!String.prototype.trimEnd,
Ur = !!Number.isSafeInteger ? Number.isSafeInteger : function(e) {
return "number" == typeof e && isFinite(e) && Math.floor(e) === e && Math.abs(e) <= 9007199254740991
},
Wr = !0;
try {
Wr = "a" === (null === (Pr = Zr("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu").exec("a")) || void 0 === Pr ? void 0 : Pr[0])
} catch (mS) {
Wr = !1
}
var Vr, Xr = jr ? function(e, t, n) {
return e.startsWith(t, n)
} : function(e, t, n) {
return e.slice(n, n + t.length) === t
},
Gr = Lr ? String.fromCodePoint : function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
for (var n, r = "", i = e.length, o = 0; i > o;) {
if ((n = e[o++]) > 1114111) throw RangeError(n + " is not a valid code point");
r += n < 65536 ? String.fromCharCode(n) : String.fromCharCode(55296 + ((n -= 65536) >> 10), n % 1024 + 56320)
}
return r
},
Yr = Fr ? Object.fromEntries : function(e) {
for (var t = {}, n = 0, r = e; n < r.length; n++) {
var i = r[n],
o = i[0],
a = i[1];
t[o] = a
}
return t
},
qr = Br ? function(e, t) {
return e.codePointAt(t)
} : function(e, t) {
var n = e.length;
if (!(t < 0 || t >= n)) {
var r, i = e.charCodeAt(t);
return i < 55296 || i > 56319 || t + 1 === n || (r = e.charCodeAt(t + 1)) < 56320 || r > 57343 ? i : r - 56320 + (i - 55296 << 10) + 65536
}
},
Kr = zr ? function(e) {
return e.trimStart()
} : function(e) {
return e.replace(Ir, "")
},
$r = Hr ? function(e) {
return e.trimEnd()
} : function(e) {
return e.replace(Nr, "")
};
function Zr(e, t) {
return new RegExp(e, t)
}
if (Wr) {
var Jr = Zr("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu");
Vr = function(e, t) {
var n;
return Jr.lastIndex = t, null !== (n = Jr.exec(e)[1]) && void 0 !== n ? n : ""
}
} else Vr = function(e, t) {
for (var n = [];;) {
var r = qr(e, t);
if (void 0 === r || ni(r) || ri(r)) break;
n.push(r), t += r >= 65536 ? 2 : 1
}
return Gr.apply(void 0, n)
};
var Qr = function() {
function e(e, t) {
void 0 === t && (t = {}), this.message = e, this.position = {
offset: 0,
line: 1,
column: 1
}, this.ignoreTag = !!t.ignoreTag, this.locale = t.locale, this.requiresOtherClause = !!t.requiresOtherClause, this.shouldParseSkeletons = !!t.shouldParseSkeletons
}
return e.prototype.parse = function() {
if (0 !== this.offset()) throw Error("parser can only be used once");
return this.parseMessage(0, "", !1)
}, e.prototype.parseMessage = function(e, t, n) {
for (var r = []; !this.isEOF();) {
var i = this.char();
if (123 === i) {
if ((o = this.parseArgument(e, n)).err) return o;
r.push(o.val)
} else {
if (125 === i && e > 0) break;
if (35 !== i || "plural" !== t && "selectordinal" !== t) {
if (60 === i && !this.ignoreTag && 47 === this.peek()) {
if (n) break;
return this.error(Mn.UNMATCHED_CLOSING_TAG, Rr(this.clonePosition(), this.clonePosition()))
}
if (60 === i && !this.ignoreTag && ei(this.peek() || 0)) {
if ((o = this.parseTag(e, t)).err) return o;
r.push(o.val)
} else {
var o;
if ((o = this.parseLiteral(e, t)).err) return o;
r.push(o.val)
}
} else {
var a = this.clonePosition();
this.bump(), r.push({
type: Dn.pound,
location: Rr(a, this.clonePosition())
})
}
}
}
return {
val: r,
err: null
}
}, e.prototype.parseTag = function(e, t) {
var n = this.clonePosition();
this.bump();
var r = this.parseTagName();
if (this.bumpSpace(), this.bumpIf("/>")) return {
val: {
type: Dn.literal,
value: "<".concat(r, "/>"),
location: Rr(n, this.clonePosition())
},
err: null
};
if (this.bumpIf(">")) {
var i = this.parseMessage(e + 1, t, !0);
if (i.err) return i;
var o = i.val,
a = this.clonePosition();
if (this.bumpIf("</")) {
if (this.isEOF() || !ei(this.char())) return this.error(Mn.INVALID_TAG, Rr(a, this.clonePosition()));
var s = this.clonePosition();
return r !== this.parseTagName() ? this.error(Mn.UNMATCHED_CLOSING_TAG, Rr(s, this.clonePosition())) : (this.bumpSpace(), this.bumpIf(">") ? {
val: {
type: Dn.tag,
value: r,
children: o,
location: Rr(n, this.clonePosition())
},
err: null
} : this.error(Mn.INVALID_TAG, Rr(a, this.clonePosition())))
}
return this.error(Mn.UNCLOSED_TAG, Rr(n, this.clonePosition()))
}
return this.error(Mn.INVALID_TAG, Rr(n, this.clonePosition()))
}, e.prototype.parseTagName = function() {
var e = this.offset();
for (this.bump(); !this.isEOF() && ti(this.char());) this.bump();
return this.message.slice(e, this.offset())
}, e.prototype.parseLiteral = function(e, t) {
for (var n = this.clonePosition(), r = "";;) {
var i = this.tryParseQuote(t);
if (i) r += i;
else {
var o = this.tryParseUnquoted(e, t);
if (o) r += o;
else {
var a = this.tryParseLeftAngleBracket();
if (!a) break;
r += a
}
}
}
var s = Rr(n, this.clonePosition());
return {
val: {
type: Dn.literal,
value: r,
location: s
},
err: null
}
}, e.prototype.tryParseLeftAngleBracket = function() {
return this.isEOF() || 60 !== this.char() || !this.ignoreTag && (ei(e = this.peek() || 0) || 47 === e) ? null : (this.bump(), "<");
var e
}, e.prototype.tryParseQuote = function(e) {
if (this.isEOF() || 39 !== this.char()) return null;
switch (this.peek()) {
case 39:
return this.bump(), this.bump(), "'";
case 123:
case 60:
case 62:
case 125:
break;
case 35:
if ("plural" === e || "selectordinal" === e) break;
return null;
default:
return null
}
this.bump();
var t = [this.char()];
for (this.bump(); !this.isEOF();) {
var n = this.char();
if (39 === n) {
if (39 !== this.peek()) {
this.bump();
break
}
t.push(39), this.bump()
} else t.push(n);
this.bump()
}
return Gr.apply(void 0, t)
}, e.prototype.tryParseUnquoted = function(e, t) {
if (this.isEOF()) return null;
var n = this.char();
return 60 === n || 123 === n || 35 === n && ("plural" === t || "selectordinal" === t) || 125 === n && e > 0 ? null : (this.bump(), Gr(n))
}, e.prototype.parseArgument = function(e, t) {
var n = this.clonePosition();
if (this.bump(), this.bumpSpace(), this.isEOF()) return this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(n, this.clonePosition()));
if (125 === this.char()) return this.bump(), this.error(Mn.EMPTY_ARGUMENT, Rr(n, this.clonePosition()));
var r = this.parseIdentifierIfPossible().value;
if (!r) return this.error(Mn.MALFORMED_ARGUMENT, Rr(n, this.clonePosition()));
if (this.bumpSpace(), this.isEOF()) return this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(n, this.clonePosition()));
switch (this.char()) {
case 125:
return this.bump(), {
val: {
type: Dn.argument,
value: r,
location: Rr(n, this.clonePosition())
},
err: null
};
case 44:
return this.bump(), this.bumpSpace(), this.isEOF() ? this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(n, this.clonePosition())) : this.parseArgumentOptions(e, t, r, n);
default:
return this.error(Mn.MALFORMED_ARGUMENT, Rr(n, this.clonePosition()))
}
}, e.prototype.parseIdentifierIfPossible = function() {
var e = this.clonePosition(),
t = this.offset(),
n = Vr(this.message, t),
r = t + n.length;
return this.bumpTo(r), {
value: n,
location: Rr(e, this.clonePosition())
}
}, e.prototype.parseArgumentOptions = function(e, t, n, r) {
var i, o = this.clonePosition(),
a = this.parseIdentifierIfPossible().value,
s = this.clonePosition();
switch (a) {
case "":
return this.error(Mn.EXPECT_ARGUMENT_TYPE, Rr(o, s));
case "number":
case "date":
case "time":
this.bumpSpace();
var l = null;
if (this.bumpIf(",")) {
this.bumpSpace();
var c = this.clonePosition();
if ((v = this.parseSimpleArgStyleIfPossible()).err) return v;
if (0 === (d = $r(v.val)).length) return this.error(Mn.EXPECT_ARGUMENT_STYLE, Rr(this.clonePosition(), this.clonePosition()));
l = {
style: d,
styleLocation: Rr(c, this.clonePosition())
}
}
if ((_ = this.tryParseArgumentClose(r)).err) return _;
var u = Rr(r, this.clonePosition());
if (l && Xr(null == l ? void 0 : l.style, "::", 0)) {
var h = Kr(l.style.slice(2));
if ("number" === a) return (v = this.parseNumberSkeletonFromString(h, l.styleLocation)).err ? v : {
val: {
type: Dn.number,
value: n,
location: u,
style: v.val
},
err: null
};
if (0 === h.length) return this.error(Mn.EXPECT_DATE_TIME_SKELETON, u);
var p = h;
this.locale && (p = function(e, t) {
for (var n = "", r = 0; r < e.length; r++) {
var i = e.charAt(r);
if ("j" === i) {
for (var o = 0; r + 1 < e.length && e.charAt(r + 1) === i;) o++, r++;
var a = 1 + (1 & o),
s = o < 2 ? 1 : 3 + (o >> 1),
l = Dr(t);
for ("H" != l && "k" != l || (s = 0); s-- > 0;) n += "a";
for (; a-- > 0;) n = l + n
} else n += "J" === i ? "H" : i
}
return n
}(h, this.locale));
var d = {
type: In.dateTime,
pattern: p,
location: l.styleLocation,
parsedOptions: this.shouldParseSkeletons ? br(p) : {}
};
return {
val: {
type: "date" === a ? Dn.date : Dn.time,
value: n,
location: u,
style: d
},
err: null
}
}
return {
val: {
type: "number" === a ? Dn.number : "date" === a ? Dn.date : Dn.time,
value: n,
location: u,
style: null !== (i = null == l ? void 0 : l.style) && void 0 !== i ? i : null
}, err: null
};
case "plural":
case "selectordinal":
case "select":
var f = this.clonePosition();
if (this.bumpSpace(), !this.bumpIf(",")) return this.error(Mn.EXPECT_SELECT_ARGUMENT_OPTIONS, Rr(f, se({}, f)));
this.bumpSpace();
var g = this.parseIdentifierIfPossible(),
m = 0;
if ("select" !== a && "offset" === g.value) {
if (!this.bumpIf(":")) return this.error(Mn.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, Rr(this.clonePosition(), this.clonePosition()));
var v;
if (this.bumpSpace(), (v = this.tryParseDecimalInteger(Mn.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, Mn.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE)).err) return v;
this.bumpSpace(), g = this.parseIdentifierIfPossible(), m = v.val
}
var _, b = this.tryParsePluralOrSelectOptions(e, a, t, g);
if (b.err) return b;
if ((_ = this.tryParseArgumentClose(r)).err) return _;
var y = Rr(r, this.clonePosition());
return "select" === a ? {
val: {
type: Dn.select,
value: n,
options: Yr(b.val),
location: y
},
err: null
} : {
val: {
type: Dn.plural,
value: n,
options: Yr(b.val),
offset: m,
pluralType: "plural" === a ? "cardinal" : "ordinal",
location: y
},
err: null
};
default:
return this.error(Mn.INVALID_ARGUMENT_TYPE, Rr(o, s))
}
}, e.prototype.tryParseArgumentClose = function(e) {
return this.isEOF() || 125 !== this.char() ? this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(e, this.clonePosition())) : (this.bump(), {
val: !0,
err: null
})
}, e.prototype.parseSimpleArgStyleIfPossible = function() {
for (var e = 0, t = this.clonePosition(); !this.isEOF();) {
switch (this.char()) {
case 39:
this.bump();
var n = this.clonePosition();
if (!this.bumpUntil("'")) return this.error(Mn.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, Rr(n, this.clonePosition()));
this.bump();
break;
case 123:
e += 1, this.bump();
break;
case 125:
if (!(e > 0)) return {
val: this.message.slice(t.offset, this.offset()),
err: null
};
e -= 1;
break;
default:
this.bump()
}
}
return {
val: this.message.slice(t.offset, this.offset()),
err: null
}
}, e.prototype.parseNumberSkeletonFromString = function(e, t) {
var n = [];
try {
n = function(e) {
if (0 === e.length) throw new Error("Number skeleton cannot be empty");
for (var t = e.split(yr).filter((function(e) {
return e.length > 0
})), n = [], r = 0, i = t; r < i.length; r++) {
var o = i[r].split("/");
if (0 === o.length) throw new Error("Invalid number skeleton");
for (var a = o[0], s = o.slice(1), l = 0, c = s; l < c.length; l++)
if (0 === c[l].length) throw new Error("Invalid number skeleton");
n.push({
stem: a,
options: s
})
}
return n
}(e)
} catch (e) {
return this.error(Mn.INVALID_NUMBER_SKELETON, t)
}
return {
val: {
type: In.number,
tokens: n,
location: t,
parsedOptions: this.shouldParseSkeletons ? Ar(n) : {}
},
err: null
}
}, e.prototype.tryParsePluralOrSelectOptions = function(e, t, n, r) {
for (var i, o = !1, a = [], s = new Set, l = r.value, c = r.location;;) {
if (0 === l.length) {
var u = this.clonePosition();
if ("select" === t || !this.bumpIf("=")) break;
var h = this.tryParseDecimalInteger(Mn.EXPECT_PLURAL_ARGUMENT_SELECTOR, Mn.INVALID_PLURAL_ARGUMENT_SELECTOR);
if (h.err) return h;
c = Rr(u, this.clonePosition()), l = this.message.slice(u.offset, this.offset())
}
if (s.has(l)) return this.error("select" === t ? Mn.DUPLICATE_SELECT_ARGUMENT_SELECTOR : Mn.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, c);
"other" === l && (o = !0), this.bumpSpace();
var p = this.clonePosition();
if (!this.bumpIf("{")) return this.error("select" === t ? Mn.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : Mn.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, Rr(this.clonePosition(), this.clonePosition()));
var d = this.parseMessage(e + 1, t, n);
if (d.err) return d;
var f = this.tryParseArgumentClose(p);
if (f.err) return f;
a.push([l, {
value: d.val,
location: Rr(p, this.clonePosition())
}]), s.add(l), this.bumpSpace(), l = (i = this.parseIdentifierIfPossible()).value, c = i.location
}
return 0 === a.length ? this.error("select" === t ? Mn.EXPECT_SELECT_ARGUMENT_SELECTOR : Mn.EXPECT_PLURAL_ARGUMENT_SELECTOR, Rr(this.clonePosition(), this.clonePosition())) : this.requiresOtherClause && !o ? this.error(Mn
.MISSING_OTHER_CLAUSE, Rr(this.clonePosition(), this.clonePosition())) : {
val: a,
err: null
}
}, e.prototype.tryParseDecimalInteger = function(e, t) {
var n = 1,
r = this.clonePosition();
this.bumpIf("+") || this.bumpIf("-") && (n = -1);
for (var i = !1, o = 0; !this.isEOF();) {
var a = this.char();
if (!(a >= 48 && a <= 57)) break;
i = !0, o = 10 * o + (a - 48), this.bump()
}
var s = Rr(r, this.clonePosition());
return i ? Ur(o *= n) ? {
val: o,
err: null
} : this.error(t, s) : this.error(e, s)
}, e.prototype.offset = function() {
return this.position.offset
}, e.prototype.isEOF = function() {
return this.offset() === this.message.length
}, e.prototype.clonePosition = function() {
return {
offset: this.position.offset,
line: this.position.line,
column: this.position.column
}
}, e.prototype.char = function() {
var e = this.position.offset;
if (e >= this.message.length) throw Error("out of bound");
var t = qr(this.message, e);
if (void 0 === t) throw Error("Offset ".concat(e, " is at invalid UTF-16 code unit boundary"));
return t
}, e.prototype.error = function(e, t) {
return {
val: null,
err: {
kind: e,
message: this.message,
location: t
}
}
}, e.prototype.bump = function() {
if (!this.isEOF()) {
var e = this.char();
10 === e ? (this.position.line += 1, this.position.column = 1, this.position.offset += 1) : (this.position.column += 1, this.position.offset += e < 65536 ? 1 : 2)
}
}, e.prototype.bumpIf = function(e) {
if (Xr(this.message, e, this.offset())) {
for (var t = 0; t < e.length; t++) this.bump();
return !0
}
return !1
}, e.prototype.bumpUntil = function(e) {
var t = this.offset(),
n = this.message.indexOf(e, t);
return n >= 0 ? (this.bumpTo(n), !0) : (this.bumpTo(this.message.length), !1)
}, e.prototype.bumpTo = function(e) {
if (this.offset() > e) throw Error("targetOffset ".concat(e, " must be greater than or equal to the current offset ").concat(this.offset()));
for (e = Math.min(e, this.message.length);;) {
var t = this.offset();
if (t === e) break;
if (t > e) throw Error("targetOffset ".concat(e, " is at invalid UTF-16 code unit boundary"));
if (this.bump(), this.isEOF()) break
}
}, e.prototype.bumpSpace = function() {
for (; !this.isEOF() && ni(this.char());) this.bump()
}, e.prototype.peek = function() {
if (this.isEOF()) return null;
var e = this.char(),
t = this.offset(),
n = this.message.charCodeAt(t + (e >= 65536 ? 2 : 1));
return null != n ? n : null
}, e
}();
function ei(e) {
return e >= 97 && e <= 122 || e >= 65 && e <= 90
}
function ti(e) {
return 45 === e || 46 === e || e >= 48 && e <= 57 || 95 === e || e >= 97 && e <= 122 || e >= 65 && e <= 90 || 183 == e || e >= 192 && e <= 214 || e >= 216 && e <= 246 || e >= 248 && e <= 893 || e >= 895 && e <= 8191 || e >= 8204 && e <=
8205 || e >= 8255 && e <= 8256 || e >= 8304 && e <= 8591 || e >= 11264 && e <= 12271 || e >= 12289 && e <= 55295 || e >= 63744 && e <= 64975 || e >= 65008 && e <= 65533 || e >= 65536 && e <= 983039
}
function ni(e) {
return e >= 9 && e <= 13 || 32 === e || 133 === e || e >= 8206 && e <= 8207 || 8232 === e || 8233 === e
}
function ri(e) {
return e >= 33 && e <= 35 || 36 === e || e >= 37 && e <= 39 || 40 === e || 41 === e || 42 === e || 43 === e || 44 === e || 45 === e || e >= 46 && e <= 47 || e >= 58 && e <= 59 || e >= 60 && e <= 62 || e >= 63 && e <= 64 || 91 === e ||
92 === e || 93 === e || 94 === e || 96 === e || 123 === e || 124 === e || 125 === e || 126 === e || 161 === e || e >= 162 && e <= 165 || 166 === e || 167 === e || 169 === e || 171 === e || 172 === e || 174 === e || 176 === e ||
177 === e || 182 === e || 187 === e || 191 === e || 215 === e || 247 === e || e >= 8208 && e <= 8213 || e >= 8214 && e <= 8215 || 8216 === e || 8217 === e || 8218 === e || e >= 8219 && e <= 8220 || 8221 === e || 8222 === e || 8223 ===
e || e >= 8224 && e <= 8231 || e >= 8240 && e <= 8248 || 8249 === e || 8250 === e || e >= 8251 && e <= 8254 || e >= 8257 && e <= 8259 || 8260 === e || 8261 === e || 8262 === e || e >= 8263 && e <= 8273 || 8274 === e || 8275 === e ||
e >= 8277 && e <= 8286 || e >= 8592 && e <= 8596 || e >= 8597 && e <= 8601 || e >= 8602 && e <= 8603 || e >= 8604 && e <= 8607 || 8608 === e || e >= 8609 && e <= 8610 || 8611 === e || e >= 8612 && e <= 8613 || 8614 === e || e >=
8615 && e <= 8621 || 8622 === e || e >= 8623 && e <= 8653 || e >= 8654 && e <= 8655 || e >= 8656 && e <= 8657 || 8658 === e || 8659 === e || 8660 === e || e >= 8661 && e <= 8691 || e >= 8692 && e <= 8959 || e >= 8960 && e <= 8967 ||
8968 === e || 8969 === e || 8970 === e || 8971 === e || e >= 8972 && e <= 8991 || e >= 8992 && e <= 8993 || e >= 8994 && e <= 9e3 || 9001 === e || 9002 === e || e >= 9003 && e <= 9083 || 9084 === e || e >= 9085 && e <= 9114 || e >=
9115 && e <= 9139 || e >= 9140 && e <= 9179 || e >= 9180 && e <= 9185 || e >= 9186 && e <= 9254 || e >= 9255 && e <= 9279 || e >= 9280 && e <= 9290 || e >= 9291 && e <= 9311 || e >= 9472 && e <= 9654 || 9655 === e || e >= 9656 && e <=
9664 || 9665 === e || e >= 9666 && e <= 9719 || e >= 9720 && e <= 9727 || e >= 9728 && e <= 9838 || 9839 === e || e >= 9840 && e <= 10087 || 10088 === e || 10089 === e || 10090 === e || 10091 === e || 10092 === e || 10093 === e ||
10094 === e || 10095 === e || 10096 === e || 10097 === e || 10098 === e || 10099 === e || 10100 === e || 10101 === e || e >= 10132 && e <= 10175 || e >= 10176 && e <= 10180 || 10181 === e || 10182 === e || e >= 10183 && e <= 10213 ||
10214 === e || 10215 === e || 10216 === e || 10217 === e || 10218 === e || 10219 === e || 10220 === e || 10221 === e || 10222 === e || 10223 === e || e >= 10224 && e <= 10239 || e >= 10240 && e <= 10495 || e >= 10496 && e <= 10626 ||
10627 === e || 10628 === e || 10629 === e || 10630 === e || 10631 === e || 10632 === e || 10633 === e || 10634 === e || 10635 === e || 10636 === e || 10637 === e || 10638 === e || 10639 === e || 10640 === e || 10641 === e || 10642 ===
e || 10643 === e || 10644 === e || 10645 === e || 10646 === e || 10647 === e || 10648 === e || e >= 10649 && e <= 10711 || 10712 === e || 10713 === e || 10714 === e || 10715 === e || e >= 10716 && e <= 10747 || 10748 === e ||
10749 === e || e >= 10750 && e <= 11007 || e >= 11008 && e <= 11055 || e >= 11056 && e <= 11076 || e >= 11077 && e <= 11078 || e >= 11079 && e <= 11084 || e >= 11085 && e <= 11123 || e >= 11124 && e <= 11125 || e >= 11126 && e <=
11157 || 11158 === e || e >= 11159 && e <= 11263 || e >= 11776 && e <= 11777 || 11778 === e || 11779 === e || 11780 === e || 11781 === e || e >= 11782 && e <= 11784 || 11785 === e || 11786 === e || 11787 === e || 11788 === e ||
11789 === e || e >= 11790 && e <= 11798 || 11799 === e || e >= 11800 && e <= 11801 || 11802 === e || 11803 === e || 11804 === e || 11805 === e || e >= 11806 && e <= 11807 || 11808 === e || 11809 === e || 11810 === e || 11811 === e ||
11812 === e || 11813 === e || 11814 === e || 11815 === e || 11816 === e || 11817 === e || e >= 11818 && e <= 11822 || 11823 === e || e >= 11824 && e <= 11833 || e >= 11834 && e <= 11835 || e >= 11836 && e <= 11839 || 11840 === e ||
11841 === e || 11842 === e || e >= 11843 && e <= 11855 || e >= 11856 && e <= 11857 || 11858 === e || e >= 11859 && e <= 11903 || e >= 12289 && e <= 12291 || 12296 === e || 12297 === e || 12298 === e || 12299 === e || 12300 === e ||
12301 === e || 12302 === e || 12303 === e || 12304 === e || 12305 === e || e >= 12306 && e <= 12307 || 12308 === e || 12309 === e || 12310 === e || 12311 === e || 12312 === e || 12313 === e || 12314 === e || 12315 === e || 12316 ===
e || 12317 === e || e >= 12318 && e <= 12319 || 12320 === e || 12336 === e || 64830 === e || 64831 === e || e >= 65093 && e <= 65094
}
function ii(e) {
e.forEach((function(e) {
if (delete e.location, hr(e) || pr(e))
for (var t in e.options) delete e.options[t].location, ii(e.options[t].value);
else lr(e) && gr(e.style) || (cr(e) || ur(e)) && mr(e.style) ? delete e.style.location : fr(e) && ii(e.children)
}))
}
function oi(e, t) {
void 0 === t && (t = {}), t = se({
shouldParseSkeletons: !0,
requiresOtherClause: !0
}, t);
var n = new Qr(e, t).parse();
if (n.err) {
var r = SyntaxError(Mn[n.err.kind]);
throw r.location = n.err.location, r.originalMessage = n.err.message, r
}
return (null == t ? void 0 : t.captureLocation) || ii(n.val), n.val
}
function ai(e, t) {
var n = t && t.cache ? t.cache : fi,
r = t && t.serializer ? t.serializer : hi;
return (t && t.strategy ? t.strategy : ui)(e, {
cache: n,
serializer: r
})
}
function si(e, t, n, r) {
var i, o = null == (i = r) || "number" == typeof i || "boolean" == typeof i ? r : n(r),
a = t.get(o);
return void 0 === a && (a = e.call(this, r), t.set(o, a)), a
}
function li(e, t, n) {
var r = Array.prototype.slice.call(arguments, 3),
i = n(r),
o = t.get(i);
return void 0 === o && (o = e.apply(this, r), t.set(i, o)), o
}
function ci(e, t, n, r, i) {
return n.bind(t, e, r, i)
}
function ui(e, t) {
return ci(e, this, 1 === e.length ? si : li, t.cache.create(), t.serializer)
}
var hi = function() {
return JSON.stringify(arguments)
};
function pi() {
this.cache = Object.create(null)
}
pi.prototype.get = function(e) {
return this.cache[e]
}, pi.prototype.set = function(e, t) {
this.cache[e] = t
};
var di, fi = {
create: function() {
return new pi
}
},
gi = {
variadic: function(e, t) {
return ci(e, this, li, t.cache.create(), t.serializer)
},
monadic: function(e, t) {
return ci(e, this, si, t.cache.create(), t.serializer)
}
};
! function(e) {
e.MISSING_VALUE = "MISSING_VALUE", e.INVALID_VALUE = "INVALID_VALUE", e.MISSING_INTL_API = "MISSING_INTL_API"
}(di || (di = {}));
var mi, vi = function(e) {
function t(t, n, r) {
var i = e.call(this, t) || this;
return i.code = n, i.originalMessage = r, i
}
return ae(t, e), t.prototype.toString = function() {
return "[formatjs Error: ".concat(this.code, "] ").concat(this.message)
}, t
}(Error),
_i = function(e) {
function t(t, n, r, i) {
return e.call(this, 'Invalid values for "'.concat(t, '": "').concat(n, '". Options are "').concat(Object.keys(r).join('", "'), '"'), di.INVALID_VALUE, i) || this
}
return ae(t, e), t
}(vi),
bi = function(e) {
function t(t, n, r) {
return e.call(this, 'Value for "'.concat(t, '" must be of type ').concat(n), di.INVALID_VALUE, r) || this
}
return ae(t, e), t
}(vi),
yi = function(e) {
function t(t, n) {
return e.call(this, 'The intl string context variable "'.concat(t, '" was not provided to the string "').concat(n, '"'), di.MISSING_VALUE, n) || this
}
return ae(t, e), t
}(vi);
function wi(e) {
return "function" == typeof e
}
function xi(e, t, n, r, i, o, a) {
if (1 === e.length && ar(e[0])) return [{
type: mi.literal,
value: e[0].value
}];
for (var s = [], l = 0, c = e; l < c.length; l++) {
var u = c[l];
if (ar(u)) s.push({
type: mi.literal,
value: u.value
});
else if (dr(u)) "number" == typeof o && s.push({
type: mi.literal,
value: n.getNumberFormat(t).format(o)
});
else {
var h = u.value;
if (!i || !(h in i)) throw new yi(h, a);
var p = i[h];
if (sr(u)) p && "string" != typeof p && "number" != typeof p || (p = "string" == typeof p || "number" == typeof p ? String(p) : ""), s.push({
type: "string" == typeof p ? mi.literal : mi.object,
value: p
});
else if (cr(u)) {
var d = "string" == typeof u.style ? r.date[u.style] : mr(u.style) ? u.style.parsedOptions : void 0;
s.push({
type: mi.literal,
value: n.getDateTimeFormat(t, d).format(p)
})
} else if (ur(u)) {
d = "string" == typeof u.style ? r.time[u.style] : mr(u.style) ? u.style.parsedOptions : r.time.medium;
s.push({
type: mi.literal,
value: n.getDateTimeFormat(t, d).format(p)
})
} else if (lr(u)) {
(d = "string" == typeof u.style ? r.number[u.style] : gr(u.style) ? u.style.parsedOptions : void 0) && d.scale && (p *= d.scale || 1), s.push({
type: mi.literal,
value: n.getNumberFormat(t, d).format(p)
})
} else {
if (fr(u)) {
var f = u.children,
g = u.value,
m = i[g];
if (!wi(m)) throw new bi(g, "function", a);
var v = m(xi(f, t, n, r, i, o).map((function(e) {
return e.value
})));
Array.isArray(v) || (v = [v]), s.push.apply(s, v.map((function(e) {
return {
type: "string" == typeof e ? mi.literal : mi.object,
value: e
}
})))
}
if (hr(u)) {
if (!(_ = u.options[p] || u.options.other)) throw new _i(u.value, p, Object.keys(u.options), a);
s.push.apply(s, xi(_.value, t, n, r, i))
} else if (pr(u)) {
var _;
if (!(_ = u.options["=".concat(p)])) {
if (!Intl.PluralRules) throw new vi('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', di.MISSING_INTL_API, a);
var b = n.getPluralRules(t, {
type: u.pluralType
}).select(p - (u.offset || 0));
_ = u.options[b] || u.options.other
}
if (!_) throw new _i(u.value, p, Object.keys(u.options), a);
s.push.apply(s, xi(_.value, t, n, r, i, p - (u.offset || 0)))
} else;
}
}
}
return function(e) {
return e.length < 2 ? e : e.reduce((function(e, t) {
var n = e[e.length - 1];
return n && n.type === mi.literal && t.type === mi.literal ? n.value += t.value : e.push(t), e
}), [])
}(s)
}
function ki(e, t) {
return t ? Object.keys(e).reduce((function(n, r) {
var i, o;
return n[r] = (i = e[r], (o = t[r]) ? se(se(se({}, i || {}), o || {}), Object.keys(i).reduce((function(e, t) {
return e[t] = se(se({}, i[t]), o[t] || {}), e
}), {})) : i), n
}), se({}, e)) : e
}
function Ci(e) {
return {
create: function() {
return {
get: function(t) {
return e[t]
},
set: function(t, n) {
e[t] = n
}
}
}
}
}! function(e) {
e[e.literal = 0] = "literal", e[e.object = 1] = "object"
}(mi || (mi = {}));
var Si, Ei = function() {
function e(t, n, r, i) {
void 0 === n && (n = e.defaultLocale);
var o, a = this;
if (this.formatterCache = {
number: {},
dateTime: {},
pluralRules: {}
}, this.format = function(e) {
var t = a.formatToParts(e);
if (1 === t.length) return t[0].value;
var n = t.reduce((function(e, t) {
return e.length && t.type === mi.literal && "string" == typeof e[e.length - 1] ? e[e.length - 1] += t.value : e.push(t.value), e
}), []);
return n.length <= 1 ? n[0] || "" : n
}, this.formatToParts = function(e) {
return xi(a.ast, a.locales, a.formatters, a.formats, e, void 0, a.message)
}, this.resolvedOptions = function() {
var e;
return {
locale: (null === (e = a.resolvedLocale) || void 0 === e ? void 0 : e.toString()) || Intl.NumberFormat.supportedLocalesOf(a.locales)[0]
}
}, this.getAst = function() {
return a.ast
}, this.locales = n, this.resolvedLocale = e.resolveLocale(n), "string" == typeof t) {
if (this.message = t, !e.__parse) throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");
var s = le(i || {}, ["formatters"]);
this.ast = e.__parse(t, se(se({}, s), {
locale: this.resolvedLocale
}))
} else this.ast = t;
if (!Array.isArray(this.ast)) throw new TypeError("A message must be provided as a String or AST.");
this.formats = ki(e.formats, r), this.formatters = i && i.formatters || (void 0 === (o = this.formatterCache) && (o = {
number: {},
dateTime: {},
pluralRules: {}
}), {
getNumberFormat: ai((function() {
for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return new((e = Intl.NumberFormat).bind.apply(e, pe([void 0], t, !1)))
}), {
cache: Ci(o.number),
strategy: gi.variadic
}),
getDateTimeFormat: ai((function() {
for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return new((e = Intl.DateTimeFormat).bind.apply(e, pe([void 0], t, !1)))
}), {
cache: Ci(o.dateTime),
strategy: gi.variadic
}),
getPluralRules: ai((function() {
for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return new((e = Intl.PluralRules).bind.apply(e, pe([void 0], t, !1)))
}), {
cache: Ci(o.pluralRules),
strategy: gi.variadic
})
})
}
return Object.defineProperty(e, "defaultLocale", {
get: function() {
return e.memoizedDefaultLocale || (e.memoizedDefaultLocale = (new Intl.NumberFormat).resolvedOptions().locale), e.memoizedDefaultLocale
},
enumerable: !1,
configurable: !0
}), e.memoizedDefaultLocale = null, e.resolveLocale = function(e) {
if (void 0 !== Intl.Locale) {
var t = Intl.NumberFormat.supportedLocalesOf(e);
return t.length > 0 ? new Intl.Locale(t[0]) : new Intl.Locale("string" == typeof e ? e : e[0])
}
}, e.__parse = oi, e.formats = {
number: {
integer: {
maximumFractionDigits: 0
},
currency: {
style: "currency"
},
percent: {
style: "percent"
}
},
date: {
short: {
month: "numeric",
day: "numeric",
year: "2-digit"
},
medium: {
month: "short",
day: "numeric",
year: "numeric"
},
long: {
month: "long",
day: "numeric",
year: "numeric"
},
full: {
weekday: "long",
month: "long",
day: "numeric",
year: "numeric"
}
},
time: {
short: {
hour: "numeric",
minute: "numeric"
},
medium: {
hour: "numeric",
minute: "numeric",
second: "numeric"
},
long: {
hour: "numeric",
minute: "numeric",
second: "numeric",
timeZoneName: "short"
},
full: {
hour: "numeric",
minute: "numeric",
second: "numeric",
timeZoneName: "short"
}
}
}, e
}();
! function(e) {
e.FORMAT_ERROR = "FORMAT_ERROR", e.UNSUPPORTED_FORMATTER = "UNSUPPORTED_FORMATTER", e.INVALID_CONFIG = "INVALID_CONFIG", e.MISSING_DATA = "MISSING_DATA", e.MISSING_TRANSLATION = "MISSING_TRANSLATION"
}(Si || (Si = {}));
var Ti = function(e) {
function t(n, r, i) {
var o = this,
a = i ? i instanceof Error ? i : new Error(String(i)) : void 0;
return (o = e.call(this, "[@formatjs/intl Error ".concat(n, "] ").concat(r, "\n").concat(a ? "\n".concat(a.message, "\n").concat(a.stack) : "")) || this).code = n, "function" == typeof Error.captureStackTrace && Error
.captureStackTrace(o, t), o
}
return ae(t, e), t
}(Error),
Oi = function(e) {
function t(t, n) {
return e.call(this, Si.UNSUPPORTED_FORMATTER, t, n) || this
}
return ae(t, e), t
}(Ti),
Ai = function(e) {
function t(t, n) {
return e.call(this, Si.INVALID_CONFIG, t, n) || this
}
return ae(t, e), t
}(Ti),
Pi = function(e) {
function t(t, n) {
return e.call(this, Si.MISSING_DATA, t, n) || this
}
return ae(t, e), t
}(Ti),
Mi = function(e) {
function t(t, n, r) {
return e.call(this, Si.FORMAT_ERROR, "".concat(t, "\nLocale: ").concat(n, "\n"), r) || this
}
return ae(t, e), t
}(Ti),
Di = function(e) {
function t(t, n, r, i) {
var o = e.call(this, "".concat(t, "\nMessageID: ").concat(null == r ? void 0 : r.id, "\nDefault Message: ").concat(null == r ? void 0 : r.defaultMessage, "\nDescription: ").concat(null == r ? void 0 : r.description, "\n"), n, i) ||
this;
return o.descriptor = r, o
}
return ae(t, e), t
}(Mi),
Ii = function(e) {
function t(t, n) {
var r = e.call(this, Si.MISSING_TRANSLATION, 'Missing message: "'.concat(t.id, '" for locale "').concat(n, '", using ').concat(t.defaultMessage ? "default message (".concat("string" == typeof t.defaultMessage ? t.defaultMessage : t
.defaultMessage.map((function(e) {
var t;
return null !== (t = e.value) && void 0 !== t ? t : JSON.stringify(e)
})).join(), ")") : "id", " as fallback.")) || this;
return r.descriptor = t, r
}
return ae(t, e), t
}(Ti);
function Ni(e, t, n) {
return void 0 === n && (n = {}), t.reduce((function(t, r) {
return r in e ? t[r] = e[r] : r in n && (t[r] = n[r]), t
}), {})
}
var Ri = {
formats: {},
messages: {},
timeZone: void 0,
defaultLocale: "en",
defaultFormats: {},
fallbackOnEmptyString: !0,
onError: function(e) {},
onWarn: function(e) {}
};
function ji(e) {
return {
create: function() {
return {
get: function(t) {
return e[t]
},
set: function(t, n) {
e[t] = n
}
}
}
}
}
function Li(e, t, n, r) {
var i, o = e && e[t];
if (o && (i = o[n]), i) return i;
r(new Oi("No ".concat(t, " format named: ").concat(n)))
}
function Fi(e, t) {
return Object.keys(e).reduce((function(n, r) {
return n[r] = se({
timeZone: t
}, e[r]), n
}), {})
}
function Bi(e, t) {
return Object.keys(se(se({}, e), t)).reduce((function(n, r) {
return n[r] = se(se({}, e[r] || {}), t[r] || {}), n
}), {})
}
function zi(e, t) {
if (!t) return e;
var n = Ei.formats;
return se(se(se({}, n), e), {
date: Bi(Fi(n.date, t), Fi(e.date || {}, t)),
time: Bi(Fi(n.time, t), Fi(e.time || {}, t))
})
}
var Hi = function(e, t, n, r, i) {
var o = e.locale,
a = e.formats,
s = e.messages,
l = e.defaultLocale,
c = e.defaultFormats,
u = e.fallbackOnEmptyString,
h = e.onError,
p = e.timeZone,
d = e.defaultRichTextElements;
void 0 === n && (n = {
id: ""
});
var f = n.id,
g = n.defaultMessage;
or(!!f,
"[@formatjs/intl] An `id` must be provided to format a message. You can either:\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\nto autofix this issue"
);
var m = String(f),
v = s && Object.prototype.hasOwnProperty.call(s, m) && s[m];
if (Array.isArray(v) && 1 === v.length && v[0].type === Dn.literal) return v[0].value;
if (!r && v && "string" == typeof v && !d) return v.replace(/'\{(.*?)\}'/gi, "{$1}");
if (r = se(se({}, d), r || {}), a = zi(a, p), c = zi(c, p), !v) {
if (!1 === u && "" === v) return v;
if ((!g || o && o.toLowerCase() !== l.toLowerCase()) && h(new Ii(n, o)), g) try {
return t.getMessageFormat(g, l, c, i).format(r)
} catch (e) {
return h(new Di('Error formatting default message for: "'.concat(m, '", rendering default message verbatim'), o, n, e)), "string" == typeof g ? g : m
}
return m
}
try {
return t.getMessageFormat(v, o, a, se({
formatters: t
}, i || {})).format(r)
} catch (e) {
h(new Di('Error formatting message: "'.concat(m, '", using ').concat(g ? "default message" : "id", " as fallback."), o, n, e))
}
if (g) try {
return t.getMessageFormat(g, l, c, i).format(r)
} catch (e) {
h(new Di('Error formatting the default message for: "'.concat(m, '", rendering message verbatim'), o, n, e))
}
return "string" == typeof v ? v : "string" == typeof g ? g : m
},
Ui = ["formatMatcher", "timeZone", "hour12", "weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName", "hourCycle", "dateStyle", "timeStyle", "calendar", "numberingSystem", "fractionalSecondDigits"];
function Wi(e, t, n, r) {
var i = e.locale,
o = e.formats,
a = e.onError,
s = e.timeZone;
void 0 === r && (r = {});
var l = r.format,
c = se(se({}, s && {
timeZone: s
}), l && Li(o, t, l, a)),
u = Ni(r, Ui, c);
return "time" !== t || u.hour || u.minute || u.second || u.timeStyle || u.dateStyle || (u = se(se({}, u), {
hour: "numeric",
minute: "numeric"
})), n(i, u)
}
function Vi(e, t) {
for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
var i = n[0],
o = n[1],
a = void 0 === o ? {} : o,
s = "string" == typeof i ? new Date(i || 0) : i;
try {
return Wi(e, "date", t, a).format(s)
} catch (t) {
e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting date.", t))
}
return String(s)
}
function Xi(e, t) {
for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
var i = n[0],
o = n[1],
a = void 0 === o ? {} : o,
s = "string" == typeof i ? new Date(i || 0) : i;
try {
return Wi(e, "time", t, a).format(s)
} catch (t) {
e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting time.", t))
}
return String(s)
}
function Gi(e, t) {
for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
var i = n[0],
o = n[1],
a = n[2],
s = void 0 === a ? {} : a,
l = e.timeZone,
c = e.locale,
u = e.onError,
h = Ni(s, Ui, l ? {
timeZone: l
} : {});
try {
return t(c, h).formatRange(i, o)
} catch (e) {
u(new Ti(Si.FORMAT_ERROR, "Error formatting date time range.", e))
}
return String(i)
}
function Yi(e, t) {
for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
var i = n[0],
o = n[1],
a = void 0 === o ? {} : o,
s = "string" == typeof i ? new Date(i || 0) : i;
try {
return Wi(e, "date", t, a).formatToParts(s)
} catch (t) {
e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting date.", t))
}
return []
}
function qi(e, t) {
for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
var i = n[0],
o = n[1],
a = void 0 === o ? {} : o,
s = "string" == typeof i ? new Date(i || 0) : i;
try {
return Wi(e, "time", t, a).formatToParts(s)
} catch (t) {
e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting time.", t))
}
return []
}
var Ki = ["style", "type", "fallback", "languageDisplay"];
function $i(e, t, n, r) {
var i = e.locale,
o = e.onError;
Intl.DisplayNames || o(new vi('Intl.DisplayNames is not available in this environment.\nTry polyfilling it using "@formatjs/intl-displaynames"\n', di.MISSING_INTL_API));
var a = Ni(r, Ki);
try {
return t(i, a).of(n)
} catch (e) {
o(new Ti(Si.FORMAT_ERROR, "Error formatting display name.", e))
}
}
var Zi = ["type", "style"],
Ji = Date.now();
function Qi(e, t, n, r) {
void 0 === r && (r = {});
var i = eo(e, t, n, r).reduce((function(e, t) {
var n = t.value;
return "string" != typeof n ? e.push(n) : "string" == typeof e[e.length - 1] ? e[e.length - 1] += n : e.push(n), e
}), []);
return 1 === i.length ? i[0] : 0 === i.length ? "" : i
}
function eo(e, t, n, r) {
var i = e.locale,
o = e.onError;
void 0 === r && (r = {}), Intl.ListFormat || o(new vi('Intl.ListFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-listformat"\n', di.MISSING_INTL_API));
var a = Ni(r, Zi);
try {
var s = {},
l = n.map((function(e, t) {
if ("object" == typeof e) {
var n = function(e) {
return "".concat(Ji, "_").concat(e, "_").concat(Ji)
}(t);
return s[n] = e, n
}
return String(e)
}));
return t(i, a).formatToParts(l).map((function(e) {
return "literal" === e.type ? e : se(se({}, e), {
value: s[e.value] || e.value
})
}))
} catch (e) {
o(new Ti(Si.FORMAT_ERROR, "Error formatting list.", e))
}
return n
}
var to = ["type"];
function no(e, t, n, r) {
var i = e.locale,
o = e.onError;
void 0 === r && (r = {}), Intl.PluralRules || o(new vi('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', di.MISSING_INTL_API));
var a = Ni(r, to);
try {
return t(i, a).select(n)
} catch (e) {
o(new Mi("Error formatting plural.", i, e))
}
return "other"
}
var ro = ["numeric", "style"];
function io(e, t, n, r, i) {
void 0 === i && (i = {}), r || (r = "second"), Intl.RelativeTimeFormat || e.onError(new vi('Intl.RelativeTimeFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-relativetimeformat"\n', di
.MISSING_INTL_API));
try {
return function(e, t, n) {
var r = e.locale,
i = e.formats,
o = e.onError;
void 0 === n && (n = {});
var a = n.format,
s = !!a && Li(i, "relative", a, o) || {};
return t(r, Ni(n, ro, s))
}(e, t, i).format(n, r)
} catch (t) {
e.onError(new Mi("Error formatting relative time.", e.locale, t))
}
return String(n)
}
var oo = ["style", "currency", "currencyDisplay", "unit", "unitDisplay", "useGrouping", "minimumIntegerDigits", "minimumFractionDigits", "maximumFractionDigits", "minimumSignificantDigits", "maximumSignificantDigits", "compactDisplay",
"currencyDisplay", "currencySign", "notation", "signDisplay", "unit", "unitDisplay", "numberingSystem"
];
function ao(e, t, n) {
var r = e.locale,
i = e.formats,
o = e.onError;
void 0 === n && (n = {});
var a = n.format,
s = a && Li(i, "number", a, o) || {};
return t(r, Ni(n, oo, s))
}
function so(e, t, n, r) {
void 0 === r && (r = {});
try {
return ao(e, t, r).format(n)
} catch (t) {
e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting number.", t))
}
return String(n)
}
function lo(e, t, n, r) {
void 0 === r && (r = {});
try {
return ao(e, t, r).formatToParts(n)
} catch (t) {
e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting number.", t))
}
return []
}
function co(e) {
var t;
e.onWarn && e.defaultRichTextElements && "string" == typeof((t = e.messages || {}) ? t[Object.keys(t)[0]] : void 0) && e.onWarn(
'[@formatjs/intl] "defaultRichTextElements" was specified but "message" was not pre-compiled. \nPlease consider using "@formatjs/cli" to pre-compile your messages for performance.\nFor more details see https://formatjs.io/docs/getting-started/message-distribution'
)
}
function uo(e, t) {
var n = function(e) {
void 0 === e && (e = {
dateTime: {},
number: {},
message: {},
relativeTime: {},
pluralRules: {},
list: {},
displayNames: {}
});
var t = Intl.RelativeTimeFormat,
n = Intl.ListFormat,
r = Intl.DisplayNames,
i = ai((function() {
for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return new((e = Intl.DateTimeFormat).bind.apply(e, pe([void 0], t, !1)))
}), {
cache: ji(e.dateTime),
strategy: gi.variadic
}),
o = ai((function() {
for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return new((e = Intl.NumberFormat).bind.apply(e, pe([void 0], t, !1)))
}), {
cache: ji(e.number),
strategy: gi.variadic
}),
a = ai((function() {
for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
return new((e = Intl.PluralRules).bind.apply(e, pe([void 0], t, !1)))
}), {
cache: ji(e.pluralRules),
strategy: gi.variadic
});
return {
getDateTimeFormat: i,
getNumberFormat: o,
getMessageFormat: ai((function(e, t, n, r) {
return new Ei(e, t, n, se({
formatters: {
getNumberFormat: o,
getDateTimeFormat: i,
getPluralRules: a
}
}, r || {}))
}), {
cache: ji(e.message),
strategy: gi.variadic
}),
getRelativeTimeFormat: ai((function() {
for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
return new(t.bind.apply(t, pe([void 0], e, !1)))
}), {
cache: ji(e.relativeTime),
strategy: gi.variadic
}),
getPluralRules: a,
getListFormat: ai((function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
return new(n.bind.apply(n, pe([void 0], e, !1)))
}), {
cache: ji(e.list),
strategy: gi.variadic
}),
getDisplayNames: ai((function() {
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
return new(r.bind.apply(r, pe([void 0], e, !1)))
}), {
cache: ji(e.displayNames),
strategy: gi.variadic
})
}
}(t),
r = se(se({}, Ri), e),
i = r.locale,
o = r.defaultLocale,
a = r.onError;
return i ? !Intl.NumberFormat.supportedLocalesOf(i).length && a ? a(new Pi('Missing locale data for locale: "'.concat(i, '" in Intl.NumberFormat. Using default locale: "').concat(o,
'" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))) : !Intl.DateTimeFormat.supportedLocalesOf(i).length && a && a(new Pi('Missing locale data for locale: "'.concat(i,
'" in Intl.DateTimeFormat. Using default locale: "').concat(o, '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))) : (a && a(new Ai('"locale" was not configured, using "'.concat(o,
'" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details'))), r.locale = r.defaultLocale || "en"), co(r), se(se({}, r), {
formatters: n,
formatNumber: so.bind(null, r, n.getNumberFormat),
formatNumberToParts: lo.bind(null, r, n.getNumberFormat),
formatRelativeTime: io.bind(null, r, n.getRelativeTimeFormat),
formatDate: Vi.bind(null, r, n.getDateTimeFormat),
formatDateToParts: Yi.bind(null, r, n.getDateTimeFormat),
formatTime: Xi.bind(null, r, n.getDateTimeFormat),
formatDateTimeRange: Gi.bind(null, r, n.getDateTimeFormat),
formatTimeToParts: qi.bind(null, r, n.getDateTimeFormat),
formatPlural: no.bind(null, r, n.getPluralRules),
formatMessage: Hi.bind(null, r, n),
$t: Hi.bind(null, r, n),
formatList: Qi.bind(null, r, n.getListFormat),
formatListToParts: eo.bind(null, r, n.getListFormat),
formatDisplayName: $i.bind(null, r, n.getDisplayNames)
})
}
function ho(e) {
or(e, "[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry.")
}
var po = se(se({}, Ri), {
textComponent: Pe
});
var fo = Qe(null),
go = fo.Provider,
mo = fo;
function vo() {
var e = wt(mo);
return ho(e), e
}
function _o(e) {
return {
locale: e.locale,
timeZone: e.timeZone,
fallbackOnEmptyString: e.fallbackOnEmptyString,
formats: e.formats,
textComponent: e.textComponent,
messages: e.messages,
defaultLocale: e.defaultLocale,
defaultFormats: e.defaultFormats,
onError: e.onError,
onWarn: e.onWarn,
wrapRichTextChunksInFragment: e.wrapRichTextChunksInFragment,
defaultRichTextElements: e.defaultRichTextElements
}
}
function bo(e) {
return e ? Object.keys(e).reduce((function(t, n) {
var r, i = e[n];
return t[n] = wi(i) ? (r = i, function(e) {
return r(zt.toArray(e))
}) : i, t
}), {}) : e
}
var yo = function(e, t, n, r) {
for (var i = [], o = 4; o < arguments.length; o++) i[o - 4] = arguments[o];
var a = bo(r),
s = Hi.apply(void 0, pe([e, t, n, a], i, !1));
return Array.isArray(s) ? zt.toArray(s) : s
},
wo = function(e, t) {
var n = e.defaultRichTextElements,
r = le(e, ["defaultRichTextElements"]),
i = bo(n),
o = uo(se(se(se({}, po), r), {
defaultRichTextElements: i
}), t),
a = {
locale: o.locale,
timeZone: o.timeZone,
fallbackOnEmptyString: o.fallbackOnEmptyString,
formats: o.formats,
defaultLocale: o.defaultLocale,
defaultFormats: o.defaultFormats,
messages: o.messages,
onError: o.onError,
defaultRichTextElements: i
};
return se(se({}, o), {
formatMessage: yo.bind(null, a, o.formatters),
$t: yo.bind(null, a, o.formatters)
})
},
xo = function(e) {
function t() {
var t = null !== e && e.apply(this, arguments) || this;
return t.cache = {
dateTime: {},
number: {},
message: {},
relativeTime: {},
pluralRules: {},
list: {},
displayNames: {}
}, t.state = {
cache: t.cache,
intl: wo(_o(t.props), t.cache),
prevConfig: _o(t.props)
}, t
}
return ae(t, e), t.getDerivedStateFromProps = function(e, t) {
var n = t.prevConfig,
r = t.cache,
i = _o(e);
return function(e, t) {
if (e === t) return !0;
if (!e || !t) return !1;
var n = Object.keys(e),
r = Object.keys(t),
i = n.length;
if (r.length !== i) return !1;
for (var o = 0; o < i; o++) {
var a = n[o];
if (e[a] !== t[a] || !Object.prototype.hasOwnProperty.call(t, a)) return !1
}
return !0
}(n, i) ? null : {
intl: wo(i, r),
prevConfig: i
}
}, t.prototype.render = function() {
return ho(this.state.intl), Te(go, {
value: this.state.intl
}, this.props.children)
}, t.displayName = "IntlProvider", t.defaultProps = po, t
}(Nt),
ko = xo;
var Co = function(e) {
var t = typeof e;
return null != e && ("object" == t || "function" == t)
},
So = "object" == typeof W && W && W.Object === Object && W,
Eo = "object" == typeof self && self && self.Object === Object && self,
To = So || Eo || Function("return this")(),
Oo = To,
Ao = function() {
return Oo.Date.now()
},
Po = /\s/;
var Mo = function(e) {
for (var t = e.length; t-- && Po.test(e.charAt(t)););
return t
},
Do = Mo,
Io = /^\s+/;
var No = function(e) {
return e ? e.slice(0, Do(e) + 1).replace(Io, "") : e
},
Ro = To.Symbol,
jo = Ro,
Lo = Object.prototype,
Fo = Lo.hasOwnProperty,
Bo = Lo.toString,
zo = jo ? jo.toStringTag : void 0;
var Ho = function(e) {
var t = Fo.call(e, zo),
n = e[zo];
try {
e[zo] = void 0;
var r = !0
} catch (e) {}
var i = Bo.call(e);
return r && (t ? e[zo] = n : delete e[zo]), i
},
Uo = Object.prototype.toString;
var Wo = Ho,
Vo = function(e) {
return Uo.call(e)
},
Xo = Ro ? Ro.toStringTag : void 0;
var Go = function(e) {
return null == e ? void 0 === e ? "[object Undefined]" : "[object Null]" : Xo && Xo in Object(e) ? Wo(e) : Vo(e)
},
Yo = function(e) {
return null != e && "object" == typeof e
};
var qo = No,
Ko = Co,
$o = function(e) {
return "symbol" == typeof e || Yo(e) && "[object Symbol]" == Go(e)
},
Zo = /^[-+]0x[0-9a-f]+$/i,
Jo = /^0b[01]+$/i,
Qo = /^0o[0-7]+$/i,
ea = parseInt;
var ta = Co,
na = Ao,
ra = function(e) {
if ("number" == typeof e) return e;
if ($o(e)) return NaN;
if (Ko(e)) {
var t = "function" == typeof e.valueOf ? e.valueOf() : e;
e = Ko(t) ? t + "" : t
}
if ("string" != typeof e) return 0 === e ? e : +e;
e = qo(e);
var n = Jo.test(e);
return n || Qo.test(e) ? ea(e.slice(2), n ? 2 : 8) : Zo.test(e) ? NaN : +e
},
ia = Math.max,
oa = Math.min;
var aa = function(e, t, n) {
var r, i, o, a, s, l, c = 0,
u = !1,
h = !1,
p = !0;
if ("function" != typeof e) throw new TypeError("Expected a function");
function d(t) {
var n = r,
o = i;
return r = i = void 0, c = t, a = e.apply(o, n)
}
function f(e) {
var n = e - l;
return void 0 === l || n >= t || n < 0 || h && e - c >= o
}
function g() {
var e = na();
if (f(e)) return m(e);
s = setTimeout(g, function(e) {
var n = t - (e - l);
return h ? oa(n, o - (e - c)) : n
}(e))
}
function m(e) {
return s = void 0, p && r ? d(e) : (r = i = void 0, a)
}
function v() {
var e = na(),
n = f(e);
if (r = arguments, i = this, l = e, n) {
if (void 0 === s) return function(e) {
return c = e, s = setTimeout(g, t), u ? d(e) : a
}(l);
if (h) return clearTimeout(s), s = setTimeout(g, t), d(l)
}
return void 0 === s && (s = setTimeout(g, t)), a
}
return t = ra(t) || 0, ta(n) && (u = !!n.leading, o = (h = "maxWait" in n) ? ia(ra(n.maxWait) || 0, t) : o, p = "trailing" in n ? !!n.trailing : p), v.cancel = function() {
void 0 !== s && clearTimeout(s), c = 0, r = l = i = s = void 0
}, v.flush = function() {
return void 0 === s ? a : m(na())
}, v
},
sa = aa,
la = function() {
for (var e, t, n, r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
return null === (e = window) || void 0 === e || null === (t = e.sa) || void 0 === t || null === (n = t.track) || void 0 === n ? void 0 : n.call(t, ...i)
},
ca = Date.now().toString(),
ua = sa((() => {
if (window.sizeGuideLoaded) {
var e = new CustomEvent("refreshSizeGuide", {
detail: {},
bubbles: !1,
cancelable: !1
});
document.dispatchEvent(e)
}
}), 500);
var ha = (e, t) => {
var n, r = null == e ? void 0 : e.conditional_setting,
i = !1;
r.field_values.some((e => e.field)) || (i = !0);
var o = Object.keys(t);
return null === (n = r.field_values) || void 0 === n || n.some((e => {
var n;
return !!o.includes(e.field) && ((Array.isArray(t[e.field]) ? null === (n = t[e.field]) || void 0 === n ? void 0 : n.includes(e.value_label) : t[e.field] === e.value_label) ? (i = !0, !0) : void 0)
})), i
};
function pa() {
var e, t;
return navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) || (null === (e = document) || void 0 === e || null ===
(t = e.documentElement) || void 0 === t ? void 0 : t.clientWidth) <= 960
}
var da = window.SHOP_PARAMS.finance_symbol,
fa = function(e, t) {
var n, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
try {
var i, o, a, s;
if (!ma()) return;
var l = function(e, t) {
var n = ["text", "upload", "design"];
return e.reduce(((e, r) => {
var i, o;
return null != r && r.isHidden || null === (i = t[r.fid]) || void 0 === i || !i.length ? e : n.includes(r.type) ? e += Number(r.price) || 0 : (null == r || null === (o = r.options) || void 0 === o || o.forEach((n => {
("dropdown" === r.type ? t[r.fid] === n.label : t[r.fid].includes(n.label)) && (e += Number(n.price) || 0)
})), e)
}), 0)
}(e, t),
c = (null === (i = window) || void 0 === i || null === (o = i.C_SETTINGS) || void 0 === o || null === (a = o.market) || void 0 === a || null === (s = a.market_price_setting) || void 0 === s ? void 0 : s.actual_rate) || 1,
u = 1e5;
l = (l * u * c / u).toFixed(2);
var h = (n = Number(r) + Number(l), isNaN(n) ? "" : n.toLocaleString("en-US", {
style: "currency",
currency: "USD"
}).slice(1));
setTimeout((() => {
var e, t = null === (e = document.querySelector("[data-track-source=add_to_cart]")) || void 0 === e ? void 0 : e.getElementsByClassName("money");
null != t && t.length && (t[0].innerHTML = da + h, document.dispatchEvent(new Event("plugin_currency_update")))
}), 200)
} catch (e) {}
},
ga = ["Nova 2022", "Nova 2023", "Hero", "Eva", "Life Style", "Geek", "Wind", "Flash", "Farida"],
ma = () => {
var e, t, n = ka();
return ga.includes(n) && !(null === (e = window) || void 0 === e || null === (t = e.appparakeet_data) || void 0 === t || !t.length)
},
va = function() {
var e = d((function*(e, t, n, r, i, o) {
var a, s, l, c, u, {
url: h,
method: p,
body: d
} = e,
f = h === xa("/api/cart") && ("POST" === p || "post" === p),
g = h === xa("/api/checkout/order") && ("POST" === p || "post" === p);
f && window.SHOPLAZZA.meta.page.resource_id === e.body.product_id && (e.redirect = xa("/api/product-customizer/cart/add"), i((() => {}))(), e.headers["Content-Type"].startsWith("application/json") ? (e.body.custom_properties =
yield ya(t, n, r, o), e.body.quantity = Number(null === (s = e.body) || void 0 === s ? void 0 : s.quantity) || 0) : (e.headers["Content-Type"] = "application/json;charset=utf-8", e.body = yield _a(e, t, n, r, o)));
!g || "buy_now" !== d["refer_info[source]"] && "buy_now" !== (null == d || null === (a = d.refer_info) || void 0 === a ? void 0 : a.source) || (e.redirect = xa("/api/product-customizer/checkout/order/create"), i((() => {}))(),
e.headers["Content-Type"].startsWith("application/json") ? (e.body.line_items[0].custom_properties = yield ya(t, n, r, o), e.body.line_items[0].quantity = Number(null === (l = e.body) || void 0 === l || null === (c = l
.line_items) || void 0 === c || null === (u = c[0]) || void 0 === u ? void 0 : u.quantity) || 0) : (e.headers["Content-Type"] = "application/json;charset=utf-8", e.body = yield ba(e, t, n, r, o)));
return e
}));
return function(t, n, r, i, o, a) {
return e.apply(this, arguments)
}
}(),
_a = function() {
var e = d((function*(e, t, n, r, i) {
return h(h({}, e.body), {}, {
quantity: Number(e.body.quantity),
custom_properties: yield ya(t, n, r, i)
})
}));
return function(t, n, r, i, o) {
return e.apply(this, arguments)
}
}(),
ba = function() {
var e = d((function*(e, t, n, r, i) {
var o, a = e.body || {},
s = function(e) {
var t = {};
for (var n in e)
for (var r = e[n], i = n.split(/[\[\]]/).filter(Boolean), o = t, a = 0; a < i.length; a++) {
var s = i[a];
a === i.length - 1 ? o[s] = r : (o[s] || (/\d+/.test(i[a + 1]) ? o[s] = [] : o[s] = {}), o = o[s])
}
return t
}(a);
(s.customer_note = a["line_items[0][note]"], s.line_items) && (s.line_items[0].properties = void 0, s.line_items[0].custom_properties = yield ya(t, n, r, i), s.line_items = null === (o = s.line_items) || void 0 === o ?
void 0 : o.map((e => h(h({}, e), {}, {
quantity: Number(e.quantity) || 1
}))));
return s
}));
return function(t, n, r, i, o) {
return e.apply(this, arguments)
}
}(),
ya = function() {
var e = d((function*(e, t, n, r) {
var i, o, a = t.reduce(((t, n) => {
if (null != n && n.isHidden) return t;
if (n.options) {
var i = 0;
return n.options.forEach((r => {
var o;
("dropdown" === n.type ? e[n.fid] === r.label : null === (o = e[n.fid]) || void 0 === o ? void 0 : o.includes(r.label)) && (i++, t.push({
fid: n.fid,
id: "swatch" === n.type ? r.fid : r.value,
key: n.order,
value: r.label
}))
})), i || t.push({
fid: n.fid,
key: n.order,
value: ""
}), t
}
var o;
if ("upload" === n.type || "design" === n.type) return null !== (o = e[n.fid]) && void 0 !== o && o.length ? e[n.fid].forEach(((e, r) => {
t.push({
fid: n.fid,
key: "".concat(n.order, "_").concat(r + 1),
value: e.url || ""
})
})) : t.push({
fid: n.fid,
key: "".concat(n.order, "_1"),
value: ""
}), t;
if ("text" === n.type) {
var a, s, l, c, u, h, p = "";
if (null != n && null !== (a = n.preview_setting) && void 0 !== a && a.preview_open) "black" === (p = n.preview_setting.data[0].cards[0].textColor || (null == n || null === (u = n.preview_setting) || void 0 === u ?
void 0 : u.selected_color) || (null == n || null === (h = n.preview_setting.text_colors) || void 0 === h ? void 0 : h[0])) && (p = "#000000");
var d = null != n && null !== (s = n.preview_setting) && void 0 !== s && s.preview_open && e[n.fid] ? "".concat(e[n.fid], " (").concat(r({
id: "font_color"
}), ": ").concat(p, " ").concat(r({
id: "font"
}), ": ").concat(n.preview_setting.data[0].cards[0].textFont || (null == n || null === (l = n.preview_setting) || void 0 === l ? void 0 : l.text_families[0]), " ").concat(r({
id: "font_size"
}), ": ").concat(n.preview_setting.data[0].cards[0].textSize || (null == n || null === (c = n.preview_setting) || void 0 === c ? void 0 : c.text_size), ")") : e[n.fid],
f = {
fid: n.fid,
key: n.order,
value: d || ""
};
try {
var g, m;
"date" === (null === (g = window) || void 0 === g || null === (m = g.appparakeet_custom_type) || void 0 === m ? void 0 : m[n.order]) && /(\d{4})-(\d\d)-(\d\d)/g.test(d) && (d = d.replace(/(\d{4})-(\d\d)-(\d\d)/g,
"$2/$3/$1"), f.value = d)
} catch (e) {}
t.push(f)
}
return t
}), []);
if (n) {
var s = t.find((e => "design" === e.type));
s && a.push({
fid: s.fid,
key: "".concat(s.order, "_composite_image"),
value: n
})
}
var l = ie.getCoordinates();
if (l && l.length > 0) {
var c = l.map((e => {
var t = a.find((t => e.oid && "swatch" === e.configType ? t.fid === e.fid && t.id === e.oid : t.fid === e.fid)),
n = t.key,
r = {
key: n,
value: t.value,
canvasHeight: e.canvasHeight,
canvasWidth: e.canvasWidth,
fid: e.fid,
oid: e.oid,
w: e.width,
h: e.height,
x: e.left,
y: e.top,
angle: e.angle
};
return {
key: "_coordinate_".concat(n, "_").concat(t.value),
fid: e.fid,
oid: e.oid,
value: JSON.stringify(r),
type: "coordinate"
}
})),
u = {};
c.forEach((e => u[e.fid + e.oid] = e)), c = Object.keys(u).map((e => u[e])).map((e => ({
key: e.key,
value: e.value,
type: e.type
}))), a = [...a, ...c]
}
var h = yield ie.createImgs();
if (null != h && h.length && (a = [...a, ...h]), null !== (i = window) && void 0 !== i && null !== (o = i.appparakeet_switch) && void 0 !== o && o.print_img) {
var p = yield ie.createPrintImgs(t);
null != p && p.length && (a = a.concat(...p))
}
return a
}));
return function(t, n, r, i) {
return e.apply(this, arguments)
}
}(),
wa = e => {
try {
var {
url: t,
method: n
} = e.detail.request, r = t === xa("/api/cart") && "POST" === n, i = t === xa("/api/checkout/order") && "POST" === n;
if (r || i) {
var {
status: o
} = e.detail.response || {};
401 === o && setTimeout((() => {
window.location.reload()
}), 1e3)
}
} catch (e) {}
},
xa = e => {
var {
globalizePath: t
} = window.C_APPS_COMMON || {};
return t ? t(e) : window.C_SETTINGS.routes.root + e
};
function ka() {
var e, t, n, r, i;
return (null === (e = window) || void 0 === e || null === (t = e.C_SETTINGS) || void 0 === t || null === (n = t.theme) || void 0 === n ? void 0 : n.merchant_theme_name) || (null === (r = window) || void 0 === r || null === (i = r
.SHOP_PARAMS) || void 0 === i ? void 0 : i.theme_name)
}
function Ca(e) {
var t = ka();
return Array.isArray(e) ? e.includes(t) : e === t
}
var Sa = e => {
if (!e) return e;
var t = e.split("/");
return t[t.length - 1]
},
Ea = ["name"],
Ta = ["_f"],
Oa = ["_f"],
Aa = e => "checkbox" === e.type,
Pa = e => e instanceof Date,
Ma = e => null == e,
Da = e => "object" == typeof e,
Ia = e => !Ma(e) && !Array.isArray(e) && Da(e) && !Pa(e),
Na = e => Ia(e) && e.target ? Aa(e.target) ? e.target.checked : e.target.value : e,
Ra = (e, t) => e.has((e => e.substring(0, e.search(/\.\d+(\.|$)/)) || e)(t)),
ja = e => Array.isArray(e) ? e.filter(Boolean) : [],
La = e => void 0 === e,
Fa = (e, t, n) => {
if (!t || !Ia(e)) return n;
var r = ja(t.split(/[,[\].]+?/)).reduce(((e, t) => Ma(e) ? e : e[t]), e);
return La(r) || r === e ? La(e[t]) ? n : e[t] : r
},
Ba = {
BLUR: "blur",
FOCUS_OUT: "focusout",
CHANGE: "change"
},
za = {
onBlur: "onBlur",
onChange: "onChange",
onSubmit: "onSubmit",
onTouched: "onTouched",
all: "all"
},
Ha = "max",
Ua = "min",
Wa = "maxLength",
Va = "minLength",
Xa = "pattern",
Ga = "required",
Ya = "validate",
qa = Nn.createContext(null),
Ka = () => Nn.useContext(qa),
$a = function(e, t, n) {
var r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
i = {
defaultValues: t._defaultValues
},
o = function(o) {
Object.defineProperty(i, o, {
get: () => {
var i = o;
return t._proxyFormState[i] !== za.all && (t._proxyFormState[i] = !r || za.all), n && (n[i] = !0), e[i]
}
})
};
for (var a in e) o(a);
return i
},
Za = e => Ia(e) && !Object.keys(e).length,
Ja = (e, t, n) => {
var r = g(e, Ea);
return Za(r) || Object.keys(r).length >= Object.keys(t).length || Object.keys(r).find((e => t[e] === (!n || za.all)))
},
Qa = e => Array.isArray(e) ? e : [e],
es = (e, t, n) => n && t ? e === t : !e || !t || e === t || Qa(e).some((e => e && (e.startsWith(t) || t.startsWith(e))));
function ts(e) {
var t = Nn.useRef(e);
t.current = e, Nn.useEffect((() => {
var n = !e.disabled && t.current.subject.subscribe({
next: t.current.callback
});
return () => {
n && n.unsubscribe()
}
}), [e.disabled])
}
function ns(e) {
var t = Ka(),
{
control: n = t.control,
disabled: r,
name: i,
exact: o
} = e || {},
[a, s] = Nn.useState(n._formState),
l = Nn.useRef(!0),
c = Nn.useRef({
isDirty: !1,
dirtyFields: !1,
touchedFields: !1,
isValidating: !1,
isValid: !1,
errors: !1
}),
u = Nn.useRef(i);
return u.current = i, ts({
disabled: r,
callback: Nn.useCallback((e => l.current && es(u.current, e.name, o) && Ja(e, c.current) && s(h(h({}, n._formState), e))), [n, o]),
subject: n._subjects.state
}), Nn.useEffect((() => (l.current = !0, () => {
l.current = !1
})), []), $a(a, n, c.current, !1)
}
var rs = e => "string" == typeof e,
is = (e, t, n, r) => {
var i = Array.isArray(e);
return rs(e) ? (r && t.watch.add(e), Fa(n, e)) : i ? e.map((e => (r && t.watch.add(e), Fa(n, e)))) : (r && (t.watchAll = !0), n)
},
os = e => "function" == typeof e,
as = e => {
for (var t in e)
if (os(e[t])) return !0;
return !1
};
function ss(e) {
var t = Ka(),
{
control: n = t.control,
name: r,
defaultValue: i,
disabled: o,
exact: a
} = e || {},
s = Nn.useRef(r);
s.current = r, ts({
disabled: o,
subject: n._subjects.watch,
callback: Nn.useCallback((e => {
if (es(s.current, e.name, a)) {
var t = is(s.current, n._names, e.values || n._formValues);
c(La(s.current) || Ia(t) && !as(t) ? h({}, t) : Array.isArray(t) ? [...t] : La(t) ? i : t)
}
}), [n, a, i])
});
var [l, c] = Nn.useState(La(i) ? n._getWatch(r) : i);
return Nn.useEffect((() => n._removeUnmounted())), l
}
function ls(e) {
var t = Ka(),
{
name: n,
control: r = t.control,
shouldUnregister: i
} = e,
o = Ra(r._names.array, n),
a = ss({
control: r,
name: n,
defaultValue: Fa(r._formValues, n, Fa(r._defaultValues, n, e.defaultValue)),
exact: !0
}),
s = ns({
control: r,
name: n
}),
l = Nn.useRef(r.register(n, h(h({}, e.rules), {}, {
value: a
})));
return Nn.useEffect((() => {
var e = (e, t) => {
var n = Fa(r._fields, e);
n && (n._f.mount = t)
};
return e(n, !0), () => {
var t = r._options.shouldUnregister || i;
(o ? t && !r._stateFlags.action : t) ? r.unregister(n): e(n, !1)
}
}), [n, r, o, i]), {
field: {
name: n,
value: a,
onChange: Nn.useCallback((e => l.current.onChange({
target: {
value: Na(e),
name: n
},
type: Ba.CHANGE
})), [n]),
onBlur: Nn.useCallback((() => l.current.onBlur({
target: {
value: Fa(r._formValues, n),
name: n
},
type: Ba.BLUR
})), [n, r]),
ref: e => {
var t = Fa(r._fields, n);
t && e && (t._f.ref = {
focus: () => e.focus(),
select: () => e.select(),
setCustomValidity: t => e.setCustomValidity(t),
reportValidity: () => e.reportValidity()
})
}
},
formState: s,
fieldState: Object.defineProperties({}, {
invalid: {
enumerable: !0,
get: () => !!Fa(s.errors, n)
},
isDirty: {
enumerable: !0,
get: () => !!Fa(s.dirtyFields, n)
},
isTouched: {
enumerable: !0,
get: () => !!Fa(s.touchedFields, n)
},
error: {
enumerable: !0,
get: () => Fa(s.errors, n)
}
})
}
}
var cs = (e, t, n, r, i) => t ? h(h({}, n[e]), {}, {
types: h(h({}, n[e] && n[e].types ? n[e].types : {}), {}, {
[r]: i || !0
})
}) : {},
us = e => /^\w*$/.test(e),
hs = e => ja(e.replace(/["|']|\]/g, "").split(/\.|\[/));
function ps(e, t, n) {
for (var r = -1, i = us(t) ? [t] : hs(t), o = i.length, a = o - 1; ++r < o;) {
var s = i[r],
l = n;
if (r !== a) {
var c = e[s];
l = Ia(c) || Array.isArray(c) ? c : isNaN(+i[r + 1]) ? {} : []
}
e[s] = l, e = e[s]
}
return e
}
var ds = (e, t, n) => {
for (var r of n || Object.keys(e)) {
var i = Fa(e, r);
if (i) {
var {
_f: o
} = i, a = g(i, Ta);
if (o && t(o.name)) {
if (o.ref.focus) {
o.ref.focus();
break
}
if (o.refs && o.refs[0].focus) {
o.refs[0].focus();
break
}
} else Ia(a) && ds(a, t)
}
}
},
fs = (e, t, n) => !n && (t.watchAll || t.watch.has(e) || [...t.watch].some((t => e.startsWith(t) && /^\.\w+/.test(e.slice(t.length))))),
gs = (e, t, n) => {
var r = ja(Fa(e, n));
return ps(r, "root", t[n]), ps(e, n, r), e
},
ms = e => "boolean" == typeof e,
vs = e => "file" === e.type,
_s = e => rs(e) || Nn.isValidElement(e),
bs = e => "radio" === e.type,
ys = e => e instanceof RegExp,
ws = {
value: !1,
isValid: !1
},
xs = {
value: !0,
isValid: !0
},
ks = e => {
if (Array.isArray(e)) {
if (e.length > 1) {
var t = e.filter((e => e && e.checked && !e.disabled)).map((e => e.value));
return {
value: t,
isValid: !!t.length
}
}
return e[0].checked && !e[0].disabled ? e[0].attributes && !La(e[0].attributes.value) ? La(e[0].value) || "" === e[0].value ? xs : {
value: e[0].value,
isValid: !0
} : xs : ws
}
return ws
},
Cs = {
isValid: !1,
value: null
},
Ss = e => Array.isArray(e) ? e.reduce(((e, t) => t && t.checked && !t.disabled ? {
isValid: !0,
value: t.value
} : e), Cs) : Cs;
function Es(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "validate";
if (_s(e) || Array.isArray(e) && e.every(_s) || ms(e) && !e) return {
type: n,
message: _s(e) ? e : "",
ref: t
}
}
var Ts = e => Ia(e) && !ys(e) ? e : {
value: e,
message: ""
},
Os = function() {
var e = d((function*(e, t, n, r, i) {
var {
ref: o,
refs: a,
required: s,
maxLength: l,
minLength: c,
min: u,
max: p,
pattern: d,
validate: f,
name: g,
valueAsNumber: m,
mount: v,
disabled: _
} = e._f;
if (!v || _) return {};
var b = a ? a[0] : o,
y = e => {
r && b.reportValidity && (b.setCustomValidity(ms(e) ? "" : e || " "), b.reportValidity())
},
w = {},
x = bs(o),
k = Aa(o),
C = x || k,
S = (m || vs(o)) && !o.value || "" === t || Array.isArray(t) && !t.length,
E = cs.bind(null, g, n, w),
T = function(e, t, n) {
var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : Wa,
i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : Va,
a = e ? t : n;
w[g] = h({
type: e ? r : i,
message: a,
ref: o
}, E(e ? r : i, a))
};
if (i ? !Array.isArray(t) || !t.length : s && (!C && (S || Ma(t)) || ms(t) && !t || k && !ks(a).isValid || x && !Ss(a).isValid)) {
var {
value: O,
message: A
} = _s(s) ? {
value: !!s,
message: s
} : Ts(s);
if (O && (w[g] = h({
type: Ga,
message: A,
ref: b
}, E(Ga, A)), !n)) return y(A), w
}
if (!(S || Ma(u) && Ma(p))) {
var P, M, D = Ts(p),
I = Ts(u);
if (Ma(t) || isNaN(t)) {
var N = o.valueAsDate || new Date(t),
R = e => new Date((new Date).toDateString() + " " + e),
j = "time" == o.type,
L = "week" == o.type;
rs(D.value) && t && (P = j ? R(t) > R(D.value) : L ? t > D.value : N > new Date(D.value)), rs(I.value) && t && (M = j ? R(t) < R(I.value) : L ? t < I.value : N < new Date(I.value))
} else {
var F = o.valueAsNumber || (t ? +t : t);
Ma(D.value) || (P = F > D.value), Ma(I.value) || (M = F < I.value)
}
if ((P || M) && (T(!!P, D.message, I.message, Ha, Ua), !n)) return y(w[g].message), w
}
if ((l || c) && !S && (rs(t) || i && Array.isArray(t))) {
var B = Ts(l),
z = Ts(c),
H = !Ma(B.value) && t.length > B.value,
U = !Ma(z.value) && t.length < z.value;
if ((H || U) && (T(H, B.message, z.message), !n)) return y(w[g].message), w
}
if (d && !S && rs(t)) {
var {
value: W,
message: V
} = Ts(d);
if (ys(W) && !t.match(W) && (w[g] = h({
type: Xa,
message: V,
ref: o
}, E(Xa, V)), !n)) return y(V), w
}
if (f)
if (os(f)) {
var X = Es(yield f(t), b);
if (X && (w[g] = h(h({}, X), E(Ya, X.message)), !n)) return y(X.message), w
} else if (Ia(f)) {
var G = {};
for (var Y in f) {
if (!Za(G) && !n) break;
var q = Es(yield f[Y](t), b, Y);
q && (G = h(h({}, q), E(Y, q.message)), y(q.message), n && (w[g] = G))
}
if (!Za(G) && (w[g] = h({
ref: b
}, G), !n)) return w
}
return y(!0), w
}));
return function(t, n, r, i, o) {
return e.apply(this, arguments)
}
}(),
As = e => {
var t = e.constructor && e.constructor.prototype;
return Ia(t) && t.hasOwnProperty("isPrototypeOf")
},
Ps = "undefined" != typeof window && void 0 !== window.HTMLElement && "undefined" != typeof document;
function Ms(e) {
var t, n = Array.isArray(e);
if (e instanceof Date) t = new Date(e);
else if (e instanceof Set) t = new Set(e);
else {
if (Ps && (e instanceof Blob || e instanceof FileList) || !n && !Ia(e)) return e;
if (t = n ? [] : {}, Array.isArray(e) || As(e))
for (var r in e) t[r] = Ms(e[r]);
else t = e
}
return t
}
var Ds = e => ({
isOnSubmit: !e || e === za.onSubmit,
isOnBlur: e === za.onBlur,
isOnChange: e === za.onChange,
isOnAll: e === za.all,
isOnTouch: e === za.onTouched
});
function Is(e) {
for (var t in e)
if (!La(e[t])) return !1;
return !0
}
function Ns(e, t) {
var n, r = us(t) ? [t] : hs(t),
i = 1 == r.length ? e : function(e, t) {
for (var n = t.slice(0, -1).length, r = 0; r < n;) e = La(e) ? r++ : e[t[r++]];
return e
}(e, r),
o = r[r.length - 1];
i && delete i[o];
for (var a = 0; a < r.slice(0, -1).length; a++) {
var s = -1,
l = void 0,
c = r.slice(0, -(a + 1)),
u = c.length - 1;
for (a > 0 && (n = e); ++s < c.length;) {
var h = c[s];
l = l ? l[h] : e[h], u === s && (Ia(l) && Za(l) || Array.isArray(l) && Is(l)) && (n ? delete n[h] : delete e[h]), n = l
}
}
return e
}
function Rs() {
var e = [];
return {
get observers() {
return e
},
next: t => {
for (var n of e) n.next(t)
},
subscribe: t => (e.push(t), {
unsubscribe: () => {
e = e.filter((e => e !== t))
}
}),
unsubscribe: () => {
e = []
}
}
}
var js = e => Ma(e) || !Da(e);
function Ls(e, t) {
if (js(e) || js(t)) return e === t;
if (Pa(e) && Pa(t)) return e.getTime() === t.getTime();
var n = Object.keys(e),
r = Object.keys(t);
if (n.length !== r.length) return !1;
for (var i of n) {
var o = e[i];
if (!r.includes(i)) return !1;
if ("ref" !== i) {
var a = t[i];
if (Pa(o) && Pa(a) || Ia(o) && Ia(a) || Array.isArray(o) && Array.isArray(a) ? !Ls(o, a) : o !== a) return !1
}
}
return !0
}
var Fs = e => {
var t = e ? e.ownerDocument : 0;
return e instanceof(t && t.defaultView ? t.defaultView.HTMLElement : HTMLElement)
},
Bs = e => "select-multiple" === e.type,
zs = e => bs(e) || Aa(e),
Hs = e => Fs(e) && e.isConnected;
function Us(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = Array.isArray(e);
if (Ia(e) || n)
for (var r in e) Array.isArray(e[r]) || Ia(e[r]) && !as(e[r]) ? (t[r] = Array.isArray(e[r]) ? [] : {}, Us(e[r], t[r])) : Ma(e[r]) || (t[r] = !0);
return t
}
function Ws(e, t, n) {
var r = Array.isArray(e);
if (Ia(e) || r)
for (var i in e) Array.isArray(e[i]) || Ia(e[i]) && !as(e[i]) ? La(t) || js(n[i]) ? n[i] = Array.isArray(e[i]) ? Us(e[i], []) : h({}, Us(e[i])) : Ws(e[i], Ma(t) ? {} : t[i], n[i]) : n[i] = !Ls(e[i], t[i]);
return n
}
var Vs = (e, t) => Ws(e, t, Us(t)),
Xs = (e, t) => {
var {
valueAsNumber: n,
valueAsDate: r,
setValueAs: i
} = t;
return La(e) ? e : n ? "" === e ? NaN : e ? +e : e : r && rs(e) ? new Date(e) : i ? i(e) : e
};
function Gs(e) {
var t = e.ref;
if (!(e.refs ? e.refs.every((e => e.disabled)) : t.disabled)) return vs(t) ? t.files : bs(t) ? Ss(e.refs).value : Bs(t) ? [...t.selectedOptions].map((e => {
var {
value: t
} = e;
return t
})) : Aa(t) ? ks(e.refs).value : Xs(La(t.value) ? e.ref.value : t.value, e)
}
var Ys = (e, t, n, r) => {
var i = {};
for (var o of e) {
var a = Fa(t, o);
a && ps(i, o, a._f)
}
return {
criteriaMode: n,
names: [...e],
fields: i,
shouldUseNativeValidation: r
}
},
qs = e => La(e) ? void 0 : ys(e) ? e.source : Ia(e) ? ys(e.value) ? e.value.source : e.value : e,
Ks = e => e.mount && (e.required || e.min || e.max || e.maxLength || e.minLength || e.pattern || e.validate);
function $s(e, t, n) {
var r = Fa(e, n);
if (r || us(n)) return {
error: r,
name: n
};
for (var i = n.split("."); i.length;) {
var o = i.join("."),
a = Fa(t, o),
s = Fa(e, o);
if (a && !Array.isArray(a) && n !== o) return {
name: n
};
if (s && s.type) return {
name: o,
error: s
};
i.pop()
}
return {
name: n
}
}
var Zs = (e, t, n, r, i) => !i.isOnAll && (!n && i.isOnTouch ? !(t || e) : (n ? r.isOnBlur : i.isOnBlur) ? !e : !(n ? r.isOnChange : i.isOnChange) || e),
Js = (e, t) => !ja(Fa(e, t)).length && Ns(e, t),
Qs = {
mode: za.onSubmit,
reValidateMode: za.onChange,
shouldFocusError: !0
};
function el() {
var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = h(h({}, Qs), t),
r = {
submitCount: 0,
isDirty: !1,
isValidating: !1,
isSubmitted: !1,
isSubmitting: !1,
isSubmitSuccessful: !1,
isValid: !1,
touchedFields: {},
dirtyFields: {},
errors: {}
},
i = {},
o = Ms(n.defaultValues) || {},
a = n.shouldUnregister ? {} : Ms(o),
s = {
action: !1,
mount: !1,
watch: !1
},
l = {
mount: new Set,
unMount: new Set,
array: new Set,
watch: new Set
},
c = 0,
u = {},
p = {
isDirty: !1,
dirtyFields: !1,
touchedFields: !1,
isValidating: !1,
isValid: !1,
errors: !1
},
f = {
watch: Rs(),
array: Rs(),
state: Rs()
},
m = Ds(n.mode),
v = Ds(n.reValidateMode),
_ = n.criteriaMode === za.all,
b = function() {
var e = d((function*(e) {
var t = !1;
return p.isValid && (t = n.resolver ? Za((yield k()).errors) : yield S(i, !0), e || t === r.isValid || (r.isValid = t, f.state.next({
isValid: t
}))), t
}));
return function(t) {
return e.apply(this, arguments)
}
}(),
y = (e, t, n, r) => {
var l = Fa(i, e);
if (l) {
var c = Fa(a, e, La(n) ? Fa(o, e) : n);
La(c) || r && r.defaultChecked || t ? ps(a, e, t ? c : Gs(l._f)) : O(e, c), s.mount && b()
}
},
w = (e, t, n, i, a) => {
var s = !1,
l = {
name: e
},
c = Fa(r.touchedFields, e);
if (p.isDirty) {
var u = r.isDirty;
r.isDirty = l.isDirty = E(), s = u !== l.isDirty
}
if (p.dirtyFields && (!n || i)) {
var h = Fa(r.dirtyFields, e);
Ls(Fa(o, e), t) ? Ns(r.dirtyFields, e) : ps(r.dirtyFields, e, !0), l.dirtyFields = r.dirtyFields, s = s || h !== Fa(r.dirtyFields, e)
}
return n && !c && (ps(r.touchedFields, e, n), l.touchedFields = r.touchedFields, s = s || p.touchedFields && c !== n), s && a && f.state.next(l), s ? l : {}
},
x = function() {
var n = d((function*(n, i, o, a) {
var s, l = Fa(r.errors, n),
d = p.isValid && r.isValid !== i;
if (t.delayError && o ? (s = () => ((e, t) => {
ps(r.errors, e, t), f.state.next({
errors: r.errors
})
})(n, o), (e = e => {
clearTimeout(c), c = window.setTimeout(s, e)
})(t.delayError)) : (clearTimeout(c), e = null, o ? ps(r.errors, n, o) : Ns(r.errors, n)), (o ? !Ls(l, o) : l) || !Za(a) || d) {
var g = h(h(h({}, a), d ? {
isValid: i
} : {}), {}, {
errors: r.errors,
name: n
});
r = h(h({}, r), g), f.state.next(g)
}
u[n]--, p.isValidating && !Object.values(u).some((e => e)) && (f.state.next({
isValidating: !1
}), u = {})
}));
return function(e, t, r, i) {
return n.apply(this, arguments)
}
}(),
k = function() {
var e = d((function*(e) {
return n.resolver ? yield n.resolver(h({}, a), n.context, Ys(e || l.mount, i, n.criteriaMode, n.shouldUseNativeValidation)): {}
}));
return function(t) {
return e.apply(this, arguments)
}
}(),
C = function() {
var e = d((function*(e) {
var {
errors: t
} = yield k();
if (e)
for (var n of e) {
var i = Fa(t, n);
i ? ps(r.errors, n, i) : Ns(r.errors, n)
} else r.errors = t;
return t
}));
return function(t) {
return e.apply(this, arguments)
}
}(),
S = function() {
var e = d((function*(e, t) {
var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
valid: !0
};
for (var o in e) {
var s = e[o];
if (s) {
var {
_f: c
} = s, u = g(s, Oa);
if (c) {
var h = l.array.has(c.name),
p = yield Os(s, Fa(a, c.name), _, n.shouldUseNativeValidation, h);
if (p[c.name] && (i.valid = !1, t)) break;
!t && (Fa(p, c.name) ? h ? gs(r.errors, p, c.name) : ps(r.errors, c.name, p[c.name]) : Ns(r.errors, c.name))
}
u && (yield S(u, t, i))
}
}
return i.valid
}));
return function(t, n) {
return e.apply(this, arguments)
}
}(),
E = (e, t) => (e && t && ps(a, e, t), !Ls(I(), o)),
T = (e, t, n) => {
var r = h({}, s.mount ? a : La(t) ? o : rs(e) ? {
[e]: t
} : t);
return is(e, l, r, n)
},
O = function(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = Fa(i, e),
o = t;
if (r) {
var s = r._f;
s && (!s.disabled && ps(a, e, Xs(t, s)), o = Ps && Fs(s.ref) && Ma(t) ? "" : t, Bs(s.ref) ? [...s.ref.options].forEach((e => e.selected = o.includes(e.value))) : s.refs ? Aa(s.ref) ? s.refs.length > 1 ? s.refs.forEach((e => (!e
.defaultChecked || !e.disabled) && (e.checked = Array.isArray(o) ? !!o.find((t => t === e.value)) : o === e.value))) : s.refs[0] && (s.refs[0].checked = !!o) : s.refs.forEach((e => e.checked = e.value === o)) : vs(s.ref) ? s
.ref.value = "" : (s.ref.value = o, s.ref.type || f.watch.next({
name: e
})))
}(n.shouldDirty || n.shouldTouch) && w(e, o, n.shouldTouch, n.shouldDirty, !0), n.shouldValidate && D(e)
},
A = (e, t, n) => {
for (var r in t) {
var o = t[r],
a = "".concat(e, ".").concat(r),
s = Fa(i, a);
!l.array.has(e) && js(o) && (!s || s._f) || Pa(o) ? O(a, o, n) : A(a, o, n)
}
},
P = function(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
s = Fa(i, e),
c = l.array.has(e),
u = Ms(t);
ps(a, e, u), c ? (f.array.next({
name: e,
values: a
}), (p.isDirty || p.dirtyFields) && n.shouldDirty && (r.dirtyFields = Vs(o, a), f.state.next({
name: e,
dirtyFields: r.dirtyFields,
isDirty: E(e, u)
}))) : !s || s._f || Ma(u) ? O(e, u, n) : A(e, u, n), fs(e, l) && f.state.next({}), f.watch.next({
name: e
})
},
M = function() {
var t = d((function*(t) {
var o = t.target,
s = o.name,
c = Fa(i, s);
if (c) {
var p, d, g = o.type ? Gs(c._f) : Na(t),
y = t.type === Ba.BLUR || t.type === Ba.FOCUS_OUT,
C = !Ks(c._f) && !n.resolver && !Fa(r.errors, s) && !c._f.deps || Zs(y, Fa(r.touchedFields, s), r.isSubmitted, v, m),
S = fs(s, l, y);
ps(a, s, g), y ? (c._f.onBlur && c._f.onBlur(t), e && e(0)) : c._f.onChange && c._f.onChange(t);
var E = w(s, g, y, !1),
T = !Za(E) || S;
if (!y && f.watch.next({
name: s,
type: t.type
}), C) return T && f.state.next(h({
name: s
}, S ? {} : E));
if (!y && S && f.state.next({}), u[s] = (u[s], 1), f.state.next({
isValidating: !0
}), n.resolver) {
var {
errors: O
} = yield k([s]), A = $s(r.errors, i, s), P = $s(O, i, A.name || s);
p = P.error, s = P.name, d = Za(O)
} else p = (yield Os(c, Fa(a, s), _, n.shouldUseNativeValidation))[s], d = yield b(!0);
c._f.deps && D(c._f.deps), x(s, d, p, E)
}
}));
return function(e) {
return t.apply(this, arguments)
}
}(),
D = function() {
var e = d((function*(e) {
var t, o, a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
s = Qa(e);
if (f.state.next({
isValidating: !0
}), n.resolver) {
var c = yield C(La(e) ? e : s);
t = Za(c), o = e ? !s.some((e => Fa(c, e))) : t
} else e ? (o = (yield Promise.all(s.map(function() {
var e = d((function*(e) {
var t = Fa(i, e);
return yield S(t && t._f ? {
[e]: t
} : t)
}));
return function(t) {
return e.apply(this, arguments)
}
}()))).every(Boolean), (o || r.isValid) && b()) : o = t = yield S(i);
return f.state.next(h(h(h({}, !rs(e) || p.isValid && t !== r.isValid ? {} : {
name: e
}), n.resolver || !e ? {
isValid: t
} : {}), {}, {
errors: r.errors,
isValidating: !1
})), a.shouldFocus && !o && ds(i, (e => e && Fa(r.errors, e)), e ? s : l.mount), o
}));
return function(t) {
return e.apply(this, arguments)
}
}(),
I = e => {
var t = h(h({}, o), s.mount ? a : {});
return La(e) ? t : rs(e) ? Fa(t, e) : e.map((e => Fa(t, e)))
},
N = (e, t) => ({
invalid: !!Fa((t || r).errors, e),
isDirty: !!Fa((t || r).dirtyFields, e),
isTouched: !!Fa((t || r).touchedFields, e),
error: Fa((t || r).errors, e)
}),
R = function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
for (var s of e ? Qa(e) : l.mount) l.mount.delete(s), l.array.delete(s), Fa(i, s) && (t.keepValue || (Ns(i, s), Ns(a, s)), !t.keepError && Ns(r.errors, s), !t.keepDirty && Ns(r.dirtyFields, s), !t.keepTouched && Ns(r.touchedFields,
s), !n.shouldUnregister && !t.keepDefaultValue && Ns(o, s));
f.watch.next({}), f.state.next(h(h({}, r), t.keepDirty ? {
isDirty: E()
} : {})), !t.keepIsValid && b()
},
j = function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = Fa(i, e),
c = ms(t.disabled);
return ps(i, e, h(h({}, r || {}), {}, {
_f: h(h({}, r && r._f ? r._f : {
ref: {
name: e
}
}), {}, {
name: e,
mount: !0
}, t)
})), l.mount.add(e), r ? c && ps(a, e, t.disabled ? void 0 : Fa(a, e, Gs(r._f))) : y(e, !0, t.value), h(h(h({}, c ? {
disabled: t.disabled
} : {}), n.shouldUseNativeValidation ? {
required: !!t.required,
min: qs(t.min),
max: qs(t.max),
minLength: qs(t.minLength),
maxLength: qs(t.maxLength),
pattern: qs(t.pattern)
} : {}), {}, {
name: e,
onChange: M,
onBlur: M,
ref: a => {
if (a) {
j(e, t), r = Fa(i, e);
var c = La(a.value) && a.querySelectorAll && a.querySelectorAll("input,select,textarea")[0] || a,
u = zs(c),
p = r._f.refs || [];
if (u ? p.find((e => e === c)) : c === r._f.ref) return;
ps(i, e, {
_f: h(h({}, r._f), u ? {
refs: [...p.filter(Hs), c, ...Array.isArray(Fa(o, e)) ? [{}] : []],
ref: {
type: c.type,
name: e
}
} : {
ref: c
})
}), y(e, !1, void 0, c)
} else(r = Fa(i, e, {}))._f && (r._f.mount = !1), (n.shouldUnregister || t.shouldUnregister) && (!Ra(l.array, e) || !s.action) && l.unMount.add(e)
}
})
},
L = () => n.shouldFocusError && ds(i, (e => e && Fa(r.errors, e)), l.mount);
return {
control: {
register: j,
unregister: R,
getFieldState: N,
_executeSchema: k,
_focusError: L,
_getWatch: T,
_getDirty: E,
_updateValid: b,
_removeUnmounted: () => {
for (var e of l.unMount) {
var t = Fa(i, e);
t && (t._f.refs ? t._f.refs.every((e => !Hs(e))) : !Hs(t._f.ref)) && R(e)
}
l.unMount = new Set
},
_updateFieldArray: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
n = arguments.length > 2 ? arguments[2] : void 0,
l = arguments.length > 3 ? arguments[3] : void 0,
c = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4],
u = !(arguments.length > 5 && void 0 !== arguments[5]) || arguments[5];
if (l && n) {
if (s.action = !0, u && Array.isArray(Fa(i, e))) {
var h = n(Fa(i, e), l.argA, l.argB);
c && ps(i, e, h)
}
if (p.errors && u && Array.isArray(Fa(r.errors, e))) {
var d = n(Fa(r.errors, e), l.argA, l.argB);
c && ps(r.errors, e, d), Js(r.errors, e)
}
if (p.touchedFields && u && Array.isArray(Fa(r.touchedFields, e))) {
var g = n(Fa(r.touchedFields, e), l.argA, l.argB);
c && ps(r.touchedFields, e, g)
}
p.dirtyFields && (r.dirtyFields = Vs(o, a)), f.state.next({
isDirty: E(e, t),
dirtyFields: r.dirtyFields,
errors: r.errors,
isValid: r.isValid
})
} else ps(a, e, t)
},
_getFieldArray: e => ja(Fa(s.mount ? a : o, e, t.shouldUnregister ? Fa(o, e, []) : [])),
_subjects: f,
_proxyFormState: p,
get _fields() {
return i
},
get _formValues() {
return a
},
get _stateFlags() {
return s
},
set _stateFlags(e) {
s = e
},
get _defaultValues() {
return o
},
get _names() {
return l
},
set _names(e) {
l = e
},
get _formState() {
return r
},
set _formState(e) {
r = e
},
get _options() {
return n
},
set _options(e) {
n = h(h({}, n), e)
}
},
trigger: D,
register: j,
handleSubmit: (e, t) => function() {
var o = d((function*(o) {
o && (o.preventDefault && o.preventDefault(), o.persist && o.persist());
var s = !0,
l = Ms(a);
f.state.next({
isSubmitting: !0
});
try {
if (n.resolver) {
var {
errors: c,
values: u
} = yield k();
r.errors = c, l = u
} else yield S(i);
Za(r.errors) ? (f.state.next({
errors: {},
isSubmitting: !0
}), yield e(l, o)) : (t && (yield t(h({}, r.errors), o)), L())
} catch (e) {
throw s = !1, e
} finally {
r.isSubmitted = !0, f.state.next({
isSubmitted: !0,
isSubmitting: !1,
isSubmitSuccessful: Za(r.errors) && s,
submitCount: r.submitCount + 1,
errors: r.errors
})
}
}));
return function(e) {
return o.apply(this, arguments)
}
}(),
watch: (e, t) => os(e) ? f.watch.subscribe({
next: n => e(T(void 0, t), n)
}) : T(e, t, !0),
setValue: P,
getValues: I,
reset: (e, n) => function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
c = e || o,
u = Ms(c),
h = e && !Za(e) ? u : o;
if (n.keepDefaultValues || (o = c), !n.keepValues) {
if (n.keepDirtyValues)
for (var d of l.mount) Fa(r.dirtyFields, d) ? ps(h, d, Fa(a, d)) : P(d, Fa(h, d));
else {
if (Ps && La(e))
for (var g of l.mount) {
var m = Fa(i, g);
if (m && m._f) {
var v = Array.isArray(m._f.refs) ? m._f.refs[0] : m._f.ref;
try {
if (Fs(v)) {
v.closest("form").reset();
break
}
} catch (e) {}
}
}
i = {}
}
a = t.shouldUnregister ? n.keepDefaultValues ? Ms(o) : {} : u, f.array.next({
values: h
}), f.watch.next({
values: h
})
}
l = {
mount: new Set,
unMount: new Set,
array: new Set,
watch: new Set,
watchAll: !1,
focus: ""
}, s.mount = !p.isValid || !!n.keepIsValid, s.watch = !!t.shouldUnregister, f.state.next({
submitCount: n.keepSubmitCount ? r.submitCount : 0,
isDirty: n.keepDirty || n.keepDirtyValues ? r.isDirty : !(!n.keepDefaultValues || Ls(e, o)),
isSubmitted: !!n.keepIsSubmitted && r.isSubmitted,
dirtyFields: n.keepDirty || n.keepDirtyValues ? r.dirtyFields : n.keepDefaultValues && e ? Vs(o, e) : {},
touchedFields: n.keepTouched ? r.touchedFields : {},
errors: n.keepErrors ? r.errors : {},
isSubmitting: !1,
isSubmitSuccessful: !1
})
}(os(e) ? e(a) : e, n),
resetField: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
Fa(i, e) && (La(t.defaultValue) ? P(e, Fa(o, e)) : (P(e, t.defaultValue), ps(o, e, t.defaultValue)), t.keepTouched || Ns(r.touchedFields, e), t.keepDirty || (Ns(r.dirtyFields, e), r.isDirty = t.defaultValue ? E(e, Fa(o, e)) :
E()), t.keepError || (Ns(r.errors, e), p.isValid && b()), f.state.next(h({}, r)))
},
clearErrors: e => {
e ? Qa(e).forEach((e => Ns(r.errors, e))) : r.errors = {}, f.state.next({
errors: r.errors
})
},
unregister: R,
setError: (e, t, n) => {
var o = (Fa(i, e, {
_f: {}
})._f || {}).ref;
ps(r.errors, e, h(h({}, t), {}, {
ref: o
})), f.state.next({
name: e,
errors: r.errors,
isValid: !1
}), n && n.shouldFocus && o && o.focus && o.focus()
},
setFocus: function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = Fa(i, e),
r = n && n._f;
if (r) {
var o = r.refs ? r.refs[0] : r.ref;
o.focus && (o.focus(), t.shouldSelect && o.select())
}
},
getFieldState: N
}
}
class tl {
constructor(e) {
f(this, "addToCartBtnDomRaw", null), f(this, "buyNowBtnDomRaw", null), f(this, "btnWrapperRaw", null), f(this, "queryWrapperTarget", null), f(this, "disableListeners", []), f(this, "enableListeners", []), this.queryWrapperTarget = e
}
get productInfo() {
return this.queryWrapperTarget || (this.queryWrapperTarget = document.querySelector(".product-info__btn") || document.querySelector(".product-info__btns") || document.querySelector("[id=product-info-atc]") || document.querySelector(
"[quantity='#product-info-quantity']") || document.querySelector(".product-info")) || document.querySelector("#product-info-body-inner-container")
}
get addToCardBtnDom() {
var e;
return this.addToCartBtnDomRaw || (this.addToCartBtnDomRaw = null === (e = this.productInfo) || void 0 === e ? void 0 : e.querySelector("[data-click*=addToCart],[data-click*=AddToCart],[data-track-source=add_to_cart]"))
}
get buyNowBtnDom() {
var e;
return this.buyNowBtnDomRaw || (this.buyNowBtnDomRaw = null === (e = this.productInfo) || void 0 === e ? void 0 : e.querySelector("[data-click*=submit],[data-click*=Submit],[data-track-source=buy_now]"))
}
get btnWrapper() {
var e;
return this.btnWrapperRaw || (this.btnWrapperRaw = null === (e = this.addToCardBtnDom) || void 0 === e ? void 0 : e.parentElement), this.btnWrapperRaw
}
getLatestBtn(e) {
var t;
return null === (t = e.target) || void 0 === t ? void 0 : t.closest("[data-click*=addToCart],[data-click*=AddToCart],[data-click*=submit],[data-click*=Submit],[data-track-source=add_to_cart],[data-track-source=buy_now]")
}
wrapFn(e, t) {
return n => {
var r;
!t || null !== (r = n.target) && void 0 !== r && r.closest("[data-wishlist=product-love]") || (e(), n.preventDefault(), n.stopPropagation());
var i = this.getLatestBtn(n);
i !== this.addToCardBtnDom && i !== this.buyNowBtnDom || e()
}
}
addEnableListener(e) {
var t, n = this.wrapFn(e, !1);
this.enableListeners.push(n), null === (t = this.btnWrapper) || void 0 === t || t.addEventListener("click", n, !0)
}
addDisableListener(e) {
var t, n = this.wrapFn(e, !0);
this.disableListeners.push(n), null === (t = this.btnWrapper) || void 0 === t || t.addEventListener("click", n, !0)
}
removeAllEnableListeners() {
this.enableListeners.forEach((e => {
var t;
null === (t = this.btnWrapper) || void 0 === t || t.removeEventListener("click", e, !0)
}))
}
removeAllDisableListeners() {
this.disableListeners.forEach((e => {
var t;
null === (t = this.btnWrapper) || void 0 === t || t.removeEventListener("click", e, !0)
}))
}
disableATCAndBNBtNs(e) {
this.removeAllEnableListeners(), e && this.addDisableListener(e)
}
enableATCAndBNBtNs(e) {
this.removeAllDisableListeners(), e && this.addEnableListener(e)
}
}
var nl, rl = new tl,
il = () => {
var e;
return null === (e = rl.productInfo) || void 0 === e ? void 0 : e.querySelector("#paypal-express-button-container")
},
{
disablePaypalBtn: ol,
enablePaypalBtn: al
} = {
disablePaypalBtn: e => {
var t = il();
t && (t.style.pointerEvents = "none", nl = t => {
t.preventDefault(), t.stopPropagation(), e()
}, null == t || t.addEventListener("click", nl, !0))
},
enablePaypalBtn: () => {
var e = il();
e && (e.style.pointerEvents = "auto", null == e || e.removeEventListener("click", nl, !0))
}
};
var sl, ll = (sl = gt, (e, t) => {
const n = vt(!1);
sl((() => () => {
n.current = !1
}), []), sl((() => {
if (n.current) return e();
n.current = !0
}), t)
}),
cl = function() {
if ("undefined" != typeof Map) return Map;
function e(e, t) {
var n = -1;
return e.some((function(e, r) {
return e[0] === t && (n = r, !0)
})), n
}
return function() {
function t() {
this.__entries__ = []
}
return Object.defineProperty(t.prototype, "size", {
get: function() {
return this.__entries__.length
},
enumerable: !0,
configurable: !0
}), t.prototype.get = function(t) {
var n = e(this.__entries__, t),
r = this.__entries__[n];
return r && r[1]
}, t.prototype.set = function(t, n) {
var r = e(this.__entries__, t);
~r ? this.__entries__[r][1] = n : this.__entries__.push([t, n])
}, t.prototype.delete = function(t) {
var n = this.__entries__,
r = e(n, t);
~r && n.splice(r, 1)
}, t.prototype.has = function(t) {
return !!~e(this.__entries__, t)
}, t.prototype.clear = function() {
this.__entries__.splice(0)
}, t.prototype.forEach = function(e, t) {
void 0 === t && (t = null);
for (var n = 0, r = this.__entries__; n < r.length; n++) {
var i = r[n];
e.call(t, i[1], i[0])
}
}, t
}()
}(),
ul = "undefined" != typeof window && "undefined" != typeof document && window.document === document,
hl = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")(),
pl = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(hl) : function(e) {
return setTimeout((function() {
return e(Date.now())
}), 1e3 / 60)
};
var dl = ["top", "right", "bottom", "left", "width", "height", "size", "weight"],
fl = "undefined" != typeof MutationObserver,
gl = function() {
function e() {
this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function(e, t) {
var n = !1,
r = !1,
i = 0;
function o() {
n && (n = !1, e()), r && s()
}
function a() {
pl(o)
}
function s() {
var e = Date.now();
if (n) {
if (e - i < 2) return;
r = !0
} else n = !0, r = !1, setTimeout(a, t);
i = e
}
return s
}(this.refresh.bind(this), 20)
}
return e.prototype.addObserver = function(e) {
~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_()
}, e.prototype.removeObserver = function(e) {
var t = this.observers_,
n = t.indexOf(e);
~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_()
}, e.prototype.refresh = function() {
this.updateObservers_() && this.refresh()
}, e.prototype.updateObservers_ = function() {
var e = this.observers_.filter((function(e) {
return e.gatherActive(), e.hasActive()
}));
return e.forEach((function(e) {
return e.broadcastActive()
})), e.length > 0
}, e.prototype.connect_ = function() {
ul && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), fl ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this
.mutationsObserver_.observe(document, {
attributes: !0,
childList: !0,
characterData: !0,
subtree: !0
})) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0)
}, e.prototype.disconnect_ = function() {
ul && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this
.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1)
}, e.prototype.onTransitionEnd_ = function(e) {
var t = e.propertyName,
n = void 0 === t ? "" : t;
dl.some((function(e) {
return !!~n.indexOf(e)
})) && this.refresh()
}, e.getInstance = function() {
return this.instance_ || (this.instance_ = new e), this.instance_
}, e.instance_ = null, e
}(),
ml = function(e, t) {
for (var n = 0, r = Object.keys(t); n < r.length; n++) {
var i = r[n];
Object.defineProperty(e, i, {
value: t[i],
enumerable: !1,
writable: !1,
configurable: !0
})
}
return e
},
vl = function(e) {
return e && e.ownerDocument && e.ownerDocument.defaultView || hl
},
_l = Cl(0, 0, 0, 0);
function bl(e) {
return parseFloat(e) || 0
}
function yl(e) {
for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
return t.reduce((function(t, n) {
return t + bl(e["border-" + n + "-width"])
}), 0)
}
function wl(e) {
var t = e.clientWidth,
n = e.clientHeight;
if (!t && !n) return _l;
var r = vl(e).getComputedStyle(e),
i = function(e) {
for (var t = {}, n = 0, r = ["top", "right", "bottom", "left"]; n < r.length; n++) {
var i = r[n],
o = e["padding-" + i];
t[i] = bl(o)
}
return t
}(r),
o = i.left + i.right,
a = i.top + i.bottom,
s = bl(r.width),
l = bl(r.height);
if ("border-box" === r.boxSizing && (Math.round(s + o) !== t && (s -= yl(r, "left", "right") + o), Math.round(l + a) !== n && (l -= yl(r, "top", "bottom") + a)), ! function(e) {
return e === vl(e).document.documentElement
}(e)) {
var c = Math.round(s + o) - t,
u = Math.round(l + a) - n;
1 !== Math.abs(c) && (s -= c), 1 !== Math.abs(u) && (l -= u)
}
return Cl(i.left, i.top, s, l)
}
var xl = "undefined" != typeof SVGGraphicsElement ? function(e) {
return e instanceof vl(e).SVGGraphicsElement
} : function(e) {
return e instanceof vl(e).SVGElement && "function" == typeof e.getBBox
};
function kl(e) {
return ul ? xl(e) ? function(e) {
var t = e.getBBox();
return Cl(0, 0, t.width, t.height)
}(e) : wl(e) : _l
}
function Cl(e, t, n, r) {
return {
x: e,
y: t,
width: n,
height: r
}
}
var Sl = function() {
function e(e) {
this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = Cl(0, 0, 0, 0), this.target = e
}
return e.prototype.isActive = function() {
var e = kl(this.target);
return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight
}, e.prototype.broadcastRect = function() {
var e = this.contentRect_;
return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e
}, e
}(),
El = function(e, t) {
var n = function(e) {
var t = e.x,
n = e.y,
r = e.width,
i = e.height,
o = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object,
a = Object.create(o.prototype);
return ml(a, {
x: t,
y: n,
width: r,
height: i,
top: n,
right: t + r,
bottom: i + n,
left: t
}), a
}(t);
ml(this, {
target: e,
contentRect: n
})
},
Tl = function() {
function e(e, t, n) {
if (this.activeObservations_ = [], this.observations_ = new cl, "function" != typeof e) throw new TypeError("The callback provided as parameter 1 is not a function.");
this.callback_ = e, this.controller_ = t, this.callbackCtx_ = n
}
return e.prototype.observe = function(e) {
if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
if ("undefined" != typeof Element && Element instanceof Object) {
if (!(e instanceof vl(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
var t = this.observations_;
t.has(e) || (t.set(e, new Sl(e)), this.controller_.addObserver(this), this.controller_.refresh())
}
}, e.prototype.unobserve = function(e) {
if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
if ("undefined" != typeof Element && Element instanceof Object) {
if (!(e instanceof vl(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
var t = this.observations_;
t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this))
}
}, e.prototype.disconnect = function() {
this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this)
}, e.prototype.gatherActive = function() {
var e = this;
this.clearActive(), this.observations_.forEach((function(t) {
t.isActive() && e.activeObservations_.push(t)
}))
}, e.prototype.broadcastActive = function() {
if (this.hasActive()) {
var e = this.callbackCtx_,
t = this.activeObservations_.map((function(e) {
return new El(e.target, e.broadcastRect())
}));
this.callback_.call(e, t, e), this.clearActive()
}
}, e.prototype.clearActive = function() {
this.activeObservations_.splice(0)
}, e.prototype.hasActive = function() {
return this.activeObservations_.length > 0
}, e
}(),
Ol = "undefined" != typeof WeakMap ? new WeakMap : new cl,
Al = function e(t) {
if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function.");
if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
var n = gl.getInstance(),
r = new Tl(t, n, this);
Ol.set(this, r)
};
["observe", "unobserve", "disconnect"].forEach((function(e) {
Al.prototype[e] = function() {
var t;
return (t = Ol.get(this))[e].apply(t, arguments)
}
}));
var Pl = void 0 !== hl.ResizeObserver ? hl.ResizeObserver : Al,
Ml = (e, t) => {
gt((() => ("loading" !== document.readyState ? e() : document.addEventListener("DOMContentLoaded", e), () => {
document.removeEventListener("DOMContentLoaded", e)
})), t)
},
Dl = {
exports: {}
};
! function(e) {
! function() {
var t = {}.hasOwnProperty;
function n() {
for (var e = [], r = 0; r < arguments.length; r++) {
var i = arguments[r];
if (i) {
var o = typeof i;
if ("string" === o || "number" === o) e.push(i);
else if (Array.isArray(i)) {
if (i.length) {
var a = n.apply(null, i);
a && e.push(a)
}
} else if ("object" === o)
if (i.toString === Object.prototype.toString)
for (var s in i) t.call(i, s) && i[s] && e.push(s);
else e.push(i.toString())
}
}
return e.join(" ")
}
e.exports ? (n.default = n, e.exports = n) : window.classNames = n
}()
}(Dl);
var Il, Nl, Rl = Dl.exports,
jl = e => "Please select at least ".concat(e, " options");
function Ll() {
return Ll = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Ll.apply(this, arguments)
}
var Fl = e => Te("svg", Ll({
width: 16,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), Il || (Il = Te("path", {
d: "M7.915 1.675a6.41 6.41 0 1 0 0 12.822 6.41 6.41 0 0 0 0-12.822Zm-5.666.744A8.014 8.014 0 1 1 13.58 13.751 8.013 8.013 0 0 1 2.249 2.421v-.002Z",
fill: "#6D7175"
})), Nl || (Nl = Te("path", {
d: "M8.578 10.16H7.082v-.8c.007-1.379.344-1.58.962-1.95.066-.04.134-.08.206-.125.511-.322.905-.728.905-1.32 0-.664-.52-1.096-1.167-1.096-.597 0-1.162.28-1.2 1.075H5.2C5.242 4.336 6.515 3.5 7.996 3.5c1.616 0 2.729 1.014 2.729 2.444 0 .969-.487 1.604-1.266 2.069l-.166.1c-.553.334-.707.426-.715 1.246v.8Zm.12 1.41a.942.942 0 0 1-.93.93.925.925 0 0 1-.517-1.7.924.924 0 0 1 .517-.153.94.94 0 0 1 .93.922Z",
fill: "#6D7175"
}))),
Bl = 0;
function zl(e, t, n, r, i, o) {
var a, s, l = {};
for (s in t) "ref" == s ? a = t[s] : l[s] = t[s];
var c = {
type: e,
props: l,
key: n,
ref: a,
__k: null,
__: null,
__b: 0,
__e: null,
__d: void 0,
__c: null,
__h: null,
constructor: void 0,
__v: --Bl,
__source: i,
__self: o
};
if ("function" == typeof e && (a = e.defaultProps))
for (s in a) void 0 === l[s] && (l[s] = a[s]);
return fe.vnode && fe.vnode(c), c
}
var Hl = ["tagName", "children"],
Ul = Rt((e => {
var {
tagName: t,
children: n
} = e;
return zl(t || "span", h(h({}, g(e, Hl)), {}, {
children: n
}))
}));
function Wl(e) {
return e.split("-")[0]
}
function Vl(e) {
return e.split("-")[1]
}
function Xl(e) {
return ["top", "bottom"].includes(Wl(e)) ? "x" : "y"
}
function Gl(e) {
return "y" === e ? "height" : "width"
}
function Yl(e, t, n) {
let {
reference: r,
floating: i
} = e;
const o = r.x + r.width / 2 - i.width / 2,
a = r.y + r.height / 2 - i.height / 2,
s = Xl(t),
l = Gl(s),
c = r[l] / 2 - i[l] / 2,
u = "x" === s;
let h;
switch (Wl(t)) {
case "top":
h = {
x: o,
y: r.y - i.height
};
break;
case "bottom":
h = {
x: o,
y: r.y + r.height
};
break;
case "right":
h = {
x: r.x + r.width,
y: a
};
break;
case "left":
h = {
x: r.x - i.width,
y: a
};
break;
default:
h = {
x: r.x,
y: r.y
}
}
switch (Vl(t)) {
case "start":
h[s] -= c * (n && u ? -1 : 1);
break;
case "end":
h[s] += c * (n && u ? -1 : 1)
}
return h
}
function ql(e) {
return "number" != typeof e ? function(e) {
return {
top: 0,
right: 0,
bottom: 0,
left: 0,
...e
}
}(e) : {
top: e,
right: e,
bottom: e,
left: e
}
}
function Kl(e) {
return {
...e,
top: e.y,
left: e.x,
right: e.x + e.width,
bottom: e.y + e.height
}
}
const $l = Math.min,
Zl = Math.max;
function Jl(e, t, n) {
return Zl(e, $l(t, n))
}
const Ql = e => ({
name: "arrow",
options: e,
async fn(t) {
const {
element: n,
padding: r = 0
} = null != e ? e : {}, {
x: i,
y: o,
placement: a,
rects: s,
platform: l
} = t;
if (null == n) return {};
const c = ql(r),
u = {
x: i,
y: o
},
h = Xl(a),
p = Vl(a),
d = Gl(h),
f = await l.getDimensions(n),
g = "y" === h ? "top" : "left",
m = "y" === h ? "bottom" : "right",
v = s.reference[d] + s.reference[h] - u[h] - s.floating[d],
_ = u[h] - s.reference[h],
b = await (null == l.getOffsetParent ? void 0 : l.getOffsetParent(n));
let y = b ? "y" === h ? b.clientHeight || 0 : b.clientWidth || 0 : 0;
0 === y && (y = s.floating[d]);
const w = v / 2 - _ / 2,
x = c[g],
k = y - f[d] - c[m],
C = y / 2 - f[d] / 2 + w,
S = Jl(x, C, k),
E = ("start" === p ? c[g] : c[m]) > 0 && C !== S && s.reference[d] <= s.floating[d] ? C < x ? x - C : k - C : 0;
return {
[h]: u[h] - E,
data: {
[h]: S,
centerOffset: C - S
}
}
}
});
const ec = function(e) {
return void 0 === e && (e = 0), {
name: "offset",
options: e,
async fn(t) {
const {
x: n,
y: r
} = t, i = await async function(e, t) {
const {
placement: n,
platform: r,
elements: i
} = e, o = await (null == r.isRTL ? void 0 : r.isRTL(i.floating)), a = Wl(n), s = Vl(n), l = "x" === Xl(n), c = ["left", "top"].includes(a) ? -1 : 1, u = o && l ? -1 : 1, h = "function" == typeof t ? t(e) : t;
let {
mainAxis: p,
crossAxis: d,
alignmentAxis: f
} = "number" == typeof h ? {
mainAxis: h,
crossAxis: 0,
alignmentAxis: null
} : {
mainAxis: 0,
crossAxis: 0,
alignmentAxis: null,
...h
};
return s && "number" == typeof f && (d = "end" === s ? -1 * f : f), l ? {
x: d * u,
y: p * c
} : {
x: p * c,
y: d * u
}
}(t, e);
return {
x: n + i.x,
y: r + i.y,
data: i
}
}
}
};
const tc = function(e) {
return void 0 === e && (e = {}), {
name: "shift",
options: e,
async fn(t) {
const {
x: n,
y: r,
placement: i
} = t, {
mainAxis: o = !0,
crossAxis: a = !1,
limiter: s = {
fn: e => {
let {
x: t,
y: n
} = e;
return {
x: t,
y: n
}
}
},
...l
} = e, c = {
x: n,
y: r
}, u = await async function(e, t) {
var n;
void 0 === t && (t = {});
const {
x: r,
y: i,
platform: o,
rects: a,
elements: s,
strategy: l
} = e, {
boundary: c = "clippingAncestors",
rootBoundary: u = "viewport",
elementContext: h = "floating",
altBoundary: p = !1,
padding: d = 0
} = t, f = ql(d), g = s[p ? "floating" === h ? "reference" : "floating" : h], m = Kl(await o.getClippingRect({
element: null == (n = await (null == o.isElement ? void 0 : o.isElement(g))) || n ? g : g.contextElement || await (null == o.getDocumentElement ? void 0 : o.getDocumentElement(s.floating)),
boundary: c,
rootBoundary: u,
strategy: l
})), v = Kl(o.convertOffsetParentRelativeRectToViewportRelativeRect ? await o.convertOffsetParentRelativeRectToViewportRelativeRect({
rect: "floating" === h ? {
...a.floating,
x: r,
y: i
} : a.reference,
offsetParent: await (null == o.getOffsetParent ? void 0 : o.getOffsetParent(s.floating)),
strategy: l
}) : a[h]);
return {
top: m.top - v.top + f.top,
bottom: v.bottom - m.bottom + f.bottom,
left: m.left - v.left + f.left,
right: v.right - m.right + f.right
}
}(t, l), h = Xl(Wl(i)), p = "x" === h ? "y" : "x";
let d = c[h],
f = c[p];
if (o) {
const e = "y" === h ? "bottom" : "right";
d = Jl(d + u["y" === h ? "top" : "left"], d, d - u[e])
}
if (a) {
const e = "y" === p ? "bottom" : "right";
f = Jl(f + u["y" === p ? "top" : "left"], f, f - u[e])
}
const g = s.fn({
...t,
[h]: d,
[p]: f
});
return {
...g,
data: {
x: g.x - n,
y: g.y - r
}
}
}
}
};
function nc(e) {
return e && e.document && e.location && e.alert && e.setInterval
}
function rc(e) {
if (null == e) return window;
if (!nc(e)) {
const t = e.ownerDocument;
return t && t.defaultView || window
}
return e
}
function ic(e) {
return rc(e).getComputedStyle(e)
}
function oc(e) {
return nc(e) ? "" : e ? (e.nodeName || "").toLowerCase() : ""
}
function ac() {
const e = navigator.userAgentData;
return null != e && e.brands ? e.brands.map((e => e.brand + "/" + e.version)).join(" ") : navigator.userAgent
}
function sc(e) {
return e instanceof rc(e).HTMLElement
}
function lc(e) {
return e instanceof rc(e).Element
}
function cc(e) {
if ("undefined" == typeof ShadowRoot) return !1;
return e instanceof rc(e).ShadowRoot || e instanceof ShadowRoot
}
function uc(e) {
const {
overflow: t,
overflowX: n,
overflowY: r
} = ic(e);
return /auto|scroll|overlay|hidden/.test(t + r + n)
}
function hc(e) {
return ["table", "td", "th"].includes(oc(e))
}
function pc(e) {
const t = /firefox/i.test(ac()),
n = ic(e);
return "none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || ["transform", "perspective"].includes(n.willChange) || t && "filter" === n.willChange || t && !!n.filter && "none" !== n.filter
}
function dc() {
return !/^((?!chrome|android).)*safari/i.test(ac())
}
const fc = Math.min,
gc = Math.max,
mc = Math.round;
function vc(e, t, n) {
var r, i, o, a;
void 0 === t && (t = !1), void 0 === n && (n = !1);
const s = e.getBoundingClientRect();
let l = 1,
c = 1;
t && sc(e) && (l = e.offsetWidth > 0 && mc(s.width) / e.offsetWidth || 1, c = e.offsetHeight > 0 && mc(s.height) / e.offsetHeight || 1);
const u = lc(e) ? rc(e) : window,
h = !dc() && n,
p = (s.left + (h && null != (r = null == (i = u.visualViewport) ? void 0 : i.offsetLeft) ? r : 0)) / l,
d = (s.top + (h && null != (o = null == (a = u.visualViewport) ? void 0 : a.offsetTop) ? o : 0)) / c,
f = s.width / l,
g = s.height / c;
return {
width: f,
height: g,
top: d,
right: p + f,
bottom: d + g,
left: p,
x: p,
y: d
}
}
function _c(e) {
return (t = e, (t instanceof rc(t).Node ? e.ownerDocument : e.document) || window.document).documentElement;
var t
}
function bc(e) {
return lc(e) ? {
scrollLeft: e.scrollLeft,
scrollTop: e.scrollTop
} : {
scrollLeft: e.pageXOffset,
scrollTop: e.pageYOffset
}
}
function yc(e) {
return vc(_c(e)).left + bc(e).scrollLeft
}
function wc(e, t, n) {
const r = sc(t),
i = _c(t),
o = vc(e, r && function(e) {
const t = vc(e);
return mc(t.width) !== e.offsetWidth || mc(t.height) !== e.offsetHeight
}(t), "fixed" === n);
let a = {
scrollLeft: 0,
scrollTop: 0
};
const s = {
x: 0,
y: 0
};
if (r || !r && "fixed" !== n)
if (("body" !== oc(t) || uc(i)) && (a = bc(t)), sc(t)) {
const e = vc(t, !0);
s.x = e.x + t.clientLeft, s.y = e.y + t.clientTop
} else i && (s.x = yc(i));
return {
x: o.left + a.scrollLeft - s.x,
y: o.top + a.scrollTop - s.y,
width: o.width,
height: o.height
}
}
function xc(e) {
return "html" === oc(e) ? e : e.assignedSlot || e.parentNode || (cc(e) ? e.host : null) || _c(e)
}
function kc(e) {
return sc(e) && "fixed" !== ic(e).position ? e.offsetParent : null
}
function Cc(e) {
const t = rc(e);
let n = kc(e);
for (; n && hc(n) && "static" === ic(n).position;) n = kc(n);
return n && ("html" === oc(n) || "body" === oc(n) && "static" === ic(n).position && !pc(n)) ? t : n || function(e) {
let t = xc(e);
for (cc(t) && (t = t.host); sc(t) && !["html", "body"].includes(oc(t));) {
if (pc(t)) return t;
{
const e = t.parentNode;
t = cc(e) ? e.host : e
}
}
return null
}(e) || t
}
function Sc(e) {
if (sc(e)) return {
width: e.offsetWidth,
height: e.offsetHeight
};
const t = vc(e);
return {
width: t.width,
height: t.height
}
}
function Ec(e) {
const t = xc(e);
return ["html", "body", "#document"].includes(oc(t)) ? e.ownerDocument.body : sc(t) && uc(t) ? t : Ec(t)
}
function Tc(e, t) {
var n;
void 0 === t && (t = []);
const r = Ec(e),
i = r === (null == (n = e.ownerDocument) ? void 0 : n.body),
o = rc(r),
a = i ? [o].concat(o.visualViewport || [], uc(r) ? r : []) : r,
s = t.concat(a);
return i ? s : s.concat(Tc(a))
}
function Oc(e, t, n) {
return "viewport" === t ? Kl(function(e, t) {
const n = rc(e),
r = _c(e),
i = n.visualViewport;
let o = r.clientWidth,
a = r.clientHeight,
s = 0,
l = 0;
if (i) {
o = i.width, a = i.height;
const e = dc();
(e || !e && "fixed" === t) && (s = i.offsetLeft, l = i.offsetTop)
}
return {
width: o,
height: a,
x: s,
y: l
}
}(e, n)) : lc(t) ? function(e, t) {
const n = vc(e, !1, "fixed" === t),
r = n.top + e.clientTop,
i = n.left + e.clientLeft;
return {
top: r,
left: i,
x: i,
y: r,
right: i + e.clientWidth,
bottom: r + e.clientHeight,
width: e.clientWidth,
height: e.clientHeight
}
}(t, n) : Kl(function(e) {
var t;
const n = _c(e),
r = bc(e),
i = null == (t = e.ownerDocument) ? void 0 : t.body,
o = gc(n.scrollWidth, n.clientWidth, i ? i.scrollWidth : 0, i ? i.clientWidth : 0),
a = gc(n.scrollHeight, n.clientHeight, i ? i.scrollHeight : 0, i ? i.clientHeight : 0);
let s = -r.scrollLeft + yc(e);
const l = -r.scrollTop;
return "rtl" === ic(i || n).direction && (s += gc(n.clientWidth, i ? i.clientWidth : 0) - o), {
width: o,
height: a,
x: s,
y: l
}
}(_c(e)))
}
function Ac(e) {
const t = Tc(e),
n = ["absolute", "fixed"].includes(ic(e).position) && sc(e) ? Cc(e) : e;
return lc(n) ? t.filter((e => lc(e) && function(e, t) {
const n = null == t.getRootNode ? void 0 : t.getRootNode();
if (e.contains(t)) return !0;
if (n && cc(n)) {
let n = t;
do {
if (n && e === n) return !0;
n = n.parentNode || n.host
} while (n)
}
return !1
}(e, n) && "body" !== oc(e))) : []
}
const Pc = {
getClippingRect: function(e) {
let {
element: t,
boundary: n,
rootBoundary: r,
strategy: i
} = e;
const o = [..."clippingAncestors" === n ? Ac(t) : [].concat(n), r],
a = o[0],
s = o.reduce(((e, n) => {
const r = Oc(t, n, i);
return e.top = gc(r.top, e.top), e.right = fc(r.right, e.right), e.bottom = fc(r.bottom, e.bottom), e.left = gc(r.left, e.left), e
}), Oc(t, a, i));
return {
width: s.right - s.left,
height: s.bottom - s.top,
x: s.left,
y: s.top
}
},
convertOffsetParentRelativeRectToViewportRelativeRect: function(e) {
let {
rect: t,
offsetParent: n,
strategy: r
} = e;
const i = sc(n),
o = _c(n);
if (n === o) return t;
let a = {
scrollLeft: 0,
scrollTop: 0
};
const s = {
x: 0,
y: 0
};
if ((i || !i && "fixed" !== r) && (("body" !== oc(n) || uc(o)) && (a = bc(n)), sc(n))) {
const e = vc(n, !0);
s.x = e.x + n.clientLeft, s.y = e.y + n.clientTop
}
return {
...t,
x: t.x - a.scrollLeft + s.x,
y: t.y - a.scrollTop + s.y
}
},
isElement: lc,
getDimensions: Sc,
getOffsetParent: Cc,
getDocumentElement: _c,
getElementRects: e => {
let {
reference: t,
floating: n,
strategy: r
} = e;
return {
reference: wc(t, Cc(n), r),
floating: {
...Sc(n),
x: 0,
y: 0
}
}
},
getClientRects: e => Array.from(e.getClientRects()),
isRTL: e => "rtl" === ic(e).direction
};
function Mc(e, t, n, r) {
void 0 === r && (r = {});
const {
ancestorScroll: i = !0,
ancestorResize: o = !0,
elementResize: a = !0,
animationFrame: s = !1
} = r, l = i && !s, c = o && !s, u = l || c ? [...lc(e) ? Tc(e) : [], ...Tc(t)] : [];
u.forEach((e => {
l && e.addEventListener("scroll", n, {
passive: !0
}), c && e.addEventListener("resize", n)
}));
let h, p = null;
if (a) {
let r = !0;
p = new ResizeObserver((() => {
r || n(), r = !1
})), lc(e) && !s && p.observe(e), p.observe(t)
}
let d = s ? vc(e) : null;
return s && function t() {
const r = vc(e);
!d || r.x === d.x && r.y === d.y && r.width === d.width && r.height === d.height || n();
d = r, h = requestAnimationFrame(t)
}(), n(), () => {
var e;
u.forEach((e => {
l && e.removeEventListener("scroll", n), c && e.removeEventListener("resize", n)
})), null == (e = p) || e.disconnect(), p = null, s && cancelAnimationFrame(h)
}
}
const Dc = (e, t, n) => (async (e, t, n) => {
const {
placement: r = "bottom",
strategy: i = "absolute",
middleware: o = [],
platform: a
} = n, s = await (null == a.isRTL ? void 0 : a.isRTL(t));
let l = await a.getElementRects({
reference: e,
floating: t,
strategy: i
}),
{
x: c,
y: u
} = Yl(l, r, s),
h = r,
p = {},
d = 0;
for (let n = 0; n < o.length; n++) {
const {
name: f,
fn: g
} = o[n], {
x: m,
y: v,
data: _,
reset: b
} = await g({
x: c,
y: u,
initialPlacement: r,
placement: h,
strategy: i,
middlewareData: p,
rects: l,
platform: a,
elements: {
reference: e,
floating: t
}
});
c = null != m ? m : c, u = null != v ? v : u, p = {
...p,
[f]: {
...p[f],
..._
}
}, b && d <= 50 && (d++, "object" == typeof b && (b.placement && (h = b.placement), b.rects && (l = !0 === b.rects ? await a.getElementRects({
reference: e,
floating: t,
strategy: i
}) : b.rects), ({
x: c,
y: u
} = Yl(l, h, s))), n = -1)
}
return {
x: c,
y: u,
placement: h,
strategy: i,
middlewareData: p
}
})(e, t, {
platform: Pc,
...n
});
var Ic = "undefined" != typeof document ? mt : gt;
function Nc(e, t) {
if (e === t) return !0;
if (typeof e != typeof t) return !1;
if ("function" == typeof e && e.toString() === t.toString()) return !0;
let n, r, i;
if (e && t && "object" == typeof e) {
if (Array.isArray(e)) {
if (n = e.length, n != t.length) return !1;
for (r = n; 0 != r--;)
if (!Nc(e[r], t[r])) return !1;
return !0
}
if (i = Object.keys(e), n = i.length, n !== Object.keys(t).length) return !1;
for (r = n; 0 != r--;)
if (!Object.prototype.hasOwnProperty.call(t, i[r])) return !1;
for (r = n; 0 != r--;) {
const n = i[r];
if (("_owner" !== n || !e.$$typeof) && !Nc(e[n], t[n])) return !1
}
return !0
}
return e != e && t != t
}
function Rc(e) {
let {
middleware: t,
placement: n = "bottom",
strategy: r = "absolute",
whileElementsMounted: i
} = void 0 === e ? {} : e;
const [o, a] = dt({
x: null,
y: null,
strategy: r,
placement: n,
middlewareData: {}
}), [s, l] = dt(t);
Nc(null == s ? void 0 : s.map((e => {
let {
name: t,
options: n
} = e;
return {
name: t,
options: n
}
})), null == t ? void 0 : t.map((e => {
let {
name: t,
options: n
} = e;
return {
name: t,
options: n
}
}))) || l(t);
const c = vt(null),
u = vt(null),
h = vt(null),
p = vt(o),
d = function(e) {
const t = vt(e);
return Ic((() => {
t.current = e
})), t
}(i),
f = yt((() => {
c.current && u.current && Dc(c.current, u.current, {
middleware: s,
placement: n,
strategy: r
}).then((e => {
g.current && !Nc(p.current, e) && (p.current = e, Cn((() => {
a(e)
})))
}))
}), [s, n, r]);
Ic((() => {
g.current && f()
}), [f]);
const g = vt(!1);
Ic((() => (g.current = !0, () => {
g.current = !1
})), []);
const m = yt((() => {
if ("function" == typeof h.current && (h.current(), h.current = null), c.current && u.current)
if (d.current) {
const e = d.current(c.current, u.current, f);
h.current = e
} else f()
}), [f, d]),
v = yt((e => {
c.current = e, m()
}), [m]),
_ = yt((e => {
u.current = e, m()
}), [m]),
b = bt((() => ({
reference: c,
floating: u
})), []);
return bt((() => ({
...o,
update: f,
refs: b,
reference: v,
floating: _
})), [o, f, b, v, _])
}
const jc = e => {
const {
element: t,
padding: n
} = e;
return {
name: "arrow",
options: e,
fn(e) {
return r = t, Object.prototype.hasOwnProperty.call(r, "current") ? null != t.current ? Ql({
element: t.current,
padding: n
}).fn(e) : {} : t ? Ql({
element: t,
padding: n
}).fn(e) : {};
var r
}
}
};
var Lc = "undefined" != typeof document ? mt : gt;
const Fc = Qe(null),
Bc = Qe(null),
zc = () => wt(Bc);
function Hc(e) {
var t;
return null != (t = null == e ? void 0 : e.ownerDocument) ? t : document
}
function Uc(e) {
return !!e && e instanceof
function(e) {
var t;
return null != (t = Hc(e).defaultView) ? t : window
}(e).Element
}
const Wc = Rn["useInsertionEffect".toString()];
function Vc(e) {
let {
open: t = !1,
onOpenChange: n,
whileElementsMounted: r,
placement: i,
middleware: o,
strategy: a,
nodeId: s
} = void 0 === e ? {} : e;
const [l, c] = dt(null), u = zc(), h = vt(null), p = vt({}), d = dt((() => function() {
const e = new Map;
return {
emit(t, n) {
var r;
null == (r = e.get(t)) || r.forEach((e => e(n)))
},
on(t, n) {
e.set(t, [...e.get(t) || [], n])
},
off(t, n) {
e.set(t, (e.get(t) || []).filter((e => e !== n)))
}
}
}()))[0], f = Rc({
placement: i,
middleware: o,
strategy: a,
whileElementsMounted: r
}), g = function(e) {
const t = vt((() => {}));
return Wc ? Wc((() => {
t.current = e
})) : t.current = e, yt((function() {
for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++) n[r] = arguments[r];
return null == t.current ? void 0 : t.current(...n)
}), [])
}(n), m = bt((() => ({
...f.refs,
domReference: h
})), [f.refs]), v = bt((() => ({
...f,
refs: m,
dataRef: p,
nodeId: s,
events: d,
open: t,
onOpenChange: g,
_: {
domReference: l
}
})), [f, s, d, t, g, m, l]);
Lc((() => {
const e = null == u ? void 0 : u.nodesRef.current.find((e => e.id === s));
e && (e.context = v)
}));
const {
reference: _
} = f, b = yt((e => {
(Uc(e) || null === e) && (v.refs.domReference.current = e, c(e)), _(e)
}), [_, v.refs]);
return bt((() => ({
...f,
context: v,
refs: m,
reference: b
})), [f, m, v, b])
}
function Xc(e, t, n) {
const r = new Map;
return {
..."floating" === n && {
tabIndex: -1
},
...e,
...t.map((e => e ? e[n] : null)).concat(e).reduce(((e, t) => t ? (Object.entries(t).forEach((t => {
let [n, i] = t;
var o;
0 === n.indexOf("on") ? (r.has(n) || r.set(n, []), "function" == typeof i && (null == (o = r.get(n)) || o.push(i), e[n] = function() {
for (var e, t = arguments.length, i = new Array(t), o = 0; o < t; o++) i[o] = arguments[o];
null == (e = r.get(n)) || e.forEach((e => e(...i)))
})) : e[n] = i
})), e) : e), {})
}
}
const Gc = function(e) {
return void 0 === e && (e = []), {
getReferenceProps: t => Xc(t, e, "reference"),
getFloatingProps: t => Xc(t, e, "floating"),
getItemProps: t => Xc(t, e, "item")
}
};
function Yc(e) {
const t = vt(e);
return Lc((() => {
t.current = e
})), t
}
function qc(e, t, n) {
return n && "mouse" !== n ? 0 : "number" == typeof e ? e : null == e ? void 0 : e[t]
}
const Kc = function(e, t) {
let {
enabled: n = !0,
delay: r = 0,
handleClose: i = null,
mouseOnly: o = !1,
restMs: a = 0,
move: s = !0
} = void 0 === t ? {} : t;
const {
open: l,
onOpenChange: c,
dataRef: u,
events: h,
refs: p,
_: d
} = e, f = zc(), g = null != (m = null == (v = wt(Fc)) ? void 0 : v.id) ? m : null;
var m, v;
const _ = Yc(i),
b = Yc(r),
y = function(e) {
const t = vt();
return Lc((() => {
t.current = e
}), [e]), t.current
}(l),
w = vt(),
x = vt(),
k = vt(),
C = vt(),
S = vt(!0),
E = vt(!1),
T = yt((() => {
var e;
const t = null == (e = u.current.openEvent) ? void 0 : e.type;
return (null == t ? void 0 : t.includes("mouse")) && "mousedown" !== t
}), [u]);
gt((() => {
if (n) return h.on("dismiss", e), () => {
h.off("dismiss", e)
};
function e() {
clearTimeout(x.current), clearTimeout(C.current), S.current = !0
}
}), [n, h, p]), gt((() => {
if (!n || !_.current) return;
function e() {
T() && c(!1)
}
const t = Hc(p.floating.current).documentElement;
return t.addEventListener("mouseleave", e), () => {
t.removeEventListener("mouseleave", e)
}
}), [p, c, n, _, u, T]);
const O = yt((function(e) {
void 0 === e && (e = !0);
const t = qc(b.current, "close", w.current);
t && !k.current ? (clearTimeout(x.current), x.current = setTimeout((() => c(!1)), t)) : e && (clearTimeout(x.current), c(!1))
}), [b, c]),
A = yt((() => {
k.current && (Hc(p.floating.current).removeEventListener("pointermove", k.current), k.current = void 0)
}), [p]),
P = yt((() => {
Hc(p.floating.current).body.style.pointerEvents = "", E.current = !1
}), [p]);
if (gt((() => {
if (!n) return;
function t() {
return !!u.current.openEvent && ["click", "mousedown"].includes(u.current.openEvent.type)
}
function r(e) {
if (clearTimeout(x.current), S.current = !1, o && "mouse" !== w.current || a > 0 && 0 === qc(b.current, "open")) return;
u.current.openEvent = e;
const t = qc(b.current, "open", w.current);
t ? x.current = setTimeout((() => {
c(!0)
}), t) : c(!0)
}
function i(n) {
if (t()) return;
const r = Hc(p.floating.current);
if (clearTimeout(C.current), _.current) return clearTimeout(x.current), k.current && r.removeEventListener("pointermove", k.current), k.current = _.current({
...e,
tree: f,
x: n.clientX,
y: n.clientY,
onClose() {
P(), A(), O()
}
}), void r.addEventListener("pointermove", k.current);
O()
}
function h(n) {
t() || null == _.current || _.current({
...e,
tree: f,
x: n.clientX,
y: n.clientY,
leave: !0,
onClose() {
P(), A(), O()
}
})(n)
}
const d = p.floating.current,
g = p.domReference.current;
return Uc(g) ? (l && g.addEventListener("mouseleave", h), null == d || d.addEventListener("mouseleave", h), s && g.addEventListener("mousemove", r, {
once: !0
}), g.addEventListener("mouseenter", r), g.addEventListener("mouseleave", i), () => {
l && g.removeEventListener("mouseleave", h), null == d || d.removeEventListener("mouseleave", h), s && g.removeEventListener("mousemove", r), g.removeEventListener("mouseenter", r), g.removeEventListener("mouseleave", i)
}) : void 0
}), [d.domReference, n, e, o, a, s, O, A, P, c, l, f, p, b, _, u]), Lc((() => {
if (n && l && _.current && _.current.__options.blockPointerEvents && T()) {
Hc(p.floating.current).body.style.pointerEvents = "none", E.current = !0;
const n = p.domReference.current,
r = p.floating.current;
if (Uc(n) && r) {
var e, t;
const i = null == f || null == (e = f.nodesRef.current.find((e => e.id === g))) || null == (t = e.context) ? void 0 : t.refs.floating.current;
return i && (i.style.pointerEvents = ""), n.style.pointerEvents = "auto", r.style.pointerEvents = "auto", () => {
n.style.pointerEvents = "", r.style.pointerEvents = ""
}
}
}
}), [n, l, g, p, f, _, u, T]), Lc((() => {
y && !l && (w.current = void 0, A(), P())
})), gt((() => () => {
A(), clearTimeout(x.current), clearTimeout(C.current), E.current && P()
}), [n, A, P]), !n) return {};
function M(e) {
w.current = e.pointerType
}
return {
reference: {
onPointerDown: M,
onPointerEnter: M,
onMouseMove() {
l || 0 === a || (clearTimeout(C.current), C.current = setTimeout((() => {
S.current || c(!0)
}), a))
}
},
floating: {
onMouseEnter() {
clearTimeout(x.current)
},
onMouseLeave() {
O(!1)
}
}
}
};
var $c = ["children", "reference", "className", "placement"],
Zc = e => {
var {
children: t = null,
reference: n = null,
className: r = "",
placement: i = "top"
} = e, o = g(e, $c), [a, s] = dt(!1), l = vt(null), {
context: c,
x: u,
y: p,
strategy: d,
floating: f,
reference: m,
placement: v,
middlewareData: {
arrow: {
x: _,
y: b
} = {}
}
} = Vc({
middleware: [ec(10), tc({
padding: 8
}), jc({
element: l
})],
open: a,
placement: i,
onOpenChange: s,
whileElementsMounted: Mc
}), {
getReferenceProps: y,
getFloatingProps: w
} = Gc([Kc(c)]), [x, k] = dt(!1);
Ml((() => {
k(!0)
}));
var C = {
top: "bottom",
bottom: "top"
} [(v || "").split("-")[0]];
return x ? zl(Pe, {
children: [zl("span", h(h(h({
ref: m
}, y()), {}, {
className: Rl("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r)
}, o), {}, {
children: n || zl(Fl, {
className: "pk-cursor-pointer"
})
})), t && a && zl("div", h(h({
className: "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]",
ref: f,
style: {
position: d,
top: null != p ? p : 0,
left: null != u ? u : 0,
hyphens: "auto"
}
}, w()), {}, {
children: [zl(Ul, {
children: t
}), zl("div", {
className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
style: {
left: _,
top: b,
[C]: "-10px"
},
ref: l
})]
}))]
}) : null
},
Jc = {
large_tooltip: "TooltipIconLarge-module_large_tooltip__gzcyR",
largeTooltip: "TooltipIconLarge-module_large_tooltip__gzcyR",
large_tooltip_img: "TooltipIconLarge-module_large_tooltip_img__rpH1F",
largeTooltipImg: "TooltipIconLarge-module_large_tooltip_img__rpH1F"
};
c(
".TooltipIconLarge-module_large_tooltip__gzcyR{align-items:center;background:#fff;border-radius:6px;box-shadow:0 4px 36px 0 rgba(51,51,51,.08)!important;box-sizing:border-box;display:flex;flex-direction:column;flex-wrap:wrap;gap:8px!important;padding:8px!important;width:136px}.TooltipIconLarge-module_large_tooltip_img__rpH1F{border-radius:3px;height:120px!important;width:120px!important}@media (max-width:959px){.TooltipIconLarge-module_large_tooltip__gzcyR{width:104px!important}.TooltipIconLarge-module_large_tooltip_img__rpH1F{border-radius:3px;height:88px!important;width:88px!important}}");
var Qc = ["children", "reference", "className", "placement", "checked"];
window.touchStartTime = null, window.touchEndTime = null;
var eu, tu, nu, ru, iu = e => {
var {
children: t = null,
reference: n = null,
className: r = "",
placement: i = "top",
checked: o = null
} = e, a = g(e, Qc), [s, l] = dt(!1), c = vt(null), {
context: u,
x: p,
y: d,
strategy: f,
floating: m,
reference: v,
placement: _,
middlewareData: {
arrow: {
x: b,
y: y
} = {}
}
} = Vc({
middleware: [ec(10), tc({
padding: 8
}), jc({
element: c
})],
open: s,
placement: i,
onOpenChange: l,
whileElementsMounted: Mc
}), {
getReferenceProps: w,
getFloatingProps: x
} = Gc([Kc(u)]), [k, C] = dt(!1);
Ml((() => {
pa() || C(!0)
}));
var S = {
top: "bottom",
bottom: "top"
} [(_ || "").split("-")[0]];
return zl(Pe, k ? {
children: [zl("span", h(h(h({
ref: v
}, w()), {}, {
className: Rl("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r)
}, a), {}, {
children: n || zl(Fl, {
className: "pk-cursor-pointer"
})
})), t && s && zl("div", h(h({
className: Rl(
"relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]", Jc
.large_tooltip),
ref: m,
style: {
position: f,
top: null != d ? d : 0,
left: null != p ? p : 0,
hyphens: "auto"
}
}, x()), {}, {
children: [zl(Ul, {
style: {
textAlign: "center",
wordBreak: "break-all"
},
children: t
}), zl("div", {
className: Jc.large_tooltip_img,
children: n || zl(Fl, {
className: "pk-cursor-pointer"
})
}), zl("div", {
className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
style: {
left: b,
top: y,
[S]: "-10px"
},
ref: c
})]
}))]
} : {
children: [zl("span", h(h(h({
ref: v
}, w()), {}, {
className: Rl("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r, Jc.mobile_switch)
}, a), {}, {
children: n || zl(Fl, {
className: "pk-cursor-pointer"
})
})), t && s && o && zl("div", h(h({
className: Rl(
"relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]", Jc
.large_tooltip),
ref: m,
style: {
position: f,
top: null != d ? d : 0,
left: null != p ? p : 0,
hyphens: "auto"
}
}, x()), {}, {
children: [zl(Ul, {
style: {
textAlign: "center",
wordBreak: "break-all"
},
children: t
}), zl("div", {
className: Jc.large_tooltip_img,
children: n || zl(Fl, {
className: "pk-cursor-pointer"
})
}), zl("div", {
className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
style: {
left: b,
top: y,
[S]: "-10px"
},
ref: c
})]
}))]
})
},
ou = window.SHOP_PARAMS.finance_symbol,
au = (null === (eu = window) || void 0 === eu || null === (tu = eu.C_SETTINGS) || void 0 === tu || null === (nu = tu.market) || void 0 === nu || null === (ru = nu.market_price_setting) || void 0 === ru ? void 0 : ru.actual_rate) || 1,
su = 1e5,
lu = Ft((function(e, t) {
var n, {
optionData: r,
control: i,
name: o,
children: a,
help: s,
label: l,
tag: c = "div",
alwaysShowError: u = !1
} = e,
{
errors: h,
isSubmitted: p
} = ns({
name: o,
control: i
}),
d = (null == s ? void 0 : s.value) && "below" === (null == s ? void 0 : s.type),
f = null == h || null === (n = h[o]) || void 0 === n ? void 0 : n.message,
g = () => {
var e;
return "boolean" == typeof u ? u : "object" == typeof u ? (null == u ? void 0 : u[null == h || null === (e = h[o]) || void 0 === e ? void 0 : e.type]) || !1 : void 0
},
m = () => ((e, t) => {
var n;
if (null === (n = e[t.fid]) || void 0 === n || !n.length) return 0;
if (Number(null == t ? void 0 : t.price)) return Number(t.price) ? (Number(t.price) * su * au / su).toFixed(2) : 0;
var r, i = 0;
return ["swatch", "dropdown", "button", "checkbox"].includes(null == t ? void 0 : t.type) && (null === (r = t.options) || void 0 === r || r.forEach((n => {
("dropdown" === t.type ? e[t.fid] === n.label : e[t.fid].includes(n.label)) && (i += Number(n.price) || 0)
}))), i ? (i * su * au / su).toFixed(2) : 0
})(e.control._formValues, r);
return zl(c, {
ref: t,
children: [zl("div", {
className: Rl("pk-break-words pk-text-sm md:pk-text-base", {
"pk-mb-3": l && "swatch" !== r.type,
"pk-mb-2.5": l && "swatch" === r.type
}),
style: {
hyphens: "auto",
wordBreak: "break-word"
},
children: ((e, t) => {
var n = !!m() && '\n <span>(</span>\n <span>+</span>\n <span class="money notranslate">'.concat(ou).concat(m(), "</span>\n <span>) </span>\n ");
return zl("div", {
className: Rl("pk-flex items-center relative", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [zl(Ul, {
tagName: "div",
className: "pk-font-medium appparkeet_form_item_title",
children: e
}), (null == t ? void 0 : t.value) && "tooltip" === t.type && zl(Zc, {
className: "pk-mx-1 pk-text-[14px]",
children: t.value
}), zl("div", {
className: "pk-ml-1.5 pk-flex pk-items-center pk-font-semibold notranslate",
dangerouslySetInnerHTML: {
__html: n
}
}), zl(Ul, {
children: ":"
})]
}, "title")
})(l, s)
}), a, zl(Ul, {
tagName: "p",
style: {
hyphens: "auto"
},
className: Rl("pk-text-[#DB393A] pk-text-xs md:pk-text-sm", {
"pk-mt-2": (p || g()) && f
}),
children: (p || g()) && f
}, f), zl(Ul, {
tagName: "p",
style: {
hyphens: "auto"
},
className: Rl("pk-text-[#7A7A7A] pk-text-xs md:pk-text-sm pk-break-words", {
"pk-mt-2": d
}),
children: d && s.value
})]
})
})),
cu = Rt(lu, ((e, t) => e.children === t.children)),
uu = e => {
var {
value: t,
onChange: n,
multiple: r
} = e, {
max: i = Number.MAX_SAFE_INTEGER
} = r || {}, o = Boolean(r && i > 1), a = function(e) {
const t = vt(e);
t.current = bt((() => e), [e]);
const n = vt();
return n.current || (n.current = function(...e) {
return t.current.apply(this, e)
}), n.current
}((e => {
var {
value: r,
checked: a
} = e, s = {
true_true: () => [...t, r],
true_false: () => [r],
false_true: () => t.filter((e => e !== r)),
false_false: () => []
} ["".concat(Boolean(a), "_").concat(o)]();
if (!(o && s.length > i)) return null == n || n(s), s
}));
return {
toggleOption: a
}
};
var hu = new class {
constructor() {
this.bus = {}
}
$off(e, t) {
var n;
if (this.bus[e]) {
var r = null === (n = this.bus[e]) || void 0 === n ? void 0 : n.findIndex((e => e === t));
r >= 0 && this.bus[e].splice(r, 1)
}
}
$on(e, t) {
var n = this.bus[e];
this.bus[e] = n ? [...n, t] : [t]
}
$emit(e) {
for (var t, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) r[i - 1] = arguments[i];
null === (t = this.bus[e]) || void 0 === t || t.forEach((e => {
e(...r)
}))
}
},
pu = Qe(),
du = (e, t) => {
var n, r, i, o = "";
2 === (null === (n = e.preview_setting) || void 0 === n ? void 0 : n.type) ? o = null === (r = e.preview_setting.data.filter((e => e.variant_id === t))[0]) || void 0 === r ? void 0 : r.bg_image_url : o = null === (i = e
.preview_setting.data[0]) || void 0 === i ? void 0 : i.bg_image_url;
return o
},
fu = Qe({}),
gu = e => {
var {
size: t,
optionData: n,
control: r,
children: i,
options: o,
defaultValue: a = [],
fieldName: s,
propertyName: l,
name: c,
required: u,
multiple: p,
help: d,
visible: f
} = e, g = bt((() => o || Fe(i).map((e => e.props)) || []), [i, o]), {
formatMessage: m
} = vo(), {
min: v = 0
} = p || {}, {
field: {
onChange: _,
onBlur: b,
value: y,
ref: w
}
} = ls({
control: r,
name: s,
rules: {
validate: {
min: e => !p || !(null != e && e.length) || (null == e ? void 0 : e.length) >= v || jl(v),
required: e => !u || (null == e ? void 0 : e.length) >= 1 || m({
id: "required_tip"
})
}
},
defaultValue: a
}), {
toggleOption: x
} = uu({
value: y,
multiple: p,
onChange: _
}), k = y.join(",");
return zl(fu.Provider, {
value: bt((() => ({
toggleOption: x
})), [x]),
children: f ? zl(lu, {
optionData: n,
name: s,
label: c,
help: d,
control: r,
children: [zl("div", {
onBlur: b,
className: "pk-flex pk-flex-wrap pk--mt-1.5 pk--ml-2 pk-outline-none",
ref: w,
tabIndex: "0",
children: g.map((n => {
var {
label: r
} = n, i = null == y ? void 0 : y.includes(r);
return zl(mu, h(h({}, n), {}, {
checked: i,
size: t,
optionItem: e
}), r)
}))
}), zl("input", {
type: "hidden",
name: y.length > 0 ? "properties[".concat(l, "]") : "",
value: k || ""
})]
}) : null
})
},
mu = Rt((function(e) {
var {
type: t,
value: n,
label: r,
checked: i = !1,
size: o,
optionItem: a
} = e, {
toggleOption: s
} = wt(fu), l = wt(pu);
return "52px" === o && "img" === t ? zl(iu, {
checked: i,
placement: "top",
className: Rl("pk-flex-none pk-relative pk-block pk-cursor-pointer pk-rounded-[3px] pk-mt-3 pk-ml-3 pk-overflow-hidden", {
"pk-ring-2 pk-ring-offset-2 pk-ring-[#333]": i,
"pk-w-11 pk-h-11": "52px" === o || !o,
"pk-w-18 pk-h-18": "80px" === o,
"pk-w-23 pk-h-23": "100px" === o
}),
onClick: () => {
var e, t = s({
checked: !i,
value: r
});
if (null != a && null !== (e = a.preview_setting) && void 0 !== e && e.preview_open) {
var n, o, c, u, h = du(a, l);
hu.$emit(F, {
bg_image_url: h,
checked_fids: null == a || null === (n = a.options) || void 0 === n || null === (o = n.filter((e => t.includes(e.label)))) || void 0 === o ? void 0 : o.map((e => e.fid)),
un_checked_fids: null == a || null === (c = a.options) || void 0 === c || null === (u = c.filter((e => !t.includes(e.label)))) || void 0 === u ? void 0 : u.map((e => e.fid))
})
}
},
style: "color" === t && {
backgroundColor: n
},
reference: "img" === t ? zl("div", {
data: n,
style: {
backgroundImage: "url(".concat(window.SHOP_PARAMS.default_img, ")")
},
className: "pk-w-full pk-h-full pk-object-cover pk-object-center pk-rounded-[3px]",
children: zl("img", {
src: n,
alt: r,
style: {
objectFit: "cover"
},
className: "pk-w-full pk-h-full pk-object-cover pk-object-center pk-rounded-[3px]"
})
}) : zl(Pe, {}),
children: r && r
}) : zl(Zc, {
placement: "top",
className: Rl("pk-flex-none pk-relative pk-block pk-cursor-pointer pk-rounded-[3px] pk-mt-3 pk-ml-3 pk-overflow-hidden", {
"pk-ring-2 pk-ring-offset-2 pk-ring-[#333]": i,
"pk-w-11 pk-h-11": "52px" === o || !o,
"pk-w-18 pk-h-18": "80px" === o,
"pk-w-23 pk-h-23": "100px" === o
}),
onClick: () => {
var e, t = s({
checked: !i,
value: r
});
if (null != a && null !== (e = a.preview_setting) && void 0 !== e && e.preview_open) {
var n, o, c, u, h = du(a, l);
hu.$emit(F, {
bg_image_url: h,
checked_fids: null == a || null === (n = a.options) || void 0 === n || null === (o = n.filter((e => t.includes(e.label)))) || void 0 === o ? void 0 : o.map((e => e.fid)),
un_checked_fids: null == a || null === (c = a.options) || void 0 === c || null === (u = c.filter((e => !t.includes(e.label)))) || void 0 === u ? void 0 : u.map((e => e.fid))
})
}
},
style: "color" === t && {
backgroundColor: n
},
reference: "img" === t ? zl("object", {
data: n,
className: "pk-w-full pk-h-full pk-object-cover pk-object-center",
children: zl("img", {
src: window.SHOP_PARAMS.default_img,
alt: r,
className: "pk-w-full pk-h-full pk-object-cover pk-object-center"
})
}) : zl(Pe, {}),
children: r && r
})
}), ((e, t) => e.checked === t.checked && e.label === t.label && e.value === t.value && e.type === t.type && e.selected_value === t.selected_value));
gu.Option = () => null;
var vu, _u = gu,
bu = "Dropdown-module_dropdown-label__8sSmb";
function yu() {
return yu = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, yu.apply(this, arguments)
}
c(".Dropdown-module_dropdown-label__8sSmb[\\:has\\(select\\:focus\\)]{border:1px solid #333!important}.Dropdown-module_dropdown-label__8sSmb:has(select:focus){border:1px solid #333!important}");
var wu = e => Te("svg", yu({
width: 16,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), vu || (vu = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M3.2 6.4a.8.8 0 0 1 1.366-.566L8 9.27l3.434-3.434a.8.8 0 1 1 1.131 1.13l-4 4a.8.8 0 0 1-1.13 0l-4-4A.798.798 0 0 1 3.2 6.4Z",
fill: "#6D7175"
}))),
xu = function(e) {
var {
optionData: t,
control: n,
name: r,
fieldName: i,
propertyName: o,
options: a,
children: s,
placeholder: l = "",
defaultValue: c = "",
required: u,
help: h,
visible: p
} = e, d = bt((() => a || Fe(s).map((e => e.props)) || []), [s, a]), {
formatMessage: f
} = vo(), {
field: {
onChange: g,
onBlur: m,
value: v,
ref: _
},
fieldState: {
error: b
},
formState: {
isSubmitted: y
}
} = ls({
control: n,
name: i,
rules: {
required: {
value: !!u,
message: f({
id: "required_tip"
})
}
},
defaultValue: c
});
return zl(Pe, {
children: p ? zl(lu, {
optionData: t,
name: i,
label: r,
help: h,
tag: Pe,
control: n,
children: zl("label", {
className: Rl("pk-block pk-border pk-border-[#D1D1D1] pk-rounded pk-overflow-hidden pk-relative pk-block pk-bg-white pk-leading-[0px] pk-outline-none pk-my-0", y && null != b && b.message ? "pk-border-[#DB393A]" :
"pk-border-[#D1D1D1]", bu),
tabIndex: "1",
ref: _,
children: [zl("div", {
className: "pk-absolute pk-top-0 pk-left-0 pk-w-full pk-h-full pk-flex pk-items-center pk-cursor-pointer pk-pointer-events-none",
children: [l && !v && zl(Ul, {
tagName: "span",
className: "pk-flex-1 pk-truncate pk-ml-3 pk-select-none pk-text-[#93989D] pk-text-sm pk-leading-5",
children: l
}), zl(wu, {
className: "pk-ml-auto pk-mr-4 pk-cursor-pointer"
})]
}), zl("input", {
type: "hidden",
name: v ? "properties[".concat(o, "]") : "",
value: v
}), zl("select", {
name: ca,
onBlur: m,
className: Rl("pk-w-full pk-py-3.5 pk-pl-4 pk-pr-10.5 pk-cursor-pointer pk-appearance-none pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white", {
"pk-opacity-0": !v
}),
value: v,
onInput: e => {
var t = d.reduce(((t, n) => (n.label === e.target.value && (t = n.redirect_url), t)), "");
t ? location.href = t : g(e.target.value)
},
children: [zl(Ul, {
tagName: "option",
value: "",
children: "-No selection-"
}), d.map((e => zl(Ul, {
tagName: "option",
value: e.label,
children: e.label
}, e.label)))]
})]
})
}) : null
})
};
xu.Option = () => null;
var ku, Cu, Su, Eu = xu,
Tu = "Text-module_text-label__8sMmT",
Ou = "Text-module_text_preview_contaniner__X8vAR",
Au = "Text-module_font_color_area__Zch0o",
Pu = "Text-module_font_family_area__BUzEb",
Mu = "Text-module_font_size_area__KmeEO",
Du = "Text-module_preview_item_label__akFsR",
Iu = "Text-module_color_block_wrapper__0K3rY",
Nu = "Text-module_color_block__8LhBv",
Ru = "Text-module_font_family_select_wrapper__N-f37",
ju = "Text-module_font_family_select__otjrz",
Lu = "Text-module_arrow_down_icon__GZiHO",
Fu = "Text-module_font_size_wrapper__TRp3a",
Bu = "Text-module_input_up__huYER",
zu = "Text-module_input_down__g1FF8",
Hu = "Text-module_font_size_input__fMl0u";
function Uu() {
return Uu = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Uu.apply(this, arguments)
}
c(
".Text-module_text-label__8sMmT[\\:has\\(input\\:focus\\)]{border:1px solid #333}.Text-module_text-label__8sMmT:has(input:focus){border:1px solid #333}.Text-module_text_preview_contaniner__X8vAR{display:flex;flex-direction:column;flex-wrap:wrap;gap:20px;margin-top:20px}.Text-module_font_color_area__Zch0o,.Text-module_font_family_area__BUzEb,.Text-module_font_size_area__KmeEO{align-items:flex-start;display:flex;flex-direction:column;gap:12px;width:100%}.Text-module_preview_item_label__akFsR{color:rgba(51,51,51,.9);font-size:15px;line-height:130%}.Text-module_color_block_wrapper__0K3rY{align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:4px;width:100%}.Text-module_color_block__8LhBv{align-items:center;border-radius:6px;box-sizing:border-box;cursor:pointer;display:flex;height:52px;justify-content:center;padding:0;width:52px}.Text-module_font_family_select_wrapper__N-f37{border:1px solid rgba(51,51,51,.12)!important;border-radius:4px;overflow:hidden;position:relative;width:100%}.Text-module_font_family_select__otjrz{-webkit-appearance:none;appearance:none;background:#fff;border:none!important;color:#333!important;cursor:pointer;font-size:14px!important;font-weight:500!important;height:100%;line-height:130%!important;overflow:hidden;padding:14px 42px 14px 16px!important;text-overflow:ellipsis;white-space:nowrap;width:100%}.Text-module_arrow_down_icon__GZiHO{cursor:pointer;position:absolute;right:16px;top:16px}.Text-module_font_size_wrapper__TRp3a{-webkit-tap-highlight-color:#fff;align-items:center;background:#fff;border:1px solid rgba(51,51,51,.12)!important;border-radius:4px;box-sizing:border-box;display:flex;gap:10px;height:44px;outline:none;padding:5px 39px 5px 16px;position:relative;width:120px}.Text-module_input_up__huYER{cursor:pointer;position:absolute;right:5px;top:3px}.Text-module_input_up__huYER:hover rect{fill:#dbdddf}.Text-module_input_up__huYER:active rect{fill:#c9ccd0}.Text-module_input_down__g1FF8{cursor:pointer;position:absolute;right:5px;top:23px}.Text-module_input_down__g1FF8:active rect{fill:#c9ccd0}.Text-module_font_size_input__fMl0u{-webkit-appearance:none!important;appearance:none!important;font-size:14px!important;font-weight:500!important;height:100%;line-height:130%!important;outline:none!important;width:100%}");
var Wu, Vu, Xu, Gu = e => Te("svg", Uu({
width: 24,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), ku || (ku = Te("rect", {
width: 24,
height: 16,
rx: 2,
fill: "#E4E5E7"
})), Cu || (Cu = Te("g", {
clipPath: "url(#InputUp_svg__a)"
}, Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M15.319 9.75c.39 0 .585-.471.309-.747l-3.319-3.319a.437.437 0 0 0-.618 0l-3.32 3.32a.437.437 0 0 0 .31.746h6.638Z",
fill: "#6D7175"
}))), Su || (Su = Te("defs", null, Te("clipPath", {
id: "InputUp_svg__a"
}, Te("path", {
fill: "#fff",
transform: "translate(5 1)",
d: "M0 0h14v14H0z"
})))));
function Yu() {
return Yu = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Yu.apply(this, arguments)
}
var qu, Ku, $u, Zu = e => Te("svg", Yu({
width: 24,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), Wu || (Wu = Te("rect", {
width: 24,
height: 16,
rx: 2,
transform: "matrix(1 0 0 -1 0 16)",
fill: "#E4E5E7"
})), Vu || (Vu = Te("g", {
clipPath: "url(#InputDown_svg__a)"
}, Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M15.319 6.25c.39 0 .585.471.309.747l-3.319 3.319a.437.437 0 0 1-.618 0l-3.32-3.32a.437.437 0 0 1 .31-.746h6.638Z",
fill: "#6D7175"
}))), Xu || (Xu = Te("defs", null, Te("clipPath", {
id: "InputDown_svg__a"
}, Te("path", {
fill: "#fff",
transform: "matrix(1 0 0 -1 5 15)",
d: "M0 0h14v14H0z"
}))))),
Ju = e => {
var t, n, r, i, {
control: o,
defaultValue: a = "",
fieldName: s,
propertyName: l,
name: c,
required: u,
help: p,
placeholder: d,
optionData: f,
maximum: g,
visible: m,
preview_setting: v = {},
textStyleChange: _ = (() => {})
} = e,
[b, y] = dt(!0),
[w, x] = dt(v.selected_color || (null === (t = v.text_colors) || void 0 === t ? void 0 : t[0]) || "black"),
[k, C] = dt(null === (n = v.text_families) || void 0 === n ? void 0 : n[0]),
[S, E] = dt(v.text_size),
{
formatMessage: T
} = vo(),
O = sa((e => {
M(e), null == _ || _({
textColor: w,
textFont: k,
textSize: S,
isInit: b,
textValue: e.target.value
})
}), 200),
A = e => {
var t = e.target.value;
/^\d+$/.test(t) ? (t < 10 ? t = 10 : t > 128 && (t = 128), E(t)) : E(v.text_size)
};
gt((() => {
b ? (y(!1), setTimeout((() => {
null == _ || _({
textColor: w,
textFont: k,
textSize: S,
textValue: I,
isInit: !0
})
}), 500)) : null == _ || _({
textColor: w,
textFont: k,
textSize: S,
textValue: I,
isInit: !1
})
}), [w, k, S]);
var P = g || 500,
{
field: {
onChange: M,
onBlur: D,
value: I,
ref: N
},
fieldState: {
error: R
},
formState: {
isSubmitted: j
}
} = ls({
control: o,
name: s,
rules: {
required: {
value: !!u,
message: T({
id: "required_tip"
})
}
},
defaultValue: a
}),
L = j && (null == R ? void 0 : R.message) || "maxLength" === (null == R ? void 0 : R.type),
F = {
className: Rl("pk-flex-1 placeholder:pk-text-[color:#93989D] pk-outline-none", {
"pk-bg-transparent": L,
"pk-truncate": !I
}),
maxLength: P,
type: "text",
autoComplete: "off",
placeholder: d,
name: "properties[".concat(l, "]"),
onBlur: D,
onFocus: e => {
(e.target.value || 0 === e.target.value) && (null == _ || _({
textColor: w,
textFont: k,
textSize: S,
textValue: e.target.value
}))
},
onChange: O,
value: I
};
return zl(Pe, {
children: m ? zl(Pe, {
children: [zl(cu, {
optionData: f,
label: c,
name: s,
help: p,
control: o,
alwaysShowError: {
maxLength: !0
},
children: zl("label", {
className: Rl("pk-flex pk-w-full pk-py-3.5 pk-px-4 pk-appearance-none pk-rounded pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white pk-border pk-cursor-text", L ? "" : Tu, L ?
"pk-border-[#DB393A]" : "pk-border-[#D1D1D1]"),
ref: N,
children: [null !== (r = window) && void 0 !== r && null !== (i = r.appparakeet_switch) && void 0 !== i && i.preview_fixed ? zl("textarea", h({}, F)) : zl("input", h({}, F)), I.length >= P - 10 && zl(
"span", {
className: "pk-flex-none pk-text-[#93989D] pk-pointer-events-none pk-ml-3",
children: [I.length, "/", P]
})]
})
}), v && v.preview_open && zl("div", {
className: Ou,
children: [v.text_colors && v.text_colors.length > 1 && zl("div", {
className: Au,
children: [zl("div", {
className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [T({
id: "font_color"
}), " :"]
}), zl("div", {
className: Iu,
children: v.text_colors && v.text_colors.map((e => zl("div", {
className: Rl(Nu),
style: {
border: "2px solid ".concat(w === e ? e : "transparent")
},
onClick: () => x(e),
children: zl("div", {
style: {
background: e,
width: "44px",
height: "44px",
borderRadius: "3px"
}
})
}, e)))
})]
}), v.text_families && v.text_families.length > 1 && zl("div", {
className: Pu,
children: [zl("div", {
className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [T({
id: "font"
}), " :"]
}), zl("div", {
className: Ru,
children: [zl("select", {
className: ju,
value: k,
onChange: e => {
(e => {
C(e.target.value)
})(e)
},
children: v.text_families && v.text_families.map((e => zl("option", {
value: e,
children: e
}, e)))
}), zl("div", {
className: Lu,
children: zl(wu, {})
})]
})]
}), v.adjust_font_size && zl("div", {
className: Mu,
children: [zl("div", {
className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [T({
id: "font_size"
}), " :"]
}), zl("div", {
className: Fu,
children: [zl("input", {
type: "text",
className: Hu,
value: S,
onBlur: e => {
A(e)
},
onFocus: e => {
A(e)
},
onChange: e => {
(e => {
var {
value: t
} = e.target;
E(t)
})(e)
}
}), zl(Gu, {
onClick: () => {
Number(S) >= 128 || E((e => Number(e) + 1))
},
className: Bu
}), zl(Zu, {
className: zu,
onClick: () => {
Number(S) <= 10 || E((e => Number(e) - 1))
}
})]
})]
})]
})]
}) : null
})
},
Qu = e => {
var t, n, {
control: r,
defaultValue: i = "",
fieldName: o,
propertyName: a,
name: s,
required: l,
help: c,
placeholder: u,
optionData: h,
maximum: p,
visible: d,
preview_setting: f = {},
textStyleChange: g = (() => {})
} = e,
[m, v] = dt(!0),
[_, b] = dt(f.selected_color || (null === (t = f.text_colors) || void 0 === t ? void 0 : t[0]) || "black"),
[y, w] = dt(null === (n = f.text_families) || void 0 === n ? void 0 : n[0]),
[x, k] = dt(f.text_size),
{
formatMessage: C
} = vo(),
{
field: {
onChange: S,
onBlur: E,
value: T,
ref: O
},
fieldState: {
error: A
},
formState: {
isSubmitted: P
}
} = ls({
control: r,
name: o,
rules: {
required: {
value: !!l,
message: C({
id: "required_tip"
})
}
},
defaultValue: i
}),
M = e => {
var t = e.target.value;
/^\d+$/.test(t) ? (t < 10 ? t = 10 : t > 128 && (t = 128), k(t)) : k(f.text_size)
};
gt((() => {
m ? (v(!1), null == g || g({
textColor: _,
textFont: y,
textSize: x,
textValue: T,
isInit: !0
})) : null == g || g({
textColor: _,
textFont: y,
textSize: x,
textValue: T,
isInit: !1
})
}), [_, y, x]);
var D = p || 500,
I = P && (null == A ? void 0 : A.message) || "maxLength" === (null == A ? void 0 : A.type);
return zl(Pe, {
children: d ? zl(Pe, {
children: [zl(cu, {
optionData: h,
label: s,
name: o,
help: c,
control: r,
alwaysShowError: {
maxLength: !0
},
children: zl("label", {
className: Rl("pk-flex pk-w-full pk-py-3.5 pk-px-4 pk-appearance-none pk-rounded pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white pk-border pk-cursor-text", I ? "" : Tu, I ?
"pk-border-[#DB393A]" : "pk-border-[#D1D1D1]"),
ref: O,
children: [zl("input", {
className: Rl("pk-flex-1 placeholder:pk-text-[color:#93989D] pk-outline-none", {
"pk-bg-transparent": I,
"pk-truncate": !T
}),
max: "9999-12-31",
maxLength: D,
type: "date",
autoComplete: "off",
placeholder: u,
name: "properties[".concat(a, "]"),
onBlur: E,
onFocus: e => {
(e.target.value || 0 === e.target.value) && (null == g || g({
textColor: _,
textFont: y,
textSize: x,
textValue: e.target.value
}))
},
onChange: e => {
(e => {
S(e), null == g || g({
textColor: _,
textFont: y,
textSize: x,
isInit: m,
textValue: e.target.value
})
})(e)
},
value: T
}), T.length >= D - 10 && zl("span", {
className: "pk-flex-none pk-text-[#93989D] pk-pointer-events-none pk-ml-3",
children: [T.length, "/", D]
})]
})
}), f && f.preview_open && zl("div", {
className: Ou,
children: [f.text_colors && f.text_colors.length > 1 && zl("div", {
className: Au,
children: [zl("div", {
className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [C({
id: "font_color"
}), " :"]
}), zl("div", {
className: Iu,
children: f.text_colors && f.text_colors.map((e => zl("div", {
className: Rl(Nu),
style: {
border: "2px solid ".concat(_ === e ? e : "transparent")
},
onClick: () => b(e),
children: zl("div", {
style: {
background: e,
width: "44px",
height: "44px",
borderRadius: "3px"
}
})
}, e)))
})]
}), f.text_families && f.text_families.length > 1 && zl("div", {
className: Pu,
children: [zl("div", {
className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [C({
id: "font"
}), " :"]
}), zl("div", {
className: Ru,
children: [zl("select", {
className: ju,
value: y,
onChange: e => {
(e => {
w(e.target.value)
})(e)
},
children: f.text_families && f.text_families.map((e => zl("option", {
value: e,
children: e
}, e)))
}), zl("div", {
className: Lu,
children: zl(wu, {})
})]
})]
}), f.adjust_font_size && zl("div", {
className: Mu,
children: [zl("div", {
className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
children: [C({
id: "font_size"
}), " :"]
}), zl("div", {
className: Fu,
children: [zl("input", {
type: "text",
className: Hu,
value: x,
onBlur: e => {
M(e)
},
onFocus: e => {
M(e)
},
onChange: e => {
(e => {
var {
value: t
} = e.target;
k(t)
})(e)
}
}), zl(Gu, {
onClick: () => {
Number(x) >= 128 || k((e => Number(e) + 1))
},
className: Bu
}), zl(Zu, {
className: zu,
onClick: () => {
Number(x) <= 10 || k((e => Number(e) - 1))
}
})]
})]
})]
})]
}) : null
})
},
eh = e => {
var t, n, r, i, {
optionData: o,
control: a,
defaultValue: s = [],
fieldName: l,
propertyName: c,
name: u,
required: h,
help: p,
options: d,
multiple: f,
visible: g
} = e,
{
formatMessage: m
} = vo(),
{
min: v = 0
} = f || {},
{
field: {
onChange: _,
onBlur: b,
value: y,
ref: w
}
} = ls({
control: a,
name: l,
rules: {
validate: {
min: e => !f || !(null != e && e.length) || (null == e ? void 0 : e.length) >= v || jl(v),
required: e => !h || (null == e ? void 0 : e.length) >= 1 || m({
id: "required_tip"
})
}
},
defaultValue: s
}),
{
toggleOption: x
} = uu({
value: y,
multiple: f,
onChange: _
}),
k = y.join(",");
return zl(Pe, {
children: g && zl(lu, {
optionData: o,
name: l,
label: u,
help: p,
control: a,
children: [zl("div", {
ref: w,
"data-name": u,
"data-custom-class": null === (t = window) || void 0 === t || null === (n = t.appparakeet_custom_add_class) || void 0 === n ? void 0 : n[u],
className: "pk-flex pk-flex-wrap pk-gap-x-3 pk-gap-y-4 ".concat((null === (r = window) || void 0 === r || null === (i = r.appparakeet_custom_add_class) || void 0 === i ? void 0 : i[u]) || ""),
tabIndex: "0",
onBlur: b,
children: d.map((e => {
var {
label: t
} = e, n = null == y ? void 0 : y.includes(t);
return zl("button", {
onClick: () => {
e.redirect_url ? location.href = e.redirect_url : x({
checked: !n,
value: t
})
},
type: "button",
dangerouslySetInnerHTML: {
__html: t
},
className: Rl("pk-flex pk-items-center pk-justify-center pk-h-11.5 pk-min-w-[46px] pk-px-4 pk-rounded pk-text-[15px] pk-border-solid pk-outline-none", n ?
"pk-border-2 pk-border-[#333] focus:pk-border-[#333]" : "pk-text-opacity-80 pk-border pk-border-[#333/12]")
}, t)
}))
}), zl("input", {
type: "hidden",
name: y.length > 0 ? "properties[".concat(c, "]") : "",
value: k || ""
})]
})
})
};
function th() {
return th = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, th.apply(this, arguments)
}
var nh, rh, ih = e => Te("svg", th({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), qu || (qu = Te("rect", {
width: 18,
height: 18,
rx: 4,
fill: "#fff"
})), Ku || (Ku = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
fill: "#fff"
})), $u || ($u = Te("rect", {
x: .5,
y: .5,
width: 17,
height: 17,
rx: 3.5,
stroke: "#333",
strokeOpacity: .12
})));
function oh() {
return oh = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, oh.apply(this, arguments)
}
var ah, sh, lh, ch = e => Te("svg", oh({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), nh || (nh = Te("rect", {
width: 18,
height: 18,
rx: 4,
fill: "#333"
})), rh || (rh = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
fill: "#fff"
})));
function uh() {
return uh = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, uh.apply(this, arguments)
}
var hh, ph = e => Te("svg", uh({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), ah || (ah = Te("rect", {
width: 18,
height: 18,
rx: 4,
fill: "#fff"
})), sh || (sh = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
fill: "#fff"
})), lh || (lh = Te("rect", {
x: .5,
y: .5,
width: 17,
height: 17,
rx: 3.5,
stroke: "#333",
strokeOpacity: .12
})));
function dh() {
return dh = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, dh.apply(this, arguments)
}
var fh = e => Te("svg", dh({
xmlns: "http://www.w3.org/2000/svg",
width: 18,
height: 18,
fill: "none"
}, e), hh || (hh = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M2.352 1.023a1.33 1.33 0 0 0-1.33 1.33v13.295c0 .734.596 1.33 1.33 1.33h13.296a1.33 1.33 0 0 0 1.33-1.33V2.352a1.33 1.33 0 0 0-1.33-1.33H2.352Zm4.432 3.102c.975 0 1.773.798 1.773 1.773 0 .975-.798 1.772-1.773 1.772a1.778 1.778 0 0 1-1.773-1.772c0-.975.798-1.773 1.773-1.773Zm7.977 11.08H3.236a.439.439 0 0 1-.355-.7l3.15-3.591a.442.442 0 0 1 .638-.01l1.445 1.641 2.712-4.237a.443.443 0 0 1 .744.017l3.58 6.215a.45.45 0 0 1-.39.665Z",
fill: "#BCBCBC"
}))),
gh = "Checkbox-module_checkbox_img__wHiW3",
mh = "Checkbox-module_checkbox_img_default__S0ISH",
vh = "Checkbox-module_checkbox_row__MJZge",
_h = "Checkbox-module_label_checked__YpN49";
c(
".Checkbox-module_checkbox_img__wHiW3{border-radius:3px;height:52px!important;margin-left:8px;width:52px}.Checkbox-module_checkbox_img_default__S0ISH{align-items:center;background-color:#f5f5f5;border-radius:3px;display:flex;height:52px!important;justify-content:center;margin-left:8px;width:52px}.Checkbox-module_checkbox_row__MJZge{align-items:stretch!important;display:flex!important;flex-wrap:wrap!important;gap:12px!important;margin-left:0!important;width:100%!important}.Checkbox-module_checkbox_row__MJZge>label{background:#fff!important;border:1px solid #e6e6e6!important;border-radius:6px!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;flex-wrap:wrap!important;margin-bottom:0!important;min-height:125px!important;padding:8px 8px 10px!important;width:118px!important}.Checkbox-module_checkbox_row__MJZge>.Checkbox-module_label_checked__YpN49{background:#fff!important;border:1px solid #333!important;border-radius:6px!important}.Checkbox-module_checkbox_row__MJZge>label *{margin:0!important}.Checkbox-module_checkbox_row__MJZge>label>svg{margin-bottom:8px!important}.Checkbox-module_checkbox_row__MJZge>label>span{margin-top:5px!important}.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH{height:66px!important;object-fit:contain;width:66px!important}@media (max-width:959px){.Checkbox-module_checkbox_row__MJZge>label{min-height:111px!important;width:106px!important}.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH{height:52px!important;object-fit:contain;width:52px!important}}");
var bh = {
unchecked: ih,
checked: ch,
disabled: ph
},
yh = Rt((e => {
var {
optionData: t,
control: n,
defaultValue: r = [],
fieldName: i,
propertyName: o,
name: a,
required: s,
help: l,
options: c,
multiple: u,
visible: h
} = e, {
min: p = 0,
max: d = Number.MAX_SAFE_INTEGER
} = u || {}, {
formatMessage: f
} = vo(), {
field: {
onChange: g,
onBlur: m,
value: v,
ref: _
}
} = ls({
control: n,
name: i,
rules: {
validate: {
min: e => !u || !(null != e && e.length) || (null == e ? void 0 : e.length) >= p || jl(p),
required: e => !s || (null == e ? void 0 : e.length) >= 1 || f({
id: "required_tip"
})
}
},
defaultValue: r
}), {
toggleOption: b
} = uu({
value: v,
multiple: u,
onChange: g
}), y = v.join(",");
return zl(Pe, {
children: h && zl(lu, {
optionData: t,
name: i,
label: a,
help: l,
control: n,
children: [zl("div", {
ref: _,
tabIndex: "0",
onBlur: m,
className: Rl("pk-block pk--mt-0.5 pk--mb-1.5 pk--mx-4", "row" === (null == t ? void 0 : t.checkbox_direction) ? vh : ""),
children: c.map((e => {
var {
label: n
} = e, r = null == v ? void 0 : v.includes(n), i = !r && u && v.length >= d, o = bh[i ? "disabled" : r ? "checked" : "unchecked"];
return zl("label", {
onClick: () => b({
value: n,
checked: !r
}),
className: Rl("pk-flex pk-items-center pk-py-1.5 pk-cursor-pointer pk-px-4 !pk-mb-0", r ? _h : ""),
children: [zl(o, {
style: {
marginRight: "4px"
},
className: "pk-flex-none pk-self-center"
}), null != e && e.image_url ? zl("img", {
className: gh,
src: e.image_url
}) : "row" === (null == t ? void 0 : t.checkbox_direction) ? zl("div", {
className: mh,
children: zl(fh, {})
}) : null, zl("span", {
style: {
hyphens: "auto",
wordBreak: "break-word"
},
dangerouslySetInnerHTML: {
__html: n
},
className: Rl("pk-ml-2 pk-text-sm pk-leading-5 pk-break-words pk-min-w-0 pk-flex-1", {
"pk-text-[#d2d5d8]": i
})
})]
}, n)
}))
}), zl("input", {
type: "hidden",
name: v.length > 0 ? "properties[".concat(o, "]") : "",
value: y || ""
})]
})
})
}));
function wh() {
return wh = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, wh.apply(this, arguments)
}
function xh(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
function kh(e) {
return kh = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
return typeof e
} : function(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
}, kh(e)
}
function Ch(e) {
var t = function(e, t) {
if ("object" !== kh(e) || null === e) return e;
var n = e[Symbol.toPrimitive];
if (void 0 !== n) {
var r = n.call(e, t || "default");
if ("object" !== kh(r)) return r;
throw new TypeError("@@toPrimitive must return a primitive value.")
}
return ("string" === t ? String : Number)(e)
}(e, "string");
return "symbol" === kh(t) ? t : String(t)
}
function Sh(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];
r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, Ch(r.key), r)
}
}
function Eh(e, t, n) {
return t && Sh(e.prototype, t), n && Sh(e, n), Object.defineProperty(e, "prototype", {
writable: !1
}), e
}
function Th(e, t) {
return Th = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
return e.__proto__ = t, e
}, Th(e, t)
}
function Oh(e, t) {
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
e.prototype = Object.create(t && t.prototype, {
constructor: {
value: e,
writable: !0,
configurable: !0
}
}), Object.defineProperty(e, "prototype", {
writable: !1
}), t && Th(e, t)
}
function Ah(e) {
return Ah = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
return e.__proto__ || Object.getPrototypeOf(e)
}, Ah(e)
}
function Ph(e) {
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e
}
function Mh(e) {
var t = function() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), !0
} catch (e) {
return !1
}
}();
return function() {
var n, r = Ah(e);
if (t) {
var i = Ah(this).constructor;
n = Reflect.construct(r, arguments, i)
} else n = r.apply(this, arguments);
return function(e, t) {
if (t && ("object" === kh(t) || "function" == typeof t)) return t;
if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined");
return Ph(e)
}(this, n)
}
}
function Dh(e, t, n) {
return (t = Ch(t)) in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n, e
}
function Ih(e, t) {
if (null == e) return {};
var n, r, i = function(e, t) {
if (null == e) return {};
var n, r, i = {},
o = Object.keys(e);
for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]);
return i
}(e, t);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])
}
return i
}
function Nh() {
Nh = function() {
return e
};
var e = {},
t = Object.prototype,
n = t.hasOwnProperty,
r = Object.defineProperty || function(e, t, n) {
e[t] = n.value
},
i = "function" == typeof Symbol ? Symbol : {},
o = i.iterator || "@@iterator",
a = i.asyncIterator || "@@asyncIterator",
s = i.toStringTag || "@@toStringTag";
function l(e, t, n) {
return Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}), e[t]
}
try {
l({}, "")
} catch (e) {
l = function(e, t, n) {
return e[t] = n
}
}
function c(e, t, n, i) {
var o = t && t.prototype instanceof p ? t : p,
a = Object.create(o.prototype),
s = new S(i || []);
return r(a, "_invoke", {
value: w(e, n, s)
}), a
}
function u(e, t, n) {
try {
return {
type: "normal",
arg: e.call(t, n)
}
} catch (e) {
return {
type: "throw",
arg: e
}
}
}
e.wrap = c;
var h = {};
function p() {}
function d() {}
function f() {}
var g = {};
l(g, o, (function() {
return this
}));
var m = Object.getPrototypeOf,
v = m && m(m(E([])));
v && v !== t && n.call(v, o) && (g = v);
var _ = f.prototype = p.prototype = Object.create(g);
function b(e) {
["next", "throw", "return"].forEach((function(t) {
l(e, t, (function(e) {
return this._invoke(t, e)
}))
}))
}
function y(e, t) {
function i(r, o, a, s) {
var l = u(e[r], e, o);
if ("throw" !== l.type) {
var c = l.arg,
h = c.value;
return h && "object" == kh(h) && n.call(h, "__await") ? t.resolve(h.__await).then((function(e) {
i("next", e, a, s)
}), (function(e) {
i("throw", e, a, s)
})) : t.resolve(h).then((function(e) {
c.value = e, a(c)
}), (function(e) {
return i("throw", e, a, s)
}))
}
s(l.arg)
}
var o;
r(this, "_invoke", {
value: function(e, n) {
function r() {
return new t((function(t, r) {
i(e, n, t, r)
}))
}
return o = o ? o.then(r, r) : r()
}
})
}
function w(e, t, n) {
var r = "suspendedStart";
return function(i, o) {
if ("executing" === r) throw new Error("Generator is already running");
if ("completed" === r) {
if ("throw" === i) throw o;
return T()
}
for (n.method = i, n.arg = o;;) {
var a = n.delegate;
if (a) {
var s = x(a, n);
if (s) {
if (s === h) continue;
return s
}
}
if ("next" === n.method) n.sent = n._sent = n.arg;
else if ("throw" === n.method) {
if ("suspendedStart" === r) throw r = "completed", n.arg;
n.dispatchException(n.arg)
} else "return" === n.method && n.abrupt("return", n.arg);
r = "executing";
var l = u(e, t, n);
if ("normal" === l.type) {
if (r = n.done ? "completed" : "suspendedYield", l.arg === h) continue;
return {
value: l.arg,
done: n.done
}
}
"throw" === l.type && (r = "completed", n.method = "throw", n.arg = l.arg)
}
}
}
function x(e, t) {
var n = t.method,
r = e.iterator[n];
if (void 0 === r) return t.delegate = null, "throw" === n && e.iterator.return && (t.method = "return", t.arg = void 0, x(e, t), "throw" === t.method) || "return" !== n && (t.method = "throw", t.arg = new TypeError(
"The iterator does not provide a '" + n + "' method")), h;
var i = u(r, e.iterator, t.arg);
if ("throw" === i.type) return t.method = "throw", t.arg = i.arg, t.delegate = null, h;
var o = i.arg;
return o ? o.done ? (t[e.resultName] = o.value, t.next = e.nextLoc, "return" !== t.method && (t.method = "next", t.arg = void 0), t.delegate = null, h) : o : (t.method = "throw", t.arg = new TypeError(
"iterator result is not an object"), t.delegate = null, h)
}
function k(e) {
var t = {
tryLoc: e[0]
};
1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t)
}
function C(e) {
var t = e.completion || {};
t.type = "normal", delete t.arg, e.completion = t
}
function S(e) {
this.tryEntries = [{
tryLoc: "root"
}], e.forEach(k, this), this.reset(!0)
}
function E(e) {
if (e) {
var t = e[o];
if (t) return t.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) {
var r = -1,
i = function t() {
for (; ++r < e.length;)
if (n.call(e, r)) return t.value = e[r], t.done = !1, t;
return t.value = void 0, t.done = !0, t
};
return i.next = i
}
}
return {
next: T
}
}
function T() {
return {
value: void 0,
done: !0
}
}
return d.prototype = f, r(_, "constructor", {
value: f,
configurable: !0
}), r(f, "constructor", {
value: d,
configurable: !0
}), d.displayName = l(f, s, "GeneratorFunction"), e.isGeneratorFunction = function(e) {
var t = "function" == typeof e && e.constructor;
return !!t && (t === d || "GeneratorFunction" === (t.displayName || t.name))
}, e.mark = function(e) {
return Object.setPrototypeOf ? Object.setPrototypeOf(e, f) : (e.__proto__ = f, l(e, s, "GeneratorFunction")), e.prototype = Object.create(_), e
}, e.awrap = function(e) {
return {
__await: e
}
}, b(y.prototype), l(y.prototype, a, (function() {
return this
})), e.AsyncIterator = y, e.async = function(t, n, r, i, o) {
void 0 === o && (o = Promise);
var a = new y(c(t, n, r, i), o);
return e.isGeneratorFunction(n) ? a : a.next().then((function(e) {
return e.done ? e.value : a.next()
}))
}, b(_), l(_, s, "Generator"), l(_, o, (function() {
return this
})), l(_, "toString", (function() {
return "[object Generator]"
})), e.keys = function(e) {
var t = Object(e),
n = [];
for (var r in t) n.push(r);
return n.reverse(),
function e() {
for (; n.length;) {
var r = n.pop();
if (r in t) return e.value = r, e.done = !1, e
}
return e.done = !0, e
}
}, e.values = E, S.prototype = {
constructor: S,
reset: function(e) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(C), !e)
for (var t in this) "t" === t.charAt(0) && n.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = void 0)
},
stop: function() {
this.done = !0;
var e = this.tryEntries[0].completion;
if ("throw" === e.type) throw e.arg;
return this.rval
},
dispatchException: function(e) {
if (this.done) throw e;
var t = this;
function r(n, r) {
return a.type = "throw", a.arg = e, t.next = n, r && (t.method = "next", t.arg = void 0), !!r
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var o = this.tryEntries[i],
a = o.completion;
if ("root" === o.tryLoc) return r("end");
if (o.tryLoc <= this.prev) {
var s = n.call(o, "catchLoc"),
l = n.call(o, "finallyLoc");
if (s && l) {
if (this.prev < o.catchLoc) return r(o.catchLoc, !0);
if (this.prev < o.finallyLoc) return r(o.finallyLoc)
} else if (s) {
if (this.prev < o.catchLoc) return r(o.catchLoc, !0)
} else {
if (!l) throw new Error("try statement without catch or finally");
if (this.prev < o.finallyLoc) return r(o.finallyLoc)
}
}
}
},
abrupt: function(e, t) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var i = this.tryEntries[r];
if (i.tryLoc <= this.prev && n.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
var o = i;
break
}
}
o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o.finallyLoc && (o = null);
var a = o ? o.completion : {};
return a.type = e, a.arg = t, o ? (this.method = "next", this.next = o.finallyLoc, h) : this.complete(a)
},
complete: function(e, t) {
if ("throw" === e.type) throw e.arg;
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && t && (this.next = t), h
},
finish: function(e) {
for (var t = this.tryEntries.length - 1; t >= 0; --t) {
var n = this.tryEntries[t];
if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), C(n), h
}
},
catch: function(e) {
for (var t = this.tryEntries.length - 1; t >= 0; --t) {
var n = this.tryEntries[t];
if (n.tryLoc === e) {
var r = n.completion;
if ("throw" === r.type) {
var i = r.arg;
C(n)
}
return i
}
}
throw new Error("illegal catch attempt")
},
delegateYield: function(e, t, n) {
return this.delegate = {
iterator: E(e),
resultName: t,
nextLoc: n
}, "next" === this.method && (this.arg = void 0), h
}
}, e
}
function Rh(e, t, n, r, i, o, a) {
try {
var s = e[o](a),
l = s.value
} catch (e) {
return void n(e)
}
s.done ? t(l) : Promise.resolve(l).then(r, i)
}
function jh(e) {
return function() {
var t = this,
n = arguments;
return new Promise((function(r, i) {
var o = e.apply(t, n);
function a(e) {
Rh(o, r, i, a, s, "next", e)
}
function s(e) {
Rh(o, r, i, a, s, "throw", e)
}
a(void 0)
}))
}
}
function Lh(e, t) {
(null == t || t > e.length) && (t = e.length);
for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n];
return r
}
function Fh(e, t) {
if (e) {
if ("string" == typeof e) return Lh(e, t);
var n = Object.prototype.toString.call(e).slice(8, -1);
return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Lh(e, t) : void 0
}
}
function Bh(e) {
return function(e) {
if (Array.isArray(e)) return Lh(e)
}(e) || function(e) {
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e)
}(e) || Fh(e) || 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 zh(e, t) {
var n = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);
t && (r = r.filter((function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable
}))), n.push.apply(n, r)
}
return n
}
function Hh(e) {
for (var t = 1; t < arguments.length; t++) {
var n = null != arguments[t] ? arguments[t] : {};
t % 2 ? zh(Object(n), !0).forEach((function(t) {
Dh(e, t, n[t])
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : zh(Object(n)).forEach((function(t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
}))
}
return e
}
var Uh = "".concat(
"accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap",
" ").concat(
"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError"
).split(/[\s\n]+/),
Wh = "aria-",
Vh = "data-";
function Xh(e, t) {
return 0 === e.indexOf(t)
}
function Gh(e) {
var t, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
t = !1 === n ? {
aria: !0,
data: !0,
attr: !0
} : !0 === n ? {
aria: !0
} : Hh({}, n);
var r = {};
return Object.keys(e).forEach((function(n) {
(t.aria && ("role" === n || Xh(n, Wh)) || t.data && Xh(n, Vh) || t.attr && Uh.includes(n)) && (r[n] = e[n])
})), r
}
function Yh(e) {
var t = e.responseText || e.response;
if (!t) return t;
try {
return JSON.parse(t)
} catch (e) {
return t
}
}
function qh(e) {
var t = new XMLHttpRequest;
e.onProgress && t.upload && (t.upload.onprogress = function(t) {
t.total > 0 && (t.percent = t.loaded / t.total * 100), e.onProgress(t)
});
var n = new FormData;
e.data && Object.keys(e.data).forEach((function(t) {
var r = e.data[t];
Array.isArray(r) ? r.forEach((function(e) {
n.append("".concat(t, "[]"), e)
})) : n.append(t, r)
})), e.file instanceof Blob ? n.append(e.filename, e.file, e.file.name) : n.append(e.filename, e.file), t.onerror = function(t) {
e.onError(t)
}, t.onload = function() {
return t.status < 200 || t.status >= 300 ? e.onError(function(e, t) {
var n = "cannot ".concat(e.method, " ").concat(e.action, " ").concat(t.status, "'"),
r = new Error(n);
return r.status = t.status, r.method = e.method, r.url = e.action, r
}(e, t), Yh(t)) : e.onSuccess(Yh(t), t)
}, t.open(e.method, e.action, !0), e.withCredentials && "withCredentials" in t && (t.withCredentials = !0);
var r = e.headers || {};
return null !== r["X-Requested-With"] && t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), Object.keys(r).forEach((function(e) {
null !== r[e] && t.setRequestHeader(e, r[e])
})), t.send(n), {
abort: function() {
t.abort()
}
}
}
var Kh = +new Date,
$h = 0;
function Zh() {
return "rc-upload-".concat(Kh, "-").concat(++$h)
}
var Jh = {};
function Qh(e, t) {}
function ep(e, t) {
! function(e, t, n) {
t || Jh[n] || (e(!1, n), Jh[n] = !0)
}(Qh, e, t)
}
var tp = function(e, t) {
if (e && t) {
var n = Array.isArray(t) ? t : t.split(","),
r = e.name || "",
i = e.type || "",
o = i.replace(/\/.*$/, "");
return n.some((function(e) {
var t = e.trim();
if (/^\*(\/\*)?$/.test(e)) return !0;
if ("." === t.charAt(0)) {
var n = r.toLowerCase(),
a = t.toLowerCase(),
s = [a];
return ".jpg" !== a && ".jpeg" !== a || (s = [".jpg", ".jpeg"]), s.some((function(e) {
return n.endsWith(e)
}))
}
return /\/\*$/.test(t) ? o === t.replace(/\/.*$/, "") : i === t || !!/^\w+$/.test(t) && (ep(!1, "Upload takes an invalidate 'accept' type '".concat(t, "'.Skip for check.")), !0)
}))
}
return !0
};
var np = function(e, t, n) {
var r = function e(r, i) {
r.path = i || "", r.isFile ? r.file((function(e) {
n(e) && (r.fullPath && !e.webkitRelativePath && (Object.defineProperties(e, {
webkitRelativePath: {
writable: !0
}
}), e.webkitRelativePath = r.fullPath.replace(/^\//, ""), Object.defineProperties(e, {
webkitRelativePath: {
writable: !1
}
})), t([e]))
})) : r.isDirectory && function(e, t) {
var n = e.createReader(),
r = [];
! function e() {
n.readEntries((function(n) {
var i = Array.prototype.slice.apply(n);
r = r.concat(i), i.length ? e() : t(r)
}))
}()
}(r, (function(t) {
t.forEach((function(t) {
e(t, "".concat(i).concat(r.name, "/"))
}))
}))
};
e.forEach((function(e) {
r(e.webkitGetAsEntry())
}))
},
rp = ["component", "prefixCls", "className", "disabled", "id", "style", "multiple", "accept", "capture", "children", "directory", "openFileDialogOnClick", "onMouseEnter", "onMouseLeave"],
ip = function(e) {
Oh(n, e);
var t = Mh(n);
function n() {
var e;
xh(this, n);
for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
return (e = t.call.apply(t, [this].concat(i))).state = {
uid: Zh()
}, e.reqs = {}, e.fileInput = void 0, e._isMounted = void 0, e.onChange = function(t) {
var n = e.props,
r = n.accept,
i = n.directory,
o = Bh(t.target.files).filter((function(e) {
return !i || tp(e, r)
}));
e.uploadFiles(o), e.reset()
}, e.onClick = function(t) {
var n = e.fileInput;
if (n) {
var r = e.props,
i = r.children,
o = r.onClick;
if (i && "button" === i.type) {
var a = n.parentNode;
a.focus(), a.querySelector("button").blur()
}
n.click(), o && o(t)
}
}, e.onKeyDown = function(t) {
"Enter" === t.key && e.onClick(t)
}, e.onFileDrop = function(t) {
var n = e.props.multiple;
if (t.preventDefault(), "dragover" !== t.type)
if (e.props.directory) np(Array.prototype.slice.call(t.dataTransfer.items), e.uploadFiles, (function(t) {
return tp(t, e.props.accept)
}));
else {
var r = Bh(t.dataTransfer.files).filter((function(t) {
return tp(t, e.props.accept)
}));
!1 === n && (r = r.slice(0, 1)), e.uploadFiles(r)
}
}, e.uploadFiles = function(t) {
var n = Bh(t),
r = n.map((function(t) {
return t.uid = Zh(), e.processFile(t, n)
}));
Promise.all(r).then((function(t) {
var n = e.props.onBatchStart;
null == n || n(t.map((function(e) {
return {
file: e.origin,
parsedFile: e.parsedFile
}
}))), t.filter((function(e) {
return null !== e.parsedFile
})).forEach((function(t) {
e.post(t)
}))
}))
}, e.processFile = function() {
var t = jh(Nh().mark((function t(n, r) {
var i, o, a, s, l, c, u, h, p;
return Nh().wrap((function(t) {
for (;;) switch (t.prev = t.next) {
case 0:
if (i = e.props.beforeUpload, o = n, !i) {
t.next = 14;
break
}
return t.prev = 3, t.next = 6, i(n, r);
case 6:
o = t.sent, t.next = 12;
break;
case 9:
t.prev = 9, t.t0 = t.catch(3), o = !1;
case 12:
if (!1 !== o) {
t.next = 14;
break
}
return t.abrupt("return", {
origin: n,
parsedFile: null,
action: null,
data: null
});
case 14:
if ("function" != typeof(a = e.props.action)) {
t.next = 21;
break
}
return t.next = 18, a(n);
case 18:
s = t.sent, t.next = 22;
break;
case 21:
s = a;
case 22:
if ("function" != typeof(l = e.props.data)) {
t.next = 29;
break
}
return t.next = 26, l(n);
case 26:
c = t.sent, t.next = 30;
break;
case 29:
c = l;
case 30:
return u = "object" !== kh(o) && "string" != typeof o || !o ? n : o, h = u instanceof File ? u : new File([u], n.name, {
type: n.type
}), (p = h).uid = n.uid, t.abrupt("return", {
origin: n,
data: c,
parsedFile: p,
action: s
});
case 35:
case "end":
return t.stop()
}
}), t, null, [
[3, 9]
])
})));
return function(e, n) {
return t.apply(this, arguments)
}
}(), e.saveFileInput = function(t) {
e.fileInput = t
}, e
}
return Eh(n, [{
key: "componentDidMount",
value: function() {
this._isMounted = !0
}
}, {
key: "componentWillUnmount",
value: function() {
this._isMounted = !1, this.abort()
}
}, {
key: "post",
value: function(e) {
var t = this,
n = e.data,
r = e.origin,
i = e.action,
o = e.parsedFile;
if (this._isMounted) {
var a = this.props,
s = a.onStart,
l = a.customRequest,
c = a.name,
u = a.headers,
h = a.withCredentials,
p = a.method,
d = r.uid,
f = l || qh,
g = {
action: i,
filename: c,
data: n,
file: o,
headers: u,
withCredentials: h,
method: p || "post",
onProgress: function(e) {
var n = t.props.onProgress;
null == n || n(e, o)
},
onSuccess: function(e, n) {
var r = t.props.onSuccess;
null == r || r(e, o, n), delete t.reqs[d]
},
onError: function(e, n) {
var r = t.props.onError;
null == r || r(e, n, o), delete t.reqs[d]
}
};
s(r), this.reqs[d] = f(g)
}
}
}, {
key: "reset",
value: function() {
this.setState({
uid: Zh()
})
}
}, {
key: "abort",
value: function(e) {
var t = this.reqs;
if (e) {
var n = e.uid ? e.uid : e;
t[n] && t[n].abort && t[n].abort(), delete t[n]
} else Object.keys(t).forEach((function(e) {
t[e] && t[e].abort && t[e].abort(), delete t[e]
}))
}
}, {
key: "render",
value: function() {
var e, t = this.props,
n = t.component,
r = t.prefixCls,
i = t.className,
o = t.disabled,
a = t.id,
s = t.style,
l = t.multiple,
c = t.accept,
u = t.capture,
h = t.children,
p = t.directory,
d = t.openFileDialogOnClick,
f = t.onMouseEnter,
g = t.onMouseLeave,
m = Ih(t, rp),
v = Rl((Dh(e = {}, r, !0), Dh(e, "".concat(r, "-disabled"), o), Dh(e, i, i), e)),
_ = p ? {
directory: "directory",
webkitdirectory: "webkitdirectory"
} : {},
b = o ? {} : {
onClick: d ? this.onClick : function() {},
onKeyDown: d ? this.onKeyDown : function() {},
onMouseEnter: f,
onMouseLeave: g,
onDrop: this.onFileDrop,
onDragOver: this.onFileDrop,
tabIndex: "0"
};
return Nn.createElement(n, wh({}, b, {
className: v,
role: "button",
style: s
}), Nn.createElement("input", wh({}, Gh(m, {
aria: !0,
data: !0
}), {
id: a,
type: "file",
ref: this.saveFileInput,
onClick: function(e) {
return e.stopPropagation()
},
key: this.state.uid,
style: {
display: "none"
},
accept: c
}, _, {
multiple: l,
onChange: this.onChange
}, null != u ? {
capture: u
} : {})), h)
}
}]), n
}(Me),
op = ip;
function ap() {}
var sp = function(e) {
Oh(n, e);
var t = Mh(n);
function n() {
var e;
xh(this, n);
for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
return (e = t.call.apply(t, [this].concat(i))).uploader = void 0, e.saveUploader = function(t) {
e.uploader = t
}, e
}
return Eh(n, [{
key: "abort",
value: function(e) {
this.uploader.abort(e)
}
}, {
key: "render",
value: function() {
return Nn.createElement(op, wh({}, this.props, {
ref: this.saveUploader
}))
}
}]), n
}(Me);
sp.defaultProps = {
component: "span",
prefixCls: "rc-upload",
data: {},
headers: {},
name: "file",
multipart: !1,
onStart: ap,
onError: ap,
onSuccess: ap,
multiple: !1,
beforeUpload: null,
customRequest: null,
withCredentials: !1,
openFileDialogOnClick: !0
};
var lp, cp = sp;
function up() {
return up = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, up.apply(this, arguments)
}
var hp, pp, dp, fp, gp, mp, vp, _p, bp, yp = e => Te("svg", up({
width: 16,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), lp || (lp = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M9.429 1.429a1.429 1.429 0 1 0-2.858 0V6.57H1.43a1.429 1.429 0 1 0 0 2.857H6.57v5.143a1.429 1.429 0 1 0 2.858 0V9.428h5.142a1.429 1.429 0 1 0 0-2.857H9.43V1.43Z",
fill: "#333",
fillOpacity: .8
})));
function wp() {
return wp = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, wp.apply(this, arguments)
}
var xp, kp, Cp = e => Te("svg", wp({
width: 81,
height: 80,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), hp || (hp = Te("rect", {
x: 4.5,
y: 22.576,
width: 61.538,
height: 47.724,
rx: 4,
transform: "rotate(-8 4.5 22.576)",
fill: "#EBECED"
})), pp || (pp = Te("g", {
filter: "url(#uploadLargeAdd_svg__a)"
}, Te("rect", {
x: 8.256,
y: 19.391,
width: 60.308,
height: 46.769,
rx: 4,
fill: "#fff"
}))), dp || (dp = Te("rect", {
x: 10.718,
y: 21.852,
width: 55.385,
height: 41.846,
rx: 3,
fill: "url(#uploadLargeAdd_svg__b)"
})), fp || (fp = Te("path", {
d: "M35.94 63.698H12.563a1.846 1.846 0 0 1-1.846-1.846v-5.754l7.778-7.327a2.462 2.462 0 0 1 3.48.104l13.963 14.823Z",
fill: "url(#uploadLargeAdd_svg__c)"
})), gp || (gp = Te("path", {
d: "M66.102 55.508v6.344c0 1.02-.826 1.847-1.846 1.847H20.807l18.36-23.216a4.923 4.923 0 0 1 6.914-.808l20.021 15.833Z",
fill: "url(#uploadLargeAdd_svg__d)"
})), mp || (mp = Te("circle", {
cx: 18.718,
cy: 30.468,
r: 3.692,
fill: "#D3D3D3"
})), vp || (vp = Te("circle", {
cx: 67.333,
cy: 19.391,
r: 9.231,
fill: "#333",
fillOpacity: .9
})), _p || (_p = Te("path", {
d: "M70.176 18.683H68.04v-2.135a.707.707 0 1 0-1.414 0v2.135H64.49a.707.707 0 1 0 0 1.415h2.136v2.135a.707.707 0 1 0 1.414 0v-2.135h2.136a.707.707 0 1 0 0-1.415Z",
fill: "#fff"
})), bp || (bp = Te("defs", null, Te("linearGradient", {
id: "uploadLargeAdd_svg__b",
x1: 38.41,
y1: 21.852,
x2: 38.41,
y2: 63.698,
gradientUnits: "userSpaceOnUse"
}, Te("stop", {
stopColor: "#F5F5F5"
}), Te("stop", {
offset: 1,
stopColor: "#F1F1F1"
}), Te("stop", {
offset: 1,
stopColor: "#F1F1F1"
})), Te("linearGradient", {
id: "uploadLargeAdd_svg__c",
x1: 27.096,
y1: 45.66,
x2: 27.096,
y2: 69.852,
gradientUnits: "userSpaceOnUse"
}, Te("stop", {
stopColor: "#E2E2E2"
}), Te("stop", {
offset: 1,
stopColor: "#E1E1E1"
})), Te("linearGradient", {
id: "uploadLargeAdd_svg__d",
x1: 41.695,
y1: 42.438,
x2: 41.695,
y2: 69.792,
gradientUnits: "userSpaceOnUse"
}, Te("stop", {
offset: 0,
stopColor: "#E5E5E6"
}), Te("stop", {
offset: 1,
stopColor: "#D3D3D3"
})), Te("filter", {
id: "uploadLargeAdd_svg__a",
x: .256,
y: 15.391,
width: 76.308,
height: 62.769,
filterUnits: "userSpaceOnUse",
colorInterpolationFilters: "sRGB"
}, Te("feFlood", {
floodOpacity: 0,
result: "BackgroundImageFix"
}), Te("feColorMatrix", {
in: "SourceAlpha",
values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
result: "hardAlpha"
}), Te("feOffset", {
dy: 4
}), Te("feGaussianBlur", {
stdDeviation: 4
}), Te("feComposite", {
in2: "hardAlpha",
operator: "out"
}), Te("feColorMatrix", {
values: "0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0.03 0"
}), Te("feBlend", {
in2: "BackgroundImageFix",
result: "effect1_dropShadow_2338_55382"
}), Te("feBlend", {
in: "SourceGraphic",
in2: "effect1_dropShadow_2338_55382",
result: "shape"
})))));
function Sp() {
return Sp = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Sp.apply(this, arguments)
}
var Ep, Tp = e => Te("svg", Sp({
width: 24,
height: 24,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), xp || (xp = Te("rect", {
width: 24,
height: 24,
rx: 12,
fill: "#E9ECEF"
})), kp || (kp = Te("path", {
d: "m8.667 8.667 6.667 6.667M8.667 15.334l6.667-6.667",
stroke: "#333",
strokeWidth: 1.6,
strokeLinecap: "round",
strokeLinejoin: "round"
}))),
Op = Qe({});
function Ap() {
return Ap = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Ap.apply(this, arguments)
}
var Pp = e => Te("svg", Ap({
xmlns: "http://www.w3.org/2000/svg",
width: 100,
height: 100,
xmlSpace: "preserve"
}, e), Te("circle", {
fill: "none",
stroke: "#D2D3D3",
strokeWidth: 4,
cx: 50,
cy: 50,
r: 21,
style: {
opacity: .5
}
}), Ep || (Ep = Te("path", {
fill: "#707070",
d: "M73 50c0-12.7-10.3-23-23-23S27 37.3 27 50m3.9 0c0-10.5 8.5-19.1 19.1-19.1S69.1 39.5 69.1 50"
}, Te("animateTransform", {
attributeName: "transform",
attributeType: "XML",
type: "rotate",
dur: "1s",
from: "0 50 50",
to: "360 50 50",
repeatCount: "indefinite"
}))));
function Mp(e, t) {
return function(e) {
if (Array.isArray(e)) return e
}(e) || function(e, t) {
var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
if (null != n) {
var r, i, o, a, s = [],
l = !0,
c = !1;
try {
if (o = (n = n.call(e)).next, 0 === t) {
if (Object(n) !== n) return;
l = !1
} else
for (; !(l = (r = o.call(n)).done) && (s.push(r.value), s.length !== t); l = !0);
} catch (e) {
c = !0, i = e
} finally {
try {
if (!l && null != n.return && (a = n.return(), Object(a) !== a)) return
} finally {
if (c) throw i
}
}
return s
}
}(e, t) || Fh(e, t) || 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 Dp(e) {
return e instanceof HTMLElement ? e : e instanceof Nn.Component ? Nn.findDOMNode(e) : null
}
function Ip(e, t, n) {
var r = vt({});
return "value" in r.current && !n(r.current.condition, t) || (r.current.value = e(), r.current.condition = t), r.current.value
}
function Np(e, t) {
"function" == typeof e ? e(t) : "object" === kh(e) && e && "current" in e && (e.current = t)
}
function Rp() {
for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
var r = t.filter((function(e) {
return e
}));
return r.length <= 1 ? r[0] : function(e) {
t.forEach((function(t) {
Np(t, e)
}))
}
}
function jp(e) {
var t, n, r = jn.exports.isMemo(e) ? e.type.type : e.type;
return !!("function" != typeof r || null !== (t = r.prototype) && void 0 !== t && t.render) && !!("function" != typeof e || null !== (n = e.prototype) && void 0 !== n && n.render)
}
function Lp() {
return !("undefined" == typeof window || !window.document || !window.document.createElement)
}
function Fp(e, t) {
var n = {};
return n[e.toLowerCase()] = t.toLowerCase(), n["Webkit".concat(e)] = "webkit".concat(t), n["Moz".concat(e)] = "moz".concat(t), n["ms".concat(e)] = "MS".concat(t), n["O".concat(e)] = "o".concat(t.toLowerCase()), n
}
var Bp, zp, Hp, Up = (Bp = Lp(), zp = "undefined" != typeof window ? window : {}, Hp = {
animationend: Fp("Animation", "AnimationEnd"),
transitionend: Fp("Transition", "TransitionEnd")
}, Bp && ("AnimationEvent" in zp || delete Hp.animationend.animation, "TransitionEvent" in zp || delete Hp.transitionend.transition), Hp),
Wp = {};
if (Lp()) {
var Vp = document.createElement("div");
Wp = Vp.style
}
var Xp = {};
function Gp(e) {
if (Xp[e]) return Xp[e];
var t = Up[e];
if (t)
for (var n = Object.keys(t), r = n.length, i = 0; i < r; i += 1) {
var o = n[i];
if (Object.prototype.hasOwnProperty.call(t, o) && o in Wp) return Xp[e] = t[o], Xp[e]
}
return ""
}
var Yp = Gp("animationend"),
qp = Gp("transitionend"),
Kp = !(!Yp || !qp),
$p = Yp || "animationend",
Zp = qp || "transitionend";
function Jp(e, t) {
if (!e) return null;
if ("object" === kh(e)) {
var n = t.replace(/-\w/g, (function(e) {
return e[1].toUpperCase()
}));
return e[n]
}
return "".concat(e, "-").concat(t)
}
var Qp = "none",
ed = "appear",
td = "enter",
nd = "leave",
rd = "none",
id = "prepare",
od = "start",
ad = "active",
sd = "end";
function ld(e) {
var t = vt(!1),
n = Mp(dt(e), 2),
r = n[0],
i = n[1];
return gt((function() {
return t.current = !1,
function() {
t.current = !0
}
}), []), [r, function(e, n) {
n && t.current || i(e)
}]
}
var cd = function(e) {
return +setTimeout(e, 16)
},
ud = function(e) {
return clearTimeout(e)
};
"undefined" != typeof window && "requestAnimationFrame" in window && (cd = function(e) {
return window.requestAnimationFrame(e)
}, ud = function(e) {
return window.cancelAnimationFrame(e)
});
var hd = 0,
pd = new Map;
function dd(e) {
pd.delete(e)
}
var fd = function(e) {
var t = hd += 1;
return function n(r) {
if (0 === r) dd(t), e();
else {
var i = cd((function() {
n(r - 1)
}));
pd.set(t, i)
}
}(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1), t
};
fd.cancel = function(e) {
var t = pd.get(e);
return dd(t), ud(t)
};
var gd = fd,
md = Lp() ? mt : gt,
vd = [id, od, ad, sd],
_d = !1,
bd = !0;
function yd(e) {
return e === ad || e === sd
}
var wd = function(e, t) {
var n = Mp(ld(rd), 2),
r = n[0],
i = n[1],
o = function() {
var e = vt(null);
function t() {
gd.cancel(e.current)
}
return gt((function() {
return function() {
t()
}
}), []), [function n(r) {
var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2;
t();
var o = gd((function() {
i <= 1 ? r({
isCanceled: function() {
return o !== e.current
}
}) : n(r, i - 1)
}));
e.current = o
}, t]
}(),
a = Mp(o, 2),
s = a[0],
l = a[1];
return md((function() {
if (r !== rd && r !== sd) {
var e = vd.indexOf(r),
n = vd[e + 1],
o = t(r);
o === _d ? i(n, !0) : s((function(e) {
function t() {
e.isCanceled() || i(n, !0)
}!0 === o ? t() : Promise.resolve(o).then(t)
}))
}
}), [e, r]), gt((function() {
return function() {
l()
}
}), []), [function() {
i(id, !0)
}, r]
},
xd = function(e) {
var t = vt(),
n = vt(e);
n.current = e;
var r = yt((function(e) {
n.current(e)
}), []);
function i(e) {
e && (e.removeEventListener(Zp, r), e.removeEventListener($p, r))
}
return gt((function() {
return function() {
i(t.current)
}
}), []), [function(e) {
t.current && t.current !== e && i(t.current), e && e !== t.current && (e.addEventListener(Zp, r), e.addEventListener($p, r), t.current = e)
}, i]
};
var kd = function(e) {
Oh(n, e);
var t = Mh(n);
function n() {
return xh(this, n), t.apply(this, arguments)
}
return Eh(n, [{
key: "render",
value: function() {
return this.props.children
}
}]), n
}(Me),
Cd = kd;
var Sd = function(e) {
var t = e;
function n(e) {
return !(!e.motionName || !t)
}
"object" === kh(e) && (t = e.transitionSupport);
var r = Ft((function(e, t) {
var r = e.visible,
i = void 0 === r || r,
o = e.removeOnLeave,
a = void 0 === o || o,
s = e.forceRender,
l = e.children,
c = e.motionName,
u = e.leavedClassName,
h = e.eventProps,
p = n(e),
d = vt(),
f = vt();
var g = function(e, t, n, r) {
var i = r.motionEnter,
o = void 0 === i || i,
a = r.motionAppear,
s = void 0 === a || a,
l = r.motionLeave,
c = void 0 === l || l,
u = r.motionDeadline,
h = r.motionLeaveImmediately,
p = r.onAppearPrepare,
d = r.onEnterPrepare,
f = r.onLeavePrepare,
g = r.onAppearStart,
m = r.onEnterStart,
v = r.onLeaveStart,
_ = r.onAppearActive,
b = r.onEnterActive,
y = r.onLeaveActive,
w = r.onAppearEnd,
x = r.onEnterEnd,
k = r.onLeaveEnd,
C = r.onVisibleChanged,
S = Mp(ld(), 2),
E = S[0],
T = S[1],
O = Mp(ld(Qp), 2),
A = O[0],
P = O[1],
M = Mp(ld(null), 2),
D = M[0],
I = M[1],
N = vt(!1),
R = vt(null);
function j() {
return n()
}
var L = vt(!1);
function F(e) {
var t = j();
if (!e || e.deadline || e.target === t) {
var n, r = L.current;
A === ed && r ? n = null == w ? void 0 : w(t, e) : A === td && r ? n = null == x ? void 0 : x(t, e) : A === nd && r && (n = null == k ? void 0 : k(t, e)), A !== Qp && r && !1 !== n && (P(Qp, !0), I(null, !0))
}
}
var B = Mp(xd(F), 1)[0],
z = bt((function() {
var e, t, n;
switch (A) {
case ed:
return Dh(e = {}, id, p), Dh(e, od, g), Dh(e, ad, _), e;
case td:
return Dh(t = {}, id, d), Dh(t, od, m), Dh(t, ad, b), t;
case nd:
return Dh(n = {}, id, f), Dh(n, od, v), Dh(n, ad, y), n;
default:
return {}
}
}), [A]),
H = Mp(wd(A, (function(e) {
if (e === id) {
var t = z[id];
return t ? t(j()) : _d
}
var n;
return W in z && I((null === (n = z[W]) || void 0 === n ? void 0 : n.call(z, j(), null)) || null), W === ad && (B(j()), u > 0 && (clearTimeout(R.current), R.current = setTimeout((function() {
F({
deadline: !0
})
}), u))), bd
})), 2),
U = H[0],
W = H[1],
V = yd(W);
L.current = V, md((function() {
T(t);
var n, r = N.current;
N.current = !0, e && (!r && t && s && (n = ed), r && t && o && (n = td), (r && !t && c || !r && h && !t && c) && (n = nd), n && (P(n), U()))
}), [t]), gt((function() {
(A === ed && !s || A === td && !o || A === nd && !c) && P(Qp)
}), [s, o, c]), gt((function() {
return function() {
N.current = !1, clearTimeout(R.current)
}
}), []);
var X = vt(!1);
gt((function() {
E && (X.current = !0), void 0 !== E && A === Qp && ((X.current || E) && (null == C || C(E)), X.current = !0)
}), [E, A]);
var G = D;
return z[id] && W === od && (G = Hh({
transition: "none"
}, G)), [A, W, G, null != E ? E : t]
}(p, i, (function() {
try {
return d.current instanceof HTMLElement ? d.current : Dp(f.current)
} catch (e) {
return null
}
}), e),
m = Mp(g, 4),
v = m[0],
_ = m[1],
b = m[2],
y = m[3],
w = vt(y);
y && (w.current = !0);
var x, k = yt((function(e) {
d.current = e, Np(t, e)
}), [t]),
C = Hh(Hh({}, h), {}, {
visible: i
});
if (l)
if (v !== Qp && n(e)) {
var S, E;
_ === id ? E = "prepare" : yd(_) ? E = "active" : _ === od && (E = "start"), x = l(Hh(Hh({}, C), {}, {
className: Rl(Jp(c, v), (S = {}, Dh(S, Jp(c, "".concat(v, "-").concat(E)), E), Dh(S, c, "string" == typeof c), S)),
style: b
}), k)
} else x = y ? l(Hh({}, C), k) : !a && w.current && u ? l(Hh(Hh({}, C), {}, {
className: u
}), k) : s || !a && !u ? l(Hh(Hh({}, C), {}, {
style: {
display: "none"
}
}), k) : null;
else x = null;
bn(x) && jp(x) && (x.ref || (x = yn(x, {
ref: k
})));
return Te(Cd, {
ref: f
}, x)
}));
return r.displayName = "CSSMotion", r
}(Kp),
Ed = "add",
Td = "keep",
Od = "remove",
Ad = "removed";
function Pd(e) {
var t;
return Hh(Hh({}, t = e && "object" === kh(e) && "key" in e ? e : {
key: e
}), {}, {
key: String(t.key)
})
}
function Md() {
return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).map(Pd)
}
var Dd = ["component", "children", "onVisibleChanged", "onAllRemoved"],
Id = ["status"],
Nd = ["eventProps", "visible", "children", "motionName", "motionAppear", "motionEnter", "motionLeave", "motionLeaveImmediately", "motionDeadline", "removeOnLeave", "leavedClassName", "onAppearStart", "onAppearActive", "onAppearEnd",
"onEnterStart", "onEnterActive", "onEnterEnd", "onLeaveStart", "onLeaveActive", "onLeaveEnd"
];
var Rd = function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Sd,
n = function(e) {
Oh(r, e);
var n = Mh(r);
function r() {
var e;
xh(this, r);
for (var t = arguments.length, i = new Array(t), o = 0; o < t; o++) i[o] = arguments[o];
return Dh(Ph(e = n.call.apply(n, [this].concat(i))), "state", {
keyEntities: []
}), Dh(Ph(e), "removeKey", (function(t) {
var n = e.state.keyEntities.map((function(e) {
return e.key !== t ? e : Hh(Hh({}, e), {}, {
status: Ad
})
}));
return e.setState({
keyEntities: n
}), n.filter((function(e) {
return e.status !== Ad
})).length
})), e
}
return Eh(r, [{
key: "render",
value: function() {
var e = this,
n = this.state.keyEntities,
r = this.props,
i = r.component,
o = r.children,
a = r.onVisibleChanged,
s = r.onAllRemoved,
l = Ih(r, Dd),
c = i || Pe,
u = {};
return Nd.forEach((function(e) {
u[e] = l[e], delete l[e]
})), delete l.keys, Te(c, l, n.map((function(n) {
var r = n.status,
i = Ih(n, Id),
l = r === Ed || r === Td;
return Te(t, wh({}, u, {
key: i.key,
visible: l,
eventProps: i,
onVisibleChanged: function(t) {
(null == a || a(t, {
key: i.key
}), t) || 0 === e.removeKey(i.key) && s && s()
}
}), o)
})))
}
}], [{
key: "getDerivedStateFromProps",
value: function(e, t) {
var n = e.keys,
r = t.keyEntities,
i = Md(n),
o = function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
n = [],
r = 0,
i = t.length,
o = Md(e),
a = Md(t);
o.forEach((function(e) {
for (var t = !1, o = r; o < i; o += 1) {
var s = a[o];
if (s.key === e.key) {
r < o && (n = n.concat(a.slice(r, o).map((function(e) {
return Hh(Hh({}, e), {}, {
status: Ed
})
}))), r = o), n.push(Hh(Hh({}, s), {}, {
status: Td
})), r += 1, t = !0;
break
}
}
t || n.push(Hh(Hh({}, e), {}, {
status: Od
}))
})), r < i && (n = n.concat(a.slice(r).map((function(e) {
return Hh(Hh({}, e), {}, {
status: Ed
})
}))));
var s = {};
return n.forEach((function(e) {
var t = e.key;
s[t] = (s[t] || 0) + 1
})), Object.keys(s).filter((function(e) {
return s[e] > 1
})).forEach((function(e) {
(n = n.filter((function(t) {
var n = t.key,
r = t.status;
return n !== e || r !== Od
}))).forEach((function(t) {
t.key === e && (t.status = Td)
}))
})), n
}(r, i);
return {
keyEntities: o.filter((function(e) {
var t = r.find((function(t) {
var n = t.key;
return e.key === n
}));
return !t || t.status !== Ad || e.status !== Od
}))
}
}
}]), r
}(Me);
return Dh(n, "defaultProps", {
component: "div"
}), n
}(Kp),
jd = Ft((function(e, t) {
var n = e.prefixCls,
r = e.style,
i = e.className,
o = e.duration,
a = void 0 === o ? 4.5 : o,
s = e.eventKey,
l = e.content,
c = e.closable,
u = e.closeIcon,
h = void 0 === u ? "x" : u,
p = e.props,
d = e.onClick,
f = e.onNoticeClose,
g = e.times,
m = Mp(dt(!1), 2),
v = m[0],
_ = m[1],
b = function() {
f(s)
};
gt((function() {
if (!v && a > 0) {
var e = setTimeout((function() {
b()
}), 1e3 * a);
return function() {
clearTimeout(e)
}
}
}), [a, v, g]);
var y = "".concat(n, "-notice");
return Te("div", wh({}, p, {
ref: t,
className: Rl(y, i, Dh({}, "".concat(y, "-closable"), c)),
style: r,
onMouseEnter: function() {
_(!0)
},
onMouseLeave: function() {
_(!1)
},
onClick: d
}), Te("div", {
className: "".concat(y, "-content")
}, l), c && Te("a", {
tabIndex: 0,
className: "".concat(y, "-close"),
onClick: function(e) {
e.preventDefault(), e.stopPropagation(), b()
}
}, h))
})),
Ld = jd,
Fd = Ft((function(e, t) {
var n = e.prefixCls,
r = void 0 === n ? "rc-notification" : n,
i = e.container,
o = e.motion,
a = e.maxCount,
s = e.className,
l = e.style,
c = e.onAllRemoved,
u = Mp(dt([]), 2),
h = u[0],
p = u[1],
d = function(e) {
var t, n = h.find((function(t) {
return t.key === e
}));
null == n || null === (t = n.onClose) || void 0 === t || t.call(n), p((function(t) {
return t.filter((function(t) {
return t.key !== e
}))
}))
};
_t(t, (function() {
return {
open: function(e) {
p((function(t) {
var n, r = Bh(t),
i = r.findIndex((function(t) {
return t.key === e.key
})),
o = Hh({}, e);
i >= 0 ? (o.times = ((null === (n = t[i]) || void 0 === n ? void 0 : n.times) || 0) + 1, r[i] = o) : (o.times = 0, r.push(o));
return a > 0 && r.length > a && (r = r.slice(-a)), r
}))
},
close: function(e) {
d(e)
},
destroy: function() {
p([])
}
}
}));
var f = Mp(dt({}), 2),
g = f[0],
m = f[1];
gt((function() {
var e = {};
h.forEach((function(t) {
var n = t.placement,
r = void 0 === n ? "topRight" : n;
r && (e[r] = e[r] || [], e[r].push(t))
})), Object.keys(g).forEach((function(t) {
e[t] = e[t] || []
})), m(e)
}), [h]);
var v = vt(!1);
return gt((function() {
Object.keys(g).length > 0 ? v.current = !0 : v.current && (null == c || c(), v.current = !1)
}), [g]), i ? Jt(Te(Pe, null, Object.keys(g).map((function(e) {
var t = g[e].map((function(e) {
return {
config: e,
key: e.key
}
})),
n = "function" == typeof o ? o(e) : o;
return Te(Rd, wh({
key: e,
className: Rl(r, "".concat(r, "-").concat(e), null == s ? void 0 : s(e)),
style: null == l ? void 0 : l(e),
keys: t,
motionAppear: !0
}, n, {
onAllRemoved: function() {
! function(e) {
m((function(t) {
var n = Hh({}, t);
return (n[e] || []).length || delete n[e], n
}))
}(e)
}
}), (function(e, t) {
var n = e.config,
i = e.className,
o = e.style,
a = n.key,
s = n.times,
l = n.className,
c = n.style;
return Te(Ld, wh({}, n, {
ref: t,
prefixCls: r,
className: Rl(i, l),
style: Hh(Hh({}, o), c),
times: s,
key: a,
eventKey: a,
onNoticeClose: d
}))
}))
}))), i) : null
})),
Bd = Fd,
zd = ["getContainer", "motion", "prefixCls", "maxCount", "className", "style", "onAllRemoved"],
Hd = function() {
return document.body
},
Ud = 0;
function Wd() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
t = e.getContainer,
n = void 0 === t ? Hd : t,
r = e.motion,
i = e.prefixCls,
o = e.maxCount,
a = e.className,
s = e.style,
l = e.onAllRemoved,
c = Ih(e, zd),
u = Mp(dt(), 2),
h = u[0],
p = u[1],
d = vt(),
f = Te(Bd, {
container: h,
ref: d,
prefixCls: i,
motion: r,
maxCount: o,
className: a,
style: s,
onAllRemoved: l
}),
g = Mp(dt([]), 2),
m = g[0],
v = g[1],
_ = bt((function() {
return {
open: function(e) {
var t = function() {
for (var e = {}, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r];
return n.forEach((function(t) {
t && Object.keys(t).forEach((function(n) {
var r = t[n];
void 0 !== r && (e[n] = r)
}))
})), e
}(c, e);
null !== t.key && void 0 !== t.key || (t.key = "rc-notification-".concat(Ud), Ud += 1), v((function(e) {
return [].concat(Bh(e), [{
type: "open",
config: t
}])
}))
},
close: function(e) {
v((function(t) {
return [].concat(Bh(t), [{
type: "close",
key: e
}])
}))
},
destroy: function() {
v((function(e) {
return [].concat(Bh(e), [{
type: "destroy"
}])
}))
}
}
}), []);
return gt((function() {
p(n())
})), gt((function() {
d.current && m.length && (m.forEach((function(e) {
switch (e.type) {
case "open":
d.current.open(e.config);
break;
case "close":
d.current.close(e.key);
break;
case "destroy":
d.current.destroy()
}
})), v([]))
}), [m]), [_, f]
}
var Vd = "common-module_flex_center_y__ZWb6u",
Xd = "common-module_toast__WjP9V",
Gd = "common-module_app-parakeet-dialog__UWDmu",
Yd = "common-module_ap-dialog-title__-GIOw",
qd = "common-module_ap-dialog-body__5yegi",
Kd = "common-module_app-dialog-footer__qYGkd",
$d = "common-module_ap-button__RhZvx",
Zd = "common-module_app-parakeet-dialog--wrapper__YIL3t",
Jd = "common-module_ap-button-no__f3AQV",
Qd = "common-module_ap-button-ok__-Dglc";
c(
".common-module_flex__7RXvG{display:flex}.common-module_flex_center_y__ZWb6u{align-items:center;display:flex}.common-module_toast__WjP9V{background:rgba(51,51,51,.9)!important;border-radius:8px;display:inline-block!important;max-width:263px;padding:20px 24px!important;right:50%!important;text-align:center;transform:translate(50%,120px);width:-webkit-max-content!important;width:max-content!important;z-index:10000!important}.common-module_toast__WjP9V .rc-notification-notice{background:none!important;box-shadow:none;margin:0;padding:0}.common-module_toast__WjP9V .rc-notification-notice-content{background:none!important;color:#fff;font-size:14px;font-weight:500;line-height:18px;padding:0}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body{padding:24px}.common-module_ap-dialog-title__-GIOw{color:#222;font-size:24px;font-weight:600;line-height:130%}.common-module_ap-dialog-body__5yegi{color:#222;font-family:inherit;font-size:15px;font-weight:400;line-height:130%;margin-top:16px}.common-module_app-dialog-footer__qYGkd{display:flex;justify-content:flex-end;margin-top:40px}.common-module_ap-button__RhZvx{border:1px solid rgba(51,51,51,.12);border-radius:6px;cursor:pointer;font-family:inherit;font-size:15px;min-width:84px;outline:none!important;padding:8px 16px}.common-module_app-parakeet-dialog--wrapper__YIL3t{align-items:center;display:flex;justify-content:center}.common-module_ap-button-no__f3AQV{background:#fff;color:#333}.common-module_ap-button-ok__-Dglc{background:#333;color:#fff;margin-left:12px}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close{opacity:1!important;padding:0!important;top:24px}.common-module_clone-lower-canvas__8Uh2v{pointer-events:none;touch-action:none;-webkit-user-select:none;user-select:none;width:100%}@media (min-width:768px){.common-module_app-parakeet-dialog__UWDmu{width:580px!important}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-content{border-radius:8px}}@media (max-width:767px){.common-module_app-parakeet-dialog__UWDmu{margin:0 16px!important;width:100%!important}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body{padding:16px}.common-module_ap-button__RhZvx{font-size:15px}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close{right:16px!important;top:16px}.common-module_toast__WjP9V{left:50%!important;top:50%!important;transform:translateY(-50%) translateX(-50%)!important}}");
var ef = () => {
var [e, t] = Wd({
duration: 3,
className: () => "".concat(Xd, " notranslate")
});
return [e, t]
};
function tf(e, t) {
var n, r;
return e && t ? (n = "" + e + t[0].toUpperCase() + t.slice(1), r = e + "-" + t) : (n = e || t, r = e || t), {
camelCase: n,
snakeCase: r
}
}
function nf(e) {
return /^blob:/.test(e)
}
function rf(e) {
return nf(e) || function(e) {
return /^data:/.test(e)
}(e)
}
function of(e) {
if (rf(e)) return !1;
var t = window.location,
n = /(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/.exec(e) || [],
r = {
protocol: n[1] || "",
host: n[2] || "",
port: n[3] || ""
},
i = function(e) {
return e.port || ("http" === (e.protocol || t.protocol) ? 80 : 433)
};
return !(!r.protocol && !r.host && !r.port || Boolean(r.protocol && r.protocol == t.protocol && r.host && r.host == t.host && r.host && i(r) == i(t)))
}
function af(e) {
return "function" == typeof e
}
function sf(e) {
return void 0 === e
}
var lf = function(e) {
return null !== e && "object" == typeof e
};
function cf(e, t, n) {
void 0 === n && (n = {});
var r = {};
return lf(e) ? (Object.keys(t).forEach((function(i) {
sf(e[i]) ? r[i] = t[i] : lf(t[i]) ? lf(e[i]) ? r[i] = cf(e[i], t[i], n[i]) : r[i] = e[i] ? t[i] : n[i] : !0 === t[i] || !1 === t[i] ? r[i] = Boolean(e[i]) : r[i] = e[i]
})), r) : e ? t : n
}
function uf(e) {
var t = Number(e);
return Number.isNaN(t) ? e : t
}
function hf(e) {
return !0 === e || !1 === e
}
function pf(e) {
return "number" == typeof e
}
function df(e) {
return e != e
}
function ff(e) {
return pf(e) && !df(e) || function(e) {
return "string" == typeof e
}(e) && !Number.isNaN(parseFloat(e)) && isFinite(parseFloat(e))
}
function gf(e, t) {
return Math.sqrt(Math.pow(e.left - t.left, 2) + Math.pow(e.top - t.top, 2))
}
function mf(e, t, n) {
return void 0 === n && (n = .001), Math.abs(t - e) < n
}
function vf(e, t, n) {
return !mf(e, t, n) && e > t
}
function _f(e, t, n) {
return !mf(e, t, n) && e < t
}
function bf(e) {
return new Promise((function(t) {
setTimeout((function() {
t()
}), e)
}))
}
function yf(e) {
if (!lf(e)) return e;
var t = {};
return Array.isArray(e) ? t = e.map((function(e) {
return yf(e)
})) : Object.keys(e).forEach((function(n) {
return t[n] = yf(e[n])
})), t
}
function wf(e, t, n) {
if (void 0 === n && (n = .001), pf(e) && pf(t) && mf(e, t, n)) return !0;
if (e === t) return !0;
if (e && t && "object" == typeof e && "object" == typeof t) {
if (e.constructor !== t.constructor) return !1;
var r, i = void 0;
if (Array.isArray(e)) {
if ((r = e.length) != t.length) return !1;
for (i = r; 0 != i--;)
if (!wf(e[i], t[i], n)) return !1;
return !0
}
if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf();
if (e.toString !== Object.prototype.toString) return e.toString() === t.toString();
var o = Object.keys(e);
if ((r = o.length) !== Object.keys(t).length) return !1;
for (i = r; 0 != i--;)
if (!Object.prototype.hasOwnProperty.call(t, o[i])) return !1;
for (i = r; 0 != i--;) {
var a = o[i];
if (!wf(e[a], t[a], n)) return !1
}
return !0
}
return e != e && t != t
}
function xf(e, t) {
var n, r;
function i() {
for (var o = [], a = 0; a < arguments.length; a++) o[a] = arguments[a];
var s = Date.now() - n,
l = af(t) ? t() : t || 0;
s < l && s >= 0 ? r = setTimeout((function() {
return i.apply(void 0, o)
}), l - s) : e.apply(void 0, o)
}
function o() {
for (var e = [], o = 0; o < arguments.length; o++) e[o] = arguments[o];
n = Date.now(), r = setTimeout((function() {
return i.apply(void 0, e)
}), af(t) ? t() : t || 0)
}
return o.clear = function() {
clearTimeout(r)
}, o
}
var kf, Cf, Sf, Ef = ["left", "right", "top", "bottom"],
Tf = ["left", "right"],
Of = ["top", "bottom"];
function Af(e, t) {
return {
left: e.left - t.left,
top: e.top - t.top
}
}
function Pf(e) {
return {
left: e.left + e.width / 2,
top: e.top + e.height / 2
}
}
function Mf(e, t) {
return Math.pow(e.width - t.width, 2) + Math.pow(e.height - t.height, 2)
}
function Df(e, t) {
return {
left: e.left - t.left,
top: e.top - t.top,
width: e.width + t.left + t.right,
height: e.height + t.top + t.bottom
}
}
function If(e) {
return {
left: -e.left,
top: -e.top
}
}
function Nf(e, t) {
return se(se({}, e), {
left: e.left + t.left,
top: e.top + t.top
})
}
function Rf(e) {
return {
left: e.left,
top: e.top,
right: e.left + e.width,
bottom: e.top + e.height
}
}
function jf(e, t, n, r) {
if (1 !== t) {
if ("left" in e || "top" in e) {
if (n) {
var i = Pf(e);
return {
width: e.width * t,
height: e.height * t,
left: e.left + e.width * (1 - t) / 2 + (n.left - i.left) * (r || 1 - t),
top: e.top + e.height * (1 - t) / 2 + (n.top - i.top) * (r || 1 - t)
}
}
return {
width: e.width * t,
height: e.height * t,
left: e.left + e.width * (1 - t) / 2,
top: e.top + e.height * (1 - t) / 2
}
}
return {
width: e.width * t,
height: e.height * t
}
}
return e
}
function Lf(e) {
return e.width / e.height
}
function Ff(e, t) {
return Math.min(t.maxWidth ? t.maxWidth / e.width : 1 / 0, t.maxHeight ? t.maxHeight / e.height : 1 / 0)
}
function Bf(e, t) {
return Math.max(t.minWidth ? t.minWidth / e.width : 0, t.minHeight ? t.minHeight / e.height : 0)
}
function zf(e, t) {
var n;
return t.minimum && _f(e, t.minimum) ? n = t.minimum : t.maximum && vf(e, t.maximum) && (n = t.maximum), n
}
function Hf(e, t) {
var n = Lf(e),
r = 1;
return t.minWidth > 0 && t.minHeight > 0 ? n > t.minWidth / t.minHeight ? e.height < t.minHeight && (r = t.minHeight / e.height) : e.width < t.minWidth && (r = t.minWidth / e.width) : t.minWidth > 0 ? e.width < t.minWidth && (r = t
.minWidth / e.width) : t.minHeight > 0 && e.height < t.minHeight && (r = t.minHeight / e.height), t.maxWidth < 1 / 0 && t.maxHeight < 1 / 0 ? n > t.maxWidth / t.maxHeight ? e.width > t.maxWidth && (r = t.maxWidth / e.width) : e
.height > t.maxHeight && (r = t.maxHeight / e.height) : t.maxWidth < 1 / 0 ? e.width > t.maxWidth && (r = t.maxWidth / e.width) : t.maxHeight < 1 / 0 && e.height > t.maxHeight && (r = t.maxHeight / e.height), r
}
function Uf(e, t) {
var n = {
left: 0,
top: 0,
right: 0,
bottom: 0
};
return Ef.forEach((function(r) {
var i = t[r],
o = Rf(e)[r];
n[r] = void 0 !== i && void 0 !== o ? "left" === r || "top" === r ? Math.max(0, i - o) : Math.max(0, o - i) : 0
})), n
}
function Wf(e, t) {
return jf(e, Hf(e, t))
}
function Vf(e, t) {
var n = t * Math.PI / 180;
return {
width: Math.abs(e.width * Math.cos(n)) + Math.abs(e.height * Math.sin(n)),
height: Math.abs(e.width * Math.sin(n)) + Math.abs(e.height * Math.cos(n))
}
}
function Xf(e, t, n) {
var r = t * Math.PI / 180;
return n ? {
left: (e.left - n.left) * Math.cos(r) - (e.top - n.top) * Math.sin(r) + n.left,
top: (e.left - n.left) * Math.sin(r) + (e.top - n.top) * Math.cos(r) + n.top
} : {
left: e.left * Math.cos(r) - e.top * Math.sin(r),
top: e.left * Math.sin(r) + e.top * Math.cos(r)
}
}
function Gf(e) {
return {
minWidth: 0,
minHeight: 0,
maxWidth: void 0 !== e.right && void 0 !== e.left ? e.right - e.left : 1 / 0,
maxHeight: void 0 !== e.bottom && void 0 !== e.top ? e.bottom - e.top : 1 / 0
}
}
function Yf(e, t) {
var n = {};
return Ef.forEach((function(r) {
var i = e[r],
o = t[r];
void 0 !== i && void 0 !== o ? n[r] = "left" === r || "top" === r ? Math.max(i, o) : Math.min(i, o) : void 0 !== o ? n[r] = o : void 0 !== i && (n[r] = i)
})), n
}
function qf(e, t) {
var n = {
left: 0,
top: 0
},
r = Uf(e, t);
return r.left && r.left > 0 ? n.left = r.left : r.right && r.right > 0 && (n.left = -r.right), r.top && r.top > 0 ? n.top = r.top : r.bottom && r.bottom > 0 && (n.top = -r.bottom), n
}
function Kf(e, t) {
return Nf(e, qf(e, t))
}
function $f(e) {
return void 0 === e && (e = {}), pf(e) ? {
minimum: e,
maximum: e
} : {
minimum: ff(e.minimum) ? e.minimum : 0,
maximum: ff(e.maximum) ? e.maximum : 1 / 0
}
}
function Zf(e, t) {
return (sf(t.maxWidth) || !vf(e.width, t.maxWidth)) && (sf(t.maxHeight) || !vf(e.height, t.maxHeight)) && (sf(t.minHeight) || !_f(e.height, t.minHeight)) && (sf(t.minWidth) || !_f(e.width, t.minWidth))
}
function Jf(e, t) {
return (sf(t.left) || !_f(e.left, t.left)) && (sf(t.top) || !_f(e.top, t.top)) && (sf(t.right) || !vf(e.left + e.width, t.right)) && (sf(t.bottom) || !vf(e.top + e.height, t.bottom))
}
function Qf(e) {
return Boolean(e && e.visibleArea && e.coordinates)
}
function eg(e, t) {
return function(e, t) {
var n = af(t.areaSizeRestrictions) ? t.areaSizeRestrictions(e, t) : t.areaSizeRestrictions;
n.maxWidth < 1 / 0 && n.maxHeight < 1 / 0 && (Lf(e.boundary) > n.maxWidth / n.maxHeight ? n.maxHeight = n.maxWidth / Lf(e.boundary) : n.maxWidth = n.maxHeight * Lf(e.boundary));
return hg(n)
}(e, t)
}
function tg(e, t) {
return af(t.areaPositionRestrictions) ? t.areaPositionRestrictions(e, t) : t.areaPositionRestrictions
}
function ng(e, t) {
return function(e, t) {
var n = af(t.sizeRestrictions) ? t.sizeRestrictions(e, t) : t.sizeRestrictions,
r = rg(e, t),
i = {
minWidth: ff(n.minWidth) ? uf(n.minWidth) : 0,
minHeight: ff(n.minHeight) ? uf(n.minHeight) : 0,
maxWidth: ff(n.maxWidth) ? uf(n.maxWidth) : 1 / 0,
maxHeight: ff(n.maxHeight) ? uf(n.maxHeight) : 1 / 0
};
void 0 !== r.left && void 0 !== r.right && (i.maxWidth = Math.min(i.maxWidth, r.right - r.left));
void 0 !== r.bottom && void 0 !== r.top && (i.maxHeight = Math.min(i.maxHeight, r.bottom - r.top));
return hg(i)
}(e, t)
}
function rg(e, t) {
return af(t.positionRestrictions) ? t.positionRestrictions(e, t) : t.positionRestrictions
}
function ig(e) {
return e.visibleArea ? e.visibleArea.width / e.boundary.width : 0
}
function og(e) {
if (Qf(e)) {
var t = e.coordinates,
n = t.width,
r = t.height,
i = t.left,
o = t.top,
a = ig(e);
return {
width: n / a,
height: r / a,
left: (i - e.visibleArea.left) / a,
top: (o - e.visibleArea.top) / a
}
}
return {
left: 0,
top: 0,
width: 0,
height: 0
}
}
function ag(e, t) {
return $f(af(t.aspectRatio) ? t.aspectRatio(e, t) : t.aspectRatio)
}
function sg(e, t) {
return af(t.defaultCoordinates) ? t.defaultCoordinates(e, t) : t.defaultCoordinates
}
function lg(e, t) {
return af(t.defaultVisibleArea) ? t.defaultVisibleArea(e, t) : t.defaultVisibleArea
}
function cg(e) {
return e.imageSize && e.imageSize.width && e.imageSize.height ? Vf(e.imageSize, e.transforms.rotate) : {
width: 0,
height: 0
}
}
function ug(e, t) {
return !Qf(e) || !zf(Lf(e.coordinates), ag(e, t)) && Zf(e.visibleArea, eg(e, t)) && Zf(e.coordinates, ng(e, t)) && Jf(e.visibleArea, tg(e, t)) && Jf(e.coordinates, rg(e, t))
}
function hg(e) {
var t = se({}, e);
return t.minWidth > t.maxWidth && (t.minWidth = t.maxWidth), t.minHeight > t.maxHeight && (t.minHeight = t.maxHeight), t
}
function pg(e, t) {
var n = e,
r = se({
minWidth: 0,
minHeight: 0,
maxWidth: 1 / 0,
maxHeight: 1 / 0
}, t);
return hg({
maxHeight: Math.min(n.maxHeight, r.maxHeight),
minHeight: Math.max(n.minHeight, r.minHeight),
maxWidth: Math.min(n.maxWidth, r.maxWidth),
minWidth: Math.max(n.minWidth, r.minWidth)
})
}
function dg(e) {
return yf(e)
}
function fg(e) {
var t = e.width,
n = e.height,
r = e.sizeRestrictions || {
minWidth: 0,
minHeight: 0,
maxWidth: 1 / 0,
maxHeight: 1 / 0
},
i = $f(e.aspectRatio),
o = {
width: Math.max(r.minWidth, Math.min(r.maxWidth, t)),
height: Math.max(r.minHeight, Math.min(r.maxHeight, n))
},
a = [o];
return i && [i.minimum, i.maximum].forEach((function(e) {
e && a.push({
width: o.width,
height: o.width / e
}, {
width: o.height * e,
height: o.height
})
})),
function(e, t, n, r) {
var i = function(i) {
return e.reduce((function(e, o) {
var a = af(n) ? n(o) : n,
s = a.maxHeight,
l = a.maxWidth,
c = a.minWidth,
u = a.minHeight,
h = $f(af(r) ? r(o) : r);
return Zf(o, i ? {
maxWidth: l,
maxHeight: s
} : {
maxWidth: l,
maxHeight: s,
minWidth: c,
minHeight: u
}) && !zf(Lf(o), h) && o.width && o.height && (!e || _f(Mf(o, t), Mf(e, t))) ? o : e
}), null)
};
return i() || i(!0)
}(a = a.map((function(e) {
return Wf(e, r)
})), {
width: t,
height: n
}, r, i)
}
function gg(e, t) {
var n = dg(e);
if (e.visibleArea) {
var r = eg(e, t);
n.visibleArea = se(se({}, e.visibleArea), fg({
width: e.visibleArea.width,
height: e.visibleArea.height,
aspectRatio: {
minimum: Lf(n.boundary),
maximum: Lf(n.boundary)
},
sizeRestrictions: r
})), n.visibleArea = Nf(n.visibleArea, Af(Pf(e.visibleArea), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t))
}
return n
}
function mg(e, t, n) {
var r = Nf(e, t);
return n ? Kf(r, n) : r
}
function vg(e, t, n, r) {
void 0 === r && (r = !0);
var i = !1 === r ? Sf.unsafe : !0 === r ? Sf.zoom : r,
o = ag(e, t),
a = ng(e, t);
e.visibleArea && i === Sf.limit && (a = se(se({}, a), {
minWidth: Math.min(e.visibleArea.width, a.minWidth),
minHeight: Math.min(e.visibleArea.height, a.minHeight),
maxWidth: Math.min(e.visibleArea.width, a.maxWidth),
maxHeight: Math.min(e.visibleArea.height, a.maxHeight)
}));
var s = rg(e, t);
e.visibleArea && i === Sf.limit && (s = Yf(s, Rf(e.visibleArea)));
var l = function(e, t) {
return mg(e, {
left: t.left - (e.left || 0),
top: t.top - (e.top || 0)
}, s)
},
c = e.coordinates ? se({}, e.coordinates) : {
left: 0,
top: 0,
width: 0,
height: 0
};
(Array.isArray(n) ? n : [n]).forEach((function(n) {
var r;
(r = "function" == typeof n ? n(se(se({}, e), {
coordinates: c
}), t) : n) && (sf(r.width) && sf(r.height) || (c = function(e, t) {
var n = se(se(se({}, e), fg({
width: t.width,
height: t.height,
sizeRestrictions: a,
aspectRatio: o
})), {
left: 0,
top: 0
});
return l(n, {
left: e.left || 0,
top: e.top || 0
})
}(c, se(se({}, c), r))), sf(r.left) && sf(r.top) || (c = l(c, se(se({}, c), r))))
}));
var u = se(se({}, dg(e)), {
coordinates: c
});
if (u.visibleArea && i === Sf.zoom) {
var h = Math.max(0, u.coordinates.width - u.visibleArea.width),
p = Math.max(0, u.coordinates.height - u.visibleArea.height),
d = eg(e, t),
f = h > p ? u.coordinates.width / u.visibleArea.width : u.coordinates.height / u.visibleArea.height;
return f > 1 && (u.visibleArea = jf(u.visibleArea, Math.min(f, Ff(u.visibleArea, d)))), u.visibleArea = Nf(u.visibleArea, If(qf(u.coordinates, Rf(u.visibleArea)))), gg(u, t)
}
return u
}
function _g(e, t) {
if (e.coordinates) {
var n = dg(e),
r = ag(e, t),
i = ng(e, t);
return n.coordinates = se(se({}, e.coordinates), fg({
width: e.coordinates.width,
height: e.coordinates.height,
aspectRatio: r,
sizeRestrictions: e.visibleArea ? {
maxWidth: Math.min(e.visibleArea.width, i.maxWidth),
maxHeight: Math.min(e.visibleArea.height, i.maxHeight),
minHeight: Math.min(e.visibleArea.height, i.minHeight),
minWidth: Math.min(e.visibleArea.width, i.minWidth)
} : i
})), n.coordinates = Nf(n.coordinates, Af(Pf(e.coordinates), Pf(n.coordinates))), n.coordinates = Kf(n.coordinates, e.visibleArea ? Yf(Rf(e.visibleArea), rg(n, t)) : rg(n, t)), n
}
return e
}
function bg(e, t, n, r) {
void 0 === r && (r = !0);
var i = se(se({}, dg(e)), {
visibleArea: n
});
return i = gg(i, t), r && (i = _g(i, t)), i
}
function yg(e, t) {
var n, r, i, o, a, s = e.boundary,
l = e.image,
c = {
boundary: {
width: s.width,
height: s.height
},
imageSize: {
width: l.width,
height: l.height
},
transforms: {
rotate: (null === (n = l.transforms) || void 0 === n ? void 0 : n.rotate) || 0,
flip: {
horizontal: (null === (i = null === (r = l.transforms) || void 0 === r ? void 0 : r.flip) || void 0 === i ? void 0 : i.horizontal) || !1,
vertical: (null === (a = null === (o = l.transforms) || void 0 === o ? void 0 : o.flip) || void 0 === a ? void 0 : a.vertical) || !1
}
},
visibleArea: null,
coordinates: null
};
return t.defaultTransforms && (c.transforms = function(e, t) {
var n = se(se({}, e.transforms), {
flip: se({}, e.transforms.flip)
});
if (t.defaultTransforms) {
var r = af(t.defaultTransforms) ? t.defaultTransforms(e, t) : t.defaultTransforms;
pf(r.rotate) && (n.rotate = r.rotate), r.flip && (hf(r.flip.horizontal) && (n.flip.horizontal = r.flip.horizontal), hf(r.flip.vertical) && (n.flip.vertical = r.flip.vertical))
}
return n
}(c, t)), c = t.priority === Cf.visibleArea ? vg(c = bg(c, t, lg(c, t), !1), t, sg(c, t), Sf.limit) : bg(c = vg(c, t, sg(c, t), Sf.unsafe), t, lg(c, t), !0)
}
function wg(e, t, n) {
if (Qf(e)) {
var r = dg(e);
return r.coordinates = Nf(r.coordinates, n), r.coordinates = Kf(r.coordinates, Yf(Rf(r.visibleArea), rg(r, t))), r
}
return e
}
function xg(e) {
var t = e.coordinates,
n = e.directions,
r = e.positionRestrictions,
i = e.sizeRestrictions,
o = e.preserveRatio,
a = e.allowedDirections,
s = e.compensate,
l = void 0 === s || s,
c = se({}, n),
u = Df(t, c).width,
h = Df(t, c).height;
u < 0 && (c.left < 0 && c.right < 0 ? (c.left = -(t.width - i.minWidth) / (c.left / c.right), c.right = -(t.width - i.minWidth) / (c.right / c.left)) : c.left < 0 ? c.left = -(t.width - i.minWidth) : c.right < 0 && (c.right = -(t
.width - i.minWidth))), h < 0 && (c.top < 0 && c.bottom < 0 ? (c.top = -(t.height - i.minHeight) / (c.top / c.bottom), c.bottom = -(t.height - i.minHeight) / (c.bottom / c.top)) : c.top < 0 ? c.top = -(t.height - i.minHeight) : c
.bottom < 0 && (c.bottom = -(t.height - i.minHeight)));
var p = Uf(Df(t, c), r),
d = Ef.every((function(e) {
return !vf(p[(t = e, {
left: "right",
top: "bottom",
right: "left",
bottom: "top"
} [t])], 0) || a[e];
var t
}));
l && d && (p.left && p.left > 0 && 0 === p.right ? (c.right += p.left, c.left -= p.left) : p.right && p.right > 0 && 0 === p.left && (c.left += p.right, c.right -= p.right), p.top && p.top > 0 && 0 === p.bottom ? (c.bottom += p.top, c
.top -= p.top) : p.bottom && p.bottom > 0 && 0 === p.top && (c.top += p.bottom, c.bottom -= p.bottom), p = Uf(Df(t, c), r));
var f = {
width: 1 / 0,
height: 1 / 0,
left: 1 / 0,
right: 1 / 0,
top: 1 / 0,
bottom: 1 / 0
};
if (Ef.forEach((function(e) {
var t = p[e];
t && c[e] && (f[e] = Math.max(0, 1 - t / c[e]))
})), o) {
var g = Math.min.apply(Math, Ef.map((function(e) {
return f[e]
})));
g !== 1 / 0 && Ef.forEach((function(e) {
c[e] *= g
}))
} else Ef.forEach((function(e) {
f[e] !== 1 / 0 && (c[e] *= f[e])
}));
if (u = Df(t, c).width, h = Df(t, c).height, c.right + c.left && (u > i.maxWidth ? f.width = (i.maxWidth - t.width) / (c.right + c.left) : u < i.minWidth && (f.width = (i.minWidth - t.width) / (c.right + c.left))), c.bottom + c.top && (
h > i.maxHeight ? f.height = (i.maxHeight - t.height) / (c.bottom + c.top) : h < i.minHeight && (f.height = (i.minHeight - t.height) / (c.bottom + c.top))), o) {
var m = Math.min(f.width, f.height);
m !== 1 / 0 && Ef.forEach((function(e) {
c[e] *= m
}))
} else f.width !== 1 / 0 && Tf.forEach((function(e) {
c[e] *= f.width
})), f.height !== 1 / 0 && Of.forEach((function(e) {
c[e] *= f.height
}));
return c
}
function kg(e, t, n) {
return mf(t + n, 0) ? e / 2 : mf(t, 0) ? 0 : mf(n, 0) ? e : e * Math.abs(t / (t + n))
}
function Cg(e, t) {
var n = t.toLowerCase();
return {
left: e.left + e.width * (-1 !== n.indexOf("west") ? 1 : -1 !== n.indexOf("east") ? 0 : .5),
top: e.top + e.height * (-1 !== n.indexOf("north") ? 1 : -1 !== n.indexOf("south") ? 0 : .5)
}
}
function Sg(e) {
var t = e.toLowerCase();
return {
left: -1 === t.indexOf("east"),
top: -1 === t.indexOf("south"),
right: -1 === t.indexOf("west"),
bottom: -1 === t.indexOf("north")
}
}
function Eg(e, t, n, r, i) {
var o = r.reference,
a = function(e, t) {
var n = e.toLowerCase(),
r = {
left: -1 === n.indexOf("west") ? t.left : -t.left,
top: -t.top,
right: t.left,
bottom: t.top
};
["north", "south", "center"].every((function(e) {
return -1 === n.indexOf(e)
})) && (r.top = 0, r.bottom = 0), ["west", "east", "center"].every((function(e) {
return -1 === n.indexOf(e)
})) && (r.left = 0, r.right = 0);
var i = Sg(e);
return Ef.forEach((function(e) {
i[e] || (r[e] = 0)
})), r
}(t, n),
s = Sg(t),
l = function(e, t, n, r) {
var i = r.aspectRatio,
o = r.positionRestrictions,
a = r.sizeRestrictions,
s = se({}, e);
t = se({}, t);
var l = n.allowedDirections || {
left: !0,
right: !0,
bottom: !0,
top: !0
};
e.width < a.minWidth && (t.left = 0, t.right = 0), e.height < a.minHeight && (t.top = 0, t.bottom = 0), Ef.forEach((function(e) {
l[e] || (t[e] = 0)
}));
var c = Df(s, t = xg({
coordinates: s,
directions: t,
sizeRestrictions: a,
positionRestrictions: o,
allowedDirections: l
})).width,
u = Df(s, t).height,
h = n.preserveAspectRatio ? Lf(s) : zf(c / u, i);
if (h) {
var p = n.respectDirection;
if ("width" !== p && "height" !== p && (p = s.width >= s.height || 1 === h ? "width" : "height"), "width" === p) {
var d = c / h - s.height;
if (l.top && l.bottom) {
var f = t.top,
g = t.bottom;
t.bottom = kg(d, g, f), t.top = kg(d, f, g)
} else l.bottom ? t.bottom = d : l.top ? t.top = d : l.right ? t.right = 0 : l.left && (t.left = 0)
} else if ("height" === p) {
var m = s.width - u * h;
if (l.left && l.right) {
var v = t.left,
_ = t.right;
t.left = -kg(m, v, _), t.right = -kg(m, _, v)
} else l.left ? t.left = -m : l.right ? t.right = -m : l.top ? t.top = 0 : l.bottom && (t.bottom = 0)
}
t = xg({
directions: t,
coordinates: s,
sizeRestrictions: a,
positionRestrictions: o,
preserveRatio: !0,
compensate: n.compensate,
allowedDirections: l
})
}
return c = Df(s, t).width, u = Df(s, t).height, (h = n.preserveAspectRatio ? Lf(s) : zf(c / u, i)) && vf(Math.abs(h - c / u), 0) && Ef.forEach((function(e) {
t[e] = 0
})), mg({
width: e.width + t.right + t.left,
height: e.height + t.top + t.bottom,
left: e.left,
top: e.top
}, {
left: -t.left,
top: -t.top
}, o)
}(e, a, se(se({}, r), {
allowedDirections: s
}), i);
return o && (l = Nf(l, Af(Cg(o, t), Cg(l, t)))), Kf(l, i.positionRestrictions)
}
function Tg(e, t, n, r, i) {
var o = function(e) {
return e.coordinates ? Math.min(e.coordinates.width, e.coordinates.height, 20 * ig(e)) : 1
}(e),
a = ng(e, t);
return Qf(e) ? se(se({}, dg(e)), {
coordinates: Eg(e.coordinates, n, r, i, {
positionRestrictions: Yf(rg(e, t), Rf(e.visibleArea)),
sizeRestrictions: {
maxWidth: Math.min(a.maxWidth, e.visibleArea.width),
maxHeight: Math.min(a.maxHeight, e.visibleArea.height),
minWidth: Math.max(Math.min(a.minWidth, e.visibleArea.width), o),
minHeight: Math.max(Math.min(a.minHeight, e.visibleArea.height), o)
},
aspectRatio: ag(e, t)
})
}) : e
}
function Og(e, t, n) {
var r = se(se({}, dg(e)), {
boundary: n
});
if (r.visibleArea && r.coordinates && e.visibleArea) {
r.visibleArea.height = r.visibleArea.width / Lf(n), r.visibleArea.top += (e.visibleArea.height - r.visibleArea.height) / 2;
var i = ng(r, t);
(Math.max(i.minHeight, r.coordinates.height) - r.visibleArea.height > 0 || Math.max(i.minWidth, r.coordinates.width) - r.visibleArea.width > 0) && (r.visibleArea = jf(r.visibleArea, Math.max(Math.max(i.minHeight, r.coordinates
.height) / r.visibleArea.height, Math.max(i.minWidth, r.coordinates.width) / r.visibleArea.width))), r.visibleArea = Wf(r.visibleArea, eg(r, t));
var o = If(qf(r.coordinates, Rf(r.visibleArea)));
r.visibleArea.width < r.coordinates.width && (o.left = 0), r.visibleArea.height < r.coordinates.height && (o.top = 0), r.visibleArea = Nf(r.visibleArea, o), r.visibleArea = Kf(r.visibleArea, tg(r, t)), r = _g(r, t)
}
return r
}
function Ag(e, t, n) {
return n.rotate && (e = function(e, t, n) {
if (Qf(e)) {
var r = dg(e),
i = pf(n) ? n : n.angle,
o = Xf(Pf(se({
left: 0,
top: 0
}, cg(e))), i);
r.transforms.rotate += i, r.coordinates = se(se({}, fg({
sizeRestrictions: ng(r, t),
aspectRatio: ag(r, t),
width: r.coordinates.width,
height: r.coordinates.height
})), Xf(Pf(r.coordinates), i));
var a = !pf(n) && n.center ? n.center : Pf(e.coordinates),
s = Af(Pf(e.coordinates), Xf(Pf(e.coordinates), i, a)),
l = cg(r);
return r.coordinates.left -= o.left - l.width / 2 + r.coordinates.width / 2 - s.left, r.coordinates.top -= o.top - l.height / 2 + r.coordinates.height / 2 - s.top, r.visibleArea = Wf(r.visibleArea, pg(eg(r, t), {
minWidth: r.coordinates.width,
minHeight: r.coordinates.height
})), r.coordinates = Kf(r.coordinates, rg(r, t)), r.visibleArea = Nf(r.visibleArea, Af(Pf(r.coordinates), Pf(e.coordinates))), r.visibleArea = Kf(r.visibleArea, tg(r, t)), r
}
return e
}(e, t, n.rotate)), n.flip && (e = function(e, t, n, r) {
if (Qf(e)) {
var i = dg(e),
o = e.transforms.rotate,
a = cg(e),
s = {
horizontal: n,
vertical: r
};
if (s.horizontal || s.vertical) {
var l = Xf({
left: a.width / 2,
top: a.height / 2
}, -o),
c = Xf(Pf(i.coordinates), -o),
u = Xf({
left: s.horizontal ? l.left - (c.left - l.left) : c.left,
top: s.vertical ? l.top - (c.top - l.top) : c.top
}, o);
i.coordinates = Nf(i.coordinates, Af(u, Pf(i.coordinates))), c = Xf(Pf(i.visibleArea), -o), u = Xf({
left: s.horizontal ? l.left - (c.left - l.left) : c.left,
top: s.vertical ? l.top - (c.top - l.top) : c.top
}, o), i.visibleArea = Nf(i.visibleArea, Af(u, Pf(i.visibleArea))), i.visibleArea = Kf(i.visibleArea, tg(i, t))
}
return s.horizontal && (i.transforms.flip.horizontal = !e.transforms.flip.horizontal), s.vertical && (i.transforms.flip.vertical = !e.transforms.flip.vertical), i
}
return e
}(e, t, n.flip.horizontal, n.flip.vertical)), (n.move || n.scale) && (e = function(e, t, n) {
var r, i = n.scale,
o = void 0 === i ? 1 : i,
a = n.move,
s = void 0 === a ? {} : a;
if (Qf(e)) {
var l = dg(e),
c = 1 / (pf(o) ? o : o.factor),
u = pf(o) ? void 0 : o.center,
h = !mf(c, 1),
p = 1,
d = 1;
l.visibleArea = Nf(l.visibleArea, {
left: s.left || 0,
top: s.top || 0
});
var f = ng(l, t),
g = rg(l, t),
m = eg(l, t),
v = {
stencil: {
minimum: Math.max(f.minWidth ? f.minWidth / l.coordinates.width : 0, f.minHeight ? f.minHeight / l.coordinates.height : 0),
maximum: Math.min(f.maxWidth ? f.maxWidth / l.coordinates.width : 1 / 0, f.maxHeight ? f.maxHeight / l.coordinates.height : 1 / 0, Ff(l.coordinates, Gf(g)))
},
area: {
maximum: Ff(l.visibleArea, m),
minimum: Bf(l.visibleArea, m)
}
};
c && h && (c < 1 ? (d = Math.max(c, Math.max(v.area.minimum, v.stencil.minimum))) > 1 && (d = 1) : c > 1 && (d = Math.min(c, Math.min(v.area.maximum, v.stencil.maximum))) < 1 && (d = 1)), d && (l.visibleArea = jf(l.visibleArea,
d, u));
var _ = {
left: e.coordinates.left - e.visibleArea.left,
right: e.visibleArea.width + e.visibleArea.left - (e.coordinates.width + e.coordinates.left),
top: e.coordinates.top - e.visibleArea.top,
bottom: e.visibleArea.height + e.visibleArea.top - (e.coordinates.height + e.coordinates.top)
};
return l.visibleArea = Kf(l.visibleArea, {
left: void 0 !== g.left ? g.left - _.left * d : void 0,
top: void 0 !== g.top ? g.top - _.top * d : void 0,
bottom: void 0 !== g.bottom ? g.bottom + _.bottom * d : void 0,
right: void 0 !== g.right ? g.right + _.right * d : void 0
}), l.visibleArea = Kf(l.visibleArea, tg(l, t)), l.coordinates.width = l.coordinates.width * d, l.coordinates.height = l.coordinates.height * d, l.coordinates.left = l.visibleArea.left + _.left * d, l.coordinates.top = l
.visibleArea.top + _.top * d, l.coordinates = Kf(l.coordinates, Yf(Rf(l.visibleArea), g)), h && c && (null === (r = t.transformImage) || void 0 === r ? void 0 : r.adjustStencil) && (c > 1 ? p = Math.min(v.area.maximum, c) /
d : c < 1 && (p = Math.max(l.coordinates.height / l.visibleArea.height, l.coordinates.width / l.visibleArea.width, c / d)), 1 !== p && (l.visibleArea = jf(l.visibleArea, p, c > 1 ? u : Pf(l.coordinates)), l.visibleArea = Kf(
l.visibleArea, tg(l, t)), l.visibleArea = Nf(l.visibleArea, If(qf(l.coordinates, Rf(l.visibleArea)))))), l
}
return e
}(e, t, n)), e
}
function Pg(e, t) {
if (Qf(e)) {
var n = dg(e),
r = ag(e, t),
i = ng(e, t),
o = eg(e, t),
a = zf(Lf(e.coordinates), r),
s = a ? {
height: e.coordinates.height,
width: e.coordinates.height * a
} : e.coordinates;
n.coordinates = se(se({}, n.coordinates), fg({
width: s.width,
height: s.height,
aspectRatio: r,
sizeRestrictions: pg(o, i)
})), n.coordinates = Nf(n.coordinates, Af(Pf(e.coordinates), Pf(n.coordinates)));
var l = Math.max(n.coordinates.width / n.visibleArea.width, n.coordinates.height / n.visibleArea.height, 1);
return n.visibleArea = se(se({}, e.visibleArea), fg({
width: e.visibleArea.width * l,
height: e.visibleArea.height * l,
aspectRatio: {
minimum: Lf(n.boundary),
maximum: Lf(n.boundary)
},
sizeRestrictions: o
})), n.visibleArea = Nf(n.visibleArea, Af(Pf(e.visibleArea), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t)), n.coordinates = Kf(n.coordinates, Yf(Rf(n.visibleArea), rg(n, t))), n
}
return e
}
function Mg(e, t) {
var n = ig(e);
return e.visibleArea ? {
left: t.left * n + e.visibleArea.left,
top: t.top * n + e.visibleArea.top
} : t
}
function Dg(e, t) {
if (e) {
var n = Math.abs(e.transforms.rotate % 180);
return n <= 45 || n >= 135 ? t : {
horizontal: t.vertical,
vertical: t.horizontal
}
}
return t
}
function Ig(e, t) {
var n = ig(e);
return {
left: pf(t.left) ? t.left * n : 0,
top: pf(t.top) ? t.top * n : 0
}
}
function Ng(e, t) {
var n = t.getBoundingClientRect(),
r = n.left,
i = n.top,
o = {
left: 0,
top: 0
},
a = 0;
return e.forEach((function(t) {
o.left += (t.clientX - r) / e.length, o.top += (t.clientY - i) / e.length
})), e.forEach((function(e) {
a += gf({
left: o.left,
top: o.top
}, {
left: e.clientX - r,
top: e.clientY - i
})
})), {
centerMass: o,
spread: a,
count: e.length
}
}
function Rg(e, t, n) {
void 0 === n && (n = .1);
var r, i, o = t.getBoundingClientRect(),
a = o.left,
s = o.top;
return {
scale: {
factor: 1 - n * (r = e.deltaY || e.detail || e.wheelDelta, 0 === (i = +r) || df(i) ? i : i > 0 ? 1 : -1),
center: {
left: e.clientX - a,
top: e.clientY - s
}
}
}
}
function jg(e) {
return e.moveCoordinates || e.resizeCoordinates || e.transformImage.move || e.transformImage.rotate || e.transformImage.flip || e.transformImage.scale
}
function Lg(e, t) {
var n, r = e.imageSize,
i = e.visibleArea,
o = ng(e, t),
a = ag(e, t);
if (i) n = i;
else {
var s = Gf(rg(e, t));
n = {
width: Math.max(s.minWidth, Math.min(s.maxWidth, r.width)),
height: Math.max(s.minHeight, Math.min(s.maxHeight, r.height))
}
}
var l = Math.min(a.maximum || 1 / 0, Math.max(a.minimum || 0, Lf(n))),
c = n.width < n.height ? {
width: .8 * n.width,
height: .8 * n.width / l
} : {
height: .8 * n.height,
width: .8 * n.height * l
};
return fg(se(se({}, c), {
aspectRatio: a,
sizeRestrictions: o
}))
}
function Fg(e, t) {
return function(e) {
return {
minWidth: ff(e.minWidth) ? uf(e.minWidth) : 0,
minHeight: ff(e.minHeight) ? uf(e.minHeight) : 0,
maxWidth: ff(e.maxWidth) ? uf(e.maxWidth) : 1 / 0,
maxHeight: ff(e.maxHeight) ? uf(e.maxHeight) : 1 / 0
}
}(t)
}
function Bg(e) {
var t = e.visibleArea,
n = e.coordinates,
r = t || cg(e);
return {
left: (t ? t.left : 0) + r.width / 2 - (n ? n.width / 2 : 0),
top: (t ? t.top : 0) + r.height / 2 - (n ? n.height / 2 : 0)
}
}
function zg(e) {
var t = e.getBoundingClientRect();
return {
width: t.width,
height: t.height
}
}
function Hg(e, t) {
return e.aspectRatio ? {} : {
aspectRatio: $f(af(t.aspectRatio) ? t.aspectRatio() : t.aspectRatio)
}
}
function Ug(e) {
return function(t, n) {
var r = af(e) ? e(t, n) : e;
return pg(Fg(0, n), r)
}
}
function Wg(e) {
return se(se({}, e), {
sizeRestrictions: function(t, n) {
return e.sizeRestrictions ? af(e.sizeRestrictions) ? e.sizeRestrictions(t, n) : e.sizeRestrictions : Fg(0, n)
},
areaPositionRestrictions: function(t, n) {
return e.areaPositionRestrictions ? af(e.areaPositionRestrictions) ? e.areaPositionRestrictions(t, n) : e.areaPositionRestrictions : function(e, t) {
var n = e.visibleArea,
r = e.boundary,
i = t.imageRestriction,
o = cg(e),
a = {};
return i === kf.fillArea ? a = {
left: 0,
top: 0,
right: o.width,
bottom: o.height
} : i === kf.fitArea && (Lf(r) > Lf(o) ? (a = {
top: 0,
bottom: o.height
}, n && (n.width > o.width ? (a.left = -(n.width - o.width) / 2, a.right = o.width - a.left) : (a.left = 0, a.right = o.width))) : (a = {
left: 0,
right: o.width
}, n && (n.height > o.height ? (a.top = -(n.height - o.height) / 2, a.bottom = o.height - a.top) : (a.top = 0, a.bottom = o.height)))), a
}(t, n)
},
areaSizeRestrictions: function(t, n) {
return e.areaSizeRestrictions ? af(e.areaSizeRestrictions) ? e.areaSizeRestrictions(t, n) : e.areaSizeRestrictions : function(e, t) {
var n = e.boundary,
r = t.imageRestriction,
i = cg(e),
o = {
minWidth: 0,
minHeight: 0,
maxWidth: 1 / 0,
maxHeight: 1 / 0
};
return r === kf.fillArea ? (o.maxWidth = i.width, o.maxHeight = i.height) : r === kf.fitArea && (Lf(n) > Lf(i) ? (o.maxHeight = i.height, o.maxWidth = i.height * Lf(n)) : (o.maxWidth = i.width, o.maxHeight = i.width / Lf(
n))), o
}(t, n)
},
positionRestrictions: function(t, n) {
return e.positionRestrictions ? af(e.positionRestrictions) ? e.positionRestrictions(t, n) : e.positionRestrictions : function(e, t) {
var n = cg(e),
r = {};
return t.imageRestriction && "none" !== t.imageRestriction && (r = {
left: 0,
top: 0,
right: n.width,
bottom: n.height
}), r
}(t, n)
},
defaultCoordinates: function(t, n) {
if (e.defaultCoordinates) return af(e.defaultCoordinates) ? e.defaultCoordinates(t, n) : e.defaultCoordinates;
var r = e.defaultSize;
r || (r = Lg);
var i = af(r) ? r(t, n) : r,
o = e.defaultPosition || Bg;
return [i, function(e) {
return se({}, af(o) ? o(e, n) : o)
}]
},
defaultVisibleArea: function(t, n) {
return e.defaultVisibleArea ? af(e.defaultVisibleArea) ? e.defaultVisibleArea(t, n) : e.defaultVisibleArea : function(e, t) {
var n = e.coordinates,
r = e.boundary,
i = cg(e),
o = Lf(r);
if (n) {
var a = {
height: Math.max(n.height, i.height),
width: Math.max(n.width, i.width)
},
s = {
left: 0,
top: 0,
width: Lf(a) > o ? a.width : a.height * o,
height: Lf(a) > o ? a.width / o : a.height
};
(s = Wf(s, eg(e, t))).left = n.left + n.width / 2 - s.width / 2, s.top = n.top + n.height / 2 - s.height / 2;
var l = Uf(n, Rf(se({
left: 0,
top: 0
}, i))),
c = {};
return !l.left && !l.right && s.width <= i.width && (c.left = 0, c.right = i.width), !l.top && !l.bottom && s.height <= i.height && (c.top = 0, c.bottom = i.height), Kf(s, c)
}
var u = Lf(i),
h = {
height: u < o ? i.height : i.width / o,
width: u < o ? i.height * o : i.width
};
return {
left: i.width / 2 - h.width / 2,
top: i.height / 2 - h.height / 2,
width: h.width,
height: h.height
}
}(t, n)
},
aspectRatio: function(t, n) {
return $f(af(e.aspectRatio) ? e.aspectRatio(t, n) : e.aspectRatio)
}
})
}
function Vg(e, t) {
if (e && t) {
var n = t();
n && e(n)
}
}
function Xg(e, t) {
e.forEach((function(e) {
Vg(e, t)
}))
}! function(e) {
e.fillArea = "fillArea", e.fitArea = "fitArea", e.stencil = "stencil", e.none = "none"
}(kf || (kf = {})),
function(e) {
e.coordinates = "coordinates", e.visibleArea = "visibleArea"
}(Cf || (Cf = {})),
function(e) {
e.limit = "limit", e.zoom = "zoom", e.unsafe = "unsafe"
}(Sf || (Sf = {}));
var Gg = function() {
var e = this;
this.getTransitions = function() {
var t = e.getData(),
n = e.getProps().transitions;
return se(se({}, cf(n, {
timingFunction: "ease-in-out",
duration: 350
})), {
active: t.transitions
})
}, this.getInteractions = function() {
return yf(e.getData().interactions)
}, this.hasInteractions = function() {
return jg(e.getData().interactions)
}, this.startTransitions = function() {
var t = e.getProps(),
n = t.onTransitionsStart,
r = t.onUpdate,
i = t.getInstance,
o = e.getData(),
a = o.transitions,
s = le(o, ["transitions"]);
e.setData(se(se({}, s), {
transitions: !0
})), a || Xg([n, r], i), e.endTransitions()
}, this.endTransitions = xf((function() {
var t = e.getProps(),
n = t.onTransitionsEnd,
r = t.onUpdate,
i = t.getInstance;
e.setData(se(se({}, e.getData()), {
transitions: !1
})), Xg([n, r], i)
}), (function() {
return e.getTransitions().duration
})), this.applyPostProcess = function(t, n) {
var r, i = e.getProps(),
o = i.settings,
a = i.postProcess,
s = t.name,
l = t.interaction,
c = void 0 !== l && l,
u = t.transitions,
h = void 0 !== u && u,
p = t.immediately,
d = {
name: s,
interaction: c,
transitions: h,
immediately: void 0 !== p && p
};
return r = a, Array.isArray(r) ? a.reduce((function(e, t) {
return t(e, o, d)
}), n) : af(a) ? a(n, o, d) : n
}, this.updateState = function(t, n, r) {
void 0 === n && (n = {}), void 0 === r && (r = []);
var i = n.transitions,
o = void 0 !== i && i,
a = e.getProps(),
s = a.onTransitionsStart,
l = a.getInstance,
c = a.onChange,
u = a.onUpdate,
h = a.settings,
p = e.getData(),
d = af(t) ? t(p.state, h) : t,
f = d ? .001 * ig(d) : .001,
g = !wf(p.state, d, f),
m = ["coordinates", "boundary", "visibleArea", "imageSize", "transforms"].some((function(e) {
var t;
return !wf(null === (t = p.state) || void 0 === t ? void 0 : t[e], null == d ? void 0 : d[e], f)
})),
v = p;
g && (o && m && e.endTransitions(), v = se(se({}, v), {
state: dg(d),
transitions: o && m
}), e.setData(v), Vg(c, l)), v.transitions && !p.transitions && Vg(s, l), Xg(function() {
for (var e = 0, t = 0, n = arguments.length; t < n; t++) e += arguments[t].length;
var r = Array(e),
i = 0;
for (t = 0; t < n; t++)
for (var o = arguments[t], a = 0, s = o.length; a < s; a++, i++) r[i] = o[a];
return r
}(r, [u]), l)
}, this.setInteractions = function(t) {
var n = e.getProps(),
r = n.onInteractionStart,
i = n.onInteractionEnd,
o = n.getInstance,
a = e.getInteractions(),
s = se(se({}, a), t);
if (wf(a, s) || e.setData(se(se({}, e.getData()), {
interactions: s
})), jg(a) !== jg(s))
if (jg(a)) {
var l = e.getData().state;
e.updateState((function() {
return l && e.applyPostProcess({
name: "interactionEnd",
immediately: !0,
transitions: !0
}, l)
}), {
transitions: !0
}, [i])
} else Vg(r, o)
}, this.resetState = function(t, n) {
e.updateState(e.createDefaultState(t, n))
}, this.clear = function() {
e.updateState(null)
}, this.reconcileState = function(t) {
void 0 === t && (t = {});
var n = e.getProps(),
r = n.reconcileStateAlgorithm,
i = n.settings,
o = e.getData().state,
a = t.transitions,
s = void 0 !== a && a;
if (o && !ug(o, i)) {
var l = (r || Pg)(o, i);
l = e.applyPostProcess({
name: "reconcileState",
immediately: !0,
transitions: s
}, l), e.updateState(l, {
transitions: s
})
}
}, this.transformImage = function(t, n) {
void 0 === n && (n = {});
var r = n.transitions,
i = void 0 === r || r,
o = n.interaction,
a = void 0 === o || o,
s = n.immediately,
l = void 0 !== s && s,
c = n.normalize,
u = void 0 === c || c,
h = e.getProps(),
p = h.transformImageAlgorithm,
d = h.onTransformImage,
f = h.onTransformImageEnd,
g = h.settings,
m = e.getData().state,
v = [];
if (m) {
u && (t = function(e, t) {
return t.scale && (t.scale = {
factor: pf(t.scale) ? t.scale : t.scale.factor,
center: !pf(t.scale) && t.scale.center ? Mg(e, t.scale.center) : void 0
}), t.rotate && (t.rotate = {
angle: pf(t.rotate) ? t.rotate : t.rotate.angle,
center: !pf(t.rotate) && t.rotate.center ? Mg(e, t.rotate.center) : void 0
}), t.move && (t.move = Ig(e, t.move)), t
}(m, t));
var _ = e.applyPostProcess({
name: "transformImage",
transitions: i,
immediately: l
}, (p || Ag)(m, g, t));
v.push(d), a ? e.setInteractions({
transformImage: {
rotate: !sf(t.rotate),
flip: !sf(t.flip),
scale: !sf(t.scale),
move: !sf(t.move)
}
}) : (_ = e.applyPostProcess({
name: "transformImageEnd",
transitions: i,
immediately: !0
}, _), v.push(f)), e.updateState(_, {
transitions: l && i
}, v)
}
}, this.transformImageEnd = function(t) {
void 0 === t && (t = {});
var n = t.immediately,
r = void 0 === n || n,
i = t.transitions,
o = void 0 === i || i,
a = e.getData().state,
s = e.getProps().onTransformImageEnd;
e.updateState((function() {
return a && e.applyPostProcess({
name: "transformImageEnd",
immediately: r,
transitions: o
}, a)
}), {
transitions: o
}, [s]), e.setInteractions({
transformImage: {
rotate: !1,
flip: !1,
scale: !1,
move: !1
}
})
}, this.zoomImage = function(t, n) {
void 0 === n && (n = {});
var r = n.interaction,
i = void 0 !== r && r,
o = n.immediately,
a = void 0 === o || o,
s = n.transitions,
l = void 0 === s || s,
c = n.normalize,
u = void 0 !== c && c;
e.transformImage({
scale: t
}, {
interaction: i,
immediately: a,
transitions: l,
normalize: u
})
}, this.moveImage = function(t, n, r) {
void 0 === r && (r = {});
var i = r.interaction,
o = void 0 !== i && i,
a = r.immediately,
s = void 0 === a || a,
l = r.transitions,
c = void 0 === l || l,
u = r.normalize,
h = void 0 !== u && u;
e.transformImage({
move: {
left: t,
top: n
}
}, {
interaction: o,
immediately: s,
transitions: c,
normalize: h
})
}, this.flipImage = function(t, n, r) {
void 0 === r && (r = {});
var i = r.interaction,
o = void 0 !== i && i,
a = r.immediately,
s = void 0 === a || a,
l = r.transitions,
c = void 0 === l || l,
u = r.normalize,
h = void 0 === u || u,
p = e.getState(),
d = {
horizontal: t,
vertical: n
};
e.transformImage({
flip: p && h ? Dg(p, d) : d
}, {
interaction: o,
immediately: s,
transitions: c
})
}, this.rotateImage = function(t, n) {
void 0 === n && (n = {});
var r = n.interaction,
i = void 0 !== r && r,
o = n.immediately,
a = void 0 === o || o,
s = n.transitions,
l = void 0 === s || s,
c = n.normalize,
u = void 0 !== c && c;
e.transformImage({
rotate: t
}, {
interaction: i,
immediately: a,
transitions: l,
normalize: u
})
}, this.reset = function(t, n) {
e.resetState(t, n)
}, this.setState = function(t, n) {
void 0 === n && (n = {});
var r = e.getSettings(),
i = e.getData().state,
o = n.transitions,
a = void 0 === o || o,
s = n.immediately,
l = void 0 !== s && s,
c = n.interaction,
u = void 0 !== c && c,
h = n.postprocess,
p = void 0 !== h && h,
d = t && (af(t) ? t(i, r) : se(se({}, i), t));
e.updateState((function() {
return p ? d && e.applyPostProcess({
name: "setState",
immediately: l,
transitions: a,
interaction: u
}, d) : d
}), {
transitions: a
})
}, this.setCoordinates = function(t, n) {
void 0 === n && (n = {});
var r = e.getData().state,
i = e.getProps(),
o = i.setCoordinatesAlgorithm,
a = i.settings,
s = n.transitions,
l = void 0 === s || s,
c = n.immediately,
u = void 0 === c || c;
e.updateState((function() {
return r && e.applyPostProcess({
name: "setCoordinates",
immediately: u,
transitions: l
}, (o || vg)(r, a, t, Sf.zoom))
}), {
transitions: l
})
}, this.setVisibleArea = function(t, n) {
void 0 === n && (n = {});
var r = n.transitions,
i = void 0 === r || r,
o = n.immediately,
a = void 0 === o || o,
s = e.getData().state,
l = e.getProps(),
c = l.setVisibleAreaAlgorithm,
u = l.settings;
e.updateState((function() {
return s && e.applyPostProcess({
name: "setVisibleArea",
immediately: a,
transitions: i
}, (c || bg)(s, u, t))
}), {
transitions: i
})
}, this.setBoundary = function(t, n) {
void 0 === n && (n = {});
var r = e.getData().state,
i = e.getProps(),
o = i.setBoundaryAlgorithm,
a = i.settings,
s = n.transitions,
l = void 0 !== s && s,
c = n.immediately,
u = void 0 === c || c;
t ? e.updateState((function() {
return r && e.applyPostProcess({
name: "setBoundary",
immediately: u,
transitions: l
}, (o || Og)(r, a, t))
})) : e.updateState(null)
}, this.moveCoordinates = function(t, n) {
void 0 === n && (n = {});
var r = e.getData(),
i = e.getProps(),
o = i.moveCoordinatesAlgorithm,
a = i.onMove,
s = i.onMoveEnd,
l = i.settings,
c = n.interaction,
u = void 0 === c || c,
h = n.transitions,
p = void 0 !== h && h,
d = n.immediately,
f = void 0 !== d && d,
g = n.normalize,
m = void 0 === g || g,
v = [];
if (!r.transitions && r.state) {
var _ = m ? Ig(r.state, t) : function(e) {
return {
left: pf(e.left) ? e.left : 0,
top: pf(e.top) ? e.top : 0
}
}(t),
b = e.applyPostProcess({
name: "moveCoordinates",
interaction: u,
immediately: f,
transitions: p
}, (o || wg)(r.state, l, _));
v.push(a), u ? e.setInteractions({
moveCoordinates: !0
}) : (b = e.applyPostProcess({
name: "moveCoordinatesEnd",
interaction: u,
immediately: f,
transitions: p
}, b), v.push(s)), e.updateState(b, {
transitions: f && p
}, v)
}
}, this.moveCoordinatesEnd = function(t) {
void 0 === t && (t = {});
var n = e.getData().state,
r = e.getProps().onMoveEnd,
i = t.transitions,
o = void 0 === i || i,
a = t.immediately,
s = void 0 !== a && a;
e.updateState((function() {
return n && e.applyPostProcess({
name: "moveCoordinatesEnd",
transitions: o,
immediately: s
}, n)
}), {
transitions: o
}, [r]), e.setInteractions({
moveCoordinates: !1
})
}, this.resizeCoordinates = function(t, n, r, i) {
void 0 === i && (i = {});
var o = e.getData().state,
a = e.getProps(),
s = a.resizeCoordinatesAlgorithm,
l = a.onResize,
c = a.onResizeEnd,
u = a.settings,
h = i.interaction,
p = void 0 === h || h,
d = i.transitions,
f = void 0 !== d && d,
g = i.immediately,
m = void 0 !== g && g,
v = i.normalize,
_ = void 0 === v || v;
if (!e.getTransitions().active && o) {
var b = [],
y = _ ? function(e, t) {
var n = ig(e);
return {
left: pf(t.left) ? t.left * n : 0,
top: pf(t.top) ? t.top * n : 0,
right: pf(t.right) ? t.right * n : 0,
bottom: pf(t.bottom) ? t.bottom * n : 0
}
}(o, n) : function(e) {
return {
left: pf(e.left) ? e.left : 0,
top: pf(e.top) ? e.top : 0,
right: pf(e.right) ? e.right : 0,
bottom: pf(e.bottom) ? e.bottom : 0
}
}(n),
w = e.applyPostProcess({
name: "resizeCoordinates",
interaction: p,
immediately: m,
transitions: f
}, (s || Tg)(o, u, t, y, lf(r) ? r : {}));
b.push(l), p ? e.setInteractions({
resizeCoordinates: !0
}) : (w = e.applyPostProcess({
name: "resizeCoordinatesEnd",
interaction: p,
immediately: m,
transitions: f
}, w), b.push(c)), e.updateState(w, {
transitions: m && f
}, b)
}
}, this.resizeCoordinatesEnd = function(t) {
void 0 === t && (t = {});
var n = e.getProps().onResizeEnd,
r = e.getData().state,
i = t.transitions,
o = void 0 === i || i,
a = t.immediately,
s = void 0 !== a && a;
e.updateState((function() {
return r && e.applyPostProcess({
name: "resizeCoordinatesEnd",
transitions: o,
immediately: s
}, r)
}), {
transitions: o
}, [n]), e.setInteractions({
resizeCoordinates: !1
})
}, this.getStencilCoordinates = function() {
return og(e.getData().state)
}, this.getCoordinates = function(t) {
void 0 === t && (t = {});
var n = e.getData().state,
r = e.getProps().settings;
if (n && n.coordinates) {
var i = t.round;
return void 0 === i || i ? function(e, t) {
if (Qf(e)) {
var n = ng(e, t),
r = rg(e, t),
i = {
width: Math.round(e.coordinates.width),
height: Math.round(e.coordinates.height),
left: Math.round(e.coordinates.left),
top: Math.round(e.coordinates.top)
};
return i.width > n.maxWidth ? i.width = Math.floor(e.coordinates.width) : i.width < n.minWidth && (i.width = Math.ceil(e.coordinates.width)), i.height > n.maxHeight ? i.height = Math.floor(e.coordinates.height) : i
.height < n.minHeight && (i.height = Math.ceil(e.coordinates.height)), Kf(i, r)
}
return null
}(n, r) : se({}, n.coordinates)
}
return null
}, this.getVisibleArea = function() {
var t = e.getData().state;
return (null == t ? void 0 : t.visibleArea) ? se({}, t.visibleArea) : null
}, this.getSettings = function() {
var t = e.getProps().settings;
return se({}, t)
}, this.getState = function() {
return dg(e.getData().state)
}, this.getTransforms = function() {
var t = e.getData().state;
return t ? yf(t.transforms) : {
rotate: 0,
flip: {
horizontal: !1,
vertical: !1
}
}
}, this.createDefaultState = function(t, n) {
var r = e.getProps(),
i = r.createStateAlgorithm,
o = r.settings;
return e.applyPostProcess({
name: "createState",
immediately: !0,
transitions: !1
}, (i || yg)({
image: n,
boundary: t
}, o))
}, this.isConsistent = function() {
var t = e.getData().state,
n = e.getProps().settings;
return !t || ug(t, n)
}
},
Yg = {
linear: function(e) {
return e
},
"ease-in": function(e) {
return Math.pow(e, 1.675)
},
"ease-out": function(e) {
return 1 - Math.pow(1 - e, 1.675)
},
"ease-in-out": function(e) {
return .5 * (Math.sin((e - .5) * Math.PI) + 1)
}
},
qg = function() {
function e() {
this.active = !1
}
return e.prototype.start = function(e) {
var t;
this.onStart = e.onStart, this.onProgress = e.onProgress, this.onStop = e.onStop, this.active || null === (t = this.onStart) || void 0 === t || t.call(this), this.id && window.cancelAnimationFrame(this.id), this.startTime =
performance.now(), this.timingFunction = e.timingFunction, this.endTime = this.startTime + e.duration, this.active = !0, this.animate()
}, e.prototype.animate = function() {
var e = this;
if (this.startTime && this.endTime) {
var t = Yg[this.timingFunction];
t || (t = Yg["ease-out"]);
var n = 1 - (this.endTime - performance.now()) / (this.endTime - this.startTime),
r = Math.min(1, t(n));
this.onProgress && this.onProgress(r), n < 1 ? this.id = window.requestAnimationFrame((function() {
return e.animate()
})) : this.stop()
} else this.stop()
}, e.prototype.stop = function() {
this.active = !1, this.id && window.cancelAnimationFrame(this.id), this.onStop && this.onStop()
}, e
}();
function Kg(e, t, n, r, i) {
if (Qf(e)) {
var o = e.transforms,
a = e.coordinates,
s = 0 !== o.rotate || o.flip.horizontal || o.flip.vertical ? function(e, t, n) {
var r = n.rotate,
i = n.flip,
o = {
width: "naturalWidth" in t ? t.naturalWidth : t.width,
height: "naturalHeight" in t ? t.naturalHeight : t.height
},
a = Vf(o, r),
s = e.getContext("2d");
if (e.height = a.height, e.width = a.width, s) {
s.save();
var l = Xf(Pf(se({
left: 0,
top: 0
}, o)), r);
s.translate(-(l.left - a.width / 2), -(l.top - a.height / 2)), s.rotate(r * Math.PI / 180), s.translate(i.horizontal ? o.width : 0, i.vertical ? o.height : 0), s.scale(i.horizontal ? -1 : 1, i.vertical ? -1 : 1), s.drawImage(t,
0, 0, o.width, o.height), s.restore()
}
return e
}(r, t, o) : t,
l = se({
minWidth: 0,
minHeight: 0,
maxWidth: 1 / 0,
maxHeight: 1 / 0,
maxArea: 1 / 0,
imageSmoothingEnabled: !0,
imageSmoothingQuality: "high",
fillColor: "transparent"
}, i),
c = function(e) {
return e.find((function(e) {
return ff(e)
}))
},
u = fg({
sizeRestrictions: {
minWidth: c([l.width, l.minWidth]) || 0,
minHeight: c([l.height, l.minHeight]) || 0,
maxWidth: c([l.width, l.maxWidth]) || 1 / 0,
maxHeight: c([l.height, l.maxHeight]) || 1 / 0
},
width: a.width,
height: a.height,
aspectRatio: {
minimum: a.width / a.height,
maximum: a.width / a.height
}
});
if (l.maxArea && u.width * u.height > l.maxArea) {
var h = Math.sqrt(l.maxArea / (u.width * u.height));
u = {
width: Math.round(h * u.width),
height: Math.round(h * u.height)
}
}
return function(e, t, n, r, i) {
e.width = r ? r.width : n.width, e.height = r ? r.height : n.height;
var o = e.getContext("2d");
if (o) {
o.clearRect(0, 0, e.width, e.height), i && (i.imageSmoothingEnabled && (o.imageSmoothingEnabled = i.imageSmoothingEnabled), i.imageSmoothingQuality && (o.imageSmoothingQuality = i.imageSmoothingQuality), i.fillColor && (o
.fillStyle = i.fillColor, o.fillRect(0, 0, e.width, e.height), o.save()));
var a = n.left < 0 ? -n.left : 0,
s = n.top < 0 ? -n.top : 0;
o.drawImage(t, n.left + a, n.top + s, n.width, n.height, a, s, e.width, e.height)
}
return e
}(n, s, a, u, l)
}
return null
}
function $g(e, t, n) {
t.style.width = "0px", t.style.height = "0px", t.style.width = Math.max(e.clientWidth, n.width) + "px";
var r = n.width / n.height;
t.style.height = Math.max(e.clientHeight, t.clientWidth / r) + "px", t.style.width = t.clientHeight * r + "px"
}
function Zg(e, t, n) {
t.style.width = "0px", t.style.height = "0px", t.style.width = Math.max(e.getBoundingClientRect().width, n.width) + "px";
var r = n.width / n.height;
t.style.height = Math.max(e.getBoundingClientRect().height, t.getBoundingClientRect().width / r) + "px", t.style.width = t.getBoundingClientRect().height * r + "px", t.clientWidth / t.clientHeight > e.clientWidth / e.clientHeight ? t
.clientWidth > e.clientWidth && (t.style.width = e.clientWidth + "px", t.style.height = e.clientWidth / r + "px") : t.clientHeight > e.clientHeight && (t.style.height = e.clientHeight + "px", t.style.width = e.clientHeight * r + "px")
}
var Jg = 4;
function Qg(e) {
return new Promise((function(t, n) {
try {
if (e)
if (/^data:/i.test(e)) t(function(e) {
e = e.replace(/^data:([^;]+);base64,/gim, "");
for (var t = atob(e), n = t.length, r = new ArrayBuffer(n), i = new Uint8Array(r), o = 0; o < n; o++) i[o] = t.charCodeAt(o);
return r
}(e));
else if (/^blob:/i.test(e)) {
var r = new FileReader;
r.onload = function(e) {
var n;
t(null === (n = e.target) || void 0 === n ? void 0 : n.result)
}, o = e, a = function(e) {
r.readAsArrayBuffer(e)
}, (s = new XMLHttpRequest).open("GET", o, !0), s.responseType = "blob", s.onload = function() {
200 != this.status && 0 !== this.status || a(this.response)
}, s.send()
} else {
var i = new XMLHttpRequest;
i.onreadystatechange = function() {
i.readyState === Jg && (200 === i.status || 0 === i.status ? t(i.response) : n("Warning: could not load an image to parse its orientation"))
}, i.onprogress = function() {
"image/jpeg" !== i.getResponseHeader("content-type") && i.abort()
}, i.withCredentials = !1, i.open("GET", e, !0), i.responseType = "arraybuffer", i.send(null)
} else n("Error: the image is empty")
} catch (e) {
n(e)
}
var o, a, s
}))
}
function em(e) {
var t = e.rotate,
n = void 0 === t ? 0 : t,
r = e.flip,
i = void 0 === r ? {
horizontal: !1,
vertical: !1
} : r,
o = e.scale,
a = void 0 === o ? 1 : o;
return " rotate(" + n + "deg) scaleX(" + a * (i.horizontal ? -1 : 1) + ") scaleY(" + a * (i.vertical ? -1 : 1) + ")"
}
function tm(e) {
try {
var t, n = new DataView(e),
r = void 0,
i = void 0,
o = void 0,
a = void 0;
if (255 === n.getUint8(0) && 216 === n.getUint8(1))
for (var s = n.byteLength, l = 2; l + 1 < s;) {
if (255 === n.getUint8(l) && 225 === n.getUint8(l + 1)) {
o = l;
break
}
l++
}
if (o && (r = o + 10, "Exif" === function(e, t, n) {
var r, i = "";
for (r = t, n += t; r < n; r++) i += String.fromCharCode(e.getUint8(r));
return i
}(n, o + 4, 4))) {
var c = n.getUint16(r);
if (((i = 18761 === c) || 19789 === c) && 42 === n.getUint16(r + 2, i)) {
var u = n.getUint32(r + 4, i);
u >= 8 && (a = r + u)
}
}
if (a)
for (var h = n.getUint16(a, i), p = 0; p < h; p++) {
l = a + 12 * p + 2;
if (274 === n.getUint16(l, i)) {
l += 8, t = n.getUint16(l, i), n.setUint16(l, 1, i);
break
}
}
return t
} catch (e) {
return null
}
}
function nm(e) {
var t = e.src,
n = e.arrayBuffer,
r = void 0 === n ? null : n,
i = e.orientation,
o = void 0 === i ? null : i,
a = {
src: t,
arrayBuffer: r,
revoke: !1,
transforms: {
flip: {
horizontal: !1,
vertical: !1
},
rotate: 0
}
};
return r && o && o > 1 ? nf(t) || !rf(t) ? (a.src = URL.createObjectURL(new Blob([r])), a.revoke = !0) : a.src = function(e) {
for (var t = [], n = new Uint8Array(e); n.length > 0;) {
var r = n.subarray(0, 8192);
t.push(String.fromCharCode.apply(null, Array.from ? Array.from(r) : r.slice())), n = n.subarray(8192)
}
return "data:image/jpeg;base64," + btoa(t.join(""))
}(r) : a.src = t, o && (a.transforms = function(e) {
var t = {
flip: {
horizontal: !1,
vertical: !1
},
rotate: 0
};
if (e) switch (e) {
case 2:
t.flip.horizontal = !0;
break;
case 3:
t.rotate = -180;
break;
case 4:
t.flip.vertical = !0;
break;
case 5:
t.rotate = 90, t.flip.vertical = !0;
break;
case 6:
t.rotate = 90;
break;
case 7:
t.rotate = 90, t.flip.horizontal = !0;
break;
case 8:
t.rotate = -90
}
return t
}(o)), a
}
function rm(e, t) {
return void 0 === t && (t = {}),
function(e, t) {
void 0 === t && (t = {});
var n = t.checkOrientation,
r = t.parse;
return new Promise((function(t) {
n || r ? Qg(e).then((function(n) {
var r = tm(n);
t(nm(n ? {
src: e,
arrayBuffer: n,
orientation: r
} : {
src: e,
arrayBuffer: null,
orientation: null
}))
})).catch((function(n) {
t(nm({
src: e
}))
})) : t(nm({
src: e
}))
}))
}(e, se(se({}, t), {
crossOrigin: of(e) && t.crossOrigin
})).then((function(e) {
return new Promise((function(n, r) {
(function(e, t) {
return void 0 === t && (t = {}), new Promise((function(n, r) {
var i = document.createElement("img");
t.crossOrigin && (i.crossOrigin = !0 !== t.crossOrigin ? t.crossOrigin : "anonymous"), i.src = e, i.style.visibility = "hidden", i.style.position = "fixed", document.body.appendChild(i), i.complete ? (n(i),
document.body.removeChild(i)) : (i.addEventListener("load", (function() {
n(i), document.body.removeChild(i)
})), i.addEventListener("error", (function() {
r(null), document.body.removeChild(i)
})))
}))
})(e.src, t).then((function(t) {
n(se(se({}, e), {
width: t.naturalWidth,
height: t.naturalHeight
}))
})).catch((function() {
r(null)
}))
}))
}))
}
function im(e, t, n, r, i) {
void 0 === i && (i = null);
var o = e.width > e.height ? {
width: Math.min(512, e.width),
height: Math.min(512, e.width) / (e.width / e.height)
} : {
height: Math.min(512, e.height),
width: Math.min(512, e.height) * (e.width / e.height)
},
a = cg(t),
s = {
rotate: t.transforms.rotate,
flip: {
horizontal: t.transforms.flip.horizontal,
vertical: t.transforms.flip.vertical
},
translateX: n.left / r,
translateY: n.top / r,
scale: 1 / r
},
l = {
left: (o.width - a.width) / (2 * r),
top: (o.height - a.height) / (2 * r)
},
c = {
left: (1 - 1 / r) * o.width / 2,
top: (1 - 1 / r) * o.height / 2
},
u = se(se({}, s), {
scale: s.scale * (e.width / o.width)
}),
h = {
width: o.width + "px",
height: o.height + "px",
left: "0px",
top: "0px",
transition: "none",
transform: "translate3d(" + (-l.left - c.left - s.translateX) + "px, " + (-l.top - c.top - s.translateY) + "px, 0px)" + em(u),
willChange: "none"
};
return i && i.active && (h.willChange = "transform", h.transition = i.duration + "ms " + i.timingFunction), h
}
function om(e, t, n) {
return n.immediately ? function(e, t) {
if (Qf(e)) {
var n = dg(e),
r = {
width: 0,
height: 0
};
Lf(n.boundary) > Lf(n.coordinates) ? (r.height = .8 * n.boundary.height, r.width = r.height * Lf(n.coordinates)) : (r.width = .8 * n.boundary.width, r.height = r.width * Lf(n.coordinates)), n.visibleArea = jf(n.visibleArea, n
.coordinates.width * n.boundary.width / (n.visibleArea.width * r.width));
var i = Hf(n.visibleArea, eg(n, t));
return n.visibleArea = jf(n.visibleArea, i), 1 !== i && (r.height /= i, r.width /= i), n.visibleArea = Nf(n.visibleArea, Af(Pf(n.coordinates), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t)), n.coordinates = Kf(n
.coordinates, Yf(Rf(n.visibleArea), rg(n, t))), n
}
return e
}(e, t) : e
}
var am = function(e, t) {
var n, r = (n = vt(!0)).current ? (n.current = !1, !0) : n.current;
gt((function() {
if (!r) return e()
}), t)
};
var sm = function(e) {
function t(t, n) {
var r = e.call(this) || this;
return r.props = t, r.notify = n, r.data = {
state: null,
transitions: !1,
interactions: {
moveCoordinates: !1,
resizeCoordinates: !1,
transformImage: {
rotate: !1,
move: !1,
scale: !1,
flip: !1
}
}
}, r
}
return ae(t, e), t.prototype.getProps = function() {
return this.props()
}, t.prototype.setData = function(e) {
this.data = e, this.notify()
}, t.prototype.getData = function() {
return this.data
}, t
}(Gg);
function lm() {
var e = he(dt({}), 2)[1];
return function() {
e({})
}
}
function cm(e) {
var t = lm(),
n = function(e) {
var t = vt(e);
return t.current = e,
function() {
for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
return t.current.apply(t, pe([], he(e), !1))
}
}((function() {
var t = e(),
n = t.settings,
r = le(t, ["settings"]),
i = se({
imageRestriction: kf.fitArea,
transformImage: {
adjustStencil: !0
}
}, n),
o = se({
transitions: !0
}, r);
return se({
settings: se(se({}, i), Wg(i))
}, o)
}));
return vt(new sm(n, t)).current
}
var um = function(e) {
var t = vt(e),
n = function() {
t.current && t.current()
};
gt((function() {
t.current = e
}), [e]), gt((function() {
return window.addEventListener("resize", n), window.addEventListener("orientationchange", n),
function() {
window.removeEventListener("resize", n), window.removeEventListener("orientationchange", n)
}
}), [])
};
function hm(e) {
var t = this,
n = e(),
r = n.src,
i = n.onReady,
o = n.onError,
a = n.onUpdate,
s = n.canvas,
l = void 0 === s || s,
c = n.unloadTime,
u = void 0 === c ? 500 : c,
h = n.crossOrigin,
p = void 0 === h || h,
d = n.checkOrientation,
f = void 0 === d || d,
g = n.autoReconcileState,
m = void 0 === g || g,
v = vt(null),
_ = vt(null),
b = vt(null),
y = vt(null),
w = he(function(e) {
var t = he(dt(e), 2),
n = t[0],
r = t[1],
i = he(dt(null), 2),
o = i[0],
a = i[1],
s = vt(e);
return am((function() {
o && o(n, s.current)
}), [o]), [n, function(e, t) {
s.current = n, r(e), a((function() {
return t
}))
}]
}(null), 2),
x = w[0],
k = w[1],
C = cm((function() {
return se(se({}, e()), {
getInstance: function() {
return y.current
}
})
})),
S = function(e) {
var t = e.src,
n = e.onLoadingStart,
r = e.onLoadingEnd,
i = e.onError,
o = e.onLoad,
a = e.crossOrigin,
s = e.checkOrientation,
l = e.canvas,
c = e.unloadTime,
u = he(dt(!1), 2),
h = u[0],
p = u[1],
d = he(dt(!1), 2),
f = d[0],
g = d[1],
m = he(dt(null), 2),
v = m[0],
_ = m[1],
b = vt(null);
return gt((function() {
if (b.current !== t)
if (b.current = t || null, g(!1), t) {
p(!0), null == n || n();
var e = [rm(t, {
crossOrigin: sf(a) ? l : a,
checkOrientation: s
})];
f && c && e.push(bf(c)), Promise.all(e).then((function(e) {
var n = he(e, 1)[0];
b.current === t && (_(n), null == o || o(n))
})).catch((function() {
b.current === t && (null == i || i())
})).finally((function() {
b.current === t && (null == r || r(), p(!1))
}))
} else c ? bf(c).then((function() {
_(null)
})) : _(null)
}), [t]), gt((function() {
v && g(!0)
}), [v]), {
isLoading: function() {
return h
},
isLoaded: function() {
return f
},
getImage: function() {
return v
},
setImage: _
}
}({
src: r,
crossOrigin: p,
checkOrientation: f,
unloadTime: u,
canvas: l,
onLoad: function() {
y.current && (null == i || i(y.current))
},
onError: function() {
y.current && (null == o || o(y.current))
}
}),
E = function(e, t) {
void 0 === t && (t = !0);
var n = he(dt(t), 2),
r = n[0],
i = n[1];
return mt((function() {
r && !e.hasInteractions() && e.reconcileState()
})), {
pause: function() {
i(!1)
},
resume: function() {
i(!0)
}
}
}(C, m),
T = function() {
return ce(t, void 0, void 0, (function() {
var e, t, n;
return ue(this, (function(r) {
switch (r.label) {
case 0:
return _.current ? (E.pause(), e = S.getImage(), [4, null === (n = _.current) || void 0 === n ? void 0 : n.stretchTo(e)]) : [3, 2];
case 1:
t = r.sent(), k(e, (function() {
t && e ? C.reset(t, e) : C.clear()
})), E.resume(), r.label = 2;
case 2:
return [2]
}
}))
}))
},
O = function() {
return ce(t, void 0, void 0, (function() {
var e, t, n, r;
return ue(this, (function(i) {
switch (i.label) {
case 0:
return _.current ? (E.pause(), e = S.getImage(), [4, null === (r = _.current) || void 0 === r ? void 0 : r.stretchTo(e)]) : [3, 2];
case 1:
(t = i.sent()) && e ? (n = C.getState()) ? t.width === n.boundary.width && t.height === n.boundary.height || (C.setBoundary(t), C.reconcileState()) : C.reset(t, e) : C.clear(), E.resume(), i.label = 2;
case 2:
return [2]
}
}))
}))
},
A = {
reset: function() {
return T()
},
refresh: function() {
return O()
},
setImage: function(e) {
return k(e)
},
reconcileState: C.reconcileState,
moveCoordinates: C.moveCoordinates,
moveCoordinatesEnd: C.moveCoordinatesEnd,
resizeCoordinates: C.resizeCoordinates,
clear: C.clear,
resizeCoordinatesEnd: C.resizeCoordinatesEnd,
moveImage: C.moveImage,
flipImage: C.flipImage,
zoomImage: C.zoomImage,
rotateImage: C.rotateImage,
transformImage: C.transformImage,
transformImageEnd: C.transformImageEnd,
setCoordinates: C.setCoordinates,
setVisibleArea: C.setVisibleArea,
startTransitions: C.startTransitions,
setState: C.setState,
hasInteractions: C.hasInteractions,
getStencilCoordinates: C.getStencilCoordinates,
getCoordinates: C.getCoordinates,
getVisibleArea: C.getVisibleArea,
getTransforms: C.getTransforms,
getTransitions: C.getTransitions,
getInteractions: C.getInteractions,
getSettings: C.getSettings,
getState: C.getState,
getDefaultState: function() {
var e = C.getState(),
t = S.getImage();
return e && t ? C.createDefaultState(e.boundary, t) : null
},
getCanvas: function(e) {
var t = C.getState();
return v.current && b.current && t ? b.current.draw(t, v.current, e) : null
},
getImage: function() {
return x ? se({}, x) : null
},
isLoading: S.isLoading,
isLoaded: S.isLoaded
};
return um((function() {
O()
})), am((function() {
T()
}), [S.getImage()]), am((function() {
y.current && (null == a || a(y.current))
}), [S.isLoaded(), S.isLoading()]), _t(y, (function() {
return A
})), {
cropper: A,
refs: {
image: v,
boundary: _,
canvas: b
},
image: x
}
}
var pm = Ft((function(e, t) {
var n = e.className,
r = e.style,
i = e.stretcherClassName,
o = e.contentClassName,
a = e.stretchAlgorithm,
s = void 0 === a ? $g : a,
l = e.sizeAlgorithm,
c = void 0 === l ? zg : l,
u = e.children,
h = vt(null),
p = vt(null);
return _t(t, (function() {
return {
reset: function() {
var e = h.current;
e && (e.style.height = "", e.style.width = "")
},
stretchTo: function(e) {
var t = h.current,
n = p.current;
if ((null == e ? void 0 : e.width) && (null == e ? void 0 : e.height) && t && n) {
s(n, t, e);
var r = c(n, e);
return Promise.resolve(r.width && r.height ? r : null)
}
return t && (t.style.height = "", t.style.width = ""), Promise.resolve(null)
}
}
})), Nn.createElement("div", {
ref: p,
style: r,
className: Rl("advanced-cropper-boundary", n)
}, Nn.createElement("div", {
ref: h,
className: Rl(["advanced-cropper-boundary__stretcher", i])
}), Nn.createElement("div", {
className: Rl(["advanced-cropper-boundary__content", o])
}, u))
}));
pm.displayName = "StretchableBoundary";
var dm = function(e) {
var t = e.visible,
n = e.className,
r = e.style,
i = e.children;
return Nn.createElement("div", {
style: r,
className: Rl(n, "advanced-cropper-fade", Boolean(t) && "advanced-cropper-fade--visible")
}, i)
},
fm = function(e) {
var t = e.cropper,
n = e.children,
r = e.className,
i = e.style,
o = t ? t.getState() : null,
a = !!t && t.isLoaded();
return Nn.createElement("div", {
className: Rl(r, "advanced-cropper-wrapper"),
style: i
}, Nn.createElement(dm, {
visible: o && a,
className: "advanced-cropper-wrapper__fade"
}, n))
};
function gm(e) {
e.preventDefault()
}
var mm = Ft((function(e, t) {
var n = e.className,
r = e.cropper,
i = e.crossOrigin,
o = void 0 === i || i,
a = r.getState(),
s = r.getTransitions(),
l = r.getImage(),
c = l && a ? function(e, t, n) {
return void 0 === n && (n = null), e && t && t.visibleArea ? im(e, t, t.visibleArea, ig(t), n) : {}
}(l, a, s) : {},
u = l ? l.src : void 0;
return u ? Nn.createElement("img", {
key: u,
ref: t,
className: Rl("advanced-cropper-background-image", n),
src: u,
crossOrigin: !0 === o ? "anonymous" : o || void 0,
style: c,
onMouseDown: gm
}) : null
}));
mm.displayName = "CropperBackgroundImage";
var vm = Ft((function(e, t) {
var n = vt(null),
r = vt(null);
return _t(t, (function() {
return {
draw: function(e, t, i) {
return void 0 === i && (i = {}), t && n.current && r.current ? Kg(e, t, n.current, r.current, i) : null
}
}
})), Nn.createElement(Nn.Fragment, null, Nn.createElement("canvas", {
className: "advanced-cropper-canvas",
ref: n
}), Nn.createElement("canvas", {
className: "advanced-cropper-canvas",
ref: r
}))
}));
vm.displayName = "CropperCanvas";
var _m = function(e) {
function t(t) {
var n = e.call(this, t) || this;
return n.processMove = function(e, t) {
var r, i = n.container.current;
if (i && n.touches.length) {
var o = i.getBoundingClientRect(),
a = o.left,
s = o.top;
if (1 === n.touches.length && 1 === t.length && n.props.onMove) {
var l = {
left: Math.abs(t[0].clientX - n.anchor.left - a) < Math.abs(n.touches[0].clientX - n.anchor.left - a),
top: Math.abs(t[0].clientY - n.anchor.top - s) < Math.abs(n.touches[0].clientY - n.anchor.top - s)
},
c = {
left: 0,
top: 0
};
n.props.useAnchor && l.left || (c.left = t[0].clientX - n.touches[0].clientX), n.props.useAnchor && l.top || (c.top = t[0].clientY - n.touches[0].clientY), null === (r = n.props) || void 0 === r || r.onMove(c, e), n
.touches = pe([], he(t), !1)
}
}
}, n.processEnd = function() {
var e = n.props,
t = e.onMoveEnd,
r = e.onLeave;
!n.props.disabled && n.touches.length && (null == t || t()), n.hovered && (null == r || r(), n.hovered = !1), n.touches = []
}, n.initAnchor = function(e) {
var t = n.container.current;
if (t) {
var r = t.getBoundingClientRect(),
i = r.left,
o = r.top;
n.anchor = {
left: e.clientX - i,
top: e.clientY - o
}
}
}, n.onMouseOver = function() {
var e = n.props,
t = e.onEnter,
r = e.disabled;
n.hovered || r || (n.hovered = !0, null == t || t())
}, n.onMouseLeave = function() {
var e = n.props.onLeave;
n.hovered && !n.touches.length && (n.hovered = !1, null == e || e())
}, n.onTouchStart = function(e) {
var t = n.props,
r = t.onEnter,
i = t.onMoveStart,
o = t.disabled;
if (e.cancelable) {
n.touches = Array.from(e.touches);
var a = !o && 1 === e.touches.length;
a && (n.touches = Array.from(e.touches), null == i || i()), n.hovered || o || (n.hovered = !0, null == r || r()), (n.started || a) && (e.preventDefault(), e.stopPropagation())
}
}, n.onTouchEnd = function() {
n.started = !1, n.processEnd()
}, n.onTouchMove = function(e) {
n.touches.length >= 1 && (n.started ? (n.processMove(e, Array.from(e.touches)), e.preventDefault(), e.stopPropagation()) : gf({
left: n.touches[0].clientX,
top: n.touches[0].clientY
}, {
left: e.touches[0].clientX,
top: e.touches[0].clientY
}) > (n.props.activationDistance || 0) && (n.initAnchor({
clientX: e.touches[0].clientX,
clientY: e.touches[0].clientY
}), n.started = !0))
}, n.onMouseDown = function(e) {
var t = n.props,
r = t.onMoveStart;
if (!t.disabled && 0 === e.button) {
var i = {
clientX: e.clientX,
clientY: e.clientY
};
n.touches = [i], n.initAnchor(i), e.stopPropagation(), null == r || r()
}
}, n.onMouseMove = function(e) {
!n.props.disabled && n.touches.length && (n.processMove(e, [{
clientX: e.clientX,
clientY: e.clientY
}]), e.preventDefault && e.cancelable && e.preventDefault(), e.stopPropagation())
}, n.onMouseUp = function() {
n.processEnd()
}, n.touches = [], n.hovered = !1, n.started = !1, n.anchor = {
left: 0,
top: 0
}, n.container = {
current: null
}, n
}
return ae(t, e), t.prototype.componentWillUnmount = function() {
window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("touchmove", this.onTouchMove), window.removeEventListener("touchend", this.onTouchEnd);
var e = this.container.current;
e && (e.removeEventListener("touchstart", this.onTouchStart), e.removeEventListener("mousedown", this.onMouseDown))
}, t.prototype.componentDidMount = function() {
window.addEventListener("mouseup", this.onMouseUp, {
passive: !1
}), window.addEventListener("mousemove", this.onMouseMove, {
passive: !1
}), window.addEventListener("touchmove", this.onTouchMove, {
passive: !1
}), window.addEventListener("touchend", this.onTouchEnd, {
passive: !1
});
var e = this.container.current;
e && (e.addEventListener("touchstart", this.onTouchStart, {
passive: !1
}), e.addEventListener("mousedown", this.onMouseDown, {
passive: !1
}))
}, t.prototype.componentDidUpdate = function(e) {
this.props.disabled && !e.disabled && (this.touches = [])
}, t.prototype.render = function() {
var e = this.props,
t = e.children,
n = e.className;
return Nn.createElement("div", {
className: Rl("advanced-cropper-draggable-element", n),
ref: this.container,
onMouseOver: this.onMouseOver,
onMouseLeave: this.onMouseLeave
}, t)
}, t.defaultProps = {
disabled: !1,
activationDistance: 30,
useAnchor: !0,
rerender: !0
}, t
}(Me),
bm = function(e) {
var t = e.position,
n = e.className,
r = e.disabled,
i = e.onDrag,
o = e.onDragEnd,
a = e.onLeave,
s = e.onEnter,
l = e.children;
return Nn.createElement(_m, {
className: Rl(["advanced-cropper-line-wrapper", t && "advanced-cropper-line-wrapper--".concat(t), n]),
disabled: r,
onMove: i,
onMoveEnd: o,
onLeave: a,
onEnter: s,
activationDistance: 0
}, Nn.createElement("div", {
className: Rl(["advanced-cropper-line-wrapper__content", t && "advanced-cropper-line-wrapper__content--".concat(t)])
}, l))
},
ym = function(e) {
var t, n, r = e.position,
i = e.hoverClassName,
o = e.wrapperClassName,
a = e.defaultClassName,
s = e.disabled,
l = e.onMove,
c = e.onMoveEnd,
u = he(dt(!1), 2),
h = u[0],
p = u[1];
return Nn.createElement(bm, {
className: Rl("advanced-cropper-simple-line-wrapper", o, (t = {}, t["advanced-cropper-simple-line-wrapper--".concat(r)] = !!r, t)),
position: r,
disabled: s,
onDrag: l,
onDragEnd: c,
onLeave: function() {
p(!1)
},
onEnter: function() {
p(!0)
}
}, Nn.createElement("div", {
className: Rl("advanced-cropper-simple-line", h && "advanced-cropper-simple-line--hover", a, h && i, (n = {}, n["advanced-cropper-simple-line--".concat(r)] = !!r, n))
}))
},
wm = function(e) {
var t = e.horizontalPosition,
n = e.verticalPosition,
r = e.className,
i = e.disabled,
o = e.onDrag,
a = e.onDragEnd,
s = e.onLeave,
l = e.onEnter,
c = e.children,
u = e.style,
h = t || n ? tf(t, n).snakeCase : null;
return Nn.createElement("div", {
style: u,
className: Rl(r, "advanced-cropper-handler-wrapper", h && "advanced-cropper-handler-wrapper--".concat(h), i && "advanced-cropper-handler-wrapper--disabled")
}, Nn.createElement(_m, {
className: "advanced-cropper-handler-wrapper__draggable",
disabled: i,
onMove: o,
onMoveEnd: a,
onLeave: s,
onEnter: l,
activationDistance: 0
}, c))
},
xm = function(e) {
var t, n = e.verticalPosition,
r = e.horizontalPosition,
i = e.hoverClassName,
o = e.wrapperClassName,
a = e.defaultClassName,
s = e.wrapperStyle,
l = e.disabled,
c = e.onMove,
u = e.onMoveEnd,
h = he(dt(!1), 2),
p = h[0],
d = h[1];
return Nn.createElement(wm, {
style: s,
className: Rl("advanced-cropper-simple-handler-wrapper", o, n && "advanced-cropper-simple-handler-wrapper--".concat(n), r && "advanced-cropper-simple-handler-wrapper--".concat(r), r && n &&
"advanced-cropper-simple-handler-wrapper--".concat(r, "-").concat(n), p && "advanced-cropper-simple-handler-wrapper--hover"),
verticalPosition: n,
horizontalPosition: r,
disabled: l,
onDrag: c,
onDragEnd: u,
onLeave: function() {
d(!1)
},
onEnter: function() {
d(!0)
}
}, Nn.createElement("div", {
className: Rl("advanced-cropper-simple-handler", p && "advanced-cropper-simple-handler--hover", a, p && i, (t = {}, t["advanced-cropper-simple-handler--".concat(n)] = !!n, t["advanced-cropper-simple-handler--".concat(r)] = !!
r, t["advanced-cropper-simple-handler--".concat(r, "-").concat(n)] = r && n, t))
}))
},
km = ["east", "west", null],
Cm = ["south", "north", null],
Sm = function(e) {
var t = e.style,
n = e.className,
r = e.children,
i = e.onResize,
o = e.onResizeEnd,
a = e.handlerComponent,
s = void 0 === a ? xm : a,
l = e.handlers,
c = void 0 === l ? {
eastNorth: !0,
north: !0,
westNorth: !0,
west: !0,
westSouth: !0,
south: !0,
eastSouth: !0,
east: !0
} : l,
u = e.handlerClassNames,
h = void 0 === u ? {} : u,
p = e.handlerWrapperClassNames,
d = void 0 === p ? {} : p,
f = e.lines,
g = void 0 === f ? {
west: !0,
north: !0,
east: !0,
south: !0
} : f,
m = e.lineComponent,
v = void 0 === m ? ym : m,
_ = e.lineClassNames,
b = void 0 === _ ? {} : _,
y = e.lineWrapperClassNames,
w = void 0 === y ? {} : y,
x = e.disabled,
k = void 0 !== x && x,
C = e.reference,
S = void 0 === C ? null : C,
E = he(dt(null), 2),
T = E[0],
O = E[1],
A = bt((function() {
var e = [];
return km.forEach((function(t) {
Cm.forEach((function(n) {
if (t !== n) {
var r = tf(t, n),
i = r.snakeCase,
o = r.camelCase;
i && o && e.push({
name: o,
className: i,
verticalPosition: n,
horizontalPosition: t
})
}
}))
})), e
}), []),
P = bt((function() {
var e = [];
return A.forEach((function(t) {
var n;
"west" !== (n = t.name) && "south" !== n && "north" !== n && "east" !== n || !(lf(g) ? g[t.name] : g) || e.push({
name: t.name,
component: v,
className: Rl(b.default, b[t.name], k && b.disabled),
wrapperClassName: Rl("advanced-cropper-bounding-box__line", "advanced-cropper-bounding-box__line--".concat(t.name), w.default, w[t.name], k && w.disabled),
hoverClassName: b.hover,
verticalPosition: t.verticalPosition,
horizontalPosition: t.horizontalPosition,
disabled: k
})
})), e
}), [A, g, v, b, w, k]),
M = bt((function() {
var e = [];
return A.forEach((function(t) {
(lf(c) ? c[t.name] : c) && e.push({
name: t.name,
component: s,
className: Rl(h.default, h[t.name]),
containerClassName: Rl("advanced-cropper-bounding-box__handler-wrapper", "advanced-cropper-bounding-box__handler-wrapper--".concat(t.className)),
wrapperClassName: Rl("advanced-cropper-bounding-box__handler", "advanced-cropper-bounding-box__handler--".concat(t.className), d.default, d[t.name]),
hoverClassName: h.hover,
verticalPosition: t.verticalPosition,
horizontalPosition: t.horizontalPosition,
disabled: k
})
})), e
}), [A, c, s, h, d, k]),
D = function(e, t) {
return function(n, r) {
var o, a = {
left: n.left,
top: n.top
};
if (!t && e ? o = "width" : t && !e && (o = "height"), !k) {
if (i) {
var s = tf(e, t).camelCase;
s && i(s, a, {
reference: T || S,
preserveAspectRatio: r && r.shiftKey,
respectDirection: o,
compensate: !0
})
}
T || O(S)
}
}
},
I = function() {
null == o || o(), O(null)
};
return Nn.createElement("div", {
className: Rl("advanced-cropper-bounding-box", n),
style: t
}, r, Nn.createElement("div", null, P.map((function(e) {
return Nn.createElement(e.component, {
key: e.name,
defaultClassName: e.className,
hoverClassName: e.hoverClassName,
wrapperClassName: e.wrapperClassName,
position: e.name,
disabled: e.disabled,
onMove: D(e.horizontalPosition, e.verticalPosition),
onMoveEnd: I
})
}))), Nn.createElement("div", null, M.map((function(e) {
var t = Nn.createElement(e.component, {
defaultClassName: e.className,
hoverClassName: e.hoverClassName,
wrapperClassName: e.wrapperClassName,
horizontalPosition: e.horizontalPosition,
verticalPosition: e.verticalPosition,
disabled: e.disabled,
onMove: D(e.horizontalPosition, e.verticalPosition),
onMoveEnd: I
});
return Nn.createElement("div", {
key: e.name,
className: e.containerClassName
}, t)
}))))
},
Em = function(e) {
var t = e.className,
n = e.children;
return Nn.createElement("div", {
className: Rl("advanced-cropper-stencil-overlay", t)
}, n)
};
var Tm = function(e) {
var t = e.className,
n = e.transitions,
r = e.children,
i = le(e, ["className", "transitions", "children"]),
o = vt(null),
a = vt(i),
s = he(dt(i), 2),
l = s[0],
c = s[1],
u = he(function(e) {
void 0 === e && (e = null);
var t = vt(new qg),
n = he(dt(!1), 2),
r = n[0],
i = n[1];
return [function(n) {
e && e.active ? t.current.start(se(se({}, e), {
onStart: function() {
i(!0)
},
onProgress: function(e) {
n(e)
},
onStop: function() {
i(!1)
}
})) : t.current.active || n(1)
}, r]
}(n), 2),
h = u[0],
p = u[1];
mt((function() {
if (!wf(l, i)) {
c(i);
var e = p ? se({}, a.current) : l;
h((function(t) {
["left", "top", "height", "width"].forEach((function(n) {
var r = i[n],
o = e[n];
a.current[n] = pf(o) && pf(r) ? o + (r - o) * t : r
})), o.current && (o.current.style.width = "".concat(a.current.width, "px"), o.current.style.height = "".concat(a.current.height, "px"), o.current.style.transform = "translate3d(".concat(a.current.left, "px, ")
.concat(a.current.top, "px, 0px)"))
}))
}
}), [l, p, i.width, i.height, i.top, i.left]);
var d = p ? a.current : i,
f = {
left: 0,
top: 0,
width: "".concat(d.width, "px"),
height: "".concat(d.height, "px"),
transform: "translate3d(".concat(d.left, "px, ").concat(d.top, "px, 0px)")
};
return Nn.createElement("div", {
ref: o,
className: Rl("advanced-cropper-artificial-transition", t),
style: f
}, r)
},
Om = function(e) {
var t = e.className,
n = e.transitions,
r = e.width,
i = e.height,
o = e.left,
a = e.top,
s = e.children;
return Nn.createElement(Tm, {
className: Rl("advanced-cropper-stencil-wrapper", t),
transitions: n,
width: r,
height: i,
top: a,
left: o
}, s)
},
Am = function(e) {
var t = e.columns,
n = void 0 === t ? 3 : t,
r = e.rows,
i = void 0 === r ? 3 : r,
o = e.visible,
a = void 0 !== o && o,
s = e.className,
l = [],
c = he(dt(n), 2),
u = c[0],
h = c[1],
p = he(dt(i), 2),
d = p[0],
f = p[1];
am((function() {
a && (f(i), h(n))
}), [a, n, i]);
for (var g = 0; g < d; g++) {
for (var m = [], v = 0; v < u; v++) m.push(Nn.createElement("div", {
key: v,
className: Rl("advanced-cropper-stencil-grid__cell", 0 === g && "advanced-cropper-stencil-grid__cell--top", g === d - 1 && "advanced-cropper-stencil-grid__cell--bottom", 0 === v &&
"advanced-cropper-stencil-grid__cell--left", v === u - 1 && "advanced-cropper-stencil-grid__cell--right")
}));
l.push(Nn.createElement("div", {
key: g,
className: "advanced-cropper-stencil-grid__row"
}, m))
}
return Nn.createElement("div", {
className: Rl("advanced-cropper-stencil-grid", a && "advanced-cropper-stencil-grid--visible", s)
}, l)
},
Pm = Ft((function(e, t) {
var n = e.cropper,
r = e.coordinates,
i = e.aspectRatio,
o = e.minAspectRatio,
a = e.maxAspectRatio,
s = e.handlerComponent,
l = void 0 === s ? xm : s,
c = e.handlers,
u = void 0 === c ? {
eastNorth: !0,
north: !0,
westNorth: !0,
west: !0,
westSouth: !0,
south: !0,
eastSouth: !0,
east: !0
} : c,
h = e.handlerClassNames,
p = void 0 === h ? {} : h,
d = e.handlerWrapperClassNames,
f = void 0 === d ? {} : d,
g = e.lines,
m = void 0 === g ? {
west: !0,
north: !0,
east: !0,
south: !0
} : g,
v = e.lineComponent,
_ = void 0 === v ? ym : v,
b = e.lineClassNames,
y = void 0 === b ? {} : b,
w = e.lineWrapperClassNames,
x = void 0 === w ? {} : w,
k = e.resizable,
C = void 0 === k || k,
S = e.movable,
E = void 0 === S || S,
T = e.grid,
O = e.gridClassName,
A = e.className,
P = e.movingClassName,
M = e.resizingClassName,
D = e.previewClassName,
I = e.boundingBoxClassName,
N = e.overlayClassName,
R = e.draggableAreaClassName,
j = n.getState(),
L = n.getTransitions(),
F = n.getInteractions();
_t(t, (function() {
return {
aspectRatio: $f(i || {
minimum: o,
maximum: a
})
}
}));
var B = r ? af(r) ? r(j) : r : og(j),
z = B.width,
H = B.height,
U = B.left,
W = B.top;
return j && Nn.createElement(Om, {
className: Rl("advanced-cropper-rectangle-stencil", A, F.moveCoordinates && P, F.resizeCoordinates && M, {
"advanced-cropper-rectangle-stencil--movable": E,
"advanced-cropper-rectangle-stencil--moving": F.moveCoordinates,
"advanced-cropper-rectangle-stencil--resizable": C,
"advanced-cropper-rectangle-stencil--resizing": F.resizeCoordinates
}),
width: z,
height: H,
left: U,
top: W,
transitions: L
}, Nn.createElement(Sm, {
reference: j.coordinates,
className: Rl(I, "advanced-cropper-rectangle-stencil__bounding-box"),
handlers: u,
handlerComponent: l,
handlerClassNames: p,
handlerWrapperClassNames: f,
lines: m,
lineComponent: _,
lineClassNames: y,
lineWrapperClassNames: x,
onResize: function(e, t, r) {
n && C && n.resizeCoordinates(e, t, r)
},
onResizeEnd: function() {
n && n.resizeCoordinatesEnd()
},
disabled: !C
}, Nn.createElement(_m, {
disabled: !E,
onMove: function(e) {
n && E && n.moveCoordinates(e)
},
onMoveEnd: function() {
n && n.moveCoordinatesEnd()
},
className: Rl("advanced-cropper-rectangle-stencil__draggable-area", R)
}, Nn.createElement(Em, {
className: Rl("advanced-cropper-rectangle-stencil__overlay", N)
}, T && Nn.createElement(Am, {
visible: n.hasInteractions(),
columns: F.transformImage.rotate ? 9 : 3,
rows: F.transformImage.rotate ? 9 : 3,
className: Rl("advanced-cropper-rectangle-stencil__grid", O)
}), Nn.createElement("div", {
className: Rl("advanced-cropper-rectangle-stencil__preview", D)
})))))
}));
Pm.displayName = "RectangleStencil";
var Mm, Dm = function() {
function e(e) {
var t = e.active;
this.active = t, this.defaultPrevented = !1
}
return e.prototype.preventDefault = function() {
this.defaultPrevented = !0
}, e
}(),
Im = function(e) {
function t(t) {
var n = e.call(this, t) || this;
return n.processMove = function(e) {
var t = n.props,
r = t.onTransform,
i = t.touchScale,
o = t.touchMove,
a = t.touchRotate,
s = n.container.current;
s && r && (r(function(e, t, n, r) {
var i, o, a;
if (void 0 === r && (r = {}), 1 === t.length && 1 === e.length) r.move && (i = {
left: t[0].clientX - e[0].clientX,
top: t[0].clientY - e[0].clientY
});
else if (e.length > 1) {
var s = Ng(t, n),
l = Ng(e, n);
if (r.rotate && 2 === t.length && 2 === e.length) {
var c = {
left: [e[0].clientX - e[1].clientX, t[0].clientX - t[1].clientX],
top: [e[0].clientY - e[1].clientY, t[0].clientY - t[1].clientY]
},
u = c.left[0] * c.top[1] - c.left[1] * c.top[0],
h = c.left[0] * c.left[1] + c.top[0] * c.top[1];
if (!mf(h, 0) && !mf(u, 0)) {
var p = -180 * Math.atan2(u, h) / Math.PI;
a = {
center: l.centerMass,
angle: p
}
}
}
r.move && (i = {
left: s.centerMass.left - l.centerMass.left,
top: s.centerMass.top - l.centerMass.top
}), r.scale && (o = {
factor: l.spread / s.spread,
center: l.centerMass
})
}
return {
move: i,
scale: o,
rotate: a
}
}(e, n.touches, s, {
scale: i,
rotate: a,
move: o
})), n.touches = e)
}, n.processEnd = function() {
var e = n.props.onTransformEnd;
n.transforming && (n.transforming = !1, e && e())
}, n.processStart = function() {
n.transforming = !0, n.debouncedProcessEnd.clear()
}, n.processEvent = function(e) {
var t = n.props,
r = t.onEvent,
i = t.disabled,
o = new Dm({
active: n.transforming
});
return r ? r(o, e) : (e.preventDefault(), e.stopPropagation()), !i && !o.defaultPrevented
}, n.onWheel = function(e) {
var t = n.props,
r = t.onTransform,
i = t.wheelScale,
o = n.container.current;
i && n.processEvent(e) && (n.processStart(), r && o && r(Rg(e, o, !0 === i ? .1 : i.ratio)), n.touches.length || n.debouncedProcessEnd())
}, n.onTouchStart = function(e) {
var t = n.props,
r = t.touchMove,
i = t.touchScale,
o = t.touchRotate;
if (e.cancelable && (r || (i || o) && e.touches.length > 1) && n.processEvent(e)) {
var a = n.container.current;
if (a) {
var s = a.getBoundingClientRect(),
l = s.left,
c = s.top,
u = s.bottom,
h = s.right;
n.touches = Array.from(e.touches).filter((function(e) {
return e.clientX > l && e.clientX < h && e.clientY > c && e.clientY < u
}))
}
}
}, n.onTouchEnd = function(e) {
0 === e.touches.length && (n.touches = [], n.processEnd())
}, n.onTouchMove = function(e) {
if (n.touches.length) {
var t = pe([], he(e.touches), !1).filter((function(e) {
return !e.identifier || n.touches.find((function(t) {
return t.identifier === e.identifier
}))
}));
n.processEvent(e) && (n.processMove(t), n.processStart())
}
}, n.onMouseDown = function(e) {
if (n.props.mouseMove && "buttons" in e && 1 === e.buttons && n.processEvent(e)) {
var t = {
clientX: e.clientX,
clientY: e.clientY
};
n.touches = [t], n.processStart()
}
}, n.onMouseMove = function(e) {
n.touches.length && n.processEvent(e) && n.processMove([{
clientX: e.clientX,
clientY: e.clientY
}])
}, n.onMouseUp = function() {
n.touches = [], n.processEnd()
}, n.transforming = !1, n.touches = [], n.anchor = {
left: 0,
top: 0
}, n.container = {
current: null
}, n.debouncedProcessEnd = xf(n.processEnd, t.timeout), n
}
return ae(t, e), t.prototype.shouldComponentUpdate = function() {
return !0
}, t.prototype.componentWillUnmount = function() {
window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("touchmove", this.onTouchMove), window.removeEventListener("touchend", this.onTouchEnd);
var e = this.container.current;
e && (e.removeEventListener("touchstart", this.onTouchStart), e.removeEventListener("mousedown", this.onMouseDown), e.removeEventListener("wheel", this.onWheel))
}, t.prototype.componentDidMount = function() {
window.addEventListener("mouseup", this.onMouseUp, {
passive: !1
}), window.addEventListener("mousemove", this.onMouseMove, {
passive: !1
}), window.addEventListener("touchmove", this.onTouchMove, {
passive: !1
}), window.addEventListener("touchend", this.onTouchEnd, {
passive: !1
});
var e = this.container.current;
e && (e.addEventListener("touchstart", this.onTouchStart, {
passive: !1
}), e.addEventListener("mousedown", this.onMouseDown, {
passive: !1
}), e.addEventListener("wheel", this.onWheel, {
passive: !1
}))
}, t.prototype.render = function() {
var e = this.props,
t = e.className,
n = e.children,
r = e.style;
return Nn.createElement("div", {
className: t,
style: r,
ref: this.container
}, n)
}, t.defaultProps = {
touchMove: !0,
mouseMove: !0,
touchScale: !0,
touchRotate: !1,
wheelScale: !0,
timeout: 500
}, t
}(Me),
Nm = function(e) {
var t = e.scaleImage,
n = void 0 === t || t,
r = e.moveImage,
i = void 0 === r || r,
o = e.rotateImage,
a = void 0 !== o && o,
s = e.children,
l = e.className,
c = e.style,
u = e.cropper,
h = e.timeout,
p = u.getTransitions(),
d = function(e) {
return bt((function() {
return cf(e, {
touch: !0
}, {
touch: !1
})
}), [e])
}(a),
f = function(e) {
return bt((function() {
return cf(e, {
touch: !0,
wheel: {
ratio: .1
}
}, {
touch: !1,
wheel: !1
})
}), [e])
}(n),
g = function(e) {
return bt((function() {
return cf(e, {
touch: !0,
mouse: !0
}, {
touch: !1,
mouse: !1
})
}), [e])
}(i);
return Nn.createElement(Im, {
className: l,
style: c,
onTransform: u.transformImage,
onTransformEnd: u.transformImageEnd,
touchMove: g.touch,
mouseMove: g.mouse,
touchScale: f.touch,
wheelScale: f.wheel,
touchRotate: d.touch,
disabled: p.active,
timeout: h
}, s)
},
Rm = (Mm = function(e, t) {
var n = e.style,
r = e.className,
i = e.stencilComponent,
o = void 0 === i ? Pm : i,
a = e.stencilConstraints,
s = void 0 === a ? Hg : a,
l = e.stencilProps,
c = void 0 === l ? {} : l,
u = e.wrapperComponent,
h = void 0 === u ? fm : u,
p = e.wrapperProps,
d = void 0 === p ? {} : p,
f = e.backgroundComponent,
g = void 0 === f ? mm : f,
m = e.backgroundProps,
v = void 0 === m ? {} : m,
_ = e.backgroundClassName,
b = e.backgroundWrapperComponent,
y = void 0 === b ? Nm : b,
w = e.backgroundWrapperProps,
x = void 0 === w ? {} : w,
k = e.boundaryComponent,
C = void 0 === k ? pm : k,
S = e.boundaryProps,
E = e.boundaryClassName,
T = e.canvas,
O = void 0 === T || T,
A = e.crossOrigin,
P = void 0 === A || A,
M = e.settings,
D = le(e, ["style", "className", "stencilComponent", "stencilConstraints", "stencilProps", "wrapperComponent", "wrapperProps", "backgroundComponent", "backgroundProps", "backgroundClassName", "backgroundWrapperComponent",
"backgroundWrapperProps", "boundaryComponent", "boundaryProps", "boundaryClassName", "canvas", "crossOrigin", "settings"
]),
I = vt(null),
N = hm((function() {
return se(se({}, D), {
crossOrigin: P,
stencilProps: c,
canvas: O,
settings: se(se({}, M), s(M, se(se({}, c), I.current)))
})
})),
R = N.cropper,
j = N.image,
L = N.refs,
F = o,
B = h,
z = y,
H = g,
U = C;
_t(t, (function() {
return R
}));
var W = {
loading: R.isLoading(),
loaded: R.isLoaded()
};
return Nn.createElement(B, se({}, d, {
className: Rl("advanced-cropper", r),
cropper: R,
style: n
}, W), Nn.createElement(U, se({}, S, {
ref: L.boundary,
className: Rl("advanced-cropper__boundary", E)
}), Nn.createElement(z, se({}, x, {
cropper: R,
className: "advanced-cropper__background-wrapper"
}), R.getState() && Nn.createElement(H, se({}, v, {
ref: L.image,
crossOrigin: P,
cropper: R,
className: Rl("advanced-cropper__background", _)
})), Nn.createElement(F, se({}, c, {
ref: I,
cropper: R,
image: j
}))), O && Nn.createElement(vm, {
ref: L.canvas
})))
}, Ft(Mm)),
jm = ["transformImage", "moveCoordinates", "resizeCoordinates", "defaultCoordinates", "defaultVisibleArea", "areaPositionRestrictions", "areaSizeRestrictions", "sizeRestrictions", "positionRestrictions", "aspectRatio", "minWidth",
"minHeight", "maxWidth", "maxHeight", "defaultSize", "defaultPosition", "defaultTransforms", "imageRestriction", "priority"
];
function Lm(e, t) {
void 0 === t && (t = jm);
var n = {
settings: {},
props: {}
};
return Object.keys(e).forEach((function(r) {
t.some((function(e) {
return e === r
})) ? n.settings[r] = e[r] : n.props[r] = e[r]
})), n
}
function Fm(e, t) {
var n = Hg({}, t);
return {
stencilSize: function(t, r) {
var i, o, a = af(e.stencilSize) ? e.stencilSize(t, r) : e.stencilSize;
return fg(se(se({}, a), {
aspectRatio: (i = n.aspectRatio, o = $f(Lf(a)), o ? i ? {
minimum: Math.min(i.maximum, Math.max(i.minimum, o.minimum)),
maximum: Math.max(i.minimum, Math.min(i.maximum, o.maximum))
} : o : i)
}))
}
}
}
function Bm(e, t) {
var n = e.boundary,
r = af(t.stencilSize) ? t.stencilSize(e, t) : t.stencilSize;
return (r.width > n.width || r.height > n.height) && (r = fg({
sizeRestrictions: {
maxWidth: n.width,
maxHeight: n.height,
minWidth: 0,
minHeight: 0
},
width: r.width,
height: r.height,
aspectRatio: {
minimum: Lf(r),
maximum: Lf(r)
}
})), r
}
function zm(e, t) {
var n = Bm(e, se(se({}, t), {
stencilSize: t.stencilSize
})),
r = eg(e, t);
return {
maxWidth: r.maxWidth * n.width / e.boundary.width,
maxHeight: r.maxHeight * n.height / e.boundary.height,
minWidth: 0,
minHeight: 0
}
}
function Hm(e, t) {
var n, r, i = e.imageSize,
o = e.visibleArea,
a = e.boundary,
s = ng(e, t),
l = ag(e, t),
c = af(t.stencilSize) ? t.stencilSize(e, t) : t.stencilSize,
u = o || i;
return Lf(u) > Lf(a) ? r = (n = c.height * u.height / a.height) * Lf(c) : n = (r = c.width * u.width / a.width) / Lf(c), fg({
width: r,
height: n,
aspectRatio: l,
sizeRestrictions: s
})
}
function Um(e, t) {
var n = Lf(Bm(e, t));
return {
minimum: n,
maximum: n
}
}
function Wm(e, t, n) {
return n && n.immediately ? function(e, t) {
if (Qf(e)) {
var n = dg(e),
r = Bm(e, t);
n.visibleArea = jf(n.visibleArea, n.coordinates.width * n.boundary.width / (n.visibleArea.width * r.width));
var i = Hf(n.visibleArea, eg(n, t));
return 1 !== i && (n.visibleArea = jf(n.visibleArea, i), n.coordinates = jf(n.coordinates, i)), n.visibleArea = Nf(n.visibleArea, Af(Pf(n.coordinates), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t)), n
.coordinates = Kf(n.coordinates, Yf(Rf(n.visibleArea), tg(n, t))), n
}
return e
}(e, t) : e
}
var Vm = Ft((function(e, t) {
var n = Lm(e, pe(pe([], he(jm), !1), ["stencilSize"], !1));
return Nn.createElement(Rm, se({
postProcess: Wm,
stencilConstraints: Fm
}, n.props, {
settings: se(se({
defaultSize: Hm,
aspectRatio: Um,
sizeRestrictions: Ug(zm)
}, n.settings), {
transformImage: se(se({}, n.settings.transformImage), {
adjustStencil: !1
})
}),
ref: t
}))
}));
Vm.displayName = "FixedCropper";
var Xm = Ft((function(e, t) {
var n, r = Lm(e),
i = r.props,
o = r.settings,
a = o.stencilSize,
s = o.autoZoom,
l = le(o, ["stencilSize", "autoZoom"]),
c = (n = vt([]), function(e) {
-1 === n.current.indexOf(e) && n.current.push(e)
});
return sf(s) || (i.postProcess || a ? c("prop 'autoZoom' is deprecated now and will be removed, use 'postProcess' prop to pass your auto zoom function.") : (c(
"prop 'autoZoom' is deprecated now and will be removed, use 'postProcess' prop to pass your auto zoom function. The 'postProcess' automatically set to 'hybridAutoZoom'"), i.postProcess = om)), sf(a) ? Nn.createElement(Rm,
se({}, i, {
ref: t,
settings: l
})) : (c("prop 'stencilSize' is deprecated for <Cropper/> component now and will be removed, use <FixedCropper/> component instead."), Nn.createElement(Vm, se({
ref: t,
stencilSize: a
}, l, i)))
}));
Xm.displayName = "CropperComponent";
var Gm = Ft((function(e, t) {
var n = e.cropper,
r = e.coordinates,
i = e.handlerComponent,
o = void 0 === i ? xm : i,
a = e.handlers,
s = void 0 === a ? {
eastNorth: !0,
westNorth: !0,
westSouth: !0,
eastSouth: !0
} : a,
l = e.handlerClassNames,
c = void 0 === l ? {} : l,
u = e.handlerWrapperClassNames,
h = void 0 === u ? {} : u,
p = e.lines,
d = void 0 === p ? {
west: !0,
north: !0,
east: !0,
south: !0
} : p,
f = e.lineComponent,
g = void 0 === f ? ym : f,
m = e.lineClassNames,
v = void 0 === m ? {} : m,
_ = e.lineWrapperClassNames,
b = void 0 === _ ? {} : _,
y = e.resizable,
w = void 0 === y || y,
x = e.movable,
k = void 0 === x || x,
C = e.grid,
S = e.gridClassName,
E = e.className,
T = e.movingClassName,
O = e.resizingClassName,
A = e.previewClassName,
P = e.boundingBoxClassName,
M = e.overlayClassName,
D = e.draggableAreaClassName,
I = n.getState(),
N = n.getTransitions(),
R = n.getInteractions();
_t(t, (function() {
return {
aspectRatio: 1,
boundingBox: "circle"
}
}));
var j = r ? af(r) ? r(I) : r : og(I),
L = j.width,
F = j.height,
B = j.left,
z = j.top;
return I && Nn.createElement(Om, {
className: Rl("advanced-cropper-circle-stencil", E, R.moveCoordinates && T, R.resizeCoordinates && O, {
"advanced-cropper-circle-stencil--movable": k,
"advanced-cropper-circle-stencil--moving": R.moveCoordinates,
"advanced-cropper-circle-stencil--resizable": w,
"advanced-cropper-circle-stencil--resizing": R.resizeCoordinates
}),
width: L,
height: F,
left: B,
top: z,
transitions: N
}, Nn.createElement(Sm, {
reference: I.coordinates,
className: Rl(P, "advanced-cropper-circle-stencil__bounding-box"),
handlers: s,
handlerComponent: o,
handlerClassNames: c,
handlerWrapperClassNames: h,
lines: d,
lineComponent: g,
lineClassNames: v,
lineWrapperClassNames: b,
onResize: function(e, t, r) {
n && w && n.resizeCoordinates(e, t, r)
},
onResizeEnd: function() {
n && n.resizeCoordinatesEnd()
},
disabled: !w
}, Nn.createElement(_m, {
disabled: !k,
onMove: function(e) {
n && k && n.moveCoordinates(e)
},
onMoveEnd: function() {
n && n.moveCoordinatesEnd()
},
className: Rl("advanced-cropper-circle-stencil__draggable-area", D)
}, Nn.createElement(Em, {
className: Rl("advanced-cropper-circle-stencil__overlay", M)
}, C && Nn.createElement(Am, {
visible: n.hasInteractions(),
columns: R.transformImage.rotate ? 9 : 3,
rows: R.transformImage.rotate ? 9 : 3,
className: Rl("advanced-cropper-circle-stencil__grid", S)
}), Nn.createElement("div", {
className: Rl("advanced-cropper-circle-stencil__preview", A)
})))))
}));
Gm.displayName = "CircleStencil";
var Ym = Ft((function(e, t) {
var n = e.src,
r = e.crossOrigin,
i = void 0 === r || r,
o = le(e, ["src", "crossOrigin"]);
return n ? Nn.createElement("img", se({
key: n,
ref: t,
src: n,
className: Rl("advanced-cropper-source"),
crossOrigin: !0 === i ? "anonymous" : i || void 0
}, o)) : null
}));
Ym.displayName = "CropperSource";
var qm, Km = function(e) {
var t = e.children,
n = e.cropper,
r = e.className,
i = e.style;
return Nn.createElement("div", {
className: Rl(r, "cropper-preview-wrapper"),
style: i
}, Nn.createElement(dm, {
visible: null == n ? void 0 : n.isLoaded(),
className: "cropper-preview-wrapper__fade"
}, t))
},
$m = function(e) {
var t = e.className,
n = e.cropper,
r = e.crossOrigin,
i = void 0 === r || r,
o = e.size,
a = n.getState(),
s = n.getTransitions(),
l = n.getImage(),
c = o && l && (null == a ? void 0 : a.coordinates) ? function(e, t, n, r) {
return void 0 === r && (r = null), e && t && t.visibleArea && t.coordinates ? im(e, t, t.coordinates, Lf(t.coordinates) > Lf(n) ? t.coordinates.width / n.width : t.coordinates.height / n.height, r) : {}
}(l, a, o, s) : {},
u = l ? l.src : void 0;
return u ? Nn.createElement("img", {
key: u,
className: Rl("advanced-cropper-background-image", t),
src: u,
crossOrigin: !0 === i ? "anonymous" : i || void 0,
style: c,
onMouseDown: gm
}) : null
};
function Zm() {
return Zm = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Zm.apply(this, arguments)
}
Ft((function(e, t) {
var n, r, i, o, a = e.className,
s = e.contentClassName,
l = e.state,
c = void 0 === l ? null : l,
u = e.image,
h = void 0 === u ? null : u,
p = e.transitions,
d = void 0 === p ? null : p,
f = e.backgroundComponent,
g = void 0 === f ? $m : f,
m = e.backgroundProps,
v = e.backgroundClassName,
_ = e.wrapperComponent,
b = void 0 === _ ? Km : _,
y = e.wrapperProps,
w = e.loaded,
x = void 0 === w || w,
k = e.loading,
C = void 0 !== k && k,
S = e.style,
E = e.cropper,
T = lm(),
O = vt(null),
A = E || {
current: {
getState: function() {
return c
},
getTransitions: function() {
return d
},
getImage: function() {
return h
},
isLoaded: function() {
return x
},
isLoading: function() {
return C
}
}
},
P = he(dt(null), 2),
M = P[0],
D = P[1],
I = null === (r = null === (n = A.current) || void 0 === n ? void 0 : n.getState()) || void 0 === r ? void 0 : r.coordinates,
N = null === (o = null === (i = A.current) || void 0 === i ? void 0 : i.getImage()) || void 0 === o ? void 0 : o.src,
R = M ? {
width: "".concat(M.width, "px"),
height: "".concat(M.height, "px")
} : {},
j = function() {
O.current && I && O.current.stretchTo(I).then((function(e) {
e && I ? vf(Lf(I), Lf(e)) ? D({
width: e.width,
height: e.width / Lf(I)
}) : D({
width: e.height * Lf(I),
height: e.height
}) : D(null)
})), T()
};
um(j), mt(j, [null == I ? void 0 : I.height, null == I ? void 0 : I.width]), _t(t, (function() {
return {
refresh: T
}
}));
var L = b,
F = g;
return Nn.createElement(L, se({}, y, {
className: Rl(a, "advanced-cropper-preview"),
cropper: A.current,
style: S
}), Nn.createElement(pm, {
ref: O,
className: "advanced-cropper-preview__boundary",
contentClassName: "advanced-cropper-preview__boundary-content",
stretchAlgorithm: Zg
}, Nn.createElement("div", {
className: Rl(s, "advanced-cropper-preview__content"),
style: R
}, A.current && Nn.createElement(F, se({}, m, {
cropper: A.current,
size: M,
className: Rl(v, "advanced-cropper-preview__image", N && "advanced-cropper-preview__image--visible")
})))))
}));
var Jm, Qm = e => Te("svg", Zm({
width: 20,
height: 20,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), qm || (qm = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M1.042 8.75a7.708 7.708 0 1 1 13.583 4.991l3.195 3.195a.625.625 0 0 1-.884.884l-3.195-3.195A7.708 7.708 0 0 1 1.04 8.75ZM8.75 2.292a6.458 6.458 0 1 0 0 12.917 6.458 6.458 0 0 0 0-12.917Zm-2.5 5.833a.625.625 0 1 0 0 1.25h5a.625.625 0 1 0 0-1.25h-5Z",
fill: "#333"
})));
function ev() {
return ev = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, ev.apply(this, arguments)
}
var tv, nv = e => Te("svg", ev({
width: 20,
height: 20,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), Jm || (Jm = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M8.75 1.042a7.708 7.708 0 1 0 4.99 13.583l3.196 3.195a.625.625 0 0 0 .884-.884l-3.195-3.195a7.708 7.708 0 0 0-5.875-12.7ZM2.292 8.75a6.458 6.458 0 1 1 12.916 0 6.458 6.458 0 0 1-12.917 0Zm7.083-2.5a.625.625 0 1 0-1.25 0v1.88l-1.87.002a.625.625 0 0 0 .002 1.25l1.868-.003v1.871a.625.625 0 1 0 1.25 0V9.377l1.876-.002a.625.625 0 1 0-.002-1.25l-1.874.002V6.25Z",
fill: "#333"
})));
function rv() {
return rv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, rv.apply(this, arguments)
}
var iv, ov = e => Te("svg", rv({
width: 14,
height: 14,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), tv || (tv = Te("path", {
d: "M10.5 5.25 7 8.75l-3.5-3.5",
stroke: "#333",
strokeWidth: 1.25,
strokeLinecap: "round",
strokeLinejoin: "round"
})));
function av() {
return av = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, av.apply(this, arguments)
}
var sv, lv = e => Te("svg", av({
xmlns: "http://www.w3.org/2000/svg",
width: 18,
height: 18,
fill: "none"
}, e), iv || (iv = Te("circle", {
cx: 9,
cy: 9,
r: 8.375,
stroke: "#333",
strokeWidth: 1.25
})));
function cv() {
return cv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, cv.apply(this, arguments)
}
var uv, hv = e => Te("svg", cv({
xmlns: "http://www.w3.org/2000/svg",
width: 18,
height: 18,
fill: "none"
}, e), sv || (sv = Te("circle", {
cx: 9,
cy: 9,
r: 8.375,
stroke: "#3E85EE",
strokeWidth: 1.25
})));
function pv() {
return pv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, pv.apply(this, arguments)
}
var dv, fv = e => Te("svg", pv({
xmlns: "http://www.w3.org/2000/svg",
width: 14,
height: 18,
fill: "none"
}, e), uv || (uv = Te("path", {
d: "M13.375 9c0 4.78-2.991 8.375-6.375 8.375S.625 13.781.625 9C.625 4.22 3.616.625 7 .625S13.375 4.219 13.375 9Z",
stroke: "#333",
strokeWidth: 1.25
})));
function gv() {
return gv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, gv.apply(this, arguments)
}
var mv, vv = e => Te("svg", gv({
xmlns: "http://www.w3.org/2000/svg",
width: 14,
height: 18,
fill: "none"
}, e), dv || (dv = Te("path", {
d: "M13.375 9c0 4.78-2.991 8.375-6.375 8.375S.625 13.781.625 9C.625 4.22 3.616.625 7 .625S13.375 4.219 13.375 9Z",
stroke: "#3E85EE",
strokeWidth: 1.25
})));
function _v() {
return _v = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, _v.apply(this, arguments)
}
var bv, yv = e => Te("svg", _v({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), mv || (mv = Te("rect", {
x: .625,
y: .625,
width: 16.75,
height: 16.75,
rx: 1.375,
stroke: "#333",
strokeWidth: 1.25
})));
function wv() {
return wv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, wv.apply(this, arguments)
}
var xv, kv = e => Te("svg", wv({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), bv || (bv = Te("rect", {
x: .625,
y: .625,
width: 16.75,
height: 16.75,
rx: 1.375,
stroke: "#3E85EE",
strokeWidth: 1.25
})));
function Cv() {
return Cv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Cv.apply(this, arguments)
}
var Sv, Ev = e => Te("svg", Cv({
width: 16,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), xv || (xv = Te("path", {
stroke: "#333",
strokeWidth: 1.25,
d: "M.625.625h14.75v14.75H.625z"
})));
function Tv() {
return Tv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Tv.apply(this, arguments)
}
var Ov, Av = e => Te("svg", Tv({
width: 16,
height: 16,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), Sv || (Sv = Te("path", {
stroke: "#3E85EE",
strokeWidth: 1.25,
d: "M.625.625h14.75v14.75H.625z"
})));
function Pv() {
return Pv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Pv.apply(this, arguments)
}
var Mv, Dv = e => Te("svg", Pv({
xmlns: "http://www.w3.org/2000/svg",
width: 20,
height: 20,
fill: "none"
}, e), Ov || (Ov = Te("path", {
d: "m10.071 17.039-.004-.003-.014-.011-.018-.013-.226-.16c-.545-.39-1.8-1.284-2.625-1.938-1.6-1.276-2.787-2.358-3.607-3.282-.83-.934-1.236-1.655-1.358-2.205l-.006-.029-.009-.027c-.128-.4-.21-.9-.215-1.419V7.95c-.018-1.378.492-2.697 1.376-3.617.803-.838 1.843-1.291 2.929-1.295 1.246 0 2.376.516 3.196 1.417l.475.523.461-.536c.805-.936 1.93-1.477 3.154-1.494h.09c2.302 0 4.307 2.096 4.341 4.8a5.164 5.164 0 0 1-.198 1.493l-.008.027-.006.027c-.1.514-.49 1.24-1.304 2.201-.8.947-1.958 2.063-3.498 3.355l-.002.002c-1.187 1.003-2.135 1.735-2.825 2.183l-.004.003a.081.081 0 0 1-.046.013.097.097 0 0 1-.045-.011l-.004-.002Z",
stroke: "#333",
strokeWidth: 1.25
})));
function Iv() {
return Iv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Iv.apply(this, arguments)
}
var Nv, Rv = e => Te("svg", Iv({
xmlns: "http://www.w3.org/2000/svg",
width: 20,
height: 20,
fill: "none"
}, e), Mv || (Mv = Te("path", {
d: "m10.071 17.039-.004-.003-.014-.011-.018-.013-.226-.16c-.545-.39-1.8-1.284-2.625-1.938-1.6-1.276-2.787-2.358-3.607-3.282-.83-.934-1.236-1.655-1.358-2.205l-.006-.029-.009-.027c-.128-.4-.21-.9-.215-1.419V7.95c-.018-1.378.492-2.697 1.376-3.617.803-.838 1.843-1.291 2.929-1.295 1.246 0 2.376.516 3.196 1.417l.475.523.461-.536c.805-.936 1.93-1.477 3.154-1.494h.09c2.302 0 4.307 2.096 4.341 4.8a5.164 5.164 0 0 1-.198 1.493l-.008.027-.006.027c-.1.514-.49 1.24-1.304 2.201-.8.947-1.958 2.063-3.498 3.355l-.002.002c-1.187 1.003-2.135 1.735-2.825 2.183l-.004.003a.081.081 0 0 1-.046.013.097.097 0 0 1-.045-.011l-.004-.002Z",
stroke: "#3E85EE",
strokeWidth: 1.25
})));
function jv() {
return jv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, jv.apply(this, arguments)
}
var Lv, Fv = e => Te("svg", jv({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), Nv || (Nv = Te("path", {
d: "M6.598 5.854 9 1.332l2.402 4.522c.162.307.457.52.799.58l5.042.888-3.558 3.681c-.241.25-.354.596-.305.94l.715 5.07-4.601-2.248a1.125 1.125 0 0 0-.988 0l-4.6 2.247.714-5.07a1.125 1.125 0 0 0-.305-.939L.757 7.322 5.8 6.435c.341-.06.636-.274.798-.58Z",
stroke: "#333",
strokeWidth: 1.25
})));
function Bv() {
return Bv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Bv.apply(this, arguments)
}
var zv, Hv = e => Te("svg", Bv({
width: 18,
height: 18,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), Lv || (Lv = Te("path", {
d: "M6.598 5.854 9 1.332l2.402 4.522c.162.307.457.52.799.58l5.042.888-3.558 3.681c-.241.25-.354.596-.305.94l.715 5.07-4.601-2.248a1.125 1.125 0 0 0-.988 0l-4.6 2.247.714-5.07a1.125 1.125 0 0 0-.305-.939L.757 7.322 5.8 6.435c.341-.06.636-.274.798-.58Z",
stroke: "#3E85EE",
strokeWidth: 1.25
})));
function Uv() {
return Uv = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, Uv.apply(this, arguments)
}
var Wv = e => Te("svg", Uv({
xmlns: "http://www.w3.org/2000/svg",
width: 14,
height: 4,
fill: "none"
}, e), zv || (zv = Te("path", {
d: "M8.488 3.15a3 3 0 0 1-2.976 0L0 0h14L8.488 3.15Z",
fill: "#fff"
})));
c(
".advanced-cropper-line-wrapper--north,.advanced-cropper-line-wrapper--south{height:12px;width:100%}.advanced-cropper-line-wrapper--north{cursor:n-resize}.advanced-cropper-line-wrapper--south{cursor:s-resize}.advanced-cropper-line-wrapper--east,.advanced-cropper-line-wrapper--west{height:100%;width:12px}.advanced-cropper-line-wrapper--east{cursor:e-resize}.advanced-cropper-line-wrapper--west{cursor:w-resize}.advanced-cropper-line-wrapper--disabled{cursor:auto}.advanced-cropper-line-wrapper__content{position:absolute}.advanced-cropper-line-wrapper__content--east,.advanced-cropper-line-wrapper__content--west{height:100%}.advanced-cropper-line-wrapper__content--north,.advanced-cropper-line-wrapper__content--south{width:100%}.advanced-cropper-line-wrapper__content--east{left:50%;transform:translateX(-100%)}.advanced-cropper-line-wrapper__content--west{right:50%;transform:translateX(100%)}.advanced-cropper-line-wrapper__content--north{top:50%}.advanced-cropper-line-wrapper__content--south{bottom:50%}.advanced-cropper-handler-wrapper{height:30px;position:absolute;transform:translate(-50%,-50%);width:30px}.advanced-cropper-handler-wrapper__draggable{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.advanced-cropper-handler-wrapper--west-north{cursor:nw-resize}.advanced-cropper-handler-wrapper--north{cursor:n-resize}.advanced-cropper-handler-wrapper--east-north{cursor:ne-resize}.advanced-cropper-handler-wrapper--east{cursor:e-resize}.advanced-cropper-handler-wrapper--east-south{cursor:se-resize}.advanced-cropper-handler-wrapper--south{cursor:s-resize}.advanced-cropper-handler-wrapper--west-south{cursor:sw-resize}.advanced-cropper-handler-wrapper--west{cursor:w-resize}.advanced-cropper-handler-wrapper--disabled{cursor:auto}.advanced-cropper-bounding-box{height:100%;position:relative;width:100%}.advanced-cropper-bounding-box__handler-wrapper{position:absolute}.advanced-cropper-bounding-box__handler-wrapper--east,.advanced-cropper-bounding-box__handler-wrapper--west{height:100%;top:50%;transform:translateY(-50%)}.advanced-cropper-bounding-box__handler-wrapper--north,.advanced-cropper-bounding-box__handler-wrapper--south{left:50%;transform:translateX(-50%);width:100%}.advanced-cropper-bounding-box__handler-wrapper--west,.advanced-cropper-bounding-box__handler-wrapper--west-north,.advanced-cropper-bounding-box__handler-wrapper--west-south{left:0}.advanced-cropper-bounding-box__handler-wrapper--east,.advanced-cropper-bounding-box__handler-wrapper--east-north,.advanced-cropper-bounding-box__handler-wrapper--east-south{left:100%}.advanced-cropper-bounding-box__handler-wrapper--east-north,.advanced-cropper-bounding-box__handler-wrapper--north,.advanced-cropper-bounding-box__handler-wrapper--west-north{top:0}.advanced-cropper-bounding-box__handler-wrapper--east-south,.advanced-cropper-bounding-box__handler-wrapper--south,.advanced-cropper-bounding-box__handler-wrapper--west-south{top:100%}.advanced-cropper-bounding-box__handler{position:absolute}.advanced-cropper-bounding-box__handler--west-north{left:0;top:0}.advanced-cropper-bounding-box__handler--north{left:50%;top:0}.advanced-cropper-bounding-box__handler--east-north{left:100%;top:0}.advanced-cropper-bounding-box__handler--east{left:100%;top:50%}.advanced-cropper-bounding-box__handler--east-south{left:100%;top:100%}.advanced-cropper-bounding-box__handler--south{left:50%;top:100%}.advanced-cropper-bounding-box__handler--west-south{left:0;top:100%}.advanced-cropper-bounding-box__handler--west{left:0;top:50%}.advanced-cropper-bounding-box__line{position:absolute}.advanced-cropper-bounding-box__line--north,.advanced-cropper-bounding-box__line--south{left:0;transform:translateY(-50%)}.advanced-cropper-bounding-box__line--north{top:0}.advanced-cropper-bounding-box__line--south{top:100%}.advanced-cropper-bounding-box__line--east,.advanced-cropper-bounding-box__line--west{top:0;transform:translateX(-50%)}.advanced-cropper-bounding-box__line--west{left:0}.advanced-cropper-bounding-box__line--east{left:100%}.advanced-cropper-artificial-transition{will-change:transform}.advanced-cropper-background-image{max-width:none!important;pointer-events:none;position:absolute;transform-origin:center;-webkit-user-select:none;user-select:none}.advanced-cropper-canvas{display:none}.advanced-cropper-source{height:1px;opacity:0;position:absolute;visibility:hidden;width:1px}.advanced-cropper-fade{display:flex;flex-direction:column;opacity:0;transition:.5s;visibility:hidden}.advanced-cropper-fade--visible{opacity:1;visibility:visible}.advanced-cropper-wrapper__fade{flex-grow:1;min-height:0}.advanced-cropper-stencil-grid{border-collapse:collapse;display:table;opacity:0;table-layout:fixed;transition:opacity .3s}.advanced-cropper-stencil-grid--visible{opacity:1}.advanced-cropper-stencil-grid__row{display:table-row}.advanced-cropper-stencil-grid__cell{border:1px solid;display:table-cell;height:1%;width:1%}.advanced-cropper-stencil-grid__cell--top{border-top-color:transparent}.advanced-cropper-stencil-grid__cell--left{border-left-color:transparent}.advanced-cropper-stencil-grid__cell--right{border-right-color:transparent}.advanced-cropper-stencil-grid__cell--bottom{border-bottom-color:transparent}.advanced-cropper-stencil-overlay{-webkit-backface-visibility:hidden;box-shadow:0 0 0 1000px currentColor;box-sizing:initial;height:100%;pointer-events:none;position:absolute;width:100%}.advanced-cropper-stencil-wrapper{will-change:transform}.advanced-cropper-boundary{direction:ltr;position:relative;-webkit-user-select:none;user-select:none}.advanced-cropper-boundary__content{height:100%;left:0;position:absolute;top:0;width:100%}.advanced-cropper-boundary__stretcher{max-height:100%;max-width:100%;pointer-events:none;position:relative}.advanced-cropper-circle-stencil{-webkit-backface-visibility:hidden;box-sizing:initial;height:100%;position:absolute;-webkit-transform-style:preserve-3d;width:100%}.advanced-cropper-circle-stencil__overlay{border-radius:50%;overflow:hidden}.advanced-cropper-circle-stencil__preview{border-radius:50%}.advanced-cropper-circle-stencil__draggable-area,.advanced-cropper-circle-stencil__grid,.advanced-cropper-circle-stencil__overlay,.advanced-cropper-circle-stencil__preview{height:100%;position:absolute;width:100%}.advanced-cropper-circle-stencil--movable{cursor:move}.advanced-cropper-rectangle-stencil{-webkit-backface-visibility:hidden;box-sizing:border-box;-webkit-transform-style:preserve-3d}.advanced-cropper-rectangle-stencil,.advanced-cropper-rectangle-stencil__draggable-area,.advanced-cropper-rectangle-stencil__grid,.advanced-cropper-rectangle-stencil__overlay,.advanced-cropper-rectangle-stencil__preview{height:100%;position:absolute;width:100%}.advanced-cropper-rectangle-stencil--movable{cursor:move}.advanced-cropper-simple-line{background:none;border-width:0}.advanced-cropper-simple-line--north,.advanced-cropper-simple-line--south{height:0;width:100%}.advanced-cropper-simple-line--east,.advanced-cropper-simple-line--west{height:100%;width:0}.advanced-cropper-simple-line--east{border-right-width:1px}.advanced-cropper-simple-line--west{border-left-width:1px}.advanced-cropper-simple-line--south{border-bottom-width:1px}.advanced-cropper-simple-line--north{border-top-width:1px}.advanced-cropper-simple-handler{display:block}.advanced-cropper-preview{box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:relative}.advanced-cropper-preview__content{left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%)}.advanced-cropper-preview__image{display:none;max-width:none!important;pointer-events:none;position:absolute;transform-origin:center;-webkit-user-select:none;user-select:none}.advanced-cropper-preview__image--visible{display:block}.advanced-cropper-preview__boundary{flex-grow:1;min-height:0;min-width:0}.cropper-preview-wrapper__fade{flex-grow:1;min-height:0;width:100%}.advanced-cropper{background:#000;color:#fff;display:flex;flex-direction:column;max-height:100%;overflow:hidden;position:relative}.advanced-cropper__boundary{flex-grow:1;min-height:0;min-width:0}.advanced-cropper__background-wrapper,.advanced-cropper__wrapper{bottom:0;left:0;position:absolute;right:0;top:0}.advanced-cropper__stencil-wrapper{position:absolute}.advanced-cropper *{box-sizing:border-box}.advanced-cropper-simple-handler{background:currentColor;height:10px;width:10px}.advanced-cropper-simple-line{border-color:hsla(0,0%,100%,.3);border-style:solid;transition:border .5s}.advanced-cropper-simple-line--hover{border-color:#fff}.advanced-cropper-circle-stencil__preview{border:2px solid hsla(0,0%,100%,.2)}.advanced-cropper-stencil-overlay{color:rgba(0,0,0,.5)}.advanced-cropper-stencil-grid{color:hsla(0,0%,100%,.4)}");
var Vv = {
cropper_container: "ImageCropper-module_cropper_container__uvTtt",
cropperContainer: "ImageCropper-module_cropper_container__uvTtt",
copper_wrapper: "ImageCropper-module_copper_wrapper__Wpn9E",
copperWrapper: "ImageCropper-module_copper_wrapper__Wpn9E",
cropper_footer: "ImageCropper-module_cropper_footer__Rk-w5",
cropperFooter: "ImageCropper-module_cropper_footer__Rk-w5",
footer_button: "ImageCropper-module_footer_button__BdQgl",
footerButton: "ImageCropper-module_footer_button__BdQgl",
operate_box: "ImageCropper-module_operate_box__QJJAG",
operateBox: "ImageCropper-module_operate_box__QJJAG",
icon: "ImageCropper-module_icon__0Sh-o",
mock_line: "ImageCropper-module_mock_line__-0jep",
mockLine: "ImageCropper-module_mock_line__-0jep",
cropper_type_wrapper: "ImageCropper-module_cropper_type_wrapper__7wTON",
cropperTypeWrapper: "ImageCropper-module_cropper_type_wrapper__7wTON",
active: "ImageCropper-module_active__c3F6n",
cropper_type_arrow: "ImageCropper-module_cropper_type_arrow__6-sTm",
cropperTypeArrow: "ImageCropper-module_cropper_type_arrow__6-sTm",
cropper_select_list: "ImageCropper-module_cropper_select_list__Q9Msa",
cropperSelectList: "ImageCropper-module_cropper_select_list__Q9Msa",
cropper_select_list_arrow: "ImageCropper-module_cropper_select_list_arrow__GPSms",
cropperSelectListArrow: "ImageCropper-module_cropper_select_list_arrow__GPSms",
shape_icon: "ImageCropper-module_shape_icon__d0xAo",
shapeIcon: "ImageCropper-module_shape_icon__d0xAo",
preview_circle: "ImageCropper-module_preview_circle__M21xU",
previewCircle: "ImageCropper-module_preview_circle__M21xU",
preview_heart: "ImageCropper-module_preview_heart__ePRoZ",
previewHeart: "ImageCropper-module_preview_heart__ePRoZ",
preview_star: "ImageCropper-module_preview_star__f2pmG",
previewStar: "ImageCropper-module_preview_star__f2pmG",
overlay_rect_radius: "ImageCropper-module_overlay_rect_radius__q1iPj",
overlayRectRadius: "ImageCropper-module_overlay_rect_radius__q1iPj",
overlay_ellipse: "ImageCropper-module_overlay_ellipse__F-yu5",
overlayEllipse: "ImageCropper-module_overlay_ellipse__F-yu5",
hidden_canvas: "ImageCropper-module_hidden_canvas__l7EU7",
hiddenCanvas: "ImageCropper-module_hidden_canvas__l7EU7",
ml0: "ImageCropper-module_ml0__wrtDc"
};
c(
".ImageCropper-module_cropper_container__uvTtt{border-radius:6px 6px 0 0;max-height:544px;max-width:800px;min-width:600px}.ImageCropper-module_cropper_container__uvTtt *{box-sizing:border-box}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-line{border-color:#599bff}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-handler{border:1px solid #599bff}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper__background-wrapper{overflow:hidden}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-stencil-overlay{box-shadow:0 0 0 1000px rgba(34,34,34,.7)}.ImageCropper-module_copper_wrapper__Wpn9E{border-radius:6px 6px 0 0;max-height:602px}.ImageCropper-module_cropper_footer__Rk-w5{align-items:center;display:flex;height:56px;justify-content:space-between;padding:0 12px}.ImageCropper-module_footer_button__BdQgl{background:#fff;border:1px solid rgba(51,51,51,.12);border-radius:6px;color:#333;cursor:pointer;font-family:inherit;font-size:16px;font-weight:500;line-height:130%;outline:none!important;padding:8px 16px;text-align:center}.ImageCropper-module_footer_button__BdQgl+.ImageCropper-module_footer_button__BdQgl{margin-left:12px}.ImageCropper-module_operate_box__QJJAG{align-items:center;display:flex;margin-left:22px}.ImageCropper-module_icon__0Sh-o{cursor:pointer}.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o{margin-left:32px;margin-right:28px}.ImageCropper-module_mock_line__-0jep{background:rgba(51,51,51,.12);border-radius:3px;flex-shrink:0;height:19px;margin-right:18px;width:2px}.ImageCropper-module_cropper_type_wrapper__7wTON{align-items:center;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;font-size:0;gap:10px;height:28px;padding:6px 10px;position:relative}.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n,.ImageCropper-module_cropper_type_wrapper__7wTON:hover{background:#eee}.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n .ImageCropper-module_cropper_type_arrow__6-sTm{transform:rotate(180deg);transition:.2s ease-in}.ImageCropper-module_cropper_select_list__Q9Msa{align-items:flex-start;background:#fff;border-radius:6px;box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-sizing:border-box;display:flex;flex-wrap:wrap;height:112px;justify-content:space-between;left:50%;padding:6px;position:relative;position:absolute;top:-120px;transform:translateX(-50%);width:74px}.ImageCropper-module_cropper_select_list_arrow__GPSms{bottom:-4px;left:50%;position:absolute;transform:translateX(-50%)}.ImageCropper-module_shape_icon__d0xAo{align-items:center;cursor:pointer;display:flex;height:28px;justify-content:center;margin-bottom:8px;width:28px}.ImageCropper-module_shape_icon__d0xAo.ImageCropper-module_active__c3F6n{background:#e8f1ff;border-radius:4px;color:#3e85ee}@media screen and (max-width:959px){.ImageCropper-module_cropper_container__uvTtt{height:auto;max-height:610px;min-width:auto}.ImageCropper-module_cropper_footer__Rk-w5{height:50px;padding:0 10px}.ImageCropper-module_operate_box__QJJAG{align-items:center;margin-left:0}.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o{margin-left:36px}.ImageCropper-module_cropper_footer__Rk-w5{font-size:15px}.ImageCropper-module_footer_button__BdQgl{line-height:17px}}.ImageCropper-module_preview_circle__M21xU{border:none}.ImageCropper-module_preview_heart__ePRoZ{background:transparent;background:url(https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg);background-repeat:no-repeat;background-size:100% 100%;position:relative}.ImageCropper-module_preview_star__f2pmG{background:transparent;background:url(https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg);background-repeat:no-repeat;background-size:100% 100%;position:relative}.ImageCropper-module_overlay_rect_radius__q1iPj{border-radius:28px}.ImageCropper-module_overlay_ellipse__F-yu5{border-radius:50%;height:100%;left:50%;position:absolute;transform:translateX(-50%);width:50%}.ImageCropper-module_hidden_canvas__l7EU7{display:none}.ImageCropper-module_ml0__wrtDc{margin-left:0}");
var Xv = {
rect: zl(Ev, {}),
rect_radius: zl(yv, {}),
circle: zl(lv, {}),
ellipse: zl(fv, {}),
heart: zl(Dv, {}),
star: zl(Fv, {})
},
Gv = [zl(Av, {}), zl(kv, {}), zl(hv, {}), zl(vv, {}), zl(Rv, {}), zl(Hv, {})],
Yv = {
rect: "rectangle",
rect_radius: "rounded_rectangle",
circle: "round",
ellipse: "oval",
heart: "heart",
star: "star"
},
qv = new Array;
! function(e) {
for (var t = 0; t < e.length; t++) qv[t] = new Image, qv[t].src = e[t]
}(["https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg", "https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg"]);
var Kv = e => {
var {
onCancel: t,
onConfirm: n,
file: r,
url: i
} = e, [o, a] = dt({
width: 0,
height: 0
}), [s, l] = dt("rect"), [c, u] = dt(!1), p = vt(null), {
formatMessage: f
} = vo();
gt((() => {
var e = new Image;
e.onload = function() {
var {
width: t,
height: n
} = e;
a({
width: t,
height: n
})
}, e.src = i
}), [i]), gt((() => {
document.addEventListener("click", (() => {
u(!1)
}))
}), []);
var g = e => {
p.current.zoomImage(e)
},
m = function() {
var e = d((function*() {
var e, t = p.current.getCanvas(),
i = new X.fabric.Canvas("fabricInstance");
try {
e = yield v()
} catch (n) {
e = t.toDataURL()
}
var o = s;
"circle" === o ? X.fabric.Image.fromURL(e, (t => {
i.setWidth(t.width), i.setHeight(t.height), t.set({
clipPath: new X.fabric.Circle({
radius: t.width / 2,
originX: "center",
originY: "center"
})
}), i.add(t), i.renderAll(), e = i.toDataURL(), n(h(h({}, r), {}, {
dataUrl: e
}))
})) : "ellipse" === o ? X.fabric.Image.fromURL(e, (t => {
i.setWidth(t.width), i.setHeight(t.height), t.set({
clipPath: new X.fabric.Ellipse({
rx: t.width / 2 / 2,
ry: t.height / 2,
originX: "center",
originY: "center"
})
}), i.add(t), i.renderAll(), e = i.toDataURL(), n(h(h({}, r), {}, {
dataUrl: e
}))
})) : "rect_radius" === o ? X.fabric.Image.fromURL(e, (t => {
i.setWidth(t.width), i.setHeight(t.height), t.set({
clipPath: new X.fabric.Rect({
width: t.width,
height: t.height,
rx: 28,
ry: 28,
originX: "center",
originY: "center"
})
}), i.add(t), i.renderAll(), e = i.toDataURL(), n(h(h({}, r), {}, {
dataUrl: e
}))
})) : "heart" === o ? (e = t.toDataURL(), X.fabric.Image.fromURL(e, (t => {
var i = document.getElementById("fabricInstance2"),
o = t.height / t.width * 300,
a = 25 / 238 * o;
i.width = 800, i.height = 600;
var s = i.getContext("2d");
s.fillStyle = "rgba(255, 255, 255, 0)", s.fillRect(0, 0, 800, 600), s.save(), s.beginPath(), s.moveTo(400, 175 + a), s.bezierCurveTo(568, 125, 568, 330, 400, o + 168), s.bezierCurveTo(232, 330, 232, 125, 400,
175 + a), s.clip(), s.closePath(), (t = new Image).src = e, t.onload = function() {
s.drawImage(t, 273, 172, 254, o), e = i.toDataURL();
var a = new Image;
a.src = e, a.id = "img3", a.onload = () => {
var t = document.getElementById("fabricInstance3");
t.width = 254, t.height = o, t.getContext("2d").drawImage(a, -273, -1 * (600 - o) / 2 - 3), e = t.toDataURL(), n(h(h({}, r), {}, {
dataUrl: e
}))
}
}
}))) : "star" === o ? (e = t.toDataURL(), X.fabric.Image.fromURL(e, (t => {
var i = document.getElementById("fabricInstance2"),
o = i.getContext("2d");
o.fillStyle = "rgba(255,255,255,0)", o.fillRect(0, 0, t.width, t.height);
var a = new Image;
a.src = e, a.onload = function() {
i.width = t.width, i.height = t.height,
function(o, a) {
var s = Math.max(t.width / 2, t.height / 2);
(function(e, t, n) {
var r = 360 / t / 2,
i = 90,
o = n / 2;
e.save(), e.translate(n, n), e.rotate(60), e.moveTo(0, n), e.beginPath();
for (var a = 0; a <= t; a++) {
var s = n * Math.sin((i + 2 * a * r) / 180 * Math.PI),
l = n * Math.cos((i + 2 * a * r) / 180 * Math.PI),
c = o * Math.sin((i + (2 * a + 1) * r) / 180 * Math.PI),
u = o * Math.cos((i + (2 * a + 1) * r) / 180 * Math.PI);
e.lineTo(s, l), e.lineTo(c, u)
}
e.closePath(), e.clip()
})(o, 5, s), o.save(), o.rotate(-60), o.drawImage(a, -s, -s, t.width, t.height), e = i.toDataURL(), n(h(h({}, r), {}, {
dataUrl: e
}))
}(o, a)
}
}))) : n(h(h({}, r), {}, {
dataUrl: e
})), la("admin_plugin_product_customizer_shape", {
shape_type: Yv[o]
})
}));
return function() {
return e.apply(this, arguments)
}
}(),
v = () => new Promise((e => {
var t = new X.fabric.StaticCanvas("fabricInstance0");
X.fabric.Image.fromURL(i, (n => {
var {
width: r,
height: i,
left: o,
top: a
} = p.current.getCoordinates();
n.set({
left: -o,
top: -a
}), t.setWidth(r), t.setHeight(i), t.clear(), t.add(n), t.renderAll(), setTimeout((() => {
var n = t.toDataURL();
e(n)
}), 50)
}))
})),
{
width: _,
height: b
} = o,
y = bt((() => {
var e = pa() ? window.document.body.clientWidth - 32 : 800;
return zl("div", {
className: Vv.cropper_container,
style: {
maxWidth: e,
maxHeight: 602,
minWidth: 300,
width: _
},
children: zl(Xm, "circle" === s ? {
className: Vv.copper_wrapper,
crossOrigin: "anonymous",
stencilComponent: Gm,
stencilProps: {
aspectRatio: 1,
previewClassName: Vv["preview_".concat(s)]
},
ref: p,
src: i
} : {
defaultSize: "rect" === s ? e => {
var {
imageSize: t,
visibleArea: n
} = e, r = Math.min((n || t).width / 2, (n || t).height / 2);
return {
width: r,
height: r
}
} : {},
className: Vv.copper_wrapper,
crossOrigin: "anonymous",
stencilProps: {
aspectRatio: {
heart: 268 / 238,
star: 269 / 256,
rect_radius: 1,
ellipse: 1,
circle: 1,
rect: ""
} [s],
previewClassName: Vv["preview_".concat(s)],
overlayClassName: Vv["overlay_".concat(s)]
},
ref: p,
src: i
})
})
}), [i, _, s]),
w = bt((() => Xv[s]), [s]),
x = bt((() => {
var e = Object.values(Xv),
t = Object.keys(Xv);
return zl(Pe, {
children: null == e ? void 0 : e.map(((e, n) => zl("div", {
onClick: () => {
l(t[n])
},
className: Rl(Vv.shape_icon, t[n] === s ? Vv.active : ""),
children: t[n] === s ? Gv[n] : e
})))
})
}), [s]);
if (i && _) return zl("div", {
className: "",
children: [y, zl("div", {
className: Vv.hidden_canvas,
children: [zl("canvas", {
id: "fabricInstance0",
className: Vv.hidden_canvas
}), zl("canvas", {
id: "fabricInstance",
className: Vv.hidden_canvas
}), zl("canvas", {
id: "fabricInstance2",
className: Vv.hidden_canvas
}), zl("canvas", {
id: "fabricInstance3",
className: Vv.hidden_canvas
})]
}), zl("div", {
className: Vv.cropper_footer,
children: [zl("div", {
className: Vv.operate_box,
children: [!pa() && zl(Pe, {
children: [zl(Qm, {
className: Vv.icon,
onClick: () => g(.8)
}), zl(nv, {
className: Vv.icon,
onClick: () => g(1.2)
}), zl("div", {
className: Vv.mock_line
})]
}), zl("div", {
className: Rl(Vv.cropper_type_wrapper, c ? Vv.active : "", pa() ? Vv.ml0 : ""),
onClick: e => {
e.stopPropagation(), u(!c)
},
children: [zl("div", {
className: Vv.cropper_type_icon,
children: w
}), zl("div", {
className: Vv.cropper_type_arrow,
children: zl(ov, {})
}), c && zl("div", {
className: Vv.cropper_select_list,
children: [x, zl(Wv, {
className: Vv.cropper_select_list_arrow
})]
})]
})]
}), zl("div", {
children: [zl("button", {
className: Vv.footer_button,
onClick: () => {
var e;
t(r), fabricInstance && (null === (e = fabricInstance) || void 0 === e || e.dispose())
},
children: f({
id: "cancel"
})
}), zl("button", {
className: Vv.footer_button,
onClick: m,
children: f({
id: "select"
})
})]
})]
})]
})
},
$v = Qe(null),
Zv = Lp() ? mt : gt,
Jv = Zv,
Qv = function(e, t) {
var n = vt(!0);
Zv((function() {
if (!n.current) return e()
}), t), Zv((function() {
return n.current = !1,
function() {
n.current = !0
}
}), [])
},
e_ = [];
function t_(e, t) {
if (!e) return !1;
if (e.contains) return e.contains(t);
for (var n = t; n;) {
if (n === e) return !0;
n = n.parentNode
}
return !1
}
var n_, r_ = "data-rc-order",
i_ = "rc-util-key",
o_ = new Map;
function a_() {
var e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).mark;
return e ? e.startsWith("data-") ? e : "data-".concat(e) : i_
}
function s_(e) {
return e.attachTo ? e.attachTo : document.querySelector("head") || document.body
}
function l_(e) {
return Array.from((o_.get(e) || e).children).filter((function(e) {
return "STYLE" === e.tagName
}))
}
function c_(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (!Lp()) return null;
var n = t.csp,
r = t.prepend,
i = document.createElement("style");
i.setAttribute(r_, function(e) {
return "queue" === e ? "prependQueue" : e ? "prepend" : "append"
}(r)), null != n && n.nonce && (i.nonce = null == n ? void 0 : n.nonce), i.innerHTML = e;
var o = s_(t),
a = o.firstChild;
if (r) {
if ("queue" === r) {
var s = l_(o).filter((function(e) {
return ["prepend", "prependQueue"].includes(e.getAttribute(r_))
}));
if (s.length) return o.insertBefore(i, s[s.length - 1].nextSibling), i
}
o.insertBefore(i, a)
} else o.appendChild(i);
return i
}
function u_(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return l_(s_(t)).find((function(n) {
return n.getAttribute(a_(t)) === e
}))
}
function h_(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = u_(e, t);
n && s_(t).removeChild(n)
}
function p_(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
! function(e, t) {
var n = o_.get(e);
if (!n || !t_(document, n)) {
var r = c_("", t),
i = r.parentNode;
o_.set(e, i), e.removeChild(r)
}
}(s_(n), n);
var r = u_(t, n);
if (r) {
var i, o, a;
if (null !== (i = n.csp) && void 0 !== i && i.nonce && r.nonce !== (null === (o = n.csp) || void 0 === o ? void 0 : o.nonce)) r.nonce = null === (a = n.csp) || void 0 === a ? void 0 : a.nonce;
return r.innerHTML !== e && (r.innerHTML = e), r
}
var s = c_(e, n);
return s.setAttribute(a_(n), t), s
}
var d_ = "rc-util-locker-".concat(Date.now()),
f_ = 0;
function g_(e) {
var t = !!e,
n = Mp(dt((function() {
return f_ += 1, "".concat(d_, "_").concat(f_)
})), 1)[0];
Jv((function() {
if (t) {
var e = function(e) {
if ("undefined" == typeof document) return 0;
if (e || void 0 === n_) {
var t = document.createElement("div");
t.style.width = "100%", t.style.height = "200px";
var n = document.createElement("div"),
r = n.style;
r.position = "absolute", r.top = "0", r.left = "0", r.pointerEvents = "none", r.visibility = "hidden", r.width = "200px", r.height = "150px", r.overflow = "hidden", n.appendChild(t), document.body.appendChild(n);
var i = t.offsetWidth;
n.style.overflow = "scroll";
var o = t.offsetWidth;
i === o && (o = n.clientWidth), document.body.removeChild(n), n_ = i - o
}
return n_
}(),
r = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
p_("\nhtml body {\n overflow-y: hidden;\n ".concat(r ? "width: calc(100% - ".concat(e, "px);") : "", "\n}"), n)
} else h_(n);
return function() {
h_(n)
}
}), [t, n])
}
var m_ = !1;
var v_ = function(e) {
return !1 !== e && (Lp() && e ? "string" == typeof e ? document.querySelector(e) : "function" == typeof e ? e() : e : null)
},
__ = Ft((function(e, t) {
var n = e.open,
r = e.autoLock,
i = e.getContainer,
o = e.autoDestroy,
a = void 0 === o || o,
s = e.children,
l = Mp(dt(n), 2),
c = l[0],
u = l[1],
h = c || n;
gt((function() {
(a || n) && u(n)
}), [n, a]);
var p = Mp(dt((function() {
return v_(i)
})), 2),
d = p[0],
f = p[1];
gt((function() {
var e = v_(i);
f(null != e ? e : null)
}));
var g = function(e, t) {
var n = Mp(dt((function() {
return Lp() ? document.createElement("div") : null
})), 1)[0],
r = vt(!1),
i = wt($v),
o = Mp(dt(e_), 2),
a = o[0],
s = o[1],
l = i || (r.current ? void 0 : function(e) {
s((function(t) {
return [e].concat(Bh(t))
}))
});
function c() {
n.parentElement || document.body.appendChild(n), r.current = !0
}
function u() {
var e;
null === (e = n.parentElement) || void 0 === e || e.removeChild(n), r.current = !1
}
return Jv((function() {
return e ? i ? i(c) : c() : u(), u
}), [e]), Jv((function() {
a.length && (a.forEach((function(e) {
return e()
})), s(e_))
}), [a]), [n, l]
}(h && !d),
m = Mp(g, 2),
v = m[0],
_ = m[1],
b = null != d ? d : v;
g_(r && n && Lp() && (b === v || b === document.body));
var y = null;
s && jp(s) && t && (y = s.ref);
var w = function() {
for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
return Ip((function() {
return Rp.apply(void 0, t)
}), t, (function(e, t) {
return e.length === t.length && e.every((function(e, n) {
return e === t[n]
}))
}))
}(y, t);
if (!h || !Lp() || void 0 === d) return null;
var x, k = !1 === b || ("boolean" == typeof x && (m_ = x), m_),
C = s;
return t && (C = yn(s, {
ref: w
})), Te($v.Provider, {
value: _
}, k ? C : Jt(C, b))
})),
b_ = __,
y_ = {
MAC_ENTER: 3,
BACKSPACE: 8,
TAB: 9,
NUM_CENTER: 12,
ENTER: 13,
SHIFT: 16,
CTRL: 17,
ALT: 18,
PAUSE: 19,
CAPS_LOCK: 20,
ESC: 27,
SPACE: 32,
PAGE_UP: 33,
PAGE_DOWN: 34,
END: 35,
HOME: 36,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
PRINT_SCREEN: 44,
INSERT: 45,
DELETE: 46,
ZERO: 48,
ONE: 49,
TWO: 50,
THREE: 51,
FOUR: 52,
FIVE: 53,
SIX: 54,
SEVEN: 55,
EIGHT: 56,
NINE: 57,
QUESTION_MARK: 63,
A: 65,
B: 66,
C: 67,
D: 68,
E: 69,
F: 70,
G: 71,
H: 72,
I: 73,
J: 74,
K: 75,
L: 76,
M: 77,
N: 78,
O: 79,
P: 80,
Q: 81,
R: 82,
S: 83,
T: 84,
U: 85,
V: 86,
W: 87,
X: 88,
Y: 89,
Z: 90,
META: 91,
WIN_KEY_RIGHT: 92,
CONTEXT_MENU: 93,
NUM_ZERO: 96,
NUM_ONE: 97,
NUM_TWO: 98,
NUM_THREE: 99,
NUM_FOUR: 100,
NUM_FIVE: 101,
NUM_SIX: 102,
NUM_SEVEN: 103,
NUM_EIGHT: 104,
NUM_NINE: 105,
NUM_MULTIPLY: 106,
NUM_PLUS: 107,
NUM_MINUS: 109,
NUM_PERIOD: 110,
NUM_DIVISION: 111,
F1: 112,
F2: 113,
F3: 114,
F4: 115,
F5: 116,
F6: 117,
F7: 118,
F8: 119,
F9: 120,
F10: 121,
F11: 122,
F12: 123,
NUMLOCK: 144,
SEMICOLON: 186,
DASH: 189,
EQUALS: 187,
COMMA: 188,
PERIOD: 190,
SLASH: 191,
APOSTROPHE: 192,
SINGLE_QUOTE: 222,
OPEN_SQUARE_BRACKET: 219,
BACKSLASH: 220,
CLOSE_SQUARE_BRACKET: 221,
WIN_KEY: 224,
MAC_FF_META: 224,
WIN_IME: 229,
isTextModifyingKeyEvent: function(e) {
var t = e.keyCode;
if (e.altKey && !e.ctrlKey || e.metaKey || t >= y_.F1 && t <= y_.F12) return !1;
switch (t) {
case y_.ALT:
case y_.CAPS_LOCK:
case y_.CONTEXT_MENU:
case y_.CTRL:
case y_.DOWN:
case y_.END:
case y_.ESC:
case y_.HOME:
case y_.INSERT:
case y_.LEFT:
case y_.MAC_FF_META:
case y_.META:
case y_.NUMLOCK:
case y_.NUM_CENTER:
case y_.PAGE_DOWN:
case y_.PAGE_UP:
case y_.PAUSE:
case y_.PRINT_SCREEN:
case y_.RIGHT:
case y_.SHIFT:
case y_.UP:
case y_.WIN_KEY:
case y_.WIN_KEY_RIGHT:
return !1;
default:
return !0
}
},
isCharacterKey: function(e) {
if (e >= y_.ZERO && e <= y_.NINE) return !0;
if (e >= y_.NUM_ZERO && e <= y_.NUM_MULTIPLY) return !0;
if (e >= y_.A && e <= y_.Z) return !0;
if (-1 !== window.navigator.userAgent.indexOf("WebKit") && 0 === e) return !0;
switch (e) {
case y_.SPACE:
case y_.QUESTION_MARK:
case y_.NUM_PLUS:
case y_.NUM_MINUS:
case y_.NUM_PERIOD:
case y_.NUM_DIVISION:
case y_.SEMICOLON:
case y_.DASH:
case y_.EQUALS:
case y_.COMMA:
case y_.PERIOD:
case y_.SLASH:
case y_.APOSTROPHE:
case y_.SINGLE_QUOTE:
case y_.OPEN_SQUARE_BRACKET:
case y_.BACKSLASH:
case y_.CLOSE_SQUARE_BRACKET:
return !0;
default:
return !1
}
}
},
w_ = y_;
var x_ = 0;
function k_(e) {
var t = Mp(dt("ssr-id"), 2),
n = t[0],
r = t[1],
i = Hh({}, Rn).useId,
o = null == i ? void 0 : i();
return gt((function() {
if (!i) {
var e = x_;
x_ += 1, r("rc_unique_".concat(e))
}
}), []), e || (o || n)
}
function C_(e) {
var t = e.prefixCls,
n = e.style,
r = e.visible,
i = e.maskProps,
o = e.motionName;
return Te(Sd, {
key: "mask",
visible: r,
motionName: o,
leavedClassName: "".concat(t, "-mask-hidden")
}, (function(e, r) {
var o = e.className;
return Te("div", wh({
ref: r,
style: Hh(Hh({}, e.style), n),
className: Rl("".concat(t, "-mask"), o)
}, i))
}))
}
function S_(e, t, n) {
var r = t;
return !r && n && (r = "".concat(e, "-").concat(n)), r
}
function E_(e, t) {
var n = e["page".concat(t ? "Y" : "X", "Offset")],
r = "scroll".concat(t ? "Top" : "Left");
if ("number" != typeof n) {
var i = e.document;
"number" != typeof(n = i.documentElement[r]) && (n = i.body[r])
}
return n
}
var T_ = Rt((function(e) {
return e.children
}), (function(e, t) {
return !t.shouldUpdate
})),
O_ = {
width: 0,
height: 0,
overflow: "hidden",
outline: "none"
},
A_ = Nn.forwardRef((function(e, t) {
var n = e.prefixCls,
r = e.className,
i = e.style,
o = e.title,
a = e.ariaId,
s = e.footer,
l = e.closable,
c = e.closeIcon,
u = e.onClose,
h = e.children,
p = e.bodyStyle,
d = e.bodyProps,
f = e.modalRender,
g = e.onMouseDown,
m = e.onMouseUp,
v = e.holderRef,
_ = e.visible,
b = e.forceRender,
y = e.width,
w = e.height,
x = vt(),
k = vt();
Nn.useImperativeHandle(t, (function() {
return {
focus: function() {
var e;
null === (e = x.current) || void 0 === e || e.focus()
},
changeActive: function(e) {
var t = document.activeElement;
e && t === k.current ? x.current.focus() : e || t !== x.current || k.current.focus()
}
}
}));
var C, S, E, T = {};
void 0 !== y && (T.width = y), void 0 !== w && (T.height = w), s && (C = Nn.createElement("div", {
className: "".concat(n, "-footer")
}, s)), o && (S = Nn.createElement("div", {
className: "".concat(n, "-header")
}, Nn.createElement("div", {
className: "".concat(n, "-title"),
id: a
}, o))), l && (E = Nn.createElement("button", {
type: "button",
onClick: u,
"aria-label": "Close",
className: "".concat(n, "-close")
}, c || Nn.createElement("span", {
className: "".concat(n, "-close-x")
})));
var O = Nn.createElement("div", {
className: "".concat(n, "-content")
}, E, S, Nn.createElement("div", wh({
className: "".concat(n, "-body"),
style: p
}, d), h), C);
return Nn.createElement("div", {
key: "dialog-element",
role: "dialog",
"aria-labelledby": o ? a : null,
"aria-modal": "true",
ref: v,
style: Hh(Hh({}, i), T),
className: Rl(n, r),
onMouseDown: g,
onMouseUp: m
}, Nn.createElement("div", {
tabIndex: 0,
ref: x,
style: O_,
"aria-hidden": "true"
}), Nn.createElement(T_, {
shouldUpdate: _ || b
}, f ? f(O) : O), Nn.createElement("div", {
tabIndex: 0,
ref: k,
style: O_,
"aria-hidden": "true"
}))
})),
P_ = A_,
M_ = Ft((function(e, t) {
var n = e.prefixCls,
r = e.title,
i = e.style,
o = e.className,
a = e.visible,
s = e.forceRender,
l = e.destroyOnClose,
c = e.motionName,
u = e.ariaId,
h = e.onVisibleChanged,
p = e.mousePosition,
d = vt(),
f = Mp(dt(), 2),
g = f[0],
m = f[1],
v = {};
function _() {
var e = function(e) {
var t = e.getBoundingClientRect(),
n = {
left: t.left,
top: t.top
},
r = e.ownerDocument,
i = r.defaultView || r.parentWindow;
return n.left += E_(i), n.top += E_(i, !0), n
}(d.current);
m(p ? "".concat(p.x - e.left, "px ").concat(p.y - e.top, "px") : "")
}
return g && (v.transformOrigin = g), Te(Sd, {
visible: a,
onVisibleChanged: h,
onAppearPrepare: _,
onEnterPrepare: _,
forceRender: s,
motionName: c,
removeOnLeave: l,
ref: d
}, (function(a, s) {
var l = a.className,
c = a.style;
return Te(P_, wh({}, e, {
ref: t,
title: r,
ariaId: u,
prefixCls: n,
holderRef: s,
style: Hh(Hh(Hh({}, c), i), v),
className: Rl(o, l)
}))
}))
}));
M_.displayName = "Content";
var D_ = M_;
function I_(e) {
var t = e.prefixCls,
n = void 0 === t ? "rc-dialog" : t,
r = e.zIndex,
i = e.visible,
o = void 0 !== i && i,
a = e.keyboard,
s = void 0 === a || a,
l = e.focusTriggerAfterClose,
c = void 0 === l || l,
u = e.wrapStyle,
h = e.wrapClassName,
p = e.wrapProps,
d = e.onClose,
f = e.afterClose,
g = e.transitionName,
m = e.animation,
v = e.closable,
_ = void 0 === v || v,
b = e.mask,
y = void 0 === b || b,
w = e.maskTransitionName,
x = e.maskAnimation,
k = e.maskClosable,
C = void 0 === k || k,
S = e.maskStyle,
E = e.maskProps,
T = e.rootClassName,
O = vt(),
A = vt(),
P = vt(),
M = Mp(dt(o), 2),
D = M[0],
I = M[1],
N = k_();
function R(e) {
null == d || d(e)
}
var j = vt(!1),
L = vt(),
F = null;
return C && (F = function(e) {
j.current ? j.current = !1 : A.current === e.target && R(e)
}), gt((function() {
o && (I(!0), t_(A.current, document.activeElement) || (O.current = document.activeElement))
}), [o]), gt((function() {
return function() {
clearTimeout(L.current)
}
}), []), Te("div", wh({
className: Rl("".concat(n, "-root"), T)
}, Gh(e, {
data: !0
})), Te(C_, {
prefixCls: n,
visible: y && o,
motionName: S_(n, w, x),
style: Hh({
zIndex: r
}, S),
maskProps: E
}), Te("div", wh({
tabIndex: -1,
onKeyDown: function(e) {
if (s && e.keyCode === w_.ESC) return e.stopPropagation(), void R(e);
o && e.keyCode === w_.TAB && P.current.changeActive(!e.shiftKey)
},
className: Rl("".concat(n, "-wrap"), h),
ref: A,
onClick: F,
style: Hh(Hh({
zIndex: r
}, u), {}, {
display: D ? null : "none"
})
}, p), Te(D_, wh({}, e, {
onMouseDown: function() {
clearTimeout(L.current), j.current = !0
},
onMouseUp: function() {
L.current = setTimeout((function() {
j.current = !1
}))
},
ref: P,
closable: _,
ariaId: N,
prefixCls: n,
visible: o && D,
onClose: R,
onVisibleChanged: function(e) {
if (e) t_(A.current, document.activeElement) || null === (t = P.current) || void 0 === t || t.focus();
else {
if (I(!1), y && O.current && c) {
try {
O.current.focus({
preventScroll: !0
})
} catch (e) {}
O.current = null
}
D && (null == f || f())
}
var t
},
motionName: S_(n, g, m)
}))))
}
var N_ = function(e) {
var t = e.visible,
n = e.getContainer,
r = e.forceRender,
i = e.destroyOnClose,
o = void 0 !== i && i,
a = e.afterClose,
s = Mp(dt(t), 2),
l = s[0],
c = s[1];
return gt((function() {
t && c(!0)
}), [t]), r || !o || l ? Te(b_, {
open: t || r || l,
autoDestroy: !1,
getContainer: n,
autoLock: t || l
}, Te(I_, wh({}, e, {
destroyOnClose: o,
afterClose: function() {
null == a || a(), c(!1)
}
}))) : null
};
N_.displayName = "Dialog";
var R_ = N_,
j_ = "Upload-module_upload_dialog__jV-WW",
L_ = "Upload-module_upload_large__9rjsH",
F_ = "Upload-module_large_content__PoxTi",
B_ = "Upload-module_large_img__Xguu1",
z_ = "Upload-module_large_tips__TOH6I",
H_ = "Upload-module_upload_tips__8XVTP",
U_ = "Upload-module_upload_tips_dot__GLSmQ";
function W_(e, t) {
var n = void 0 !== e.uid ? "uid" : "name";
return t.filter((t => t[n] === e[n]))[0]
}
c(
'.Upload-module_upload_dialog__jV-WW{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.Upload-module_upload_dialog__jV-WW .rc-dialog-body{display:block;padding:0}.Upload-module_upload_large__9rjsH{border-radius:8px;height:228px;margin-bottom:6px;width:100%}.Upload-module_large_content__PoxTi{align-items:flex-start;display:inline-flex;flex-direction:column;gap:8px}.Upload-module_large_img__Xguu1{align-items:center;display:flex;flex-direction:column;gap:4px;width:100%}.Upload-module_large_img__Xguu1 p{color:#333;font-style:normal;font-weight:600;width:100%}.Upload-module_large_img__Xguu1 p span{color:#477bff;font-weight:600;position:relative}.Upload-module_large_img__Xguu1 p span:after{background-color:#477bff;bottom:3px;content:"";height:1px;left:0;position:absolute;width:100%}.Upload-module_large_tips__TOH6I{align-items:flex-start;display:flex;flex-direction:column;gap:4px}.Upload-module_upload_tips__8XVTP{align-items:center;color:rgba(51,51,51,.8);display:flex;font-size:13px!important;font-style:normal;font-weight:400;gap:6px}.Upload-module_upload_tips_dot__GLSmQ{background-color:#5c5c5c;border-radius:50%;display:inline-block;height:3px;width:3px}');
var V_, X_ = e => {
var {
optionData: t,
control: n,
defaultValue: r = [],
fieldName: i,
propertyName: o,
name: a,
required: s,
max_file: l = 1,
help: c,
visible: u,
type: p
} = e, d = l > 1, {
setError: f,
clearErrors: g
} = wt(Op), [m, _] = dt(!1), [b, k] = dt({}), S = vt(null), T = vt(null), [O, A] = dt(""), [D, I] = dt(null), {
formatMessage: N
} = vo(), [R, j] = ef(), F = wt(pu), z = ss({
control: n,
name: i
}), {
field: {
onChange: U,
onBlur: W,
value: V,
ref: X
}
} = ls({
control: n,
name: i,
rules: {
required: {
value: !!s,
message: N({
id: "required_tip"
})
}
},
defaultValue: r
}), G = V;
V.length || (G = z || []);
var [Y, q] = dt(null), K = zl("div", {
className: Rl("pk-flex pk-justify-center pk-items-center pk-border pk-border-dashed pk-border-[#333/20] pk-rounded pk-bg-[#fdfdfd] hover:pk-bg-[#f6f6f7] hover:pk-border-[#333/40]", pa() ? "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
children: zl(yp, {})
}), $ = zl("div", {
className: Rl("pk-flex pk-justify-center pk-items-center pk-border pk-border-dashed pk-border-[#333/20] pk-bg-[#fdfdfd] hover:pk-bg-[#f6f6f7] hover:pk-border-[#333/40]", L_),
children: zl("div", {
className: "".concat(F_, " notranslate"),
children: [zl("div", {
className: B_,
children: [zl(Cp, {}), pa() ? zl("p", {
className: pa() ? "!pk-text-[15px] text-center" : "!pk-text-[16px]",
children: N({
id: "options.upload.large.text.mobile"
})
}) : zl("p", {
className: pa() ? "!pk-text-[15px]" : "!pk-text-[16px]",
children: [N({
id: "options.upload.large.text"
}), zl("span", {
className: pa() ? "!pk-text-[15px]" : "!pk-text-[16px]",
children: N({
id: "options.upload.large.browse"
})
})]
})]
}), zl("div", {
className: "".concat(z_, " notranslate"),
children: [zl("div", {
className: H_,
children: [zl("span", {
className: U_
}), N({
id: "options.upload.large.limit"
})]
}), zl("div", {
className: H_,
children: [zl("span", {
className: U_
}), N({
id: "options.upload.large.maxfiles"
}), ": ", null == t ? void 0 : t.max_file]
})]
})]
})
}), Z = vt(), J = (e, t) => {
var n = [...t],
r = n.findIndex((t => {
var {
uid: n
} = t;
return n === e.uid
})); - 1 === r ? n.push(e) : n[r] = e;
var i = n.filter((e => "error" == e.status));
return null != i && i.length && (null == i ? void 0 : i.length) === (null == n ? void 0 : n.length) ? (R.destroy(), R.open({
content: N({
id: "image_upload_fail"
})
})) : null != i && i.length && (R.destroy(), R.open({
content: N({
id: "image_upload_section_fail"
})
})), n.filter((e => "error" !== e.status))
}, Q = t => {
var n, r, o, a = function(e, t) {
var n = void 0 !== e.uid ? "uid" : "name",
r = t.filter((t => t[n] !== e[n]));
return r.length === t.length ? null : r
}(t, G);
if (a && (n = h({}, t), hu.$emit(M, t), null === (r = Z.current) || void 0 === r || r.abort(n), U(a), "upload" === p && null !== (o = e.preview_setting) && void 0 !== o && o.preview_open)) {
var s = du(e, F);
hu.$emit(B, {
label_id: i,
bg_image_url: s
})
}
}, ee = () => {
_(!1), A(""), T.current("cancel upload")
}, te = e => {
_(!1), A(""), S.current(e)
}, ne = (e, t) => (e.objectName = "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime()).concat(Math.floor(1e5 * Math.random()), ".").concat((y(e.type) || w(e.name)).toLowerCase()), e.status = "uploading", d && G
.push(e), U(d ? G : [e]), "cropper" == t && I(e), "cropper" !== t && Y && Date.now() < 1e3 * Y.expire ? e : v().then((t => (q(t.data), e)))), re = n => zl(cp, {
ref: Z,
action: null == Y ? void 0 : Y.write_host,
accept: "image/png,image/jpeg,image/gif,image/jpg",
multiple: d,
beforeUpload: (e, t) => {
var n;
I(null);
var r = (null === (n = G) || void 0 === n ? void 0 : n.length) || 0;
return r >= l && (R.destroy(), R.open({
content: N({
id: "upload_max_tip"
}, {
max: l
})
}), t = t.slice(0, l - r)), !!W_(e, t) && (e.size > L ? (R.destroy(), R.open({
content: N({
id: "image_size_tip"
})
}), !1) : 1 === t.length ? (e => new Promise(((t, n) => {
k(e);
var r = new FileReader;
r.readAsDataURL(e), S.current = t, T.current = n, r.onload = function(e) {
A(e.target.result), _(!0)
}
})))(e).then((t => {
var n = E(t.dataUrl, e.name, "image/png");
return n.uid = e.uid, ne(n, "cropper")
})) : ne(e))
},
data: e => ({
policy: null == Y ? void 0 : Y.policy,
OSSAccessKeyId: null == Y ? void 0 : Y.access_id,
success_action_status: 200,
signature: null == Y ? void 0 : Y.sign,
"x-oss-forbid-overwrite": !0,
key: (null == D ? void 0 : D.objectName) || e.objectName
}),
onStart: e => {
C(D || e).then((t => {
var n = W_(D || e, G);
t && n && "success" !== n.status && (D ? D.thumbUrl = t : e.thumbUrl = t, U(J(D || e, G)))
}))
},
onSuccess: (t, n) => {
var r;
if (W_(D || n, G)) {
if (D ? D.status = "success" : n.status = "success", D ? D.url = Y.read_host + D.objectName : n.url = Y.read_host + n.objectName, "design" === p && (D ? D.label_id = i : n.label_id = i, hu.$emit(P, D || n)), "upload" ===
p && null !== (r = e.preview_setting) && void 0 !== r && r.preview_open) {
var o = du(e, F);
D ? D.label_id = i : n.label_id = i, D ? D.bg_image_url = o : n.bg_image_url = o, hu.$emit(B, D || n)
}
U(J(D || n, G))
}
},
onError: (e, t, n) => {
W_(D || n, G) && (n.status = "error", U(J(D || n, G)))
},
tabIndex: "0",
onBlur: W,
className: Rl("pk-block", "large" === (null == t ? void 0 : t.upload_style) ? "pk-w-full" : "pk-w-fit"),
children: n || ("large" === (null == t ? void 0 : t.upload_style) ? $ : K)
});
return gt((() => {
G.length && g(i)
}), [g, i, G]), zl(Pe, {
children: [u ? zl(lu, {
optionData: t,
control: n,
name: i,
label: a,
help: c,
alwaysShowError: {
maxFileSize: !0
},
children: [zl("div", {
className: "pk-flex pk-gap-4 pk-flex-wrap",
children: ["large" === (null == t ? void 0 : t.upload_style) && re(G.length < l ? null : zl(Pe, {})), G.map((t => (t => zl("div", {
onClick: () => {
var t;
"upload" === p && null !== (t = e.preview_setting) && void 0 !== t && t.preview_open && hu.$emit(H, e.fieldName)
},
className: Rl("pk-relative pk-border pk-flex-none pk-text-sm pk-group", "error" === t.status ? "pk-border-[#DB393A]" : "pk-border-[#d9d9d9]", null != t && t.url ? "pk-border-0" : "", pa() ?
"pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
children: [zl(Tp, {
onClick: e => {
e.stopPropagation(), Q(t)
},
role: "button",
className: "pk-absolute pk--top-3 pk--right-3"
}), null != t && t.url ? x(t) ? zl("img", {
className: Rl("pk-rounded pk-object-contain", pa() ? "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
src: t.url,
alt: t.objectName,
onerror: e => {
throw setTimeout((() => {
Q(t)
}), 20), R.destroy(), R.open({
content: N({
id: "image_upload_fail"
})
}), new Error(N({
id: "image_upload_fail"
}))
}
}) : zl("div", {
className: "pk-flex pk-justify-center pk-items-center pk-h-full",
children: zl("span", {
className: "pk-break-all",
children: t.name
})
}) : zl("div", {
className: Rl({
"pk-text-[#DB393A]": "error" === t.status,
"pk-text-[#292929]/75": "uploading" === t.status
}, "pk-flex pk-justify-center pk-items-center pk-h-full pk-bg-[#F6F6F7] pk-break-all"),
children: "uploading" === t.status ? zl(Pp, {
style: {
transform: "scale(0.3)",
flexShrink: 0
}
}) : "Error"
})]
}))(t))), "large" !== (null == t ? void 0 : t.upload_style) && re(G.length < l ? null : zl(Pe, {})), m && zl(R_, {
className: j_,
title: null,
onClose: () => {
_(!1)
},
closable: !1,
maskClosable: !1,
visible: !0,
children: zl(Kv, {
file: b,
url: O,
onConfirm: te,
onCancel: ee
})
})]
}), G.filter((e => e.url)).map(((e, t) => zl("input", {
ref: X,
type: "hidden",
name: "properties[".concat(o, "_").concat(t + 1, "]"),
value: e.url || ""
}, e.uid)))]
}) : null, j]
})
},
G_ = ["product", "order", "options", "type", "fid", "advance"],
Y_ = {
swatch: _u,
dropdown: Eu,
text: Ju,
date: Qu,
button: eh,
checkbox: yh,
upload: X_,
design: X_
},
q_ = e => {
var {
type: t,
default: n
} = e;
return "text" === t && n ? n : "checkbox" !== t && "button" !== t || null == e || !e.default_selection || null == e ? void 0 : e.default_selection_values
},
K_ = e => {
var {
data: t,
control: n,
setData: r
} = e, [i, o] = dt(!1);
gt((() => {
var e = () => {
o(!i)
};
return hu.$on(D, e), hu.$on(I, e), () => {
hu.$off(D, e), hu.$off(I, e)
}
}), [i]);
var a = bt((() => {
var e = [],
r = {
columnSpan: [],
children: []
},
i = () => {
e.push(zl("div", {
className: "pk-grid pk-gap-x-3 pk-grid-flow-col pk-grid-rows-[auto,auto,auto,auto]",
style: {
"grid-template-columns": r.columnSpan.map((e => "minmax(0px,".concat(e, "fr)"))).join(" ")
},
children: r.children
})), r = {
columnSpan: [],
children: []
}
},
o = (e, t) => {
r.columnSpan.push(1 / e), r.children.push(t)
};
return t.forEach(((t, a) => {
if (!t.isHidden) {
var s, l, {
product: c,
order: u,
options: p,
type: d,
fid: f,
advance: m
} = t,
v = g(t, G_),
_ = d;
if ("text" === d) _ = (null === (s = window) || void 0 === s || null === (l = s.appparakeet_custom_type) || void 0 === l ? void 0 : l[u]) || d;
var {
columns: b = 1
} = m || {}, y = zl(Y_[_], h(h(h({
control: n,
name: c,
visible: !(null != t && t.isHidden),
propertyName: u,
fieldName: f,
options: p,
defaultValue: q_(t)
}, m), v), {}, {
optionData: t,
required: !(!m.required || null != t && t.isHidden),
type: _,
textStyleChange: e => {
(e => {
var n;
e && null != t && null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (t.preview_setting.data.forEach((t => {
t.cards.forEach((n => {
h(h({}, t.cards[0]), e)
}))
})), t.isInit = e.isInit, hu.$emit(z, h(h({}, t), e)))
})(e)
}
}), f);
"dropdown" === d ? (r.columnSpan.reduce(((e, t) => e + t), 0) + 1 / b <= 1 || i(), o(b, y)) : (r.children.length && i(), e.push(y))
}
})), r.children.length && i(), e
}), [n, t, i]);
return {
formDom: a
}
};
function $_() {
return $_ = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, $_.apply(this, arguments)
}
var Z_, J_, Q_, eb, tb = e => Te("svg", $_({
width: 10,
height: 8,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), V_ || (V_ = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M9.477 1.023a.675.675 0 0 1 0 .954l-5 5a.675.675 0 0 1-.954 0l-2.5-2.5a.675.675 0 0 1 .954-.954L4 5.546l4.523-4.523a.675.675 0 0 1 .954 0Z",
fill: "#333",
fillOpacity: .8
}))),
nb = ["text", "upload", "design"],
rb = window.SHOP_PARAMS.finance_symbol,
ib = (null === (Z_ = window) || void 0 === Z_ || null === (J_ = Z_.C_SETTINGS) || void 0 === J_ || null === (Q_ = J_.market) || void 0 === Q_ || null === (eb = Q_.market_price_setting) || void 0 === eb ? void 0 : eb.actual_rate) || 1,
ob = 1e5,
ab = e => {
var {
data: t,
control: n
} = e, {
formatMessage: r
} = vo(), i = t.reduce(((e, t) => {
var i, o;
if (null != t && t.isHidden || null === (i = n._formValues[t.fid]) || void 0 === i || !i.length) return e;
nb.includes(t.type) && Number(t.price) ? e.push({
des: r({
id: "add_price_tip"
}, {
key: '<div class="pk-font-semibold pk-ml-[10px] pk-mr-[10px]">['.concat(t.product, "]</div>"),
price: '\n <div class="pk-font-semibold money pk-ml-[10px] pk-mr-[10px]">\n '.concat(rb).concat((Number(t.price) * ob * ib / ob).toFixed(2), "\n </div>\n ")
})
}) : null === (o = t.options) || void 0 === o || o.forEach((i => {
("dropdown" === t.type ? n._formValues[t.fid] === i.label : n._formValues[t.fid].includes(i.label)) && Number(i.price) && e.push({
des: r({
id: "select_add_price_tip"
}, {
key: '<span class="pk-font-semibold pk-ml-[10px] pk-mr-[10px]">['.concat(t.product, ": ").concat(i.label, "]</span>"),
price: '<span class="money pk-font-semibold pk-ml-[10px] pk-mr-[10px]">'.concat(rb).concat((Number(i.price) * ob * ib / ob).toFixed(2), "</span>")
})
})
}));
return e
}), []);
return !(null == i || !i.length) && zl("div", {
className: Rl("pk-flex pk-flex-col pk-pt-2 pk-pb-1", pa() ? "!pk-text-[13px]" : "!pk-text-[14px]"),
children: null == i ? void 0 : i.map((e => zl("div", {
className: "pk-flex pk-items-center pk-mb-4 last:pk-mb-0",
children: [zl("div", {
className: "pk-flex pk-items-center pk-justify-center pk-mr-2.5 pk-w-4.5 pk-h-4.5 pk-rounded-full pk-bg-[#E6E6E6]/40",
children: zl(tb, {})
}), zl("div", {
className: "pk-flex pk-flex-wrap",
dangerouslySetInnerHTML: {
__html: e.des
}
})]
}, e.fid)))
})
},
sb = "Tab-module_parakeet_comp_tab__Zx-vZ",
lb = "Tab-module_tab_item__tBdan",
cb = "Tab-module_tab_item_active__6rfwe";
c(
'.Tab-module_parakeet_comp_tab__Zx-vZ{display:flex;font-weight:600;margin-bottom:16px}.Tab-module_tab_item__tBdan{border:none;color:rgba(51,51,51,.7);cursor:pointer;flex:1;font-size:18px;height:35px;line-height:130%;position:relative;text-align:center}.Tab-module_tab_item__tBdan:after{background-color:hsla(0,0%,90%,.6);bottom:-2px;content:"";height:2px;left:0;position:absolute;width:100%}.Tab-module_tab_item__tBdan:first-child:after{border-radius:2px 0 0 2px}.Tab-module_tab_item__tBdan:last-child:after{border-radius:0 2px 2px 0}.Tab-module_tab_item_active__6rfwe{color:#333;height:34px}.Tab-module_tab_item_active__6rfwe:after{background-color:#333;border-radius:1px!important;bottom:-3px!important;content:"";height:3px!important;left:0;position:absolute;width:100%}@media screen and (max-width:959px){.Tab-module_parakeet_comp_tab__Zx-vZ{padding:0 16px}.eva .parakeet_comp_tab{padding:0}.hero .parakeet_comp_tab,.nova .parakeet_comp_tab,.wind .parakeet_comp_tab{margin-top:26px}.flash .parakeet_comp_tab{margin-top:26px;padding:0 8px}.flash #app-parakeet{padding:0 10px}.dj_skin_body .parakeet_comp_tab{margin-top:26px}}');
var ub = Rt((e => {
var {
tabs: t,
onChange: n,
value: r
} = e, [i, o] = dt(0);
return gt((() => {
o(r)
}), [r]), zl("div", {
className: Rl(["parakeet_comp_tab", sb]),
children: t.map((e => zl("div", {
className: Rl([
[lb], {
[cb]: i === e
}
]),
onClick: () => {
o(e), n(e)
},
children: e
}, e)))
})
}));
function hb(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = [];
return Nn.Children.forEach(e, (function(e) {
(null != e || t.keepEmpty) && (Array.isArray(e) ? n = n.concat(hb(e)) : jn.exports.isFragment(e) && e.props ? n = n.concat(hb(e.props.children, t)) : n.push(e))
})), n
}
var pb = function() {
if ("undefined" == typeof navigator || "undefined" == typeof window) return !1;
var e = navigator.userAgent || navigator.vendor || window.opera;
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i
.test(e) ||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i
.test(null == e ? void 0 : e.substr(0, 4))
};
function db(e) {
var t = vt();
t.current = e;
var n = yt((function() {
for (var e, n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
return null === (e = t.current) || void 0 === e ? void 0 : e.call.apply(e, [t].concat(r))
}), []);
return n
}
function fb(e) {
return void 0 !== e
}
function gb(e, t) {
var n = t || {},
r = n.defaultValue,
i = n.value,
o = n.onChange,
a = n.postState,
s = Mp(ld((function() {
return fb(i) ? i : fb(r) ? "function" == typeof r ? r() : r : "function" == typeof e ? e() : e
})), 2),
l = s[0],
c = s[1],
u = void 0 !== i ? i : l,
h = a ? a(u) : u,
p = db(o),
d = Mp(ld([u]), 2),
f = d[0],
g = d[1];
return Qv((function() {
var e = f[0];
l !== e && p(l, e)
}), [f]), Qv((function() {
fb(i) || c(i)
}), [i]), [h, db((function(e, t) {
c(e, t), g([u], t)
}))]
}
var mb = new Map;
var vb = new Pl((function(e) {
e.forEach((function(e) {
var t, n = e.target;
null === (t = mb.get(n)) || void 0 === t || t.forEach((function(e) {
return e(n)
}))
}))
}));
var _b = function(e) {
Oh(n, e);
var t = Mh(n);
function n() {
return xh(this, n), t.apply(this, arguments)
}
return Eh(n, [{
key: "render",
value: function() {
return this.props.children
}
}]), n
}(Me),
bb = Qe(null);
function yb(e, t) {
var n = e.children,
r = e.disabled,
i = vt(null),
o = vt(null),
a = wt(bb),
s = "function" == typeof n,
l = s ? n(i) : n,
c = vt({
width: -1,
height: -1,
offsetWidth: -1,
offsetHeight: -1
}),
u = !s && bn(l) && jp(l),
h = u ? l.ref : null,
p = bt((function() {
return Rp(h, i)
}), [h, i]),
d = function() {
return Dp(i.current) || Dp(o.current)
};
_t(t, (function() {
return d()
}));
var f = vt(e);
f.current = e;
var g = yt((function(e) {
var t = f.current,
n = t.onResize,
r = t.data,
i = e.getBoundingClientRect(),
o = i.width,
s = i.height,
l = e.offsetWidth,
u = e.offsetHeight,
h = Math.floor(o),
p = Math.floor(s);
if (c.current.width !== h || c.current.height !== p || c.current.offsetWidth !== l || c.current.offsetHeight !== u) {
var d = {
width: h,
height: p,
offsetWidth: l,
offsetHeight: u
};
c.current = d;
var g = l === Math.round(o) ? o : l,
m = u === Math.round(s) ? s : u,
v = Hh(Hh({}, d), {}, {
offsetWidth: g,
offsetHeight: m
});
null == a || a(v, e, r), n && Promise.resolve().then((function() {
n(v, e)
}))
}
}), []);
return gt((function() {
var e, t, n = d();
return n && !r && (e = n, t = g, mb.has(e) || (mb.set(e, new Set), vb.observe(e)), mb.get(e).add(t)),
function() {
return function(e, t) {
mb.has(e) && (mb.get(e).delete(t), mb.get(e).size || (vb.unobserve(e), mb.delete(e)))
}(n, g)
}
}), [i.current, r]), Te(_b, {
ref: o
}, u ? yn(l, {
ref: p
}) : l)
}
var wb = Ft(yb);
function xb(e, t) {
var n = e.children;
return ("function" == typeof n ? [n] : hb(n)).map((function(n, r) {
var i = (null == n ? void 0 : n.key) || "".concat("rc-observer-key", "-").concat(r);
return Te(wb, wh({}, e, {
key: i,
ref: 0 === r ? t : void 0
}), n)
}))
}
var kb = Ft(xb);
kb.Collection = function(e) {
var t = e.children,
n = e.onBatchResize,
r = vt(0),
i = vt([]),
o = wt(bb),
a = yt((function(e, t, a) {
r.current += 1;
var s = r.current;
i.current.push({
size: e,
element: t,
data: a
}), Promise.resolve().then((function() {
s === r.current && (null == n || n(i.current), i.current = [])
})), null == o || o(e, t, a)
}), [n, o]);
return Te(bb.Provider, {
value: a
}, t)
};
var Cb = kb;
function Sb(e) {
var t = vt(),
n = vt(!1);
return gt((function() {
return function() {
n.current = !0, gd.cancel(t.current)
}
}), []),
function() {
for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
n.current || (gd.cancel(t.current), t.current = gd((function() {
e.apply(void 0, i)
})))
}
}
function Eb(e, t) {
var n, r = e.prefixCls,
i = e.id,
o = e.active,
a = e.tab,
s = a.key,
l = a.tab,
c = a.disabled,
u = a.closeIcon,
h = e.closable,
p = e.renderWrapper,
d = e.removeAriaLabel,
f = e.editable,
g = e.onClick,
m = e.onRemove,
v = e.onFocus,
_ = e.style,
b = "".concat(r, "-tab");
gt((function() {
return m
}), []);
var y = f && !1 !== h && !c;
function w(e) {
c || g(e)
}
var x = Te("div", {
key: s,
ref: t,
className: Rl(b, (n = {}, Dh(n, "".concat(b, "-with-remove"), y), Dh(n, "".concat(b, "-active"), o), Dh(n, "".concat(b, "-disabled"), c), n)),
style: _,
onClick: w
}, Te("div", {
role: "tab",
"aria-selected": o,
id: i && "".concat(i, "-tab-").concat(s),
className: "".concat(b, "-btn"),
"aria-controls": i && "".concat(i, "-panel-").concat(s),
"aria-disabled": c,
tabIndex: c ? null : 0,
onClick: function(e) {
e.stopPropagation(), w(e)
},
onKeyDown: function(e) {
[w_.SPACE, w_.ENTER].includes(e.which) && (e.preventDefault(), w(e))
},
onFocus: v
}, l), y && Te("button", {
type: "button",
"aria-label": d || "remove",
tabIndex: 0,
className: "".concat(b, "-remove"),
onClick: function(e) {
var t;
e.stopPropagation(), (t = e).preventDefault(), t.stopPropagation(), f.onEdit("remove", {
key: s,
event: t
})
}
}, u || f.removeIcon || "×"));
return p ? p(x) : x
}
var Tb = Ft(Eb),
Ob = {
width: 0,
height: 0,
left: 0,
top: 0
};
var Ab = {
width: 0,
height: 0,
left: 0,
top: 0,
right: 0
};
var Pb = function(e, t, n, r) {
var i = n ? n.call(r, e, t) : void 0;
if (void 0 !== i) return !!i;
if (e === t) return !0;
if ("object" != typeof e || !e || "object" != typeof t || !t) return !1;
var o = Object.keys(e),
a = Object.keys(t);
if (o.length !== a.length) return !1;
for (var s = Object.prototype.hasOwnProperty.bind(t), l = 0; l < o.length; l++) {
var c = o[l];
if (!s(c)) return !1;
var u = e[c],
h = t[c];
if (!1 === (i = n ? n.call(r, u, h, c) : void 0) || void 0 === i && u !== h) return !1
}
return !0
},
Mb = ["prefixCls", "invalidate", "item", "renderItem", "responsive", "responsiveDisabled", "registerSize", "itemKey", "className", "style", "children", "display", "order", "component"],
Db = void 0;
function Ib(e, t) {
var n = e.prefixCls,
r = e.invalidate,
i = e.item,
o = e.renderItem,
a = e.responsive,
s = e.responsiveDisabled,
l = e.registerSize,
c = e.itemKey,
u = e.className,
h = e.style,
p = e.children,
d = e.display,
f = e.order,
g = e.component,
m = void 0 === g ? "div" : g,
v = Ih(e, Mb),
_ = a && !d;
function b(e) {
l(c, e)
}
gt((function() {
return function() {
b(null)
}
}), []);
var y, w = o && i !== Db ? o(i) : p;
r || (y = {
opacity: _ ? 0 : 1,
height: _ ? 0 : Db,
overflowY: _ ? "hidden" : Db,
order: a ? f : Db,
pointerEvents: _ ? "none" : Db,
position: _ ? "absolute" : Db
});
var x = {};
_ && (x["aria-hidden"] = !0);
var k = Te(m, wh({
className: Rl(!r && n, u),
style: Hh(Hh({}, y), h)
}, x, v, {
ref: t
}), w);
return a && (k = Te(Cb, {
onResize: function(e) {
b(e.offsetWidth)
},
disabled: s
}, k)), k
}
var Nb = Ft(Ib);
Nb.displayName = "Item";
var Rb = Nb;
var jb = ["component"],
Lb = ["className"],
Fb = ["className"],
Bb = Ft((function(e, t) {
var n = wt(Ub);
if (!n) {
var r = e.component;
return Te(void 0 === r ? "div" : r, wh({}, Ih(e, jb), {
ref: t
}))
}
var i = n.className,
o = Ih(n, Lb),
a = e.className,
s = Ih(e, Fb);
return Te(Ub.Provider, {
value: null
}, Te(Rb, wh({
ref: t,
className: Rl(i, a)
}, o, s)))
}));
Bb.displayName = "RawItem";
var zb = Bb,
Hb = ["prefixCls", "data", "renderItem", "renderRawItem", "itemKey", "itemWidth", "ssr", "style", "className", "maxCount", "renderRest", "renderRawRest", "suffix", "component", "itemComponent", "onVisibleChange"],
Ub = Qe(null),
Wb = "responsive",
Vb = "invalidate";
function Xb(e) {
return "+ ".concat(e.length, " ...")
}
function Gb(e, t) {
var n, r, i, o, a = e.prefixCls,
s = void 0 === a ? "rc-overflow" : a,
l = e.data,
c = void 0 === l ? [] : l,
u = e.renderItem,
h = e.renderRawItem,
p = e.itemKey,
d = e.itemWidth,
f = void 0 === d ? 10 : d,
g = e.ssr,
m = e.style,
v = e.className,
_ = e.maxCount,
b = e.renderRest,
y = e.renderRawRest,
w = e.suffix,
x = e.component,
k = void 0 === x ? "div" : x,
C = e.itemComponent,
S = e.onVisibleChange,
E = Ih(e, Hb),
T = (n = Mp(ld({}), 2)[1], r = vt([]), i = 0, o = 0, function(e) {
var t = i;
return i += 1, r.current.length < t + 1 && (r.current[t] = e), [r.current[t], function(e) {
r.current[t] = "function" == typeof e ? e(r.current[t]) : e, gd.cancel(o), o = gd((function() {
n({}, !0)
}))
}]
}),
O = "full" === g,
A = Mp(T(null), 2),
P = A[0],
M = A[1],
D = P || 0,
I = Mp(T(new Map), 2),
N = I[0],
R = I[1],
j = Mp(T(0), 2),
L = j[0],
F = j[1],
B = Mp(T(0), 2),
z = B[0],
H = B[1],
U = Mp(T(0), 2),
W = U[0],
V = U[1],
X = Mp(dt(null), 2),
G = X[0],
Y = X[1],
q = Mp(dt(null), 2),
K = q[0],
$ = q[1],
Z = bt((function() {
return null === K && O ? Number.MAX_SAFE_INTEGER : K || 0
}), [K, P]),
J = Mp(dt(!1), 2),
Q = J[0],
ee = J[1],
te = "".concat(s, "-item"),
ne = Math.max(L, z),
re = _ === Wb,
ie = c.length && re,
oe = _ === Vb,
ae = ie || "number" == typeof _ && c.length > _,
se = bt((function() {
var e = c;
return ie ? e = null === P && O ? c : c.slice(0, Math.min(c.length, D / f)) : "number" == typeof _ && (e = c.slice(0, _)), e
}), [c, f, P, _, ie]),
le = bt((function() {
return ie ? c.slice(Z + 1) : c.slice(se.length)
}), [c, se, ie, Z]),
ce = yt((function(e, t) {
var n;
return "function" == typeof p ? p(e) : null !== (n = p && (null == e ? void 0 : e[p])) && void 0 !== n ? n : t
}), [p]),
ue = yt(u || function(e) {
return e
}, [u]);
function he(e, t, n) {
(K !== e || void 0 !== t && t !== G) && ($(e), n || (ee(e < c.length - 1), null == S || S(e)), void 0 !== t && Y(t))
}
function pe(e, t) {
R((function(n) {
var r = new Map(n);
return null === t ? r.delete(e) : r.set(e, t), r
}))
}
function de(e) {
return N.get(ce(se[e], e))
}
Jv((function() {
if (D && ne && se) {
var e = W,
t = se.length,
n = t - 1;
if (!t) return void he(0, null);
for (var r = 0; r < t; r += 1) {
var i = de(r);
if (O && (i = i || 0), void 0 === i) {
he(r - 1, void 0, !0);
break
}
if (e += i, 0 === n && e <= D || r === n - 1 && e + de(n) <= D) {
he(n, null);
break
}
if (e + ne > D) {
he(r - 1, e - i - W + z);
break
}
}
w && de(0) + W > D && Y(null)
}
}), [D, N, z, W, ce, se]);
var fe = Q && !!le.length,
ge = {};
null !== G && ie && (ge = {
position: "absolute",
left: G,
top: 0
});
var me, ve = {
prefixCls: te,
responsive: ie,
component: C,
invalidate: oe
},
_e = h ? function(e, t) {
var n = ce(e, t);
return Te(Ub.Provider, {
key: n,
value: Hh(Hh({}, ve), {}, {
order: t,
item: e,
itemKey: n,
registerSize: pe,
display: t <= Z
})
}, h(e, t))
} : function(e, t) {
var n = ce(e, t);
return Te(Rb, wh({}, ve, {
order: t,
key: n,
item: e,
renderItem: ue,
itemKey: n,
registerSize: pe,
display: t <= Z
}))
},
be = {
order: fe ? Z : Number.MAX_SAFE_INTEGER,
className: "".concat(te, "-rest"),
registerSize: function(e, t) {
H(t), F(z)
},
display: fe
};
if (y) y && (me = Te(Ub.Provider, {
value: Hh(Hh({}, ve), be)
}, y(le)));
else {
var ye = b || Xb;
me = Te(Rb, wh({}, ve, be), "function" == typeof ye ? ye(le) : ye)
}
var we = Te(k, wh({
className: Rl(!oe && s, v),
style: m,
ref: t
}, E), se.map(_e), ae ? me : null, w && Te(Rb, wh({}, ve, {
responsive: re,
responsiveDisabled: !ie,
order: Z,
className: "".concat(te, "-suffix"),
registerSize: function(e, t) {
V(t)
},
display: !0,
style: ge
}), w));
return re && (we = Te(Cb, {
onResize: function(e, t) {
M(t.clientWidth)
},
disabled: !ie
}, we)), we
}
var Yb = Ft(Gb);
Yb.displayName = "Overflow", Yb.Item = zb, Yb.RESPONSIVE = Wb, Yb.INVALIDATE = Vb;
var qb = Yb;
function Kb(e, t) {
var n = Hh({}, e);
return Array.isArray(t) && t.forEach((function(e) {
delete n[e]
})), n
}
var $b = ["children", "locked"],
Zb = Qe(null);
function Jb(e) {
var t = e.children,
n = e.locked,
r = Ih(e, $b),
i = wt(Zb),
o = Ip((function() {
return e = r, t = Hh({}, i), Object.keys(e).forEach((function(n) {
var r = e[n];
void 0 !== r && (t[n] = r)
})), t;
var e, t
}), [i, r], (function(e, t) {
return !(n || e[0] === t[0] && Pb(e[1], t[1]))
}));
return Te(Zb.Provider, {
value: o
}, t)
}
function Qb(e, t, n, r) {
var i = wt(Zb),
o = i.activeKey,
a = i.onActive,
s = i.onInactive,
l = {
active: o === e
};
return t || (l.onMouseEnter = function(t) {
null == n || n({
key: e,
domEvent: t
}), a(e)
}, l.onMouseLeave = function(t) {
null == r || r({
key: e,
domEvent: t
}), s(e)
}), l
}
var ey = ["item"];
function ty(e) {
var t = e.item,
n = Ih(e, ey);
return Object.defineProperty(n, "item", {
get: function() {
return ep(!1, "`info.item` is deprecated since we will move to function component that not provides React Node instance in future."), t
}
}), n
}
function ny(e) {
var t = e.icon,
n = e.props,
r = e.children;
return ("function" == typeof t ? Te(t, Hh({}, n)) : t) || r || null
}
function ry(e) {
var t = wt(Zb),
n = t.mode,
r = t.rtl,
i = t.inlineIndent;
if ("inline" !== n) return null;
return r ? {
paddingRight: e * i
} : {
paddingLeft: e * i
}
}
var iy = [],
oy = Qe(null);
function ay() {
return wt(oy)
}
var sy = Qe(iy);
function ly(e) {
var t = wt(sy);
return bt((function() {
return void 0 !== e ? [].concat(Bh(t), [e]) : t
}), [t, e])
}
var cy = Qe(null),
uy = Qe(null);
function hy(e, t) {
return void 0 === e ? null : "".concat(e, "-").concat(t)
}
function py(e) {
return hy(wt(uy), e)
}
var dy = Qe({}),
fy = ["title", "attribute", "elementRef"],
gy = ["style", "className", "eventKey", "warnKey", "disabled", "itemIcon", "children", "role", "onMouseEnter", "onMouseLeave", "onClick", "onKeyDown", "onFocus"],
my = ["active"],
vy = function(e) {
Oh(n, e);
var t = Mh(n);
function n() {
return xh(this, n), t.apply(this, arguments)
}
return Eh(n, [{
key: "render",
value: function() {
var e = this.props,
t = e.title,
n = e.attribute,
r = e.elementRef,
i = Kb(Ih(e, fy), ["eventKey"]);
return ep(!n, "`attribute` of Menu.Item is deprecated. Please pass attribute directly."), Te(qb.Item, wh({}, n, {
title: "string" == typeof t ? t : void 0
}, i, {
ref: r
}))
}
}]), n
}(Me),
_y = function(e) {
var t, n = e.style,
r = e.className,
i = e.eventKey,
o = e.disabled,
a = e.itemIcon,
s = e.children,
l = e.role,
c = e.onMouseEnter,
u = e.onMouseLeave,
h = e.onClick,
p = e.onKeyDown,
d = e.onFocus,
f = Ih(e, gy),
g = py(i),
m = wt(Zb),
v = m.prefixCls,
_ = m.onItemClick,
b = m.disabled,
y = m.overflowDisabled,
w = m.itemIcon,
x = m.selectedKeys,
k = m.onActive,
C = wt(dy)._internalRenderMenuItem,
S = "".concat(v, "-item"),
E = vt(),
T = vt(),
O = b || o,
A = ly(i),
P = function(e) {
return {
key: i,
keyPath: Bh(A).reverse(),
item: E.current,
domEvent: e
}
},
M = a || w,
D = Qb(i, O, c, u),
I = D.active,
N = Ih(D, my),
R = x.includes(i),
j = ry(A.length),
L = {};
"option" === e.role && (L["aria-selected"] = R);
var F = Te(vy, wh({
ref: E,
elementRef: T,
role: null === l ? "none" : l || "menuitem",
tabIndex: o ? null : -1,
"data-menu-id": y && g ? null : g
}, f, N, L, {
component: "li",
"aria-disabled": o,
style: Hh(Hh({}, j), n),
className: Rl(S, (t = {}, Dh(t, "".concat(S, "-active"), I), Dh(t, "".concat(S, "-selected"), R), Dh(t, "".concat(S, "-disabled"), O), t), r),
onClick: function(e) {
if (!O) {
var t = P(e);
null == h || h(ty(t)), _(t)
}
},
onKeyDown: function(e) {
if (null == p || p(e), e.which === w_.ENTER) {
var t = P(e);
null == h || h(ty(t)), _(t)
}
},
onFocus: function(e) {
k(i), null == d || d(e)
}
}), s, Te(ny, {
props: Hh(Hh({}, e), {}, {
isSelected: R
}),
icon: M
}));
return C && (F = C(F, e, {
selected: R
})), F
};
function by(e) {
var t = e.eventKey,
n = ay(),
r = ly(t);
return gt((function() {
if (n) return n.registerPath(t, r),
function() {
n.unregisterPath(t, r)
}
}), [r]), n ? null : Te(_y, e)
}
var yy = ["label", "children", "key", "type"];
function wy(e, t) {
return hb(e).map((function(e, n) {
if (bn(e)) {
var r, i, o = e.key,
a = null !== (r = null === (i = e.props) || void 0 === i ? void 0 : i.eventKey) && void 0 !== r ? r : o;
return null == a && (a = "tmp_key-".concat([].concat(Bh(t), [n]).join("-"))), yn(e, {
key: a,
eventKey: a
})
}
return e
}))
}
function xy(e) {
return (e || []).map((function(e, t) {
if (e && "object" === kh(e)) {
var n = e.label,
r = e.children,
i = e.key,
o = e.type,
a = Ih(e, yy),
s = null != i ? i : "tmp-".concat(t);
return r || "group" === o ? Te("group" === o ? Wx : vx, wh({
key: s
}, a, {
title: n
}), xy(r)) : "divider" === o ? Te(Vx, wh({
key: s
}, a)) : Te(by, wh({
key: s
}, a), n)
}
return null
})).filter((function(e) {
return e
}))
}
function ky(e, t, n) {
var r = e;
return t && (r = xy(t)), wy(r, n)
}
function Cy(e) {
var t = vt(e);
t.current = e;
var n = yt((function() {
for (var e, n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
return null === (e = t.current) || void 0 === e ? void 0 : e.call.apply(e, [t].concat(r))
}), []);
return e ? n : void 0
}
var Sy = ["className", "children"],
Ey = Ft((function(e, t) {
var n = e.className,
r = e.children,
i = Ih(e, Sy),
o = wt(Zb),
a = o.prefixCls,
s = o.mode,
l = o.rtl;
return Te("ul", wh({
className: Rl(a, l && "".concat(a, "-rtl"), "".concat(a, "-sub"), "".concat(a, "-").concat("inline" === s ? "inline" : "vertical"), n)
}, i, {
"data-menu-list": !0,
ref: t
}), r)
}));
Ey.displayName = "SubMenuList";
var Ty = Ey;
function Oy(e, t, n, r) {
var i = Nn.unstable_batchedUpdates ? function(e) {
Nn.unstable_batchedUpdates(n, e)
} : n;
return e.addEventListener && e.addEventListener(t, i, r), {
remove: function() {
e.removeEventListener && e.removeEventListener(t, i, r)
}
}
}
var Ay, Py = Ft((function(e, t) {
var n = e.didUpdate,
r = e.getContainer,
i = e.children,
o = vt(),
a = vt();
_t(t, (function() {
return {}
}));
var s = vt(!1);
return !s.current && Lp() && (a.current = r(), o.current = a.current.parentNode, s.current = !0), gt((function() {
null == n || n(e)
})), gt((function() {
return null === a.current.parentNode && null !== o.current && o.current.appendChild(a.current),
function() {
var e, t;
null === (e = a.current) || void 0 === e || null === (t = e.parentNode) || void 0 === t || t.removeChild(a.current)
}
}), []), a.current ? Nn.createPortal(i, a.current) : null
})),
My = Py;
function Dy(e, t, n) {
return n ? e[0] === t[0] : e[0] === t[0] && e[1] === t[1]
}
function Iy(e) {
var t = e.prefixCls,
n = e.motion,
r = e.animation,
i = e.transitionName;
return n || (r ? {
motionName: "".concat(t, "-").concat(r)
} : i ? {
motionName: i
} : null)
}
function Ny(e) {
var t = e.prefixCls,
n = e.visible,
r = e.zIndex,
i = e.mask,
o = e.maskMotion,
a = e.maskAnimation,
s = e.maskTransitionName;
if (!i) return null;
var l = {};
return (o || s || a) && (l = Hh({
motionAppear: !0
}, Iy({
motion: o,
prefixCls: t,
transitionName: s,
animation: a
}))), Te(Sd, wh({}, l, {
visible: n,
removeOnLeave: !0
}), (function(e) {
var n = e.className;
return Te("div", {
style: {
zIndex: r
},
className: Rl("".concat(t, "-mask"), n)
})
}))
}
function Ry(e, t) {
var n = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);
t && (r = r.filter((function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable
}))), n.push.apply(n, r)
}
return n
}
function jy(e) {
for (var t = 1; t < arguments.length; t++) {
var n = null != arguments[t] ? arguments[t] : {};
t % 2 ? Ry(Object(n), !0).forEach((function(t) {
Fy(e, t, n[t])
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Ry(Object(n)).forEach((function(t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
}))
}
return e
}
function Ly(e) {
return Ly = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
return typeof e
} : function(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
}, Ly(e)
}
function Fy(e, t, n) {
return t in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n, e
}
var By = {
Webkit: "-webkit-",
Moz: "-moz-",
ms: "-ms-",
O: "-o-"
};
function zy() {
if (void 0 !== Ay) return Ay;
Ay = "";
var e = document.createElement("p").style;
for (var t in By) t + "Transform" in e && (Ay = t);
return Ay
}
function Hy() {
return zy() ? "".concat(zy(), "TransitionProperty") : "transitionProperty"
}
function Uy() {
return zy() ? "".concat(zy(), "Transform") : "transform"
}
function Wy(e, t) {
var n = Hy();
n && (e.style[n] = t, "transitionProperty" !== n && (e.style.transitionProperty = t))
}
function Vy(e, t) {
var n = Uy();
n && (e.style[n] = t, "transform" !== n && (e.style.transform = t))
}
var Xy, Gy = /matrix\((.*)\)/,
Yy = /matrix3d\((.*)\)/;
function qy(e) {
var t = e.style.display;
e.style.display = "none", e.style.display = t
}
function Ky(e, t, n) {
var r = n;
if ("object" !== Ly(t)) return void 0 !== r ? ("number" == typeof r && (r = "".concat(r, "px")), void(e.style[t] = r)) : Xy(e, t);
for (var i in t) t.hasOwnProperty(i) && Ky(e, i, t[i])
}
function $y(e, t) {
var n = e["page".concat(t ? "Y" : "X", "Offset")],
r = "scroll".concat(t ? "Top" : "Left");
if ("number" != typeof n) {
var i = e.document;
"number" != typeof(n = i.documentElement[r]) && (n = i.body[r])
}
return n
}
function Zy(e) {
return $y(e)
}
function Jy(e) {
return $y(e, !0)
}
function Qy(e) {
var t = function(e) {
var t, n, r, i = e.ownerDocument,
o = i.body,
a = i && i.documentElement;
return t = e.getBoundingClientRect(), n = Math.floor(t.left), r = Math.floor(t.top), {
left: n -= a.clientLeft || o.clientLeft || 0,
top: r -= a.clientTop || o.clientTop || 0
}
}(e),
n = e.ownerDocument,
r = n.defaultView || n.parentWindow;
return t.left += Zy(r), t.top += Jy(r), t
}
function ew(e) {
return null != e && e == e.window
}
function tw(e) {
return ew(e) ? e.document : 9 === e.nodeType ? e : e.ownerDocument
}
var nw = new RegExp("^(".concat(/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, ")(?!px)[a-z%]+$"), "i"),
rw = /^(top|right|bottom|left)$/,
iw = "currentStyle",
ow = "runtimeStyle",
aw = "left";
function sw(e, t) {
return "left" === e ? t.useCssRight ? "right" : e : t.useCssBottom ? "bottom" : e
}
function lw(e) {
return "left" === e ? "right" : "right" === e ? "left" : "top" === e ? "bottom" : "bottom" === e ? "top" : void 0
}
function cw(e, t, n) {
"static" === Ky(e, "position") && (e.style.position = "relative");
var r = -999,
i = -999,
o = sw("left", n),
a = sw("top", n),
s = lw(o),
l = lw(a);
"left" !== o && (r = 999), "top" !== a && (i = 999);
var c, u = "",
h = Qy(e);
("left" in t || "top" in t) && (u = (c = e).style.transitionProperty || c.style[Hy()] || "", Wy(e, "none")), "left" in t && (e.style[s] = "", e.style[o] = "".concat(r, "px")), "top" in t && (e.style[l] = "", e.style[a] = "".concat(i,
"px")), qy(e);
var p = Qy(e),
d = {};
for (var f in t)
if (t.hasOwnProperty(f)) {
var g = sw(f, n),
m = "left" === f ? r : i,
v = h[f] - p[f];
d[g] = g === f ? m + v : m - v
} Ky(e, d), qy(e), ("left" in t || "top" in t) && Wy(e, u);
var _ = {};
for (var b in t)
if (t.hasOwnProperty(b)) {
var y = sw(b, n),
w = t[b] - h[b];
_[y] = b === y ? d[y] + w : d[y] - w
} Ky(e, _)
}
function uw(e, t) {
var n = Qy(e),
r = function(e) {
var t = window.getComputedStyle(e, null),
n = t.getPropertyValue("transform") || t.getPropertyValue(Uy());
if (n && "none" !== n) {
var r = n.replace(/[^0-9\-.,]/g, "").split(",");
return {
x: parseFloat(r[12] || r[4], 0),
y: parseFloat(r[13] || r[5], 0)
}
}
return {
x: 0,
y: 0
}
}(e),
i = {
x: r.x,
y: r.y
};
"left" in t && (i.x = r.x + t.left - n.left), "top" in t && (i.y = r.y + t.top - n.top),
function(e, t) {
var n = window.getComputedStyle(e, null),
r = n.getPropertyValue("transform") || n.getPropertyValue(Uy());
if (r && "none" !== r) {
var i, o = r.match(Gy);
o ? ((i = (o = o[1]).split(",").map((function(e) {
return parseFloat(e, 10)
})))[4] = t.x, i[5] = t.y, Vy(e, "matrix(".concat(i.join(","), ")"))) : ((i = r.match(Yy)[1].split(",").map((function(e) {
return parseFloat(e, 10)
})))[12] = t.x, i[13] = t.y, Vy(e, "matrix3d(".concat(i.join(","), ")")))
} else Vy(e, "translateX(".concat(t.x, "px) translateY(").concat(t.y, "px) translateZ(0)"))
}(e, i)
}
function hw(e, t) {
for (var n = 0; n < e.length; n++) t(e[n])
}
function pw(e) {
return "border-box" === Xy(e, "boxSizing")
}
"undefined" != typeof window && (Xy = window.getComputedStyle ? function(e, t, n) {
var r = n,
i = "",
o = tw(e);
return (r = r || o.defaultView.getComputedStyle(e, null)) && (i = r.getPropertyValue(t) || r[t]), i
} : function(e, t) {
var n = e[iw] && e[iw][t];
if (nw.test(n) && !rw.test(t)) {
var r = e.style,
i = r[aw],
o = e[ow][aw];
e[ow][aw] = e[iw][aw], r[aw] = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + "px", r[aw] = i, e[ow][aw] = o
}
return "" === n ? "auto" : n
});
var dw = ["margin", "border", "padding"],
fw = -1,
gw = 2,
mw = 1;
function vw(e, t, n) {
var r, i, o, a = 0;
for (i = 0; i < t.length; i++)
if (r = t[i])
for (o = 0; o < n.length; o++) {
var s = void 0;
s = "border" === r ? "".concat(r).concat(n[o], "Width") : r + n[o], a += parseFloat(Xy(e, s)) || 0
}
return a
}
var _w = {
getParent: function(e) {
var t = e;
do {
t = 11 === t.nodeType && t.host ? t.host : t.parentNode
} while (t && 1 !== t.nodeType && 9 !== t.nodeType);
return t
}
};
function bw(e, t, n) {
var r = n;
if (ew(e)) return "width" === t ? _w.viewportWidth(e) : _w.viewportHeight(e);
if (9 === e.nodeType) return "width" === t ? _w.docWidth(e) : _w.docHeight(e);
var i = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"],
o = "width" === t ? Math.floor(e.getBoundingClientRect().width) : Math.floor(e.getBoundingClientRect().height),
a = pw(e),
s = 0;
(null == o || o <= 0) && (o = void 0, (null == (s = Xy(e, t)) || Number(s) < 0) && (s = e.style[t] || 0), s = Math.floor(parseFloat(s)) || 0), void 0 === r && (r = a ? mw : fw);
var l = void 0 !== o || a,
c = o || s;
return r === fw ? l ? c - vw(e, ["border", "padding"], i) : s : l ? r === mw ? c : c + (r === gw ? -vw(e, ["border"], i) : vw(e, ["margin"], i)) : s + vw(e, dw.slice(r), i)
}
hw(["Width", "Height"], (function(e) {
_w["doc".concat(e)] = function(t) {
var n = t.document;
return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], _w["viewport".concat(e)](n))
}, _w["viewport".concat(e)] = function(t) {
var n = "client".concat(e),
r = t.document,
i = r.body,
o = r.documentElement[n];
return "CSS1Compat" === r.compatMode && o || i && i[n] || o
}
}));
var yw = {
position: "absolute",
visibility: "hidden",
display: "block"
};
function ww() {
for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
var r, i = t[0];
return 0 !== i.offsetWidth ? r = bw.apply(void 0, t) : function(e, t, n) {
var r, i = {},
o = e.style;
for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]);
for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r])
}(i, yw, (function() {
r = bw.apply(void 0, t)
})), r
}
function xw(e, t) {
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
return e
}
hw(["width", "height"], (function(e) {
var t = e.charAt(0).toUpperCase() + e.slice(1);
_w["outer".concat(t)] = function(t, n) {
return t && ww(t, e, n ? 0 : mw)
};
var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"];
_w[e] = function(t, r) {
var i = r;
return void 0 !== i ? t ? (pw(t) && (i += vw(t, ["padding", "border"], n)), Ky(t, e, i)) : void 0 : t && ww(t, e, fw)
}
}));
var kw = {
getWindow: function(e) {
if (e && e.document && e.setTimeout) return e;
var t = e.ownerDocument || e;
return t.defaultView || t.parentWindow
},
getDocument: tw,
offset: function(e, t, n) {
if (void 0 === t) return Qy(e);
! function(e, t, n) {
if (n.ignoreShake) {
var r = Qy(e),
i = r.left.toFixed(0),
o = r.top.toFixed(0),
a = t.left.toFixed(0),
s = t.top.toFixed(0);
if (i === a && o === s) return
}
n.useCssRight || n.useCssBottom ? cw(e, t, n) : n.useCssTransform && Uy() in document.body.style ? uw(e, t) : cw(e, t, n)
}(e, t, n || {})
},
isWindow: ew,
each: hw,
css: Ky,
clone: function(e) {
var t, n = {};
for (t in e) e.hasOwnProperty(t) && (n[t] = e[t]);
if (e.overflow)
for (t in e) e.hasOwnProperty(t) && (n.overflow[t] = e.overflow[t]);
return n
},
mix: xw,
getWindowScrollLeft: function(e) {
return Zy(e)
},
getWindowScrollTop: function(e) {
return Jy(e)
},
merge: function() {
for (var e = {}, t = 0; t < arguments.length; t++) kw.mix(e, t < 0 || arguments.length <= t ? void 0 : arguments[t]);
return e
},
viewportWidth: 0,
viewportHeight: 0
};
xw(kw, _w);
var Cw = kw.getParent;
function Sw(e) {
if (kw.isWindow(e) || 9 === e.nodeType) return null;
var t, n = kw.getDocument(e).body,
r = kw.css(e, "position");
if (!("fixed" === r || "absolute" === r)) return "html" === e.nodeName.toLowerCase() ? null : Cw(e);
for (t = Cw(e); t && t !== n && 9 !== t.nodeType; t = Cw(t))
if ("static" !== (r = kw.css(t, "position"))) return t;
return null
}
var Ew = kw.getParent;
function Tw(e, t) {
for (var n = {
left: 0,
right: 1 / 0,
top: 0,
bottom: 1 / 0
}, r = Sw(e), i = kw.getDocument(e), o = i.defaultView || i.parentWindow, a = i.body, s = i.documentElement; r;) {
if (-1 !== navigator.userAgent.indexOf("MSIE") && 0 === r.clientWidth || r === a || r === s || "visible" === kw.css(r, "overflow")) {
if (r === a || r === s) break
} else {
var l = kw.offset(r);
l.left += r.clientLeft, l.top += r.clientTop, n.top = Math.max(n.top, l.top), n.right = Math.min(n.right, l.left + r.clientWidth), n.bottom = Math.min(n.bottom, l.top + r.clientHeight), n.left = Math.max(n.left, l.left)
}
r = Sw(r)
}
var c = null;
kw.isWindow(e) || 9 === e.nodeType || (c = e.style.position, "absolute" === kw.css(e, "position") && (e.style.position = "fixed"));
var u = kw.getWindowScrollLeft(o),
h = kw.getWindowScrollTop(o),
p = kw.viewportWidth(o),
d = kw.viewportHeight(o),
f = s.scrollWidth,
g = s.scrollHeight,
m = window.getComputedStyle(a);
if ("hidden" === m.overflowX && (f = o.innerWidth), "hidden" === m.overflowY && (g = o.innerHeight), e.style && (e.style.position = c), t || function(e) {
if (kw.isWindow(e) || 9 === e.nodeType) return !1;
var t = kw.getDocument(e),
n = t.body,
r = null;
for (r = Ew(e); r && r !== n && r !== t; r = Ew(r))
if ("fixed" === kw.css(r, "position")) return !0;
return !1
}(e)) n.left = Math.max(n.left, u), n.top = Math.max(n.top, h), n.right = Math.min(n.right, u + p), n.bottom = Math.min(n.bottom, h + d);
else {
var v = Math.max(f, u + p);
n.right = Math.min(n.right, v);
var _ = Math.max(g, h + d);
n.bottom = Math.min(n.bottom, _)
}
return n.top >= 0 && n.left >= 0 && n.bottom > n.top && n.right > n.left ? n : null
}
function Ow(e) {
var t, n, r;
if (kw.isWindow(e) || 9 === e.nodeType) {
var i = kw.getWindow(e);
t = {
left: kw.getWindowScrollLeft(i),
top: kw.getWindowScrollTop(i)
}, n = kw.viewportWidth(i), r = kw.viewportHeight(i)
} else t = kw.offset(e), n = kw.outerWidth(e), r = kw.outerHeight(e);
return t.width = n, t.height = r, t
}
function Aw(e, t) {
var n = t.charAt(0),
r = t.charAt(1),
i = e.width,
o = e.height,
a = e.left,
s = e.top;
return "c" === n ? s += o / 2 : "b" === n && (s += o), "c" === r ? a += i / 2 : "r" === r && (a += i), {
left: a,
top: s
}
}
function Pw(e, t, n, r, i) {
var o = Aw(t, n[1]),
a = Aw(e, n[0]),
s = [a.left - o.left, a.top - o.top];
return {
left: Math.round(e.left - s[0] + r[0] - i[0]),
top: Math.round(e.top - s[1] + r[1] - i[1])
}
}
function Mw(e, t, n) {
return e.left < n.left || e.left + t.width > n.right
}
function Dw(e, t, n) {
return e.top < n.top || e.top + t.height > n.bottom
}
function Iw(e, t, n) {
var r = [];
return kw.each(e, (function(e) {
r.push(e.replace(t, (function(e) {
return n[e]
})))
})), r
}
function Nw(e, t) {
return e[t] = -e[t], e
}
function Rw(e, t) {
return (/%$/.test(e) ? parseInt(e.substring(0, e.length - 1), 10) / 100 * t : parseInt(e, 10)) || 0
}
function jw(e, t) {
e[0] = Rw(e[0], t.width), e[1] = Rw(e[1], t.height)
}
function Lw(e, t, n, r) {
var i = n.points,
o = n.offset || [0, 0],
a = n.targetOffset || [0, 0],
s = n.overflow,
l = n.source || e;
o = [].concat(o), a = [].concat(a);
var c = {},
u = 0,
h = Tw(l, !(!(s = s || {}) || !s.alwaysByViewport)),
p = Ow(l);
jw(o, p), jw(a, t);
var d = Pw(p, t, i, o, a),
f = kw.merge(p, d);
if (h && (s.adjustX || s.adjustY) && r) {
if (s.adjustX && Mw(d, p, h)) {
var g = Iw(i, /[lr]/gi, {
l: "r",
r: "l"
}),
m = Nw(o, 0),
v = Nw(a, 0);
(function(e, t, n) {
return e.left > n.right || e.left + t.width < n.left
})(Pw(p, t, g, m, v), p, h) || (u = 1, i = g, o = m, a = v)
}
if (s.adjustY && Dw(d, p, h)) {
var _ = Iw(i, /[tb]/gi, {
t: "b",
b: "t"
}),
b = Nw(o, 1),
y = Nw(a, 1);
(function(e, t, n) {
return e.top > n.bottom || e.top + t.height < n.top
})(Pw(p, t, _, b, y), p, h) || (u = 1, i = _, o = b, a = y)
}
u && (d = Pw(p, t, i, o, a), kw.mix(f, d));
var w = Mw(d, p, h),
x = Dw(d, p, h);
if (w || x) {
var k = i;
w && (k = Iw(i, /[lr]/gi, {
l: "r",
r: "l"
})), x && (k = Iw(i, /[tb]/gi, {
t: "b",
b: "t"
})), i = k, o = n.offset || [0, 0], a = n.targetOffset || [0, 0]
}
c.adjustX = s.adjustX && w, c.adjustY = s.adjustY && x, (c.adjustX || c.adjustY) && (f = function(e, t, n, r) {
var i = kw.clone(e),
o = {
width: t.width,
height: t.height
};
return r.adjustX && i.left < n.left && (i.left = n.left), r.resizeWidth && i.left >= n.left && i.left + o.width > n.right && (o.width -= i.left + o.width - n.right), r.adjustX && i.left + o.width > n.right && (i.left = Math.max(
n.right - o.width, n.left)), r.adjustY && i.top < n.top && (i.top = n.top), r.resizeHeight && i.top >= n.top && i.top + o.height > n.bottom && (o.height -= i.top + o.height - n.bottom), r.adjustY && i.top + o.height > n
.bottom && (i.top = Math.max(n.bottom - o.height, n.top)), kw.mix(i, o)
}(d, p, h, c))
}
return f.width !== p.width && kw.css(l, "width", kw.width(l) + f.width - p.width), f.height !== p.height && kw.css(l, "height", kw.height(l) + f.height - p.height), kw.offset(l, {
left: f.left,
top: f.top
}, {
useCssRight: n.useCssRight,
useCssBottom: n.useCssBottom,
useCssTransform: n.useCssTransform,
ignoreShake: n.ignoreShake
}), {
points: i,
offset: o,
targetOffset: a,
overflow: c
}
}
function Fw(e, t, n) {
var r = n.target || t,
i = Ow(r),
o = ! function(e, t) {
var n = Tw(e, t),
r = Ow(e);
return !n || r.left + r.width <= n.left || r.top + r.height <= n.top || r.left >= n.right || r.top >= n.bottom
}(r, n.overflow && n.overflow.alwaysByViewport);
return Lw(e, i, n, o)
}
function Bw(e, t) {
var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
r = new Set;
return function e(t, i) {
var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
a = r.has(t);
if (ep(!a, "Warning: There may be circular references"), a) return !1;
if (t === i) return !0;
if (n && o > 1) return !1;
r.add(t);
var s = o + 1;
if (Array.isArray(t)) {
if (!Array.isArray(i) || t.length !== i.length) return !1;
for (var l = 0; l < t.length; l++)
if (!e(t[l], i[l], s)) return !1;
return !0
}
if (t && i && "object" === kh(t) && "object" === kh(i)) {
var c = Object.keys(t);
return c.length === Object.keys(i).length && c.every((function(n) {
return e(t[n], i[n], s)
}))
}
return !1
}(e, t)
}
Fw.__getOffsetParent = Sw, Fw.__getVisibleRectForElement = Tw;
var zw = function(e) {
if (!e) return !1;
if (e instanceof HTMLElement && e.offsetParent) return !0;
if (e instanceof SVGGraphicsElement && e.getBBox) {
var t = e.getBBox(),
n = t.width,
r = t.height;
if (n || r) return !0
}
if (e instanceof HTMLElement && e.getBoundingClientRect) {
var i = e.getBoundingClientRect(),
o = i.width,
a = i.height;
if (o || a) return !0
}
return !1
};
function Hw(e, t) {
var n = null,
r = null;
var i = new Pl((function(e) {
var i = Mp(e, 1)[0].target;
if (document.documentElement.contains(i)) {
var o = i.getBoundingClientRect(),
a = o.width,
s = o.height,
l = Math.floor(a),
c = Math.floor(s);
n === l && r === c || Promise.resolve().then((function() {
t({
width: l,
height: c
})
})), n = l, r = c
}
}));
return e && i.observe(e),
function() {
i.disconnect()
}
}
function Uw(e) {
return "function" != typeof e ? null : e()
}
function Ww(e) {
return "object" === kh(e) && e ? e : null
}
var Vw = function(e, t) {
var n = e.children,
r = e.disabled,
i = e.target,
o = e.align,
a = e.onAlign,
s = e.monitorWindowResize,
l = e.monitorBufferTime,
c = void 0 === l ? 0 : l,
u = Nn.useRef({}),
h = Nn.useRef(),
p = Nn.Children.only(n),
d = Nn.useRef({});
d.current.disabled = r, d.current.target = i, d.current.align = o, d.current.onAlign = a;
var f = function(e, t) {
var n = Nn.useRef(!1),
r = Nn.useRef(null);
function i() {
window.clearTimeout(r.current)
}
return [function o(a) {
if (i(), n.current && !0 !== a) r.current = window.setTimeout((function() {
n.current = !1, o()
}), t);
else {
if (!1 === e(a)) return;
n.current = !0, r.current = window.setTimeout((function() {
n.current = !1
}), t)
}
}, function() {
n.current = !1, i()
}]
}((function() {
var e = d.current,
t = e.disabled,
n = e.target,
r = e.align,
i = e.onAlign,
o = h.current;
if (!t && n && o) {
var a, s = Uw(n),
l = Ww(n);
u.current.element = s, u.current.point = l, u.current.align = r;
var c = document.activeElement;
return s && zw(s) ? a = Fw(o, s, r) : l && (a = function(e, t, n) {
var r, i, o = kw.getDocument(e),
a = o.defaultView || o.parentWindow,
s = kw.getWindowScrollLeft(a),
l = kw.getWindowScrollTop(a),
c = kw.viewportWidth(a),
u = kw.viewportHeight(a),
h = {
left: r = "pageX" in t ? t.pageX : s + t.clientX,
top: i = "pageY" in t ? t.pageY : l + t.clientY,
width: 0,
height: 0
},
p = r >= 0 && r <= s + c && i >= 0 && i <= l + u,
d = [n.points[0], "cc"];
return Lw(e, h, jy(jy({}, n), {}, {
points: d
}), p)
}(o, l, r)),
function(e, t) {
e !== document.activeElement && t_(t, e) && "function" == typeof e.focus && e.focus()
}(c, o), i && a && i(o, a), !0
}
return !1
}), c),
g = Mp(f, 2),
m = g[0],
v = g[1],
_ = Mp(Nn.useState(), 2),
b = _[0],
y = _[1],
w = Mp(Nn.useState(), 2),
x = w[0],
k = w[1];
return Jv((function() {
y(Uw(i)), k(Ww(i))
})), Nn.useEffect((function() {
var e, t;
u.current.element === b && ((e = u.current.point) === (t = x) || e && t && ("pageX" in t && "pageY" in t ? e.pageX === t.pageX && e.pageY === t.pageY : "clientX" in t && "clientY" in t && e.clientX === t.clientX && e
.clientY === t.clientY)) && Bw(u.current.align, o) || m()
})), Nn.useEffect((function() {
return Hw(h.current, m)
}), [h.current]), Nn.useEffect((function() {
return Hw(b, m)
}), [b]), Nn.useEffect((function() {
r ? v() : m()
}), [r]), Nn.useEffect((function() {
if (s) return Oy(window, "resize", m).remove
}), [s]), Nn.useEffect((function() {
return function() {
v()
}
}), []), Nn.useImperativeHandle(t, (function() {
return {
forceAlign: function() {
return m(!0)
}
}
})), Nn.isValidElement(p) && (p = Nn.cloneElement(p, {
ref: Rp(p.ref, h)
})), p
},
Xw = Nn.forwardRef(Vw);
Xw.displayName = "Align";
var Gw = Xw,
Yw = ["measure", "alignPre", "align", null, "motion"],
qw = Ft((function(e, t) {
var n = e.visible,
r = e.prefixCls,
i = e.className,
o = e.style,
a = e.children,
s = e.zIndex,
l = e.stretch,
c = e.destroyPopupOnHide,
u = e.forceRender,
h = e.align,
p = e.point,
d = e.getRootDomNode,
f = e.getClassNameFromAlign,
g = e.onAlign,
m = e.onMouseEnter,
v = e.onMouseLeave,
_ = e.onMouseDown,
b = e.onTouchStart,
y = e.onClick,
w = vt(),
x = vt(),
k = Mp(dt(), 2),
C = k[0],
S = k[1],
E = function(e) {
var t = Mp(dt({
width: 0,
height: 0
}), 2),
n = t[0],
r = t[1],
i = bt((function() {
var t = {};
if (e) {
var r = n.width,
i = n.height; - 1 !== e.indexOf("height") && i ? t.height = i : -1 !== e.indexOf("minHeight") && i && (t.minHeight = i), -1 !== e.indexOf("width") && r ? t.width = r : -1 !== e.indexOf("minWidth") && r && (t
.minWidth = r)
}
return t
}), [e, n]);
return [i, function(e) {
var t = e.offsetWidth,
n = e.offsetHeight,
i = e.getBoundingClientRect(),
o = i.width,
a = i.height;
Math.abs(t - o) < 1 && Math.abs(n - a) < 1 && (t = o, n = a), r({
width: t,
height: n
})
}]
}(l),
T = Mp(E, 2),
O = T[0],
A = T[1];
var P = function(e, t) {
var n = Mp(ld(null), 2),
r = n[0],
i = n[1],
o = vt();
function a(e) {
i(e, !0)
}
function s() {
gd.cancel(o.current)
}
return gt((function() {
a("measure")
}), [e]), gt((function() {
"measure" === r && t(), r && (o.current = gd(jh(Nh().mark((function e() {
var t, n;
return Nh().wrap((function(e) {
for (;;) switch (e.prev = e.next) {
case 0:
t = Yw.indexOf(r), (n = Yw[t + 1]) && -1 !== t && a(n);
case 3:
case "end":
return e.stop()
}
}), e)
})))))
}), [r]), gt((function() {
return function() {
s()
}
}), []), [r, function(e) {
s(), o.current = gd((function() {
a((function(e) {
switch (r) {
case "align":
return "motion";
case "motion":
return "stable"
}
return e
})), null == e || e()
}))
}]
}(n, (function() {
l && A(d())
})),
M = Mp(P, 2),
D = M[0],
I = M[1],
N = Mp(dt(0), 2),
R = N[0],
j = N[1],
L = vt();
function F() {
var e;
null === (e = w.current) || void 0 === e || e.forceAlign()
}
function B(e, t) {
var n = f(t);
C !== n && S(n), j((function(e) {
return e + 1
})), "align" === D && (null == g || g(e, t))
}
Jv((function() {
"alignPre" === D && j(0)
}), [D]), Jv((function() {
"align" === D && (R < 3 ? F() : I((function() {
var e;
null === (e = L.current) || void 0 === e || e.call(L)
})))
}), [R]);
var z = Hh({}, Iy(e));
function H() {
return new Promise((function(e) {
L.current = e
}))
} ["onAppearEnd", "onEnterEnd", "onLeaveEnd"].forEach((function(e) {
var t = z[e];
z[e] = function(e, n) {
return I(), null == t ? void 0 : t(e, n)
}
})), gt((function() {
z.motionName || "motion" !== D || I()
}), [z.motionName, D]), _t(t, (function() {
return {
forceAlign: F,
getElement: function() {
return x.current
}
}
}));
var U = Hh(Hh({}, O), {}, {
zIndex: s,
opacity: "motion" !== D && "stable" !== D && n ? 0 : void 0,
pointerEvents: n || "stable" === D ? void 0 : "none"
}, o),
W = !0;
null == h || !h.points || "align" !== D && "stable" !== D || (W = !1);
var V = a;
return zt.count(a) > 1 && (V = Te("div", {
className: "".concat(r, "-content")
}, a)), Te(Sd, wh({
visible: n,
ref: x,
leavedClassName: "".concat(r, "-hidden")
}, z, {
onAppearPrepare: H,
onEnterPrepare: H,
removeOnLeave: c,
forceRender: u
}), (function(e, t) {
var n = e.className,
o = e.style,
a = Rl(r, i, C, n);
return Te(Gw, {
target: p || d,
key: "popup",
ref: w,
monitorWindowResize: !0,
disabled: W,
align: h,
onAlign: B
}, Te("div", {
ref: t,
className: a,
onMouseEnter: m,
onMouseLeave: v,
onMouseDownCapture: _,
onTouchStartCapture: b,
onClick: y,
style: Hh(Hh({}, o), U)
}, V))
}))
}));
qw.displayName = "PopupInner";
var Kw = qw,
$w = Ft((function(e, t) {
var n = e.prefixCls,
r = e.visible,
i = e.zIndex,
o = e.children,
a = e.mobile,
s = (a = void 0 === a ? {} : a).popupClassName,
l = a.popupStyle,
c = a.popupMotion,
u = void 0 === c ? {} : c,
h = a.popupRender,
p = e.onClick,
d = vt();
_t(t, (function() {
return {
forceAlign: function() {},
getElement: function() {
return d.current
}
}
}));
var f = Hh({
zIndex: i
}, l),
g = o;
return zt.count(o) > 1 && (g = Te("div", {
className: "".concat(n, "-content")
}, o)), h && (g = h(g)), Te(Sd, wh({
visible: r,
ref: d,
removeOnLeave: !0
}, u), (function(e, t) {
var r = e.className,
i = e.style;
return Te("div", {
ref: t,
className: Rl(n, s, r),
onClick: p,
style: Hh(Hh({}, i), f)
}, g)
}))
}));
$w.displayName = "MobilePopupInner";
var Zw = $w,
Jw = ["visible", "mobile"],
Qw = Ft((function(e, t) {
var n = e.visible,
r = e.mobile,
i = Ih(e, Jw),
o = Mp(dt(n), 2),
a = o[0],
s = o[1],
l = Mp(dt(!1), 2),
c = l[0],
u = l[1],
h = Hh(Hh({}, i), {}, {
visible: a
});
gt((function() {
s(n), n && r && u(pb())
}), [n, r]);
var p = c ? Te(Zw, wh({}, h, {
mobile: r,
ref: t
})) : Te(Kw, wh({}, h, {
ref: t
}));
return Te("div", null, Te(Ny, h), p)
}));
Qw.displayName = "Popup";
var ex = Qw,
tx = Qe(null);
function nx() {}
function rx() {
return ""
}
function ix(e) {
return e ? e.ownerDocument : window.document
}
var ox = ["onClick", "onMouseDown", "onTouchStart", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur", "onContextMenu"];
var ax = function(e) {
var t = function(t) {
Oh(r, t);
var n = Mh(r);
function r(e) {
var t, i;
return xh(this, r), Dh(Ph(t = n.call(this, e)), "popupRef", Ae()), Dh(Ph(t), "triggerRef", Ae()), Dh(Ph(t), "portalContainer", void 0), Dh(Ph(t), "attachId", void 0), Dh(Ph(t), "clickOutsideHandler", void 0), Dh(Ph(t),
"touchOutsideHandler", void 0), Dh(Ph(t), "contextMenuOutsideHandler1", void 0), Dh(Ph(t), "contextMenuOutsideHandler2", void 0), Dh(Ph(t), "mouseDownTimeout", void 0), Dh(Ph(t), "focusTime", void 0), Dh(Ph(t),
"preClickTime", void 0), Dh(Ph(t), "preTouchTime", void 0), Dh(Ph(t), "delayTimer", void 0), Dh(Ph(t), "hasPopupMouseDown", void 0), Dh(Ph(t), "onMouseEnter", (function(e) {
var n = t.props.mouseEnterDelay;
t.fireEvents("onMouseEnter", e), t.delaySetPopupVisible(!0, n, n ? null : e)
})), Dh(Ph(t), "onMouseMove", (function(e) {
t.fireEvents("onMouseMove", e), t.setPoint(e)
})), Dh(Ph(t), "onMouseLeave", (function(e) {
t.fireEvents("onMouseLeave", e), t.delaySetPopupVisible(!1, t.props.mouseLeaveDelay)
})), Dh(Ph(t), "onPopupMouseEnter", (function() {
t.clearDelayTimer()
})), Dh(Ph(t), "onPopupMouseLeave", (function(e) {
var n;
e.relatedTarget && !e.relatedTarget.setTimeout && t_(null === (n = t.popupRef.current) || void 0 === n ? void 0 : n.getElement(), e.relatedTarget) || t.delaySetPopupVisible(!1, t.props.mouseLeaveDelay)
})), Dh(Ph(t), "onFocus", (function(e) {
t.fireEvents("onFocus", e), t.clearDelayTimer(), t.isFocusToShow() && (t.focusTime = Date.now(), t.delaySetPopupVisible(!0, t.props.focusDelay))
})), Dh(Ph(t), "onMouseDown", (function(e) {
t.fireEvents("onMouseDown", e), t.preClickTime = Date.now()
})), Dh(Ph(t), "onTouchStart", (function(e) {
t.fireEvents("onTouchStart", e), t.preTouchTime = Date.now()
})), Dh(Ph(t), "onBlur", (function(e) {
t.fireEvents("onBlur", e), t.clearDelayTimer(), t.isBlurToHide() && t.delaySetPopupVisible(!1, t.props.blurDelay)
})), Dh(Ph(t), "onContextMenu", (function(e) {
e.preventDefault(), t.fireEvents("onContextMenu", e), t.setPopupVisible(!0, e)
})), Dh(Ph(t), "onContextMenuClose", (function() {
t.isContextMenuToShow() && t.close()
})), Dh(Ph(t), "onClick", (function(e) {
if (t.fireEvents("onClick", e), t.focusTime) {
var n;
if (t.preClickTime && t.preTouchTime ? n = Math.min(t.preClickTime, t.preTouchTime) : t.preClickTime ? n = t.preClickTime : t.preTouchTime && (n = t.preTouchTime), Math.abs(n - t.focusTime) < 20) return;
t.focusTime = 0
}
t.preClickTime = 0, t.preTouchTime = 0, t.isClickToShow() && (t.isClickToHide() || t.isBlurToHide()) && e && e.preventDefault && e.preventDefault();
var r = !t.state.popupVisible;
(t.isClickToHide() && !r || r && t.isClickToShow()) && t.setPopupVisible(!t.state.popupVisible, e)
})), Dh(Ph(t), "onPopupMouseDown", (function() {
var e;
(t.hasPopupMouseDown = !0, clearTimeout(t.mouseDownTimeout), t.mouseDownTimeout = window.setTimeout((function() {
t.hasPopupMouseDown = !1
}), 0), t.context) && (e = t.context).onPopupMouseDown.apply(e, arguments)
})), Dh(Ph(t), "onDocumentClick", (function(e) {
if (!t.props.mask || t.props.maskClosable) {
var n = e.target,
r = t.getRootDomNode(),
i = t.getPopupDomNode();
t_(r, n) && !t.isContextMenuOnly() || t_(i, n) || t.hasPopupMouseDown || t.close()
}
})), Dh(Ph(t), "getRootDomNode", (function() {
var e = t.props.getTriggerDOMNode;
if (e) return e(t.triggerRef.current);
try {
var n = Dp(t.triggerRef.current);
if (n) return n
} catch (e) {}
return Nn.findDOMNode(Ph(t))
})), Dh(Ph(t), "getPopupClassNameFromAlign", (function(e) {
var n = [],
r = t.props,
i = r.popupPlacement,
o = r.builtinPlacements,
a = r.prefixCls,
s = r.alignPoint,
l = r.getPopupClassNameFromAlign;
return i && o && n.push(function(e, t, n, r) {
for (var i = n.points, o = Object.keys(e), a = 0; a < o.length; a += 1) {
var s = o[a];
if (Dy(e[s].points, i, r)) return "".concat(t, "-placement-").concat(s)
}
return ""
}(o, a, e, s)), l && n.push(l(e)), n.join(" ")
})), Dh(Ph(t), "getComponent", (function() {
var e = t.props,
n = e.prefixCls,
r = e.destroyPopupOnHide,
i = e.popupClassName,
o = e.onPopupAlign,
a = e.popupMotion,
s = e.popupAnimation,
l = e.popupTransitionName,
c = e.popupStyle,
u = e.mask,
h = e.maskAnimation,
p = e.maskTransitionName,
d = e.maskMotion,
f = e.zIndex,
g = e.popup,
m = e.stretch,
v = e.alignPoint,
_ = e.mobile,
b = e.forceRender,
y = e.onPopupClick,
w = t.state,
x = w.popupVisible,
k = w.point,
C = t.getPopupAlign(),
S = {};
return t.isMouseEnterToShow() && (S.onMouseEnter = t.onPopupMouseEnter), t.isMouseLeaveToHide() && (S.onMouseLeave = t.onPopupMouseLeave), S.onMouseDown = t.onPopupMouseDown, S.onTouchStart = t.onPopupMouseDown, Te(ex,
wh({
prefixCls: n,
destroyPopupOnHide: r,
visible: x,
point: v && k,
className: i,
align: C,
onAlign: o,
animation: s,
getClassNameFromAlign: t.getPopupClassNameFromAlign
}, S, {
stretch: m,
getRootDomNode: t.getRootDomNode,
style: c,
mask: u,
zIndex: f,
transitionName: l,
maskAnimation: h,
maskTransitionName: p,
maskMotion: d,
ref: t.popupRef,
motion: a,
mobile: _,
forceRender: b,
onClick: y
}), "function" == typeof g ? g() : g)
})), Dh(Ph(t), "attachParent", (function(e) {
gd.cancel(t.attachId);
var n, r = t.props,
i = r.getPopupContainer,
o = r.getDocument,
a = t.getRootDomNode();
i ? (a || 0 === i.length) && (n = i(a)) : n = o(t.getRootDomNode()).body, n ? n.appendChild(e) : t.attachId = gd((function() {
t.attachParent(e)
}))
})), Dh(Ph(t), "getContainer", (function() {
if (!t.portalContainer) {
var e = (0, t.props.getDocument)(t.getRootDomNode()).createElement("div");
e.style.position = "absolute", e.style.top = "0", e.style.left = "0", e.style.width = "100%", t.portalContainer = e
}
return t.attachParent(t.portalContainer), t.portalContainer
})), Dh(Ph(t), "setPoint", (function(e) {
t.props.alignPoint && e && t.setState({
point: {
pageX: e.pageX,
pageY: e.pageY
}
})
})), Dh(Ph(t), "handlePortalUpdate", (function() {
t.state.prevPopupVisible !== t.state.popupVisible && t.props.afterPopupVisibleChange(t.state.popupVisible)
})), Dh(Ph(t), "triggerContextValue", {
onPopupMouseDown: t.onPopupMouseDown
}), i = "popupVisible" in e ? !!e.popupVisible : !!e.defaultPopupVisible, t.state = {
prevPopupVisible: i,
popupVisible: i
}, ox.forEach((function(e) {
t["fire".concat(e)] = function(n) {
t.fireEvents(e, n)
}
})), t
}
return Eh(r, [{
key: "componentDidMount",
value: function() {
this.componentDidUpdate()
}
}, {
key: "componentDidUpdate",
value: function() {
var e, t = this.props;
if (this.state.popupVisible) return this.clickOutsideHandler || !this.isClickToHide() && !this.isContextMenuToShow() || (e = t.getDocument(this.getRootDomNode()), this.clickOutsideHandler = Oy(e, "mousedown", this
.onDocumentClick)), this.touchOutsideHandler || (e = e || t.getDocument(this.getRootDomNode()), this.touchOutsideHandler = Oy(e, "touchstart", this.onDocumentClick)), !this.contextMenuOutsideHandler1 && this
.isContextMenuToShow() && (e = e || t.getDocument(this.getRootDomNode()), this.contextMenuOutsideHandler1 = Oy(e, "scroll", this.onContextMenuClose)), void(!this.contextMenuOutsideHandler2 && this
.isContextMenuToShow() && (this.contextMenuOutsideHandler2 = Oy(window, "blur", this.onContextMenuClose)));
this.clearOutsideHandler()
}
}, {
key: "componentWillUnmount",
value: function() {
this.clearDelayTimer(), this.clearOutsideHandler(), clearTimeout(this.mouseDownTimeout), gd.cancel(this.attachId)
}
}, {
key: "getPopupDomNode",
value: function() {
var e;
return (null === (e = this.popupRef.current) || void 0 === e ? void 0 : e.getElement()) || null
}
}, {
key: "getPopupAlign",
value: function() {
var e = this.props,
t = e.popupPlacement,
n = e.popupAlign,
r = e.builtinPlacements;
return t && r ? function(e, t, n) {
return Hh(Hh({}, e[t] || {}), n)
}(r, t, n) : n
}
}, {
key: "setPopupVisible",
value: function(e, t) {
var n = this.props.alignPoint,
r = this.state.popupVisible;
this.clearDelayTimer(), r !== e && ("popupVisible" in this.props || this.setState({
popupVisible: e,
prevPopupVisible: r
}), this.props.onPopupVisibleChange(e)), n && t && e && this.setPoint(t)
}
}, {
key: "delaySetPopupVisible",
value: function(e, t, n) {
var r = this,
i = 1e3 * t;
if (this.clearDelayTimer(), i) {
var o = n ? {
pageX: n.pageX,
pageY: n.pageY
} : null;
this.delayTimer = window.setTimeout((function() {
r.setPopupVisible(e, o), r.clearDelayTimer()
}), i)
} else this.setPopupVisible(e, n)
}
}, {
key: "clearDelayTimer",
value: function() {
this.delayTimer && (clearTimeout(this.delayTimer), this.delayTimer = null)
}
}, {
key: "clearOutsideHandler",
value: function() {
this.clickOutsideHandler && (this.clickOutsideHandler.remove(), this.clickOutsideHandler = null), this.contextMenuOutsideHandler1 && (this.contextMenuOutsideHandler1.remove(), this.contextMenuOutsideHandler1 = null),
this.contextMenuOutsideHandler2 && (this.contextMenuOutsideHandler2.remove(), this.contextMenuOutsideHandler2 = null), this.touchOutsideHandler && (this.touchOutsideHandler.remove(), this.touchOutsideHandler = null)
}
}, {
key: "createTwoChains",
value: function(e) {
var t = this.props.children.props,
n = this.props;
return t[e] && n[e] ? this["fire".concat(e)] : t[e] || n[e]
}
}, {
key: "isClickToShow",
value: function() {
var e = this.props,
t = e.action,
n = e.showAction;
return -1 !== t.indexOf("click") || -1 !== n.indexOf("click")
}
}, {
key: "isContextMenuOnly",
value: function() {
var e = this.props.action;
return "contextMenu" === e || 1 === e.length && "contextMenu" === e[0]
}
}, {
key: "isContextMenuToShow",
value: function() {
var e = this.props,
t = e.action,
n = e.showAction;
return -1 !== t.indexOf("contextMenu") || -1 !== n.indexOf("contextMenu")
}
}, {
key: "isClickToHide",
value: function() {
var e = this.props,
t = e.action,
n = e.hideAction;
return -1 !== t.indexOf("click") || -1 !== n.indexOf("click")
}
}, {
key: "isMouseEnterToShow",
value: function() {
var e = this.props,
t = e.action,
n = e.showAction;
return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseEnter")
}
}, {
key: "isMouseLeaveToHide",
value: function() {
var e = this.props,
t = e.action,
n = e.hideAction;
return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseLeave")
}
}, {
key: "isFocusToShow",
value: function() {
var e = this.props,
t = e.action,
n = e.showAction;
return -1 !== t.indexOf("focus") || -1 !== n.indexOf("focus")
}
}, {
key: "isBlurToHide",
value: function() {
var e = this.props,
t = e.action,
n = e.hideAction;
return -1 !== t.indexOf("focus") || -1 !== n.indexOf("blur")
}
}, {
key: "forcePopupAlign",
value: function() {
var e;
this.state.popupVisible && (null === (e = this.popupRef.current) || void 0 === e || e.forceAlign())
}
}, {
key: "fireEvents",
value: function(e, t) {
var n = this.props.children.props[e];
n && n(t);
var r = this.props[e];
r && r(t)
}
}, {
key: "close",
value: function() {
this.setPopupVisible(!1)
}
}, {
key: "render",
value: function() {
var t = this.state.popupVisible,
n = this.props,
r = n.children,
i = n.forceRender,
o = n.alignPoint,
a = n.className,
s = n.autoDestroy,
l = zt.only(r),
c = {
key: "trigger"
};
this.isContextMenuToShow() ? c.onContextMenu = this.onContextMenu : c.onContextMenu = this.createTwoChains("onContextMenu"), this.isClickToHide() || this.isClickToShow() ? (c.onClick = this.onClick, c.onMouseDown =
this.onMouseDown, c.onTouchStart = this.onTouchStart) : (c.onClick = this.createTwoChains("onClick"), c.onMouseDown = this.createTwoChains("onMouseDown"), c.onTouchStart = this.createTwoChains("onTouchStart")),
this.isMouseEnterToShow() ? (c.onMouseEnter = this.onMouseEnter, o && (c.onMouseMove = this.onMouseMove)) : c.onMouseEnter = this.createTwoChains("onMouseEnter"), this.isMouseLeaveToHide() ? c.onMouseLeave = this
.onMouseLeave : c.onMouseLeave = this.createTwoChains("onMouseLeave"), this.isFocusToShow() || this.isBlurToHide() ? (c.onFocus = this.onFocus, c.onBlur = this.onBlur) : (c.onFocus = this.createTwoChains("onFocus"),
c.onBlur = this.createTwoChains("onBlur"));
var u = Rl(l && l.props && l.props.className, a);
u && (c.className = u);
var h = Hh({}, c);
jp(l) && (h.ref = Rp(this.triggerRef, l.ref));
var p, d = yn(l, h);
return (t || this.popupRef.current || i) && (p = Te(e, {
key: "portal",
getContainer: this.getContainer,
didUpdate: this.handlePortalUpdate
}, this.getComponent())), !t && s && (p = null), Te(tx.Provider, {
value: this.triggerContextValue
}, d, p)
}
}], [{
key: "getDerivedStateFromProps",
value: function(e, t) {
var n = e.popupVisible,
r = {};
return void 0 !== n && t.popupVisible !== n && (r.popupVisible = n, r.prevPopupVisible = t.popupVisible), r
}
}]), r
}(Me);
return Dh(t, "contextType", tx), Dh(t, "defaultProps", {
prefixCls: "rc-trigger-popup",
getPopupClassNameFromAlign: rx,
getDocument: ix,
onPopupVisibleChange: nx,
afterPopupVisibleChange: nx,
onPopupAlign: nx,
popupClassName: "",
mouseEnterDelay: 0,
mouseLeaveDelay: .1,
focusDelay: 0,
blurDelay: .15,
popupStyle: {},
destroyPopupOnHide: !1,
popupAlign: {},
defaultPopupVisible: !1,
mask: !1,
maskClosable: !0,
action: [],
showAction: [],
hideAction: [],
autoDestroy: !1
}), t
}(My),
sx = {
adjustX: 1,
adjustY: 1
},
lx = {
topLeft: {
points: ["bl", "tl"],
overflow: sx,
offset: [0, -7]
},
bottomLeft: {
points: ["tl", "bl"],
overflow: sx,
offset: [0, 7]
},
leftTop: {
points: ["tr", "tl"],
overflow: sx,
offset: [-4, 0]
},
rightTop: {
points: ["tl", "tr"],
overflow: sx,
offset: [4, 0]
}
},
cx = {
topLeft: {
points: ["bl", "tl"],
overflow: sx,
offset: [0, -7]
},
bottomLeft: {
points: ["tl", "bl"],
overflow: sx,
offset: [0, 7]
},
rightTop: {
points: ["tr", "tl"],
overflow: sx,
offset: [-4, 0]
},
leftTop: {
points: ["tl", "tr"],
overflow: sx,
offset: [4, 0]
}
};
function ux(e, t, n) {
return t || (n ? n[e] || n.other : void 0)
}
var hx = {
horizontal: "bottomLeft",
vertical: "rightTop",
"vertical-left": "rightTop",
"vertical-right": "leftTop"
};
function px(e) {
var t = e.prefixCls,
n = e.visible,
r = e.children,
i = e.popup,
o = e.popupClassName,
a = e.popupOffset,
s = e.disabled,
l = e.mode,
c = e.onVisibleChange,
u = wt(Zb),
h = u.getPopupContainer,
p = u.rtl,
d = u.subMenuOpenDelay,
f = u.subMenuCloseDelay,
g = u.builtinPlacements,
m = u.triggerSubMenuAction,
v = u.forceSubMenuRender,
_ = u.rootClassName,
b = u.motion,
y = u.defaultMotions,
w = Mp(dt(!1), 2),
x = w[0],
k = w[1],
C = Hh(Hh({}, p ? cx : lx), g),
S = hx[l],
E = Hh(Hh({}, ux(l, b, y)), {}, {
leavedClassName: "".concat(t, "-hidden"),
removeOnLeave: !1,
motionAppear: !0
}),
T = vt();
return gt((function() {
return T.current = gd((function() {
k(n)
})),
function() {
gd.cancel(T.current)
}
}), [n]), Te(ax, {
prefixCls: t,
popupClassName: Rl("".concat(t, "-popup"), Dh({}, "".concat(t, "-rtl"), p), o, _),
stretch: "horizontal" === l ? "minWidth" : null,
getPopupContainer: h,
builtinPlacements: C,
popupPlacement: S,
popupVisible: x,
popup: i,
popupAlign: a && {
offset: a
},
action: s ? [] : [m],
mouseEnterDelay: d,
mouseLeaveDelay: f,
onPopupVisibleChange: c,
forceRender: v,
popupMotion: E
}, r)
}
function dx(e) {
var t = e.id,
n = e.open,
r = e.keyPath,
i = e.children,
o = "inline",
a = wt(Zb),
s = a.prefixCls,
l = a.forceSubMenuRender,
c = a.motion,
u = a.defaultMotions,
h = a.mode,
p = vt(!1);
p.current = h === o;
var d = Mp(dt(!p.current), 2),
f = d[0],
g = d[1],
m = !!p.current && n;
gt((function() {
p.current && g(!1)
}), [h]);
var v = Hh({}, ux(o, c, u));
r.length > 1 && (v.motionAppear = !1);
var _ = v.onVisibleChanged;
return v.onVisibleChanged = function(e) {
return p.current || e || g(!0), null == _ ? void 0 : _(e)
}, f ? null : Te(Jb, {
mode: o,
locked: !p.current
}, Te(Sd, wh({
visible: m
}, v, {
forceRender: l,
removeOnLeave: !1,
leavedClassName: "".concat(s, "-hidden")
}), (function(e) {
var n = e.className,
r = e.style;
return Te(Ty, {
id: t,
className: n,
style: r
}, i)
})))
}
var fx = ["style", "className", "title", "eventKey", "warnKey", "disabled", "internalPopupClose", "children", "itemIcon", "expandIcon", "popupClassName", "popupOffset", "onClick", "onMouseEnter", "onMouseLeave", "onTitleClick",
"onTitleMouseEnter", "onTitleMouseLeave"
],
gx = ["active"],
mx = function(e) {
var t, n = e.style,
r = e.className,
i = e.title,
o = e.eventKey,
a = e.disabled,
s = e.internalPopupClose,
l = e.children,
c = e.itemIcon,
u = e.expandIcon,
h = e.popupClassName,
p = e.popupOffset,
d = e.onClick,
f = e.onMouseEnter,
g = e.onMouseLeave,
m = e.onTitleClick,
v = e.onTitleMouseEnter,
_ = e.onTitleMouseLeave,
b = Ih(e, fx),
y = py(o),
w = wt(Zb),
x = w.prefixCls,
k = w.mode,
C = w.openKeys,
S = w.disabled,
E = w.overflowDisabled,
T = w.activeKey,
O = w.selectedKeys,
A = w.itemIcon,
P = w.expandIcon,
M = w.onItemClick,
D = w.onOpenChange,
I = w.onActive,
N = wt(dy)._internalRenderSubMenuItem,
R = wt(cy).isSubPathKey,
j = ly(),
L = "".concat(x, "-submenu"),
F = S || a,
B = vt(),
z = vt(),
H = c || A,
U = u || P,
W = C.includes(o),
V = !E && W,
X = R(O, o),
G = Qb(o, F, v, _),
Y = G.active,
q = Ih(G, gx),
K = Mp(dt(!1), 2),
$ = K[0],
Z = K[1],
J = function(e) {
F || Z(e)
},
Q = bt((function() {
return Y || "inline" !== k && ($ || R([T], o))
}), [k, Y, T, $, o, R]),
ee = ry(j.length),
te = Cy((function(e) {
null == d || d(ty(e)), M(e)
})),
ne = y && "".concat(y, "-popup"),
re = Te("div", wh({
role: "menuitem",
style: ee,
className: "".concat(L, "-title"),
tabIndex: F ? null : -1,
ref: B,
title: "string" == typeof i ? i : null,
"data-menu-id": E && y ? null : y,
"aria-expanded": V,
"aria-haspopup": !0,
"aria-controls": ne,
"aria-disabled": F,
onClick: function(e) {
F || (null == m || m({
key: o,
domEvent: e
}), "inline" === k && D(o, !W))
},
onFocus: function() {
I(o)
}
}, q), i, Te(ny, {
icon: "horizontal" !== k ? U : null,
props: Hh(Hh({}, e), {}, {
isOpen: V,
isSubMenu: !0
})
}, Te("i", {
className: "".concat(L, "-arrow")
}))),
ie = vt(k);
if ("inline" !== k && (ie.current = j.length > 1 ? "vertical" : k), !E) {
var oe = ie.current;
re = Te(px, {
mode: oe,
prefixCls: L,
visible: !s && V && "inline" !== k,
popupClassName: h,
popupOffset: p,
popup: Te(Jb, {
mode: "horizontal" === oe ? "vertical" : oe
}, Te(Ty, {
id: ne,
ref: z
}, l)),
disabled: F,
onVisibleChange: function(e) {
"inline" !== k && D(o, e)
}
}, re)
}
var ae = Te(qb.Item, wh({
role: "none"
}, b, {
component: "li",
style: n,
className: Rl(L, "".concat(L, "-").concat(k), r, (t = {}, Dh(t, "".concat(L, "-open"), V), Dh(t, "".concat(L, "-active"), Q), Dh(t, "".concat(L, "-selected"), X), Dh(t, "".concat(L, "-disabled"), F), t)),
onMouseEnter: function(e) {
J(!0), null == f || f({
key: o,
domEvent: e
})
},
onMouseLeave: function(e) {
J(!1), null == g || g({
key: o,
domEvent: e
})
}
}), re, !E && Te(dx, {
id: ne,
open: V,
keyPath: j
}, l));
return N && (ae = N(ae, e, {
selected: X,
active: Q,
open: V,
disabled: F
})), Te(Jb, {
onItemClick: te,
mode: "horizontal" === k ? "vertical" : k,
itemIcon: H,
expandIcon: U
}, ae)
};
function vx(e) {
var t, n = e.eventKey,
r = e.children,
i = ly(n),
o = wy(r, i),
a = ay();
return gt((function() {
if (a) return a.registerPath(n, i),
function() {
a.unregisterPath(n, i)
}
}), [i]), t = a ? o : Te(mx, e, o), Te(sy.Provider, {
value: i
}, t)
}
function _x(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
if (zw(e)) {
var n = e.nodeName.toLowerCase(),
r = ["input", "select", "textarea", "button"].includes(n) || e.isContentEditable || "a" === n && !!e.getAttribute("href"),
i = e.getAttribute("tabindex"),
o = Number(i),
a = null;
return i && !Number.isNaN(o) ? a = o : r && null === a && (a = 0), r && e.disabled && (a = null), null !== a && (a >= 0 || t && a < 0)
}
return !1
}
var bx = w_.LEFT,
yx = w_.RIGHT,
wx = w_.UP,
xx = w_.DOWN,
kx = w_.ENTER,
Cx = w_.ESC,
Sx = w_.HOME,
Ex = w_.END,
Tx = [wx, xx, bx, yx];
function Ox(e, t) {
var n = function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
n = Bh(e.querySelectorAll("*")).filter((function(e) {
return _x(e, t)
}));
return _x(e, t) && n.unshift(e), n
}(e, !0);
return n.filter((function(e) {
return t.has(e)
}))
}
function Ax(e, t, n) {
var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
if (!e) return null;
var i = Ox(e, t),
o = i.length,
a = i.findIndex((function(e) {
return n === e
}));
return r < 0 ? -1 === a ? a = o - 1 : a -= 1 : r > 0 && (a += 1), i[a = (a + o) % o]
}
function Px(e, t, n, r, i, o, a, s, l, c) {
var u = vt(),
h = vt();
h.current = t;
var p = function() {
gd.cancel(u.current)
};
return gt((function() {
return function() {
p()
}
}), []),
function(d) {
var f = d.which;
if ([].concat(Tx, [kx, Cx, Sx, Ex]).includes(f)) {
var g, m, v, _ = function() {
return g = new Set, m = new Map, v = new Map, o().forEach((function(e) {
var t = document.querySelector("[data-menu-id='".concat(hy(r, e), "']"));
t && (g.add(t), v.set(t, e), m.set(e, t))
})), g
};
_();
var b = function(e, t) {
for (var n = e || document.activeElement; n;) {
if (t.has(n)) return n;
n = n.parentElement
}
return null
}(m.get(t), g),
y = v.get(b),
w = function(e, t, n, r) {
var i, o, a, s, l = "prev",
c = "next",
u = "children",
h = "parent";
if ("inline" === e && r === kx) return {
inlineTrigger: !0
};
var p = (Dh(i = {}, wx, l), Dh(i, xx, c), i),
d = (Dh(o = {}, bx, n ? c : l), Dh(o, yx, n ? l : c), Dh(o, xx, u), Dh(o, kx, u), o),
f = (Dh(a = {}, wx, l), Dh(a, xx, c), Dh(a, kx, u), Dh(a, Cx, h), Dh(a, bx, n ? u : h), Dh(a, yx, n ? h : u), a);
switch (null === (s = {
inline: p,
horizontal: d,
vertical: f,
inlineSub: p,
horizontalSub: f,
verticalSub: f
} ["".concat(e).concat(t ? "" : "Sub")]) || void 0 === s ? void 0 : s[r]) {
case l:
return {
offset: -1, sibling: !0
};
case c:
return {
offset: 1, sibling: !0
};
case h:
return {
offset: -1, sibling: !1
};
case u:
return {
offset: 1, sibling: !1
};
default:
return null
}
}(e, 1 === a(y, !0).length, n, f);
if (!w && f !== Sx && f !== Ex) return;
(Tx.includes(f) || [Sx, Ex].includes(f)) && d.preventDefault();
var x = function(e) {
if (e) {
var t = e,
n = e.querySelector("a");
(null == n ? void 0 : n.getAttribute("href")) && (t = n);
var r = v.get(e);
s(r), p(), u.current = gd((function() {
h.current === r && t.focus()
}))
}
};
if ([Sx, Ex].includes(f) || w.sibling || !b) {
var k, C, S = Ox(k = b && "inline" !== e ? function(e) {
for (var t = e; t;) {
if (t.getAttribute("data-menu-list")) return t;
t = t.parentElement
}
return null
}(b) : i.current, g);
C = f === Sx ? S[0] : f === Ex ? S[S.length - 1] : Ax(k, g, b, w.offset), x(C)
} else if (w.inlineTrigger) l(y);
else if (w.offset > 0) l(y, !0), p(), u.current = gd((function() {
_();
var e = b.getAttribute("aria-controls"),
t = Ax(document.getElementById(e), g);
x(t)
}), 5);
else if (w.offset < 0) {
var E = a(y, !0),
T = E[E.length - 2],
O = m.get(T);
l(T, !1), x(O)
}
}
null == c || c(d)
}
}
var Mx = Math.random().toFixed(5).toString().slice(2),
Dx = 0;
var Ix = "__RC_UTIL_PATH_SPLIT__",
Nx = function(e) {
return e.join(Ix)
},
Rx = "rc-menu-more";
function jx() {
var e = Mp(dt({}), 2)[1],
t = vt(new Map),
n = vt(new Map),
r = Mp(dt([]), 2),
i = r[0],
o = r[1],
a = vt(0),
s = vt(!1),
l = yt((function(r, i) {
var o = Nx(i);
n.current.set(o, r), t.current.set(r, o), a.current += 1;
var l, c = a.current;
l = function() {
c === a.current && (s.current || e({}))
}, Promise.resolve().then(l)
}), []),
c = yt((function(e, r) {
var i = Nx(r);
n.current.delete(i), t.current.delete(e)
}), []),
u = yt((function(e) {
o(e)
}), []),
h = yt((function(e, n) {
var r = t.current.get(e) || "",
o = r.split(Ix);
return n && i.includes(o[0]) && o.unshift(Rx), o
}), [i]),
p = yt((function(e, t) {
return e.some((function(e) {
return h(e, !0).includes(t)
}))
}), [h]),
d = yt((function(e) {
var r = "".concat(t.current.get(e)).concat(Ix),
i = new Set;
return Bh(n.current.keys()).forEach((function(e) {
e.startsWith(r) && i.add(n.current.get(e))
})), i
}), []);
return gt((function() {
return function() {
s.current = !0
}
}), []), {
registerPath: l,
unregisterPath: c,
refreshOverflowKeys: u,
isSubPathKey: p,
getKeyPath: h,
getKeys: function() {
var e = Bh(t.current.keys());
return i.length && e.push(Rx), e
},
getSubPathKeys: d
}
}
var Lx = ["prefixCls", "rootClassName", "style", "className", "tabIndex", "items", "children", "direction", "id", "mode", "inlineCollapsed", "disabled", "disabledOverflow", "subMenuOpenDelay", "subMenuCloseDelay", "forceSubMenuRender",
"defaultOpenKeys", "openKeys", "activeKey", "defaultActiveFirst", "selectable", "multiple", "defaultSelectedKeys", "selectedKeys", "onSelect", "onDeselect", "inlineIndent", "motion", "defaultMotions", "triggerSubMenuAction",
"builtinPlacements", "itemIcon", "expandIcon", "overflowedIndicator", "overflowedIndicatorPopupClassName", "getPopupContainer", "onClick", "onOpenChange", "onKeyDown", "openAnimation", "openTransitionName", "_internalRenderMenuItem",
"_internalRenderSubMenuItem"
],
Fx = [],
Bx = Ft((function(e, t) {
var n, r, i = e.prefixCls,
o = void 0 === i ? "rc-menu" : i,
a = e.rootClassName,
s = e.style,
l = e.className,
c = e.tabIndex,
u = void 0 === c ? 0 : c,
h = e.items,
p = e.children,
d = e.direction,
f = e.id,
g = e.mode,
m = void 0 === g ? "vertical" : g,
v = e.inlineCollapsed,
_ = e.disabled,
b = e.disabledOverflow,
y = e.subMenuOpenDelay,
w = void 0 === y ? .1 : y,
x = e.subMenuCloseDelay,
k = void 0 === x ? .1 : x,
C = e.forceSubMenuRender,
S = e.defaultOpenKeys,
E = e.openKeys,
T = e.activeKey,
O = e.defaultActiveFirst,
A = e.selectable,
P = void 0 === A || A,
M = e.multiple,
D = void 0 !== M && M,
I = e.defaultSelectedKeys,
N = e.selectedKeys,
R = e.onSelect,
j = e.onDeselect,
L = e.inlineIndent,
F = void 0 === L ? 24 : L,
B = e.motion,
z = e.defaultMotions,
H = e.triggerSubMenuAction,
U = void 0 === H ? "hover" : H,
W = e.builtinPlacements,
V = e.itemIcon,
X = e.expandIcon,
G = e.overflowedIndicator,
Y = void 0 === G ? "..." : G,
q = e.overflowedIndicatorPopupClassName,
K = e.getPopupContainer,
$ = e.onClick,
Z = e.onOpenChange,
J = e.onKeyDown,
Q = e._internalRenderMenuItem,
ee = e._internalRenderSubMenuItem,
te = Ih(e, Lx),
ne = bt((function() {
return ky(p, h, Fx)
}), [p, h]),
re = Mp(dt(!1), 2),
ie = re[0],
oe = re[1],
ae = vt();
_t(t, (function() {
return {
list: ae.current,
focus: function(e) {
var t;
null === (t = ae.current) || void 0 === t || t.focus(e)
}
}
}));
var se = function(e) {
var t = Mp(gb(e, {
value: e
}), 2),
n = t[0],
r = t[1];
return gt((function() {
Dx += 1;
var e = "".concat(Mx, "-").concat(Dx);
r("rc-menu-uuid-".concat(e))
}), []), n
}(f),
le = "rtl" === d,
ce = Mp(bt((function() {
return "inline" !== m && "vertical" !== m || !v ? [m, !1] : ["vertical", v]
}), [m, v]), 2),
ue = ce[0],
he = ce[1],
pe = Mp(dt(0), 2),
de = pe[0],
fe = pe[1],
ge = de >= ne.length - 1 || "horizontal" !== ue || b,
me = Mp(gb(S, {
value: E,
postState: function(e) {
return e || Fx
}
}), 2),
ve = me[0],
_e = me[1],
be = function(e) {
_e(e), null == Z || Z(e)
},
ye = Mp(dt(ve), 2),
we = ye[0],
xe = ye[1],
ke = "inline" === ue,
Ce = vt(!1);
gt((function() {
ke && xe(ve)
}), [ve]), gt((function() {
Ce.current ? ke ? _e(we) : be(Fx) : Ce.current = !0
}), [ke]);
var Se = jx(),
Ee = Se.registerPath,
Oe = Se.unregisterPath,
Ae = Se.refreshOverflowKeys,
Pe = Se.isSubPathKey,
Me = Se.getKeyPath,
De = Se.getKeys,
Ie = Se.getSubPathKeys,
Ne = bt((function() {
return {
registerPath: Ee,
unregisterPath: Oe
}
}), [Ee, Oe]),
Re = bt((function() {
return {
isSubPathKey: Pe
}
}), [Pe]);
gt((function() {
Ae(ge ? Fx : ne.slice(de + 1).map((function(e) {
return e.key
})))
}), [de, ge]);
var je = Mp(gb(T || O && (null === (n = ne[0]) || void 0 === n ? void 0 : n.key), {
value: T
}), 2),
Le = je[0],
Fe = je[1],
Be = Cy((function(e) {
Fe(e)
})),
ze = Cy((function() {
Fe(void 0)
})),
He = Mp(gb(I || [], {
value: N,
postState: function(e) {
return Array.isArray(e) ? e : null == e ? Fx : [e]
}
}), 2),
Ue = He[0],
We = He[1],
Ve = Cy((function(e) {
null == $ || $(ty(e)),
function(e) {
if (P) {
var t, n = e.key,
r = Ue.includes(n);
t = D ? r ? Ue.filter((function(e) {
return e !== n
})) : [].concat(Bh(Ue), [n]) : [n], We(t);
var i = Hh(Hh({}, e), {}, {
selectedKeys: t
});
r ? null == j || j(i) : null == R || R(i)
}!D && ve.length && "inline" !== ue && be(Fx)
}(e)
})),
Xe = Cy((function(e, t) {
var n = ve.filter((function(t) {
return t !== e
}));
if (t) n.push(e);
else if ("inline" !== ue) {
var r = Ie(e);
n = n.filter((function(e) {
return !r.has(e)
}))
}
Pb(ve, n) || be(n)
})),
Ge = Cy(K),
Ye = Px(ue, Le, le, se, ae, De, Me, Fe, (function(e, t) {
var n = null != t ? t : !ve.includes(e);
Xe(e, n)
}), J);
gt((function() {
oe(!0)
}), []);
var qe = bt((function() {
return {
_internalRenderMenuItem: Q,
_internalRenderSubMenuItem: ee
}
}), [Q, ee]),
Ke = "horizontal" !== ue || b ? ne : ne.map((function(e, t) {
return Te(Jb, {
key: e.key,
overflowDisabled: t > de
}, e)
})),
$e = Te(qb, wh({
id: f,
ref: ae,
prefixCls: "".concat(o, "-overflow"),
component: "ul",
itemComponent: by,
className: Rl(o, "".concat(o, "-root"), "".concat(o, "-").concat(ue), l, (r = {}, Dh(r, "".concat(o, "-inline-collapsed"), he), Dh(r, "".concat(o, "-rtl"), le), r), a),
dir: d,
style: s,
role: "menu",
tabIndex: u,
data: Ke,
renderRawItem: function(e) {
return e
},
renderRawRest: function(e) {
var t = e.length,
n = t ? ne.slice(-t) : null;
return Te(vx, {
eventKey: Rx,
title: Y,
disabled: ge,
internalPopupClose: 0 === t,
popupClassName: q
}, n)
},
maxCount: "horizontal" !== ue || b ? qb.INVALIDATE : qb.RESPONSIVE,
ssr: "full",
"data-menu-list": !0,
onVisibleChange: function(e) {
fe(e)
},
onKeyDown: Ye
}, te));
return Te(dy.Provider, {
value: qe
}, Te(uy.Provider, {
value: se
}, Te(Jb, {
prefixCls: o,
rootClassName: a,
mode: ue,
openKeys: ve,
rtl: le,
disabled: _,
motion: ie ? B : null,
defaultMotions: ie ? z : null,
activeKey: Le,
onActive: Be,
onInactive: ze,
selectedKeys: Ue,
inlineIndent: F,
subMenuOpenDelay: w,
subMenuCloseDelay: k,
forceSubMenuRender: C,
builtinPlacements: W,
triggerSubMenuAction: U,
getPopupContainer: Ge,
itemIcon: V,
expandIcon: X,
onItemClick: Ve,
onOpenChange: Xe
}, Te(cy.Provider, {
value: Re
}, $e), Te("div", {
style: {
display: "none"
},
"aria-hidden": !0
}, Te(oy.Provider, {
value: Ne
}, ne)))))
})),
zx = ["className", "title", "eventKey", "children"],
Hx = ["children"],
Ux = function(e) {
var t = e.className,
n = e.title,
r = e.children,
i = Ih(e, zx),
o = wt(Zb).prefixCls,
a = "".concat(o, "-item-group");
return Te("li", wh({}, i, {
onClick: function(e) {
return e.stopPropagation()
},
className: Rl(a, t)
}), Te("div", {
className: "".concat(a, "-title"),
title: "string" == typeof n ? n : void 0
}, n), Te("ul", {
className: "".concat(a, "-list")
}, r))
};
function Wx(e) {
var t = e.children,
n = Ih(e, Hx),
r = wy(t, ly(n.eventKey));
return ay() ? r : Te(Ux, Kb(n, ["warnKey"]), r)
}
function Vx(e) {
var t = e.className,
n = e.style,
r = wt(Zb).prefixCls;
return ay() ? null : Te("li", {
className: Rl("".concat(r, "-item-divider"), t),
style: n
})
}
var Xx = Bx;
Xx.Item = by, Xx.SubMenu = vx, Xx.ItemGroup = Wx, Xx.Divider = Vx;
var Gx = Xx,
Yx = {
adjustX: 1,
adjustY: 1
},
qx = [0, 0],
Kx = {
topLeft: {
points: ["bl", "tl"],
overflow: Yx,
offset: [0, -4],
targetOffset: qx
},
topCenter: {
points: ["bc", "tc"],
overflow: Yx,
offset: [0, -4],
targetOffset: qx
},
topRight: {
points: ["br", "tr"],
overflow: Yx,
offset: [0, -4],
targetOffset: qx
},
bottomLeft: {
points: ["tl", "bl"],
overflow: Yx,
offset: [0, 4],
targetOffset: qx
},
bottomCenter: {
points: ["tc", "bc"],
overflow: Yx,
offset: [0, 4],
targetOffset: qx
},
bottomRight: {
points: ["tr", "br"],
overflow: Yx,
offset: [0, 4],
targetOffset: qx
}
},
$x = w_.ESC,
Zx = w_.TAB;
var Jx = ["arrow", "prefixCls", "transitionName", "animation", "align", "placement", "placements", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "visible", "trigger"];
function Qx(e, t) {
var n = e.arrow,
r = void 0 !== n && n,
i = e.prefixCls,
o = void 0 === i ? "rc-dropdown" : i,
a = e.transitionName,
s = e.animation,
l = e.align,
c = e.placement,
u = void 0 === c ? "bottomLeft" : c,
h = e.placements,
p = void 0 === h ? Kx : h,
d = e.getPopupContainer,
f = e.showAction,
g = e.hideAction,
m = e.overlayClassName,
v = e.overlayStyle,
_ = e.visible,
b = e.trigger,
y = void 0 === b ? ["hover"] : b,
w = Ih(e, Jx),
x = Mp(dt(), 2),
k = x[0],
C = x[1],
S = "visible" in e ? _ : k,
E = vt(null);
_t(t, (function() {
return E.current
}));
var T = vt(null),
O = "".concat(o, "-menu");
! function(e) {
var t = e.visible,
n = e.setTriggerVisible,
r = e.triggerRef,
i = e.menuRef,
o = e.onVisibleChange,
a = vt(!1),
s = function() {
var e, i, a, s;
t && r.current && (null === (e = r.current) || void 0 === e || null === (i = e.triggerRef) || void 0 === i || null === (a = i.current) || void 0 === a || null === (s = a.focus) || void 0 === s || s.call(a), n(!1), "function" ==
typeof o && o(!1))
},
l = function(e) {
var t;
switch (e.keyCode) {
case $x:
s();
break;
case Zx:
!a.current && (null === (t = i.current) || void 0 === t ? void 0 : t.focus) ? (e.preventDefault(), i.current.focus(), a.current = !0) : s()
}
};
gt((function() {
return t ? (window.addEventListener("keydown", l), function() {
window.removeEventListener("keydown", l), a.current = !1
}) : function() {
return null
}
}), [t])
}({
visible: S,
setTriggerVisible: C,
triggerRef: E,
menuRef: T,
onVisibleChange: e.onVisibleChange
});
var A, P, M, D, I = function() {
var t = e.overlay;
return "function" == typeof t ? t() : t
},
N = function(t) {
var n = e.onOverlayClick,
r = I().props;
C(!1), n && n(t), r.onClick && r.onClick(t)
},
R = function() {
var e, t = I(),
n = Rp(T, t.ref),
i = (Dh(e = {
prefixCls: O
}, "data-dropdown-inject", !0), Dh(e, "onClick", N), Dh(e, "ref", jp(t) ? n : void 0), e);
return "string" == typeof t.type && (delete i.prefixCls, delete i["data-dropdown-inject"]), Te(Pe, null, r && Te("div", {
className: "".concat(o, "-arrow")
}), yn(t, i))
},
j = g;
return j || -1 === y.indexOf("contextMenu") || (j = ["click"]), Te(ax, Hh(Hh({
builtinPlacements: p
}, w), {}, {
prefixCls: o,
ref: E,
popupClassName: Rl(m, Dh({}, "".concat(o, "-show-arrow"), r)),
popupStyle: v,
action: y,
showAction: f,
hideAction: j || [],
popupPlacement: u,
popupAlign: l,
popupTransitionName: a,
popupAnimation: s,
popupVisible: S,
stretch: function() {
var t = e.minOverlayWidthMatchTrigger,
n = e.alignPoint;
return "minOverlayWidthMatchTrigger" in e ? t : !n
}() ? "minWidth" : "",
popup: "function" == typeof e.overlay ? R : R(),
onPopupVisibleChange: function(t) {
var n = e.onVisibleChange;
C(t), "function" == typeof n && n(t)
},
getPopupContainer: d
}), (P = e.children, M = P.props ? P.props : {}, D = Rl(M.className, void 0 !== (A = e.openClassName) ? A : "".concat(o, "-open")), S && P ? yn(P, {
className: D
}) : P))
}
var ek = Ft(Qx);
function tk(e, t) {
var n = e.prefixCls,
r = e.editable,
i = e.locale,
o = e.style;
return r && !1 !== r.showAdd ? Te("button", {
ref: t,
type: "button",
className: "".concat(n, "-nav-add"),
style: o,
"aria-label": (null == i ? void 0 : i.addAriaLabel) || "Add tab",
onClick: function(e) {
r.onEdit("add", {
event: e
})
}
}, r.addIcon || "+") : null
}
var nk = Ft(tk);
function rk(e, t) {
var n = e.prefixCls,
r = e.id,
i = e.tabs,
o = e.locale,
a = e.mobile,
s = e.moreIcon,
l = void 0 === s ? "More" : s,
c = e.moreTransitionName,
u = e.style,
h = e.className,
p = e.editable,
d = e.tabBarGutter,
f = e.rtl,
g = e.removeAriaLabel,
m = e.onTabClick,
v = Mp(dt(!1), 2),
_ = v[0],
b = v[1],
y = Mp(dt(null), 2),
w = y[0],
x = y[1],
k = "".concat(r, "-more-popup"),
C = "".concat(n, "-dropdown"),
S = null !== w ? "".concat(k, "-").concat(w) : null,
E = null == o ? void 0 : o.dropdownAriaLabel;
var T = Te(Gx, {
onClick: function(e) {
var t = e.key,
n = e.domEvent;
m(t, n), b(!1)
},
id: k,
tabIndex: -1,
role: "listbox",
"aria-activedescendant": S,
selectedKeys: [w],
"aria-label": void 0 !== E ? E : "expanded dropdown"
}, i.map((function(e) {
var t = p && !1 !== e.closable && !e.disabled;
return Te(by, {
key: e.key,
id: "".concat(k, "-").concat(e.key),
role: "option",
"aria-controls": r && "".concat(r, "-panel-").concat(e.key),
disabled: e.disabled
}, Te("span", null, e.tab), t && Te("button", {
type: "button",
"aria-label": g || "remove",
tabIndex: 0,
className: "".concat(C, "-menu-item-remove"),
onClick: function(t) {
var n, r;
t.stopPropagation(), n = t, r = e.key, n.preventDefault(), n.stopPropagation(), p.onEdit("remove", {
key: r,
event: n
})
}
}, e.closeIcon || p.removeIcon || "×"))
})));
function O(e) {
for (var t = i.filter((function(e) {
return !e.disabled
})), n = t.findIndex((function(e) {
return e.key === w
})) || 0, r = t.length, o = 0; o < r; o += 1) {
var a = t[n = (n + e + r) % r];
if (!a.disabled) return void x(a.key)
}
}
gt((function() {
var e = document.getElementById(S);
e && e.scrollIntoView && e.scrollIntoView(!1)
}), [w]), gt((function() {
_ || x(null)
}), [_]);
var A = Dh({}, f ? "marginRight" : "marginLeft", d);
i.length || (A.visibility = "hidden", A.order = 1);
var P = Rl(Dh({}, "".concat(C, "-rtl"), f)),
M = a ? null : Te(ek, {
prefixCls: C,
overlay: T,
trigger: ["hover"],
visible: _,
transitionName: c,
onVisibleChange: b,
overlayClassName: P,
mouseEnterDelay: .1,
mouseLeaveDelay: .1
}, Te("button", {
type: "button",
className: "".concat(n, "-nav-more"),
style: A,
tabIndex: -1,
"aria-hidden": "true",
"aria-haspopup": "listbox",
"aria-controls": k,
id: "".concat(r, "-more"),
"aria-expanded": _,
onKeyDown: function(e) {
var t = e.which;
if (_) switch (t) {
case w_.UP:
O(-1), e.preventDefault();
break;
case w_.DOWN:
O(1), e.preventDefault();
break;
case w_.ESC:
b(!1);
break;
case w_.SPACE:
case w_.ENTER:
null !== w && m(w, e)
} else [w_.DOWN, w_.SPACE, w_.ENTER].includes(t) && (b(!0), e.preventDefault())
}
}, l));
return Te("div", {
className: Rl("".concat(n, "-nav-operations"), h),
style: u,
ref: t
}, M, Te(nk, {
prefixCls: n,
locale: o,
editable: p
}))
}
var ik = Rt(Ft(rk), (function(e, t) {
return t.tabMoving
})),
ok = Qe(null),
ak = .1,
sk = .01,
lk = 20,
ck = Math.pow(.995, lk);
function uk(e, t) {
var n = vt(e),
r = Mp(dt({}), 2)[1];
return [n.current, function(e) {
var i = "function" == typeof e ? e(n.current) : e;
i !== n.current && t(i, n.current), n.current = i, r({})
}]
}
var hk = function(e) {
var t, n = e.position,
r = e.prefixCls,
i = e.extra;
if (!i) return null;
var o = {};
return i && "object" === kh(i) && !bn(i) ? o = i : o.right = i, "right" === n && (t = o.right), "left" === n && (t = o.left), t ? Te("div", {
className: "".concat(r, "-extra-content")
}, t) : null
};
function pk(e, t) {
var n, r, i, o, a, s, l, c = wt(ok),
u = c.prefixCls,
h = c.tabs,
p = e.className,
d = e.style,
f = e.id,
g = e.animated,
m = e.activeKey,
v = e.rtl,
_ = e.extra,
b = e.editable,
y = e.locale,
w = e.tabPosition,
x = e.tabBarGutter,
k = e.children,
C = e.onTabClick,
S = e.onTabScroll,
E = vt(),
T = vt(),
O = vt(),
A = vt(),
P = Mp((r = vt(new Map), [function(e) {
return r.current.has(e) || r.current.set(e, Ae()), r.current.get(e)
}, function(e) {
r.current.delete(e)
}]), 2),
M = P[0],
D = P[1],
I = "top" === w || "bottom" === w,
N = Mp(uk(0, (function(e, t) {
I && S && S({
direction: e > t ? "left" : "right"
})
})), 2),
R = N[0],
j = N[1],
L = Mp(uk(0, (function(e, t) {
!I && S && S({
direction: e > t ? "top" : "bottom"
})
})), 2),
F = L[0],
B = L[1],
z = Mp(dt(0), 2),
H = z[0],
U = z[1],
W = Mp(dt(0), 2),
V = W[0],
X = W[1],
G = Mp(dt(null), 2),
Y = G[0],
q = G[1],
K = Mp(dt(null), 2),
$ = K[0],
Z = K[1],
J = Mp(dt(0), 2),
Q = J[0],
ee = J[1],
te = Mp(dt(0), 2),
ne = te[0],
re = te[1],
ie = (i = new Map, o = vt([]), a = Mp(dt({}), 2)[1], s = vt("function" == typeof i ? i() : i), l = Sb((function() {
var e = s.current;
o.current.forEach((function(t) {
e = t(e)
})), o.current = [], s.current = e, a({})
})), [s.current, function(e) {
o.current.push(e), l()
}]),
oe = Mp(ie, 2),
ae = oe[0],
se = oe[1],
le = function(e, t, n) {
return bt((function() {
for (var n, r = new Map, i = t.get(null === (n = e[0]) || void 0 === n ? void 0 : n.key) || Ob, o = i.left + i.width, a = 0; a < e.length; a += 1) {
var s, l = e[a].key,
c = t.get(l);
c || (c = t.get(null === (s = e[a - 1]) || void 0 === s ? void 0 : s.key) || Ob);
var u = r.get(l) || Hh({}, c);
u.right = o - u.left - u.width, r.set(l, u)
}
return r
}), [e.map((function(e) {
return e.key
})).join("_"), t, n])
}(h, ae, H),
ce = "".concat(u, "-nav-operations-hidden"),
ue = 0,
he = 0;
function pe(e) {
return e < ue ? ue : e > he ? he : e
}
I ? v ? (ue = 0, he = Math.max(0, H - Y)) : (ue = Math.min(0, Y - H), he = 0) : (ue = Math.min(0, $ - V), he = 0);
var de = vt(),
fe = Mp(dt(), 2),
ge = fe[0],
me = fe[1];
function ve() {
me(Date.now())
}
function _e() {
window.clearTimeout(de.current)
}
function be() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : m,
t = le.get(e) || {
width: 0,
height: 0,
left: 0,
right: 0,
top: 0
};
if (I) {
var n = R;
v ? t.right < R ? n = t.right : t.right + t.width > R + Y && (n = t.right + t.width - Y) : t.left < -R ? n = -t.left : t.left + t.width > -R + Y && (n = -(t.left + t.width - Y)), B(0), j(pe(n))
} else {
var r = F;
t.top < -F ? r = -t.top : t.top + t.height > -F + $ && (r = -(t.top + t.height - $)), j(0), B(pe(r))
}
}! function(e, t) {
var n = Mp(dt(), 2),
r = n[0],
i = n[1],
o = Mp(dt(0), 2),
a = o[0],
s = o[1],
l = Mp(dt(0), 2),
c = l[0],
u = l[1],
h = Mp(dt(), 2),
p = h[0],
d = h[1],
f = vt(),
g = vt(),
m = vt(null);
m.current = {
onTouchStart: function(e) {
var t = e.touches[0],
n = t.screenX,
r = t.screenY;
i({
x: n,
y: r
}), window.clearInterval(f.current)
},
onTouchMove: function(e) {
if (r) {
e.preventDefault();
var n = e.touches[0],
o = n.screenX,
l = n.screenY;
i({
x: o,
y: l
});
var c = o - r.x,
h = l - r.y;
t(c, h);
var p = Date.now();
s(p), u(p - a), d({
x: c,
y: h
})
}
},
onTouchEnd: function() {
if (r && (i(null), d(null), p)) {
var e = p.x / c,
n = p.y / c,
o = Math.abs(e),
a = Math.abs(n);
if (Math.max(o, a) < ak) return;
var s = e,
l = n;
f.current = window.setInterval((function() {
Math.abs(s) < sk && Math.abs(l) < sk ? window.clearInterval(f.current) : t((s *= ck) * lk, (l *= ck) * lk)
}), lk)
}
},
onWheel: function(e) {
var n = e.deltaX,
r = e.deltaY,
i = 0,
o = Math.abs(n),
a = Math.abs(r);
o === a ? i = "x" === g.current ? n : r : o > a ? (i = n, g.current = "x") : (i = r, g.current = "y"), t(-i, -i) && e.preventDefault()
}
}, gt((function() {
function t(e) {
m.current.onTouchMove(e)
}
function n(e) {
m.current.onTouchEnd(e)
}
return document.addEventListener("touchmove", t, {
passive: !1
}), document.addEventListener("touchend", n, {
passive: !1
}), e.current.addEventListener("touchstart", (function(e) {
m.current.onTouchStart(e)
}), {
passive: !1
}), e.current.addEventListener("wheel", (function(e) {
m.current.onWheel(e)
})),
function() {
document.removeEventListener("touchmove", t), document.removeEventListener("touchend", n)
}
}), [])
}(E, (function(e, t) {
function n(e, t) {
e((function(e) {
return pe(e + t)
}))
}
if (I) {
if (Y >= H) return !1;
n(j, e)
} else {
if ($ >= V) return !1;
n(B, t)
}
return _e(), ve(), !0
})), gt((function() {
return _e(), ge && (de.current = window.setTimeout((function() {
me(0)
}), 100)), _e
}), [ge]);
var ye = function(e, t, n, r, i) {
var o, a, s, l = i.tabs,
c = i.tabPosition,
u = i.rtl;
["top", "bottom"].includes(c) ? (o = "width", a = u ? "right" : "left", s = Math.abs(t.left)) : (o = "height", a = "top", s = -t.top);
var h = t[o],
p = n[o],
d = r[o],
f = h;
return p + d > h && p < h && (f = h - d), bt((function() {
if (!l.length) return [0, 0];
for (var t = l.length, n = t, r = 0; r < t; r += 1) {
var i = e.get(l[r].key) || Ab;
if (i[a] + i[o] > s + f) {
n = r - 1;
break
}
}
for (var c = 0, u = t - 1; u >= 0; u -= 1)
if ((e.get(l[u].key) || Ab)[a] < s) {
c = u + 1;
break
} return [c, n]
}), [e, s, f, c, l.map((function(e) {
return e.key
})).join("_"), u])
}(le, {
width: Y,
height: $,
left: R,
top: F
}, {
width: H,
height: V
}, {
width: Q,
height: ne
}, Hh(Hh({}, e), {}, {
tabs: h
})),
we = Mp(ye, 2),
xe = we[0],
ke = we[1],
Ce = {};
"top" === w || "bottom" === w ? Ce[v ? "marginRight" : "marginLeft"] = x : Ce.marginTop = x;
var Se = h.map((function(e, t) {
var n = e.key;
return Te(Tb, {
id: f,
prefixCls: u,
key: n,
tab: e,
style: 0 === t ? void 0 : Ce,
closable: e.closable,
editable: b,
active: n === m,
renderWrapper: k,
removeAriaLabel: null == y ? void 0 : y.removeAriaLabel,
ref: M(n),
onClick: function(e) {
C(n, e)
},
onRemove: function() {
D(n)
},
onFocus: function() {
be(n), ve(), E.current && (v || (E.current.scrollLeft = 0), E.current.scrollTop = 0)
}
})
})),
Ee = Sb((function() {
var e, t, n, r, i, o, a = (null === (e = E.current) || void 0 === e ? void 0 : e.offsetWidth) || 0,
s = (null === (t = E.current) || void 0 === t ? void 0 : t.offsetHeight) || 0,
l = (null === (n = A.current) || void 0 === n ? void 0 : n.offsetWidth) || 0,
c = (null === (r = A.current) || void 0 === r ? void 0 : r.offsetHeight) || 0;
q(a), Z(s), ee(l), re(c);
var u = ((null === (i = T.current) || void 0 === i ? void 0 : i.offsetWidth) || 0) - l,
p = ((null === (o = T.current) || void 0 === o ? void 0 : o.offsetHeight) || 0) - c;
U(u), X(p), se((function() {
var e = new Map;
return h.forEach((function(t) {
var n = t.key,
r = M(n).current;
r && e.set(n, {
width: r.offsetWidth,
height: r.offsetHeight,
left: r.offsetLeft,
top: r.offsetTop
})
})), e
}))
})),
Oe = h.slice(0, xe),
Pe = h.slice(ke + 1),
Me = [].concat(Bh(Oe), Bh(Pe)),
De = Mp(dt(), 2),
Ie = De[0],
Ne = De[1],
Re = le.get(m),
je = vt();
function Le() {
gd.cancel(je.current)
}
gt((function() {
var e = {};
return Re && (I ? (v ? e.right = Re.right : e.left = Re.left, e.width = Re.width) : (e.top = Re.top, e.height = Re.height)), Le(), je.current = gd((function() {
Ne(e)
})), Le
}), [Re, I, v]), gt((function() {
be()
}), [m, Re, le, I]), gt((function() {
Ee()
}), [v, x, m, h.map((function(e) {
return e.key
})).join("_")]);
var Fe, Be, ze, He, Ue = !!Me.length,
We = "".concat(u, "-nav-wrap");
return I ? v ? (Be = R > 0, Fe = R + Y < H) : (Fe = R < 0, Be = -R + Y < H) : (ze = F < 0, He = -F + $ < V), Te("div", {
ref: t,
role: "tablist",
className: Rl("".concat(u, "-nav"), p),
style: d,
onKeyDown: function() {
ve()
}
}, Te(hk, {
position: "left",
extra: _,
prefixCls: u
}), Te(Cb, {
onResize: Ee
}, Te("div", {
className: Rl(We, (n = {}, Dh(n, "".concat(We, "-ping-left"), Fe), Dh(n, "".concat(We, "-ping-right"), Be), Dh(n, "".concat(We, "-ping-top"), ze), Dh(n, "".concat(We, "-ping-bottom"), He), n)),
ref: E
}, Te(Cb, {
onResize: Ee
}, Te("div", {
ref: T,
className: "".concat(u, "-nav-list"),
style: {
transform: "translate(".concat(R, "px, ").concat(F, "px)"),
transition: ge ? "none" : void 0
}
}, Se, Te(nk, {
ref: A,
prefixCls: u,
locale: y,
editable: b,
style: Hh(Hh({}, 0 === Se.length ? void 0 : Ce), {}, {
visibility: Ue ? "hidden" : null
})
}), Te("div", {
className: Rl("".concat(u, "-ink-bar"), Dh({}, "".concat(u, "-ink-bar-animated"), g.inkBar)),
style: Ie
}))))), Te(ik, wh({}, e, {
removeAriaLabel: null == y ? void 0 : y.removeAriaLabel,
ref: O,
prefixCls: u,
tabs: Me,
className: !Ue && ce,
tabMoving: !!ge
})), Te(hk, {
position: "right",
extra: _,
prefixCls: u
}))
}
var dk = Ft(pk);
function fk(e) {
var t = e.id,
n = e.activeKey,
r = e.animated,
i = e.tabPosition,
o = e.rtl,
a = e.destroyInactiveTabPane,
s = wt(ok),
l = s.prefixCls,
c = s.tabs,
u = r.tabPane,
h = c.findIndex((function(e) {
return e.key === n
}));
return Te("div", {
className: Rl("".concat(l, "-content-holder"))
}, Te("div", {
className: Rl("".concat(l, "-content"), "".concat(l, "-content-").concat(i), Dh({}, "".concat(l, "-content-animated"), u)),
style: h && u ? Dh({}, o ? "marginRight" : "marginLeft", "-".concat(h, "00%")) : null
}, c.map((function(e) {
return yn(e.node, {
key: e.key,
prefixCls: l,
tabKey: e.key,
id: t,
animated: u,
active: e.key === n,
destroyInactiveTabPane: a
})
}))))
}
function gk(e) {
var t = e.prefixCls,
n = e.forceRender,
r = e.className,
i = e.style,
o = e.id,
a = e.active,
s = e.animated,
l = e.destroyInactiveTabPane,
c = e.tabKey,
u = e.children,
h = Mp(dt(n), 2),
p = h[0],
d = h[1];
gt((function() {
a ? d(!0) : l && d(!1)
}), [a, l]);
var f = {};
return a || (s ? (f.visibility = "hidden", f.height = 0, f.overflowY = "hidden") : f.display = "none"), Te("div", {
id: o && "".concat(o, "-panel-").concat(c),
role: "tabpanel",
tabIndex: a ? 0 : -1,
"aria-labelledby": o && "".concat(o, "-tab-").concat(c),
"aria-hidden": !a,
style: Hh(Hh({}, f), i),
className: Rl("".concat(t, "-tabpane"), a && "".concat(t, "-tabpane-active"), r)
}, (a || p || n) && u)
}
var mk = ["id", "prefixCls", "className", "children", "direction", "activeKey", "defaultActiveKey", "editable", "animated", "tabPosition", "tabBarGutter", "tabBarStyle", "tabBarExtraContent", "locale", "moreIcon", "moreTransitionName",
"destroyInactiveTabPane", "renderTabBar", "onChange", "onTabClick", "onTabScroll"
],
vk = 0;
function _k(e, t) {
var n, r, i = e.id,
o = e.prefixCls,
a = void 0 === o ? "rc-tabs" : o,
s = e.className,
l = e.children,
c = e.direction,
u = e.activeKey,
h = e.defaultActiveKey,
p = e.editable,
d = e.animated,
f = void 0 === d ? {
inkBar: !0,
tabPane: !1
} : d,
g = e.tabPosition,
m = void 0 === g ? "top" : g,
v = e.tabBarGutter,
_ = e.tabBarStyle,
b = e.tabBarExtraContent,
y = e.locale,
w = e.moreIcon,
x = e.moreTransitionName,
k = e.destroyInactiveTabPane,
C = e.renderTabBar,
S = e.onChange,
E = e.onTabClick,
T = e.onTabScroll,
O = Ih(e, mk),
A = function(e) {
return hb(e).map((function(e) {
return bn(e) ? Hh(Hh({
key: void 0 !== e.key ? String(e.key) : void 0
}, e.props), {}, {
node: e
}) : null
})).filter((function(e) {
return e
}))
}(l),
P = "rtl" === c;
r = !1 === f ? {
inkBar: !1,
tabPane: !1
} : !0 === f ? {
inkBar: !0,
tabPane: !0
} : Hh({
inkBar: !0,
tabPane: !1
}, "object" === kh(f) ? f : {});
var M = Mp(dt(!1), 2),
D = M[0],
I = M[1];
gt((function() {
I(pb())
}), []);
var N = Mp(gb((function() {
var e;
return null === (e = A[0]) || void 0 === e ? void 0 : e.key
}), {
value: u,
defaultValue: h
}), 2),
R = N[0],
j = N[1],
L = Mp(dt((function() {
return A.findIndex((function(e) {
return e.key === R
}))
})), 2),
F = L[0],
B = L[1];
gt((function() {
var e, t = A.findIndex((function(e) {
return e.key === R
})); - 1 === t && (t = Math.max(0, Math.min(F, A.length - 1)), j(null === (e = A[t]) || void 0 === e ? void 0 : e.key));
B(t)
}), [A.map((function(e) {
return e.key
})).join("_"), R, F]);
var z = Mp(gb(null, {
value: i
}), 2),
H = z[0],
U = z[1],
W = m;
D && !["left", "right"].includes(m) && (W = "top"), gt((function() {
i || (U("rc-tabs-".concat(vk)), vk += 1)
}), []);
var V, X = {
id: H,
activeKey: R,
animated: r,
tabPosition: W,
rtl: P,
mobile: D
},
G = Hh(Hh({}, X), {}, {
editable: p,
locale: y,
moreIcon: w,
moreTransitionName: x,
tabBarGutter: v,
onTabClick: function(e, t) {
null == E || E(e, t);
var n = e !== R;
j(e), n && (null == S || S(e))
},
onTabScroll: T,
extra: b,
style: _,
panes: l
});
return V = C ? C(G, dk) : Te(dk, G), Te(ok.Provider, {
value: {
tabs: A,
prefixCls: a
}
}, Te("div", wh({
ref: t,
id: i,
className: Rl(a, "".concat(a, "-").concat(W), (n = {}, Dh(n, "".concat(a, "-mobile"), D), Dh(n, "".concat(a, "-editable"), p), Dh(n, "".concat(a, "-rtl"), P), n), s)
}, O), V, Te(fk, wh({
destroyInactiveTabPane: k
}, X, {
animated: r
}))))
}
var bk = Ft(_k);
bk.TabPane = gk;
var yk = bk,
wk = "DesignOperator-module_tabs__kDJ51",
xk = "DesignOperator-module_app_parakeet_operator__lL4U1",
kk = "DesignOperator-module_tab_panel__cumuu";
function Ck(e) {
return !(!e.addonBefore && !e.addonAfter)
}
function Sk(e) {
return !!(e.prefix || e.suffix || e.allowClear)
}
function Ek(e, t, n, r) {
if (n) {
var i = t;
if ("click" === t.type) {
var o = e.cloneNode(!0);
return i = Object.create(t, {
target: {
value: o
},
currentTarget: {
value: o
}
}), o.value = "", void n(i)
}
if (void 0 !== r) return i = Object.create(t, {
target: {
value: e
},
currentTarget: {
value: e
}
}), e.value = r, void n(i);
n(i)
}
}
function Tk(e) {
return null == e ? "" : String(e)
}
c(
".DesignOperator-module_parakeet_comp_tab__Ekj1e{display:flex;font-weight:600;margin-bottom:16px}.DesignOperator-module_tabs__kDJ51{border:none!important;border-radius:0 0 8px 8px}.DesignOperator-module_app_parakeet_operator__lL4U1{box-sizing:border-box}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list{background-color:hsla(0,0%,90%,.4);display:flex;padding:5px;width:100%}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab{background:none;border-radius:4px;display:flex;flex:1;height:30px;justify-content:center}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active{background-color:#fff;color:#333}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active .rc-tabs-tab-btn{color:#333}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-btn{align-items:center;color:rgba(51,51,51,.6);display:flex;font-size:16px;font-weight:500!important}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-ink-bar{display:none}.DesignOperator-module_tab_item_active__8Mzpg{border:none;color:#333;height:34px;position:relative}.DesignOperator-module_tab_panel__cumuu{background-color:#fdfdfd}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled{flex:unset;margin:0 18px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-child{margin-right:22px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:nth-child(5){margin-left:22px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled:hover{background-color:#fff}@media screen and (max-width:959px){.DesignOperator-module_tab_panel__cumuu{align-items:center;display:flex;height:auto;min-height:108px}.DesignOperator-module_tab_panel__cumuu>div{width:100%}.DesignOperator-module_app_parakeet_operator__lL4U1 .icon-custom{scale:.8}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-of-type{flex:unset;margin:0 8px 0 3px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list div:nth-last-child(2){flex:unset;margin:0 3px 0 8px}}");
var Ok = function(e) {
var t, n = e.inputElement,
r = e.prefixCls,
i = e.prefix,
o = e.suffix,
a = e.addonBefore,
s = e.addonAfter,
l = e.className,
c = e.style,
u = e.affixWrapperClassName,
h = e.groupClassName,
p = e.wrapperClassName,
d = e.disabled,
f = e.readOnly,
g = e.focused,
m = e.triggerFocus,
v = e.allowClear,
_ = e.value,
b = e.handleReset,
y = e.hidden,
w = e.inputStyle,
x = e.classes,
k = vt(null),
C = yn(n, {
value: _,
hidden: y,
style: Hh(Hh({}, null === (t = n.props) || void 0 === t ? void 0 : t.style), w)
});
if (Sk(e)) {
var S, E = "".concat(r, "-affix-wrapper"),
T = Rl(E, (Dh(S = {}, "".concat(E, "-disabled"), d), Dh(S, "".concat(E, "-focused"), g), Dh(S, "".concat(E, "-readonly"), f), Dh(S, "".concat(E, "-input-with-clear-btn"), o && v && _), S), !Ck(e) && l, u, null == x ? void 0 : x
.affixWrapper),
O = (o || v) && Nn.createElement("span", {
className: "".concat(r, "-suffix")
}, function() {
var e;
if (!v) return null;
var t = !d && !f && _,
n = "".concat(r, "-clear-icon"),
i = "object" === kh(v) && null != v && v.clearIcon ? v.clearIcon : "✖";
return Nn.createElement("span", {
onClick: b,
onMouseDown: function(e) {
return e.preventDefault()
},
className: Rl(n, (e = {}, Dh(e, "".concat(n, "-hidden"), !t), Dh(e, "".concat(n, "-has-suffix"), !!o), e)),
role: "button",
tabIndex: -1
}, i)
}(), o);
C = Nn.createElement("span", {
className: T,
style: c,
hidden: !Ck(e) && y,
onClick: function(e) {
var t;
null !== (t = k.current) && void 0 !== t && t.contains(e.target) && (null == m || m())
},
ref: k
}, i && Nn.createElement("span", {
className: "".concat(r, "-prefix")
}, i), yn(n, {
style: null != w ? w : null,
value: _,
hidden: null
}), O)
}
if (Ck(e)) {
var A = "".concat(r, "-group"),
P = "".concat(A, "-addon"),
M = Rl("".concat(r, "-wrapper"), A, p, null == x ? void 0 : x.wrapper),
D = Rl("".concat(r, "-group-wrapper"), l, h, null == x ? void 0 : x.group);
return Nn.createElement("span", {
className: D,
style: c,
hidden: y
}, Nn.createElement("span", {
className: M
}, a && Nn.createElement("span", {
className: P
}, a), yn(C, {
style: null != w ? w : null,
hidden: null
}), s && Nn.createElement("span", {
className: P
}, s)))
}
return C
},
Ak = ["autoComplete", "onChange", "onFocus", "onBlur", "onPressEnter", "onKeyDown", "prefixCls", "disabled", "htmlSize", "className", "maxLength", "suffix", "showCount", "type", "inputClassName", "classes"],
Pk = Ft((function(e, t) {
var n = e.autoComplete,
r = e.onChange,
i = e.onFocus,
o = e.onBlur,
a = e.onPressEnter,
s = e.onKeyDown,
l = e.prefixCls,
c = void 0 === l ? "rc-input" : l,
u = e.disabled,
h = e.htmlSize,
p = e.className,
d = e.maxLength,
f = e.suffix,
g = e.showCount,
m = e.type,
v = void 0 === m ? "text" : m,
_ = e.inputClassName,
b = e.classes,
y = Ih(e, Ak),
w = Mp(gb(e.defaultValue, {
value: e.value
}), 2),
x = w[0],
k = w[1],
C = Mp(dt(!1), 2),
S = C[0],
E = C[1],
T = vt(null),
O = function(e) {
T.current && function(e, t) {
if (e) {
e.focus(t);
var n = (t || {}).cursor;
if (n) {
var r = e.value.length;
switch (n) {
case "start":
e.setSelectionRange(0, 0);
break;
case "end":
e.setSelectionRange(r, r);
break;
default:
e.setSelectionRange(0, r)
}
}
}
}(T.current, e)
};
_t(t, (function() {
return {
focus: O,
blur: function() {
var e;
null === (e = T.current) || void 0 === e || e.blur()
},
setSelectionRange: function(e, t, n) {
var r;
null === (r = T.current) || void 0 === r || r.setSelectionRange(e, t, n)
},
select: function() {
var e;
null === (e = T.current) || void 0 === e || e.select()
},
input: T.current
}
})), gt((function() {
E((function(e) {
return (!e || !u) && e
}))
}), [u]);
var A, P = function(t) {
void 0 === e.value && k(t.target.value), T.current && Ek(T.current, t, r)
},
M = function(e) {
a && "Enter" === e.key && a(e), null == s || s(e)
},
D = function(e) {
E(!0), null == i || i(e)
},
I = function(e) {
E(!1), null == o || o(e)
};
return Nn.createElement(Ok, wh({}, y, {
prefixCls: c,
className: p,
inputElement: (A = Kb(e, ["prefixCls", "onPressEnter", "addonBefore", "addonAfter", "prefix", "suffix", "allowClear", "defaultValue", "showCount", "affixWrapperClassName", "groupClassName", "inputClassName", "classes",
"wrapperClassName", "htmlSize"
]), Nn.createElement("input", wh({
autoComplete: n
}, A, {
onChange: P,
onFocus: D,
onBlur: I,
onKeyDown: M,
className: Rl(c, Dh({}, "".concat(c, "-disabled"), u), _, null == b ? void 0 : b.input, !Ck(e) && !Sk(e) && p),
ref: T,
size: h,
type: v
}))),
handleReset: function(e) {
k(""), O(), T.current && Ek(T.current, e, r)
},
value: Tk(x),
focused: S,
triggerFocus: O,
suffix: function() {
var e = Number(d) > 0;
if (f || g) {
var t = Tk(x),
n = Bh(t).length,
r = "object" === kh(g) ? g.formatter({
value: t,
count: n,
maxLength: d
}) : "".concat(n).concat(e ? " / ".concat(d) : "");
return Nn.createElement(Nn.Fragment, null, !!g && Nn.createElement("span", {
className: Rl("".concat(c, "-show-count-suffix"), Dh({}, "".concat(c, "-show-count-has-suffix"), !!f))
}, r), f)
}
return null
}(),
disabled: u,
classes: b
}))
})),
Mk = Pk,
Dk = "SizeOperator-module_input__lSSD5",
Ik = "SizeOperator-module_suffix__kFdZc",
Nk = "SizeOperator-module_input_controller__pl-h0",
Rk = "SizeOperator-module_label__4U5QN",
jk = "SizeOperator-module_tab_content__SYACz",
Lk = "SizeOperator-module_tip__-z7-F",
Fk = "SizeOperator-module_tab_content_item__yRWHu";
c(
'.SizeOperator-module_input__lSSD5{background:#fff;border:1px solid rgba(51,51,51,.12);border-radius:4px;display:flex;font-size:14px;height:33px;margin-left:12px;outline:none!important;padding:6px 24px 6px 12px}.SizeOperator-module_suffix__kFdZc{position:relative}.SizeOperator-module_suffix__kFdZc:after{color:rgba(51,51,51,.4);content:"px";display:block;font-size:16px;font-weight:400;line-height:16px;position:absolute;right:6px;top:6px}.SizeOperator-module_input_controller__pl-h0{width:88px}.SizeOperator-module_label__4U5QN{color:#333;font-size:15px;font-weight:400;line-height:130%;width:50px}.SizeOperator-module_tab_content__SYACz{padding:20px 24px}.SizeOperator-module_tip__-z7-F{color:rgba(51,51,51,.5);font-size:15px;font-weight:400;line-height:130%;margin-left:16px;text-align:center}.SizeOperator-module_tab_content_item__yRWHu{margin-top:12px}@media screen and (max-width:959px){.SizeOperator-module_tip__-z7-F{font-size:14px}.SizeOperator-module_tab_content__SYACz{padding:0 16px}.SizeOperator-module_input__lSSD5{margin-left:8px}.SizeOperator-module_tip__-z7-F{margin-left:12px}.SizeOperator-module_label__4U5QN{font-size:14px}.SizeOperator-module_suffix__kFdZc:after{top:7px}}');
var Bk = e => {
var {
onChange: t,
defaultData: n
} = e, [r, i] = dt({
width: "",
height: ""
}), {
formatMessage: o
} = vo();
gt((() => {
i(n)
}), [n]);
var a = (e, t) => {
i(h(h({}, r), {}, {
[e]: t.target.value
}))
},
s = e => {
var n = Math.max(Math.min(r[e], O), T),
o = h(h({}, r), {}, {
[e]: n
});
i(o), t(o)
};
return zl("div", {
className: jk,
children: [zl("div", {
className: Vd,
children: [zl("span", {
className: Rk,
children: o({
id: "width"
})
}), zl("div", {
className: Ik,
children: zl(Mk, {
value: null == r ? void 0 : r.width,
className: Rl([
[Dk],
[Nk]
]),
maxLength: 4,
onChange: e => a("width", e),
onBlur: () => s("width")
})
}), zl("span", {
className: Lk,
children: [o({
id: "size_range"
}), ": ", T, "-", O, "px"]
})]
}), zl("div", {
className: Rl([
[Vd],
[Fk]
]),
children: [zl("span", {
className: Rk,
children: o({
id: "height"
})
}), zl("div", {
className: Ik,
children: zl(Mk, {
value: null == r ? void 0 : r.height,
className: Rl([
[Dk],
[Nk]
]),
maxLength: 4,
onChange: e => a("height", e),
onBlur: () => s("height")
})
}), zl("span", {
className: Lk,
children: [o({
id: "size_range"
}), ": ", T, "-", O, "px"]
})]
})]
})
},
zk = Qe({
min: 0,
max: 0,
direction: "ltr",
step: 1,
includedStart: 0,
includedEnd: 0,
tabIndex: 0,
keyboard: !0
});
function Hk(e, t, n) {
return (e - t) / (n - t)
}
function Uk(e, t, n, r) {
var i = Hk(t, n, r),
o = {};
switch (e) {
case "rtl":
o.right = "".concat(100 * i, "%"), o.transform = "translateX(50%)";
break;
case "btt":
o.bottom = "".concat(100 * i, "%"), o.transform = "translateY(50%)";
break;
case "ttb":
o.top = "".concat(100 * i, "%"), o.transform = "translateY(-50%)";
break;
default:
o.left = "".concat(100 * i, "%"), o.transform = "translateX(-50%)"
}
return o
}
function Wk(e, t) {
return Array.isArray(e) ? e[t] : e
}
var Vk = ["prefixCls", "value", "valueIndex", "onStartMove", "style", "render", "dragging", "onOffsetChange"],
Xk = Ft((function(e, t) {
var n, r, i = e.prefixCls,
o = e.value,
a = e.valueIndex,
s = e.onStartMove,
l = e.style,
c = e.render,
u = e.dragging,
h = e.onOffsetChange,
p = Ih(e, Vk),
d = wt(zk),
f = d.min,
g = d.max,
m = d.direction,
v = d.disabled,
_ = d.keyboard,
b = d.range,
y = d.tabIndex,
w = d.ariaLabelForHandle,
x = d.ariaLabelledByForHandle,
k = d.ariaValueTextFormatterForHandle,
C = "".concat(i, "-handle"),
S = function(e) {
v || s(e, a)
},
E = Uk(m, o, f, g),
T = Te("div", wh({
ref: t,
className: Rl(C, (n = {}, Dh(n, "".concat(C, "-").concat(a + 1), b), Dh(n, "".concat(C, "-dragging"), u), n)),
style: Hh(Hh({}, E), l),
onMouseDown: S,
onTouchStart: S,
onKeyDown: function(e) {
if (!v && _) {
var t = null;
switch (e.which || e.keyCode) {
case w_.LEFT:
t = "ltr" === m || "btt" === m ? -1 : 1;
break;
case w_.RIGHT:
t = "ltr" === m || "btt" === m ? 1 : -1;
break;
case w_.UP:
t = "ttb" !== m ? 1 : -1;
break;
case w_.DOWN:
t = "ttb" !== m ? -1 : 1;
break;
case w_.HOME:
t = "min";
break;
case w_.END:
t = "max";
break;
case w_.PAGE_UP:
t = 2;
break;
case w_.PAGE_DOWN:
t = -2
}
null !== t && (e.preventDefault(), h(t, a))
}
},
tabIndex: v ? null : Wk(y, a),
role: "slider",
"aria-valuemin": f,
"aria-valuemax": g,
"aria-valuenow": o,
"aria-disabled": v,
"aria-label": Wk(w, a),
"aria-labelledby": Wk(x, a),
"aria-valuetext": null === (r = Wk(k, a)) || void 0 === r ? void 0 : r(o)
}, p));
return c && (T = c(T, {
index: a,
prefixCls: i,
value: o,
dragging: u
})), T
})),
Gk = Xk,
Yk = ["prefixCls", "style", "onStartMove", "onOffsetChange", "values", "handleRender", "draggingIndex"],
qk = Ft((function(e, t) {
var n = e.prefixCls,
r = e.style,
i = e.onStartMove,
o = e.onOffsetChange,
a = e.values,
s = e.handleRender,
l = e.draggingIndex,
c = Ih(e, Yk),
u = vt({});
return _t(t, (function() {
return {
focus: function(e) {
var t;
null === (t = u.current[e]) || void 0 === t || t.focus()
}
}
})), Te(Pe, null, a.map((function(e, t) {
return Te(Gk, wh({
ref: function(e) {
e ? u.current[t] = e : delete u.current[t]
},
dragging: l === t,
prefixCls: n,
style: Wk(r, t),
key: t,
value: e,
valueIndex: t,
onStartMove: i,
onOffsetChange: o,
render: s
}, c))
})))
})),
Kk = qk;
function $k(e) {
var t = "touches" in e ? e.touches[0] : e;
return {
pageX: t.pageX,
pageY: t.pageY
}
}
function Zk(e) {
var t = e.prefixCls,
n = e.style,
r = e.start,
i = e.end,
o = e.index,
a = e.onStartMove,
s = wt(zk),
l = s.direction,
c = s.min,
u = s.max,
h = s.disabled,
p = s.range,
d = "".concat(t, "-track"),
f = Hk(r, c, u),
g = Hk(i, c, u),
m = function(e) {
!h && a && a(e, -1)
},
v = {};
switch (l) {
case "rtl":
v.right = "".concat(100 * f, "%"), v.width = "".concat(100 * g - 100 * f, "%");
break;
case "btt":
v.bottom = "".concat(100 * f, "%"), v.height = "".concat(100 * g - 100 * f, "%");
break;
case "ttb":
v.top = "".concat(100 * f, "%"), v.height = "".concat(100 * g - 100 * f, "%");
break;
default:
v.left = "".concat(100 * f, "%"), v.width = "".concat(100 * g - 100 * f, "%")
}
return Te("div", {
className: Rl(d, p && "".concat(d, "-").concat(o + 1)),
style: Hh(Hh({}, v), n),
onMouseDown: m,
onTouchStart: m
})
}
function Jk(e) {
var t = e.prefixCls,
n = e.style,
r = e.values,
i = e.startPoint,
o = e.onStartMove,
a = wt(zk),
s = a.included,
l = a.range,
c = a.min,
u = bt((function() {
if (!l) {
if (0 === r.length) return [];
var e = null != i ? i : c,
t = r[0];
return [{
start: Math.min(e, t),
end: Math.max(e, t)
}]
}
for (var n = [], o = 0; o < r.length - 1; o += 1) n.push({
start: r[o],
end: r[o + 1]
});
return n
}), [r, l, i, c]);
return s ? u.map((function(e, r) {
var i = e.start,
a = e.end;
return Te(Zk, {
index: r,
prefixCls: t,
style: Wk(n, r),
start: i,
end: a,
key: r,
onStartMove: o
})
})) : null
}
function Qk(e) {
var t = e.prefixCls,
n = e.style,
r = e.children,
i = e.value,
o = e.onClick,
a = wt(zk),
s = a.min,
l = a.max,
c = a.direction,
u = a.includedStart,
h = a.includedEnd,
p = a.included,
d = "".concat(t, "-text"),
f = Uk(c, i, s, l);
return Te("span", {
className: Rl(d, Dh({}, "".concat(d, "-active"), p && u <= i && i <= h)),
style: Hh(Hh({}, f), n),
onMouseDown: function(e) {
e.stopPropagation()
},
onClick: function() {
o(i)
}
}, r)
}
function eC(e) {
var t = e.prefixCls,
n = e.marks,
r = e.onClick,
i = "".concat(t, "-mark");
return n.length ? Te("div", {
className: i
}, n.map((function(e) {
var t = e.value,
n = e.style,
o = e.label;
return Te(Qk, {
key: t,
prefixCls: i,
style: n,
value: t,
onClick: r
}, o)
}))) : null
}
function tC(e) {
var t = e.prefixCls,
n = e.value,
r = e.style,
i = e.activeStyle,
o = wt(zk),
a = o.min,
s = o.max,
l = o.direction,
c = o.included,
u = o.includedStart,
h = o.includedEnd,
p = "".concat(t, "-dot"),
d = c && u <= n && n <= h,
f = Hh(Hh({}, Uk(l, n, a, s)), "function" == typeof r ? r(n) : r);
return d && (f = Hh(Hh({}, f), "function" == typeof i ? i(n) : i)), Te("span", {
className: Rl(p, Dh({}, "".concat(p, "-active"), d)),
style: f
})
}
function nC(e) {
var t = e.prefixCls,
n = e.marks,
r = e.dots,
i = e.style,
o = e.activeStyle,
a = wt(zk),
s = a.min,
l = a.max,
c = a.step,
u = bt((function() {
var e = new Set;
if (n.forEach((function(t) {
e.add(t.value)
})), r && null !== c)
for (var t = s; t <= l;) e.add(t), t += c;
return Array.from(e)
}), [s, l, c, r, n]);
return Te("div", {
className: "".concat(t, "-step")
}, u.map((function(e) {
return Te(tC, {
prefixCls: t,
key: e,
value: e,
style: i,
activeStyle: o
})
})))
}
var rC = Ft((function(e, t) {
var n, r = e.prefixCls,
i = void 0 === r ? "rc-slider" : r,
o = e.className,
a = e.style,
s = e.disabled,
l = void 0 !== s && s,
c = e.keyboard,
u = void 0 === c || c,
h = e.autoFocus,
p = e.onFocus,
d = e.onBlur,
f = e.min,
g = void 0 === f ? 0 : f,
m = e.max,
v = void 0 === m ? 100 : m,
_ = e.step,
b = void 0 === _ ? 1 : _,
y = e.value,
w = e.defaultValue,
x = e.range,
k = e.count,
C = e.onChange,
S = e.onBeforeChange,
E = e.onAfterChange,
T = e.allowCross,
O = void 0 === T || T,
A = e.pushable,
P = void 0 !== A && A,
M = e.draggableTrack,
D = e.reverse,
I = e.vertical,
N = e.included,
R = void 0 === N || N,
j = e.startPoint,
L = e.trackStyle,
F = e.handleStyle,
B = e.railStyle,
z = e.dotStyle,
H = e.activeDotStyle,
U = e.marks,
W = e.dots,
V = e.handleRender,
X = e.tabIndex,
G = void 0 === X ? 0 : X,
Y = e.ariaLabelForHandle,
q = e.ariaLabelledByForHandle,
K = e.ariaValueTextFormatterForHandle,
$ = vt(),
Z = vt(),
J = bt((function() {
return I ? D ? "ttb" : "btt" : D ? "rtl" : "ltr"
}), [D, I]),
Q = bt((function() {
return isFinite(g) ? g : 0
}), [g]),
ee = bt((function() {
return isFinite(v) ? v : 100
}), [v]),
te = bt((function() {
return null !== b && b <= 0 ? 1 : b
}), [b]),
ne = bt((function() {
return !0 === P ? te : P >= 0 && P
}), [P, te]),
re = bt((function() {
return Object.keys(U || {}).map((function(e) {
var t = U[e],
n = {
value: Number(e)
};
return t && "object" === kh(t) && !bn(t) && ("label" in t || "style" in t) ? (n.style = t.style, n.label = t.label) : n.label = t, n
})).filter((function(e) {
var t = e.label;
return t || "number" == typeof t
})).sort((function(e, t) {
return e.value - t.value
}))
}), [U]),
ie = function(e, t, n, r, i, o) {
var a = yt((function(n) {
var r = isFinite(n) ? n : e;
return r = Math.min(t, n), Math.max(e, r)
}), [e, t]),
s = yt((function(r) {
if (null !== n) {
var i = e + Math.round((a(r) - e) / n) * n,
o = function(e) {
return (String(e).split(".")[1] || "").length
},
s = Math.max(o(n), o(t), o(e)),
l = Number(i.toFixed(s));
return e <= l && l <= t ? l : null
}
return null
}), [n, e, t, a]),
l = yt((function(i) {
var o = a(i),
l = r.map((function(e) {
return e.value
}));
null !== n && l.push(s(i)), l.push(e, t);
var c = l[0],
u = t - e;
return l.forEach((function(e) {
var t = Math.abs(o - e);
t <= u && (c = e, u = t)
})), c
}), [e, t, r, n, a, s]),
c = function i(o, a, l) {
var c = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit";
if ("number" == typeof a) {
var u, h = o[l],
p = h + a,
d = [];
r.forEach((function(e) {
d.push(e.value)
})), d.push(e, t), d.push(s(h));
var f = a > 0 ? 1 : -1;
"unit" === c ? d.push(s(h + f * n)) : d.push(s(p)), d = d.filter((function(e) {
return null !== e
})).filter((function(e) {
return a < 0 ? e <= h : e >= h
})), "unit" === c && (d = d.filter((function(e) {
return e !== h
})));
var g = "unit" === c ? h : p;
u = d[0];
var m = Math.abs(u - g);
if (d.forEach((function(e) {
var t = Math.abs(e - g);
t < m && (u = e, m = t)
})), void 0 === u) return a < 0 ? e : t;
if ("dist" === c) return u;
if (Math.abs(a) > 1) {
var v = Bh(o);
return v[l] = u, i(v, a - f, l, c)
}
return u
}
return "min" === a ? e : "max" === a ? t : void 0
},
u = function(e, t, n) {
var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit",
i = e[n],
o = c(e, t, n, r);
return {
value: o,
changed: o !== i
}
},
h = function(e) {
return null === o && 0 === e || "number" == typeof o && e < o
};
return [l, function(e, t, n) {
var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit",
a = e.map(l),
s = a[n],
p = c(a, t, n, r);
if (a[n] = p, !1 === i) {
var d = o || 0;
n > 0 && a[n - 1] !== s && (a[n] = Math.max(a[n], a[n - 1] + d)), n < a.length - 1 && a[n + 1] !== s && (a[n] = Math.min(a[n], a[n + 1] - d))
} else if ("number" == typeof o || null === o) {
for (var f = n + 1; f < a.length; f += 1)
for (var g = !0; h(a[f] - a[f - 1]) && g;) {
var m = u(a, 1, f);
a[f] = m.value, g = m.changed
}
for (var v = n; v > 0; v -= 1)
for (var _ = !0; h(a[v] - a[v - 1]) && _;) {
var b = u(a, -1, v - 1);
a[v - 1] = b.value, _ = b.changed
}
for (var y = a.length - 1; y > 0; y -= 1)
for (var w = !0; h(a[y] - a[y - 1]) && w;) {
var x = u(a, -1, y - 1);
a[y - 1] = x.value, w = x.changed
}
for (var k = 0; k < a.length - 1; k += 1)
for (var C = !0; h(a[k + 1] - a[k]) && C;) {
var S = u(a, 1, k + 1);
a[k + 1] = S.value, C = S.changed
}
}
return {
value: a[n],
values: a
}
}]
}(Q, ee, te, re, O, ne),
oe = Mp(ie, 2),
ae = oe[0],
se = oe[1],
le = Mp(gb(w, {
value: y
}), 2),
ce = le[0],
ue = le[1],
he = bt((function() {
var e = null == ce ? [] : Array.isArray(ce) ? ce : [ce],
t = Mp(e, 1)[0],
n = null === ce ? [] : [void 0 === t ? Q : t];
if (x) {
if (n = Bh(e), k || void 0 === ce) {
var r = k >= 0 ? k + 1 : 2;
for (n = n.slice(0, r); n.length < r;) {
var i;
n.push(null !== (i = n[n.length - 1]) && void 0 !== i ? i : Q)
}
}
n.sort((function(e, t) {
return e - t
}))
}
return n.forEach((function(e, t) {
n[t] = ae(e)
})), n
}), [ce, x, Q, k, ae]),
pe = vt(he);
pe.current = he;
var de = function(e) {
return x ? e : e[0]
},
fe = function(e) {
var t = Bh(e).sort((function(e, t) {
return e - t
}));
C && !Bw(t, pe.current, !0) && C(de(t)), ue(t)
},
ge = function(e) {
if (!l) {
var t = 0,
n = ee - Q;
he.forEach((function(r, i) {
var o = Math.abs(e - r);
o <= n && (n = o, t = i)
}));
var r = Bh(he);
r[t] = e, x && !he.length && void 0 === k && r.push(e), null == S || S(de(r)), fe(r), null == E || E(de(r))
}
},
me = Mp(dt(null), 2),
ve = me[0],
_e = me[1];
gt((function() {
if (null !== ve) {
var e = he.indexOf(ve);
e >= 0 && $.current.focus(e)
}
_e(null)
}), [ve]);
var be = bt((function() {
return (!M || null !== te) && M
}), [M, te]),
ye = function(e, t, n, r, i, o, a, s, l) {
var c = Mp(dt(null), 2),
u = c[0],
h = c[1],
p = Mp(dt(-1), 2),
d = p[0],
f = p[1],
g = Mp(dt(n), 2),
m = g[0],
v = g[1],
_ = Mp(dt(n), 2),
b = _[0],
y = _[1],
w = vt(null),
x = vt(null);
gt((function() {
-1 === d && v(n)
}), [n, d]), gt((function() {
return function() {
document.removeEventListener("mousemove", w.current), document.removeEventListener("mouseup", x.current), document.removeEventListener("touchmove", w.current), document.removeEventListener("touchend", x.current)
}
}), []);
var k = function(e, t) {
m.some((function(t, n) {
return t !== e[n]
})) && (void 0 !== t && h(t), v(e), a(e))
},
C = function(e, t) {
if (-1 === e) {
var n = b[0],
a = b[b.length - 1],
s = r - n,
c = i - a,
u = t * (i - r);
u = Math.max(u, s), u = Math.min(u, c);
var h = o(n + u);
u = h - n;
var p = b.map((function(e) {
return e + u
}));
k(p)
} else {
var d = (i - r) * t,
f = Bh(m);
f[e] = b[e];
var g = l(f, d, e, "dist");
k(g.values, g.value)
}
},
S = vt(C);
S.current = C;
var E = bt((function() {
var e = Bh(n).sort((function(e, t) {
return e - t
})),
t = Bh(m).sort((function(e, t) {
return e - t
}));
return e.every((function(e, n) {
return e === t[n]
})) ? m : n
}), [n, m]);
return [d, u, E, function(r, i) {
r.stopPropagation();
var o = n[i];
f(i), h(o), y(n);
var a = $k(r),
l = a.pageX,
c = a.pageY,
u = function(n) {
n.preventDefault();
var r, o = $k(n),
a = o.pageX,
s = o.pageY,
u = a - l,
h = s - c,
p = e.current.getBoundingClientRect(),
d = p.width,
f = p.height;
switch (t) {
case "btt":
r = -h / f;
break;
case "ttb":
r = h / f;
break;
case "rtl":
r = -u / d;
break;
default:
r = u / d
}
S.current(i, r)
},
p = function e(t) {
t.preventDefault(), document.removeEventListener("mouseup", e), document.removeEventListener("mousemove", u), document.removeEventListener("touchend", e), document.removeEventListener("touchmove", u), w.current =
null, x.current = null, f(-1), s()
};
document.addEventListener("mouseup", p), document.addEventListener("mousemove", u), document.addEventListener("touchend", p), document.addEventListener("touchmove", u), w.current = u, x.current = p
}]
}(Z, J, he, Q, ee, ae, fe, (function() {
null == E || E(de(pe.current))
}), se),
we = Mp(ye, 4),
xe = we[0],
ke = we[1],
Ce = we[2],
Se = we[3],
Ee = function(e, t) {
Se(e, t), null == S || S(de(pe.current))
},
Oe = -1 !== xe;
gt((function() {
if (!Oe) {
var e = he.lastIndexOf(ke);
$.current.focus(e)
}
}), [Oe]);
var Ae = bt((function() {
return Bh(Ce).sort((function(e, t) {
return e - t
}))
}), [Ce]),
Pe = Mp(bt((function() {
return x ? [Ae[0], Ae[Ae.length - 1]] : [Q, Ae[0]]
}), [Ae, x, Q]), 2),
Me = Pe[0],
De = Pe[1];
_t(t, (function() {
return {
focus: function() {
$.current.focus(0)
},
blur: function() {
var e = document.activeElement;
Z.current.contains(e) && (null == e || e.blur())
}
}
})), gt((function() {
h && $.current.focus(0)
}), []);
var Ie = bt((function() {
return {
min: Q,
max: ee,
direction: J,
disabled: l,
keyboard: u,
step: te,
included: R,
includedStart: Me,
includedEnd: De,
range: x,
tabIndex: G,
ariaLabelForHandle: Y,
ariaLabelledByForHandle: q,
ariaValueTextFormatterForHandle: K
}
}), [Q, ee, J, l, u, te, R, Me, De, x, G, Y, q, K]);
return Te(zk.Provider, {
value: Ie
}, Te("div", {
ref: Z,
className: Rl(i, o, (n = {}, Dh(n, "".concat(i, "-disabled"), l), Dh(n, "".concat(i, "-vertical"), I), Dh(n, "".concat(i, "-horizontal"), !I), Dh(n, "".concat(i, "-with-marks"), re.length), n)),
style: a,
onMouseDown: function(e) {
e.preventDefault();
var t, n = Z.current.getBoundingClientRect(),
r = n.width,
i = n.height,
o = n.left,
a = n.top,
s = n.bottom,
l = n.right,
c = e.clientX,
u = e.clientY;
switch (J) {
case "btt":
t = (s - u) / i;
break;
case "ttb":
t = (u - a) / i;
break;
case "rtl":
t = (l - c) / r;
break;
default:
t = (c - o) / r
}
ge(ae(Q + t * (ee - Q)))
}
}, Te("div", {
className: "".concat(i, "-rail"),
style: B
}), Te(Jk, {
prefixCls: i,
style: L,
values: Ae,
startPoint: j,
onStartMove: be ? Ee : null
}), Te(nC, {
prefixCls: i,
marks: re,
dots: W,
style: z,
activeStyle: H
}), Te(Kk, {
ref: $,
prefixCls: i,
style: F,
values: Ce,
draggingIndex: xe,
onStartMove: Ee,
onOffsetChange: function(e, t) {
if (!l) {
var n = se(he, e, t);
null == S || S(de(he)), fe(n.values), null == E || E(de(n.values)), _e(n.value)
}
},
onFocus: p,
onBlur: d,
handleRender: V
}), Te(eC, {
prefixCls: i,
marks: re,
onClick: ge
})))
})),
iC = rC,
oC = "RotateOperator-module_operate_rotate__DbNrD",
aC = "RotateOperator-module_slider__RyqmW";
c(
".RotateOperator-module_operate_rotate__DbNrD{display:flex;height:118px;padding:32px 16px 28px}.RotateOperator-module_slider__RyqmW{margin:32px 33px 0 22px}.RotateOperator-module_slider__RyqmW .rc-slider-handle{box-shadow:0 0 0 5px #fff!important;height:20px;margin-top:-8px;opacity:1;position:relative;width:20px;z-index:10}.RotateOperator-module_slider__RyqmW .rc-slider-handle:after{background:#fff;border-radius:4px;box-shadow:0 2px 10px rgba(34,34,34,.06);color:#292929;content:attr(aria-valuenow);display:none;font-size:16px;font-weight:400;left:50%;line-height:120%;padding:4px 10px;position:absolute;top:-37px;transform:translateX(-50%)}.RotateOperator-module_slider__RyqmW .rc-slider-handle-dragging,.RotateOperator-module_slider__RyqmW .rc-slider-handle:active{box-shadow:0 0 0 5px #fff!important}.RotateOperator-module_slider__RyqmW .rc-slider-handle:active:after{display:block!important}.RotateOperator-module_slider__RyqmW .rc-slider-mark{top:-34px;z-index:5}.RotateOperator-module_slider__RyqmW .rc-slider-mark-text{color:#333;font-size:15px;font-weight:500;line-height:120%}.RotateOperator-module_slider__RyqmW .rc-slider-step{background:hsla(0,0%,90%,.8)}.RotateOperator-module_slider__RyqmW .rc-slider-dot:nth-child(3){background-color:#333!important;z-index:3}@media screen and (max-width:959px){.RotateOperator-module_slider__RyqmW .rc-slider-mark-text{font-size:14px}.RotateOperator-module_operate_rotate__DbNrD{height:108px;padding:32px 2px 20px}.RotateOperator-module_slider__RyqmW .rc-slider-mark{top:-38px;z-index:5}.RotateOperator-module_slider__RyqmW{margin:32px 22px 0}}");
c(
".rc-slider{border-radius:6px;height:14px;padding:5px 0;position:relative;touch-action:none;width:100%}.rc-slider,.rc-slider *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-rail{background-color:#e9e9e9;width:100%}.rc-slider-rail,.rc-slider-track{border-radius:6px;height:4px;position:absolute}.rc-slider-track{background-color:#abe2fb}.rc-slider-handle{background-color:#fff;border:2px solid #96dbfa;border-radius:50%;cursor:pointer;cursor:-webkit-grab;cursor:grab;height:14px;margin-top:-5px;opacity:.8;position:absolute;touch-action:pan-x;width:14px}.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging{border-color:#57c5f7;box-shadow:0 0 0 5px #96dbfa}.rc-slider-handle:focus{box-shadow:none;outline:none}.rc-slider-handle.focus-visible{border-color:#2db7f5;box-shadow:0 0 0 3px #96dbfa}.rc-slider-handle:focus-visible{border-color:#2db7f5;box-shadow:0 0 0 3px #96dbfa}.rc-slider-handle-click-focused:focus{border-color:#96dbfa;box-shadow:unset}.rc-slider-handle:hover{border-color:#57c5f7}.rc-slider-handle:active{border-color:#57c5f7;box-shadow:0 0 5px #57c5f7;cursor:-webkit-grabbing;cursor:grabbing}.rc-slider-mark{font-size:12px;left:0;position:absolute;top:18px;width:100%}.rc-slider-mark-text{color:#999;cursor:pointer;display:inline-block;position:absolute;text-align:center;vertical-align:middle}.rc-slider-mark-text-active{color:#666}.rc-slider-step{background:transparent;height:4px;pointer-events:none;position:absolute;width:100%}.rc-slider-dot{background-color:#fff;border:2px solid #e9e9e9;border-radius:50%;bottom:-2px;cursor:pointer;height:8px;position:absolute;vertical-align:middle;width:8px}.rc-slider-dot-active{border-color:#96dbfa}.rc-slider-dot-reverse{margin-right:-4px}.rc-slider-disabled{background-color:#e9e9e9}.rc-slider-disabled .rc-slider-track{background-color:#ccc}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-handle{background-color:#fff;border-color:#ccc;box-shadow:none;cursor:not-allowed}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-mark-text{cursor:not-allowed!important}.rc-slider-vertical{height:100%;padding:0 5px;width:14px}.rc-slider-vertical .rc-slider-rail{height:100%;width:4px}.rc-slider-vertical .rc-slider-track{bottom:0;left:5px;width:4px}.rc-slider-vertical .rc-slider-handle{margin-left:-5px;margin-top:0;touch-action:pan-y}.rc-slider-vertical .rc-slider-mark{height:100%;left:18px;top:0}.rc-slider-vertical .rc-slider-step{height:100%;width:4px}.rc-slider-vertical .rc-slider-dot{margin-left:-2px}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active{animation-name:rcSliderTooltipZoomDownIn;animation-play-state:running}.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active{animation-name:rcSliderTooltipZoomDownOut;animation-play-state:running}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-timing-function:cubic-bezier(.23,1,.32,1);transform:scale(0)}.rc-slider-tooltip-zoom-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes rcSliderTooltipZoomDownIn{0%{opacity:0;transform:scale(0);transform-origin:50% 100%}to{transform:scale(1);transform-origin:50% 100%}}@keyframes rcSliderTooltipZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{opacity:0;transform:scale(0);transform-origin:50% 100%}}.rc-slider-tooltip{left:-9999px;position:absolute;top:-9999px;visibility:visible}.rc-slider-tooltip,.rc-slider-tooltip *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-tooltip-hidden{display:none}.rc-slider-tooltip-placement-top{padding:4px 0 8px}.rc-slider-tooltip-inner{background-color:#6c6c6c;border-radius:6px;box-shadow:0 0 4px #d9d9d9;color:#fff;font-size:12px;height:24px;line-height:1;min-width:24px;padding:6px 2px;text-align:center;text-decoration:none}.rc-slider-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow{border-top-color:#6c6c6c;border-width:4px 4px 0;bottom:4px;left:50%;margin-left:-4px}");
var sC, lC, cC, uC, hC, pC, dC, fC, gC, mC = {
"-180": -180,
"-90": -90,
0: 0,
90: 90,
180: 180
},
vC = e => {
var {
onChange: t,
defaultValue: n
} = e, [r, i] = dt(0), o = vt(null);
gt((() => {
i(n)
}), [n]);
return zl("div", {
className: oC,
children: zl(iC, {
ref: o,
className: aC,
value: r,
min: -180,
max: 180,
dotStyle: e => e >= r && r <= 0 && e < 0 || e < r && r > 0 && e > 0 ? {
borderColor: "#000"
} : {
background: "#D4D4D4",
border: "none"
},
defaultValue: n,
handleStyle: {
backgroundColor: "#fff",
borderColor: "#333"
},
marks: mC,
trackStyle: {
background: "#333333",
zIndex: 2
},
startPoint: 0,
onChange: e => {
i(e), t(e)
}
})
})
},
_C = {
exports: {}
},
bC = {},
yC = {},
wC = {},
xC = [],
kC = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,
CC = Array.isArray;
function SC(e, t) {
for (var n in t) e[n] = t[n];
return e
}
function EC(e) {
var t = e.parentNode;
t && t.removeChild(e)
}
function TC(e, t, n) {
var r, i, o, a = {};
for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
if (arguments.length > 2 && (a.children = arguments.length > 3 ? sC.call(arguments, 2) : n), "function" == typeof e && null != e.defaultProps)
for (o in e.defaultProps) void 0 === a[o] && (a[o] = e.defaultProps[o]);
return OC(e, a, r, i, null)
}
function OC(e, t, n, r, i) {
var o = {
type: e,
props: t,
key: n,
ref: r,
__k: null,
__: null,
__b: 0,
__e: null,
__d: void 0,
__c: null,
__h: null,
constructor: void 0,
__v: null == i ? ++cC : i
};
return null == i && null != lC.vnode && lC.vnode(o), o
}
function AC(e) {
return e.children
}
function PC(e, t) {
this.props = e, this.context = t
}
function MC(e, t) {
if (null == t) return e.__ ? MC(e.__, e.__.__k.indexOf(e) + 1) : null;
for (var n; t < e.__k.length; t++)
if (null != (n = e.__k[t]) && null != n.__e) return n.__e;
return "function" == typeof e.type ? MC(e) : null
}
function DC(e) {
var t, n;
if (null != (e = e.__) && null != e.__c) {
for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)
if (null != (n = e.__k[t]) && null != n.__e) {
e.__e = e.__c.base = n.__e;
break
} return DC(e)
}
}
function IC(e) {
(!e.__d && (e.__d = !0) && hC.push(e) && !NC.__r++ || pC !== lC.debounceRendering) && ((pC = lC.debounceRendering) || dC)(NC)
}
function NC() {
var e, t, n, r, i, o, a, s, l;
for (hC.sort(fC); e = hC.shift();) e.__d && (t = hC.length, r = void 0, i = void 0, o = void 0, s = (a = (n = e).__v).__e, (l = n.__P) && (r = [], i = [], (o = SC({}, a)).__v = a.__v + 1, WC(l, a, o, n.__n, void 0 !== l.ownerSVGElement,
null != a.__h ? [s] : null, r, null == s ? MC(a) : s, a.__h, i), VC(r, a, i), a.__e != s && DC(a)), hC.length > t && hC.sort(fC));
NC.__r = 0
}
function RC(e, t, n, r, i, o, a, s, l, c, u) {
var h, p, d, f, g, m, v, _, b, y, w = 0,
x = r && r.__k || xC,
k = x.length,
C = k,
S = t.length;
for (n.__k = [], h = 0; h < S; h++) null != (f = n.__k[h] = null == (f = t[h]) || "boolean" == typeof f || "function" == typeof f ? null : "string" == typeof f || "number" == typeof f || "bigint" == typeof f ? OC(null, f, null, null,
f) : CC(f) ? OC(AC, {
children: f
}, null, null, null) : f.__b > 0 ? OC(f.type, f.props, f.key, f.ref ? f.ref : null, f.__v) : f) && (f.__ = n, f.__b = n.__b + 1, -1 === (_ = FC(f, x, v = h + w, C)) ? d = wC : (d = x[_] || wC, x[_] = void 0, C--), WC(e, f, d, i, o,
a, s, l, c, u), g = f.__e, (p = f.ref) && d.ref != p && (d.ref && GC(d.ref, null, f), u.push(p, f.__c || g, f)), null != g && (null == m && (m = g), y = !(b = d === wC || null === d.__v) && _ === v, b ? -1 == _ && w-- : _ !== v &&
(_ === v + 1 ? (w++, y = !0) : _ > v ? C > S - v ? (w += _ - v, y = !0) : w-- : w = _ < v && _ == v - 1 ? _ - v : 0), v = h + w, y = y || _ == h && !b, "function" != typeof f.type || _ === v && d.__k !== f.__k ? "function" ==
typeof f.type || y ? void 0 !== f.__d ? (l = f.__d, f.__d = void 0) : l = g.nextSibling : l = LC(e, g, l) : l = jC(f, l, e), "function" == typeof n.type && (n.__d = l)));
for (n.__e = m, h = k; h--;) null != x[h] && ("function" == typeof n.type && null != x[h].__e && x[h].__e == n.__d && (n.__d = x[h].__e.nextSibling), YC(x[h], x[h]))
}
function jC(e, t, n) {
for (var r, i = e.__k, o = 0; i && o < i.length; o++)(r = i[o]) && (r.__ = e, t = "function" == typeof r.type ? jC(r, t, n) : LC(n, r.__e, t));
return t
}
function LC(e, t, n) {
return null == n || n.parentNode !== e ? e.insertBefore(t, null) : t == n && null != t.parentNode || e.insertBefore(t, n), t.nextSibling
}
function FC(e, t, n, r) {
var i = e.key,
o = e.type,
a = n - 1,
s = n + 1,
l = t[n];
if (null === l || l && i == l.key && o === l.type) return n;
if (r > (null != l ? 1 : 0))
for (; a >= 0 || s < t.length;) {
if (a >= 0) {
if ((l = t[a]) && i == l.key && o === l.type) return a;
a--
}
if (s < t.length) {
if ((l = t[s]) && i == l.key && o === l.type) return s;
s++
}
}
return -1
}
function BC(e, t, n) {
"-" === t[0] ? e.setProperty(t, null == n ? "" : n) : e[t] = null == n ? "" : "number" != typeof n || kC.test(t) ? n : n + "px"
}
function zC(e, t, n, r, i) {
var o;
e: if ("style" === t)
if ("string" == typeof n) e.style.cssText = n;
else {
if ("string" == typeof r && (e.style.cssText = r = ""), r)
for (t in r) n && t in n || BC(e.style, t, "");
if (n)
for (t in n) r && n[t] === r[t] || BC(e.style, t, n[t])
}
else if ("o" === t[0] && "n" === t[1]) o = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + o] = n, n ? r || e.addEventListener(t, o ? UC : HC, o) : e
.removeEventListener(t, o ? UC : HC, o);
else if ("dangerouslySetInnerHTML" !== t) {
if (i) t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
else if ("width" !== t && "height" !== t && "href" !== t && "list" !== t && "form" !== t && "tabIndex" !== t && "download" !== t && "rowSpan" !== t && "colSpan" !== t && t in e) try {
e[t] = null == n ? "" : n;
break e
} catch (e) {}
"function" == typeof n || (null == n || !1 === n && "-" !== t[4] ? e.removeAttribute(t) : e.setAttribute(t, n))
}
}
function HC(e) {
return this.l[e.type + !1](lC.event ? lC.event(e) : e)
}
function UC(e) {
return this.l[e.type + !0](lC.event ? lC.event(e) : e)
}
function WC(e, t, n, r, i, o, a, s, l, c) {
var u, h, p, d, f, g, m, v, _, b, y, w, x, k, C, S = t.type;
if (void 0 !== t.constructor) return null;
null != n.__h && (l = n.__h, s = t.__e = n.__e, t.__h = null, o = [s]), (u = lC.__b) && u(t);
try {
e: if ("function" == typeof S) {
if (v = t.props, _ = (u = S.contextType) && r[u.__c], b = u ? _ ? _.props.value : u.__ : r, n.__c ? m = (h = t.__c = n.__c).__ = h.__E : ("prototype" in S && S.prototype.render ? t.__c = h = new S(v, b) : (t.__c = h = new PC(v,
b), h.constructor = S, h.render = qC), _ && _.sub(h), h.props = v, h.state || (h.state = {}), h.context = b, h.__n = r, p = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != S
.getDerivedStateFromProps && (h.__s == h.state && (h.__s = SC({}, h.__s)), SC(h.__s, S.getDerivedStateFromProps(v, h.__s))), d = h.props, f = h.state, h.__v = t, p) null == S.getDerivedStateFromProps && null != h
.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);
else {
if (null == S.getDerivedStateFromProps && v !== d && null != h.componentWillReceiveProps && h.componentWillReceiveProps(v, b), !h.__e && (null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(v, h.__s, b) || t
.__v === n.__v)) {
for (t.__v !== n.__v && (h.props = v, h.state = h.__s, h.__d = !1), t.__e = n.__e, t.__k = n.__k, t.__k.forEach((function(e) {
e && (e.__ = t)
})), y = 0; y < h._sb.length; y++) h.__h.push(h._sb[y]);
h._sb = [], h.__h.length && a.push(h);
break e
}
null != h.componentWillUpdate && h.componentWillUpdate(v, h.__s, b), null != h.componentDidUpdate && h.__h.push((function() {
h.componentDidUpdate(d, f, g)
}))
}
if (h.context = b, h.props = v, h.__P = e, h.__e = !1, w = lC.__r, x = 0, "prototype" in S && S.prototype.render) {
for (h.state = h.__s, h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), k = 0; k < h._sb.length; k++) h.__h.push(h._sb[k]);
h._sb = []
} else
do {
h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), h.state = h.__s
} while (h.__d && ++x < 25);
h.state = h.__s, null != h.getChildContext && (r = SC(SC({}, r), h.getChildContext())), p || null == h.getSnapshotBeforeUpdate || (g = h.getSnapshotBeforeUpdate(d, f)), RC(e, CC(C = null != u && u.type === AC && null == u.key ? u
.props.children : u) ? C : [C], t, n, r, i, o, a, s, l, c), h.base = t.__e, t.__h = null, h.__h.length && a.push(h), m && (h.__E = h.__ = null)
} else null == o && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = XC(n.__e, t, n, r, i, o, a, l, c);
(u = lC.diffed) && u(t)
}
catch (e) {
t.__v = null, (l || null != o) && (t.__e = s, t.__h = !!l, o[o.indexOf(s)] = null), lC.__e(e, t, n)
}
}
function VC(e, t, n) {
for (var r = 0; r < n.length; r++) GC(n[r], n[++r], n[++r]);
lC.__c && lC.__c(t, e), e.some((function(t) {
try {
e = t.__h, t.__h = [], e.some((function(e) {
e.call(t)
}))
} catch (e) {
lC.__e(e, t.__v)
}
}))
}
function XC(e, t, n, r, i, o, a, s, l) {
var c, u, h, p = n.props,
d = t.props,
f = t.type,
g = 0;
if ("svg" === f && (i = !0), null != o)
for (; g < o.length; g++)
if ((c = o[g]) && "setAttribute" in c == !!f && (f ? c.localName === f : 3 === c.nodeType)) {
e = c, o[g] = null;
break
} if (null == e) {
if (null === f) return document.createTextNode(d);
e = i ? document.createElementNS("http://www.w3.org/2000/svg", f) : document.createElement(f, d.is && d), o = null, s = !1
}
if (null === f) p === d || s && e.data === d || (e.data = d);
else {
if (o = o && sC.call(e.childNodes), u = (p = n.props || wC).dangerouslySetInnerHTML, h = d.dangerouslySetInnerHTML, !s) {
if (null != o)
for (p = {}, g = 0; g < e.attributes.length; g++) p[e.attributes[g].name] = e.attributes[g].value;
(h || u) && (h && (u && h.__html == u.__html || h.__html === e.innerHTML) || (e.innerHTML = h && h.__html || ""))
}
if (function(e, t, n, r, i) {
var o;
for (o in n) "children" === o || "key" === o || o in t || zC(e, o, null, n[o], r);
for (o in t) i && "function" != typeof t[o] || "children" === o || "key" === o || "value" === o || "checked" === o || n[o] === t[o] || zC(e, o, t[o], n[o], r)
}(e, d, p, i, s), h) t.__k = [];
else if (RC(e, CC(g = t.props.children) ? g : [g], t, n, r, i && "foreignObject" !== f, o, a, o ? o[0] : n.__k && MC(n, 0), s, l), null != o)
for (g = o.length; g--;) null != o[g] && EC(o[g]);
s || ("value" in d && void 0 !== (g = d.value) && (g !== e.value || "progress" === f && !g || "option" === f && g !== p.value) && zC(e, "value", g, p.value, !1), "checked" in d && void 0 !== (g = d.checked) && g !== e.checked && zC(e,
"checked", g, p.checked, !1))
}
return e
}
function GC(e, t, n) {
try {
"function" == typeof e ? e(t) : e.current = t
} catch (e) {
lC.__e(e, n)
}
}
function YC(e, t, n) {
var r, i;
if (lC.unmount && lC.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || GC(r, null, t)), null != (r = e.__c)) {
if (r.componentWillUnmount) try {
r.componentWillUnmount()
} catch (e) {
lC.__e(e, t)
}
r.base = r.__P = null, e.__c = void 0
}
if (r = e.__k)
for (i = 0; i < r.length; i++) r[i] && YC(r[i], t, n || "function" != typeof e.type);
n || null == e.__e || EC(e.__e), e.__ = e.__e = e.__d = void 0
}
function qC(e, t, n) {
return this.constructor(e, n)
}
function KC(e, t, n) {
var r, i, o, a;
lC.__ && lC.__(e, t), i = (r = "function" == typeof n) ? null : n && n.__k || t.__k, o = [], a = [], WC(t, e = (!r && n || t).__k = TC(AC, null, [e]), i || wC, wC, void 0 !== t.ownerSVGElement, !r && n ? [n] : i ? null : t.firstChild ?
sC.call(t.childNodes) : null, o, !r && n ? n : i ? i.__e : t.firstChild, r, a), VC(o, e, a)
}
sC = xC.slice, lC = {
__e: function(e, t, n, r) {
for (var i, o, a; t = t.__;)
if ((i = t.__c) && !i.__) try {
if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(e)), a = i.__d), null != i.componentDidCatch && (i.componentDidCatch(e, r || {}), a = i.__d), a) return i.__E = i
} catch (t) {
e = t
}
throw e
}
}, cC = 0, uC = function(e) {
return null != e && void 0 === e.constructor
}, PC.prototype.setState = function(e, t) {
var n;
n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = SC({}, this.state), "function" == typeof e && (e = e(SC({}, n), this.props)), e && SC(n, e), null != e && this.__v && (t && this._sb.push(t), IC(this))
}, PC.prototype.forceUpdate = function(e) {
this.__v && (this.__e = !0, e && this.__h.push(e), IC(this))
}, PC.prototype.render = AC, hC = [], dC = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, fC = function(e, t) {
return e.__v.__b - t.__v.__b
}, NC.__r = 0, gC = 0, yC.Component = PC, yC.Fragment = AC, yC.cloneElement = function(e, t, n) {
var r, i, o, a, s = SC({}, e.props);
for (o in e.type && e.type.defaultProps && (a = e.type.defaultProps), t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : s[o] = void 0 === t[o] && void 0 !== a ? a[o] : t[o];
return arguments.length > 2 && (s.children = arguments.length > 3 ? sC.call(arguments, 2) : n), OC(e.type, s, r || e.key, i || e.ref, null)
}, yC.createContext = function(e, t) {
var n = {
__c: t = "__cC" + gC++,
__: e,
Consumer: function(e, t) {
return e.children(t)
},
Provider: function(e) {
var n, r;
return this.getChildContext || (n = [], (r = {})[t] = this, this.getChildContext = function() {
return r
}, this.shouldComponentUpdate = function(e) {
this.props.value !== e.value && n.some((function(e) {
e.__e = !0, IC(e)
}))
}, this.sub = function(e) {
n.push(e);
var t = e.componentWillUnmount;
e.componentWillUnmount = function() {
n.splice(n.indexOf(e), 1), t && t.call(e)
}
}), e.children
}
};
return n.Provider.__ = n.Consumer.contextType = n
}, yC.createElement = TC, yC.createRef = function() {
return {
current: null
}
}, yC.h = TC, yC.hydrate = function e(t, n) {
KC(t, n, e)
}, yC.isValidElement = uC, yC.options = lC, yC.render = KC, yC.toChildArray = function e(t, n) {
return n = n || [], null == t || "boolean" == typeof t || (CC(t) ? t.some((function(t) {
e(t, n)
})) : n.push(t)), n
};
var $C, ZC, JC, QC, eS = {},
tS = yC,
nS = 0,
rS = [],
iS = [],
oS = tS.options.__b,
aS = tS.options.__r,
sS = tS.options.diffed,
lS = tS.options.__c,
cS = tS.options.unmount;
function uS(e, t) {
tS.options.__h && tS.options.__h(ZC, e, nS || t), nS = 0;
var n = ZC.__H || (ZC.__H = {
__: [],
__h: []
});
return e >= n.__.length && n.__.push({
__V: iS
}), n.__[e]
}
function hS(e) {
return nS = 1, pS(wS, e)
}
function pS(e, t, n) {
var r = uS($C++, 2);
if (r.t = e, !r.__c && (r.__ = [n ? n(t) : wS(void 0, t), function(e) {
var t = r.__N ? r.__N[0] : r.__[0],
n = r.t(t, e);
t !== n && (r.__N = [n, r.__[1]], r.__c.setState({}))
}], r.__c = ZC, !ZC.u)) {
var i = function(e, t, n) {
if (!r.__c.__H) return !0;
var i = r.__c.__H.__.filter((function(e) {
return e.__c
}));
if (i.every((function(e) {
return !e.__N
}))) return !o || o.call(this, e, t, n);
var a = !1;
return i.forEach((function(e) {
if (e.__N) {
var t = e.__[0];
e.__ = e.__N, e.__N = void 0, t !== e.__[0] && (a = !0)
}
})), !(!a && r.__c.props === e) && (!o || o.call(this, e, t, n))
};
ZC.u = !0;
var o = ZC.shouldComponentUpdate,
a = ZC.componentWillUpdate;
ZC.componentWillUpdate = function(e, t, n) {
if (this.__e) {
var r = o;
o = void 0, i(e, t, n), o = r
}
a && a.call(this, e, t, n)
}, ZC.shouldComponentUpdate = i
}
return r.__N || r.__
}
function dS(e, t) {
var n = uS($C++, 4);
!tS.options.__s && yS(n.__H, t) && (n.__ = e, n.o = t, ZC.__h.push(n))
}
function fS(e, t) {
var n = uS($C++, 7);
return yS(n.__H, t) ? (n.__V = e(), n.o = t, n.__h = e, n.__V) : n.__
}
function gS() {
for (var e; e = rS.shift();)
if (e.__P && e.__H) try {
e.__H.__h.forEach(_S), e.__H.__h.forEach(bS), e.__H.__h = []
} catch (t) {
e.__H.__h = [], tS.options.__e(t, e.__v)
}
}
tS.options.__b = function(e) {
ZC = null, oS && oS(e)
}, tS.options.__r = function(e) {
aS && aS(e), $C = 0;
var t = (ZC = e.__c).__H;
t && (JC === ZC ? (t.__h = [], ZC.__h = [], t.__.forEach((function(e) {
e.__N && (e.__ = e.__N), e.__V = iS, e.__N = e.o = void 0
}))) : (t.__h.forEach(_S), t.__h.forEach(bS), t.__h = [], $C = 0)), JC = ZC
}, tS.options.diffed = function(e) {
sS && sS(e);
var t = e.__c;
t && t.__H && (t.__H.__h.length && (1 !== rS.push(t) && QC === tS.options.requestAnimationFrame || ((QC = tS.options.requestAnimationFrame) || vS)(gS)), t.__H.__.forEach((function(e) {
e.o && (e.__H = e.o), e.__V !== iS && (e.__ = e.__V), e.o = void 0, e.__V = iS
}))), JC = ZC = null
}, tS.options.__c = function(e, t) {
t.some((function(e) {
try {
e.__h.forEach(_S), e.__h = e.__h.filter((function(e) {
return !e.__ || bS(e)
}))
} catch (n) {
t.some((function(e) {
e.__h && (e.__h = [])
})), t = [], tS.options.__e(n, e.__v)
}
})), lS && lS(e, t)
}, tS.options.unmount = function(e) {
cS && cS(e);
var t, n = e.__c;
n && n.__H && (n.__H.__.forEach((function(e) {
try {
_S(e)
} catch (e) {
t = e
}
})), n.__H = void 0, t && tS.options.__e(t, n.__v))
};
var mS = "function" == typeof requestAnimationFrame;
function vS(e) {
var t, n = function() {
clearTimeout(r), mS && cancelAnimationFrame(t), setTimeout(e)
},
r = setTimeout(n, 100);
mS && (t = requestAnimationFrame(n))
}
function _S(e) {
var t = ZC,
n = e.__c;
"function" == typeof n && (e.__c = void 0, n()), ZC = t
}
function bS(e) {
var t = ZC;
e.__c = e.__(), ZC = t
}
function yS(e, t) {
return !e || e.length !== t.length || t.some((function(t, n) {
return t !== e[n]
}))
}
function wS(e, t) {
return "function" == typeof t ? t(e) : t
}
eS.useCallback = function(e, t) {
return nS = 8, fS((function() {
return e
}), t)
}, eS.useContext = function(e) {
var t = ZC.context[e.__c],
n = uS($C++, 9);
return n.c = e, t ? (null == n.__ && (n.__ = !0, t.sub(ZC)), t.props.value) : e.__
}, eS.useDebugValue = function(e, t) {
tS.options.useDebugValue && tS.options.useDebugValue(t ? t(e) : e)
}, eS.useEffect = function(e, t) {
var n = uS($C++, 3);
!tS.options.__s && yS(n.__H, t) && (n.__ = e, n.o = t, ZC.__H.__h.push(n))
}, eS.useErrorBoundary = function(e) {
var t = uS($C++, 10),
n = hS();
return t.__ = e, ZC.componentDidCatch || (ZC.componentDidCatch = function(e, r) {
t.__ && t.__(e, r), n[1](e)
}), [n[0], function() {
n[1](void 0)
}]
}, eS.useId = function() {
var e = uS($C++, 11);
if (!e.__) {
for (var t = ZC.__v; null !== t && !t.__m && null !== t.__;) t = t.__;
var n = t.__m || (t.__m = [0, 0]);
e.__ = "P" + n[0] + "-" + n[1]++
}
return e.__
}, eS.useImperativeHandle = function(e, t, n) {
nS = 6, dS((function() {
return "function" == typeof e ? (e(t()), function() {
return e(null)
}) : e ? (e.current = t(), function() {
return e.current = null
}) : void 0
}), null == n ? n : n.concat(e))
}, eS.useLayoutEffect = dS, eS.useMemo = fS, eS.useReducer = pS, eS.useRef = function(e) {
return nS = 5, fS((function() {
return {
current: e
}
}), [])
}, eS.useState = hS,
function(e) {
var t = yC,
n = eS;
function r(e, t) {
for (var n in t) e[n] = t[n];
return e
}
function i(e, t) {
for (var n in e)
if ("__source" !== n && !(n in t)) return !0;
for (var r in t)
if ("__source" !== r && e[r] !== t[r]) return !0;
return !1
}
function o(e, t) {
return e === t && (0 !== e || 1 / e == 1 / t) || e != e && t != t
}
function a(e) {
this.props = e
}
function s(e, n) {
function r(e) {
var t = this.props.ref,
r = t == e.ref;
return !r && t && (t.call ? t(null) : t.current = null), n ? !n(this.props, e) || !r : i(this.props, e)
}
function o(n) {
return this.shouldComponentUpdate = r, t.createElement(e, n)
}
return o.displayName = "Memo(" + (e.displayName || e.name) + ")", o.prototype.isReactComponent = !0, o.__f = !0, o
}(a.prototype = new t.Component).isPureReactComponent = !0, a.prototype.shouldComponentUpdate = function(e, t) {
return i(this.props, e) || i(this.state, t)
};
var l = t.options.__b;
t.options.__b = function(e) {
e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), l && l(e)
};
var c = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;
function u(e) {
function t(t) {
var n = r({}, t);
return delete n.ref, e(n, t.ref || null)
}
return t.$$typeof = c, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = "ForwardRef(" + (e.displayName || e.name) + ")", t
}
var h = function(e, n) {
return null == e ? null : t.toChildArray(t.toChildArray(e).map(n))
},
p = {
map: h,
forEach: h,
count: function(e) {
return e ? t.toChildArray(e).length : 0
},
only: function(e) {
var n = t.toChildArray(e);
if (1 !== n.length) throw "Children.only";
return n[0]
},
toArray: t.toChildArray
},
d = t.options.__e;
t.options.__e = function(e, t, n, r) {
if (e.then)
for (var i, o = t; o = o.__;)
if ((i = o.__c) && i.__c) return null == t.__e && (t.__e = n.__e, t.__k = n.__k), i.__c(e, t);
d(e, t, n, r)
};
var f = t.options.unmount;
function g(e, t, n) {
return e && (e.__c && e.__c.__H && (e.__c.__H.__.forEach((function(e) {
"function" == typeof e.__c && e.__c()
})), e.__c.__H = null), null != (e = r({}, e)).__c && (e.__c.__P === n && (e.__c.__P = t), e.__c = null), e.__k = e.__k && e.__k.map((function(e) {
return g(e, t, n)
}))), e
}
function m(e, t, n) {
return e && (e.__v = null, e.__k = e.__k && e.__k.map((function(e) {
return m(e, t, n)
})), e.__c && e.__c.__P === t && (e.__e && n.insertBefore(e.__e, e.__d), e.__c.__e = !0, e.__c.__P = n)), e
}
function v() {
this.__u = 0, this.t = null, this.__b = null
}
function _(e) {
var t = e.__.__c;
return t && t.__a && t.__a(e)
}
function b(e) {
var n, r, i;
function o(o) {
if (n || (n = e()).then((function(e) {
r = e.default || e
}), (function(e) {
i = e
})), i) throw i;
if (!r) throw n;
return t.createElement(r, o)
}
return o.displayName = "Lazy", o.__f = !0, o
}
function y() {
this.u = null, this.o = null
}
t.options.unmount = function(e) {
var t = e.__c;
t && t.__R && t.__R(), t && !0 === e.__h && (e.type = null), f && f(e)
}, (v.prototype = new t.Component).__c = function(e, t) {
var n = t.__c,
r = this;
null == r.t && (r.t = []), r.t.push(n);
var i = _(r.__v),
o = !1,
a = function() {
o || (o = !0, n.__R = null, i ? i(s) : s())
};
n.__R = a;
var s = function() {
if (!--r.__u) {
if (r.state.__a) {
var e = r.state.__a;
r.__v.__k[0] = m(e, e.__c.__P, e.__c.__O)
}
var t;
for (r.setState({
__a: r.__b = null
}); t = r.t.pop();) t.forceUpdate()
}
},
l = !0 === t.__h;
r.__u++ || l || r.setState({
__a: r.__b = r.__v.__k[0]
}), e.then(a, a)
}, v.prototype.componentWillUnmount = function() {
this.t = []
}, v.prototype.render = function(e, n) {
if (this.__b) {
if (this.__v.__k) {
var r = document.createElement("div"),
i = this.__v.__k[0].__c;
this.__v.__k[0] = g(this.__b, r, i.__O = i.__P)
}
this.__b = null
}
var o = n.__a && t.createElement(t.Fragment, null, e.fallback);
return o && (o.__h = null), [t.createElement(t.Fragment, null, n.__a ? null : e.children), o]
};
var w = function(e, t, n) {
if (++n[1] === n[0] && e.o.delete(t), e.props.revealOrder && ("t" !== e.props.revealOrder[0] || !e.o.size))
for (n = e.u; n;) {
for (; n.length > 3;) n.pop()();
if (n[1] < n[0]) break;
e.u = n = n[2]
}
};
function x(e) {
return this.getChildContext = function() {
return e.context
}, e.children
}
function k(e) {
var n = this,
r = e.i;
n.componentWillUnmount = function() {
t.render(null, n.l), n.l = null, n.i = null
}, n.i && n.i !== r && n.componentWillUnmount(), e.__v ? (n.l || (n.i = r, n.l = {
nodeType: 1,
parentNode: r,
childNodes: [],
appendChild: function(e) {
this.childNodes.push(e), n.i.appendChild(e)
},
insertBefore: function(e, t) {
this.childNodes.push(e), n.i.appendChild(e)
},
removeChild: function(e) {
this.childNodes.splice(this.childNodes.indexOf(e) >>> 1, 1), n.i.removeChild(e)
}
}), t.render(t.createElement(x, {
context: n.context
}, e.__v), n.l)) : n.l && n.componentWillUnmount()
}
function C(e, n) {
var r = t.createElement(k, {
__v: e,
i: n
});
return r.containerInfo = n, r
}(y.prototype = new t.Component).__a = function(e) {
var t = this,
n = _(t.__v),
r = t.o.get(e);
return r[0]++,
function(i) {
var o = function() {
t.props.revealOrder ? (r.push(i), w(t, e, r)) : i()
};
n ? n(o) : o()
}
}, y.prototype.render = function(e) {
this.u = null, this.o = new Map;
var n = t.toChildArray(e.children);
e.revealOrder && "b" === e.revealOrder[0] && n.reverse();
for (var r = n.length; r--;) this.o.set(n[r], this.u = [1, 0, this.u]);
return e.children
}, y.prototype.componentDidUpdate = y.prototype.componentDidMount = function() {
var e = this;
this.o.forEach((function(t, n) {
w(e, n, t)
}))
};
var S = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103,
E =
/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,
T = /^on(Ani|Tra|Tou|BeforeInp|Compo)/,
O = /[A-Z0-9]/g,
A = "undefined" != typeof document,
P = function(e) {
return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(e)
};
function M(e, n, r) {
return null == n.__k && (n.textContent = ""), t.render(e, n), "function" == typeof r && r(), e ? e.__c : null
}
function D(e, n, r) {
return t.hydrate(e, n), "function" == typeof r && r(), e ? e.__c : null
}
t.Component.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach((function(e) {
Object.defineProperty(t.Component.prototype, e, {
configurable: !0,
get: function() {
return this["UNSAFE_" + e]
},
set: function(t) {
Object.defineProperty(this, e, {
configurable: !0,
writable: !0,
value: t
})
}
})
}));
var I = t.options.event;
function N() {}
function R() {
return this.cancelBubble
}
function j() {
return this.defaultPrevented
}
t.options.event = function(e) {
return I && (e = I(e)), e.persist = N, e.isPropagationStopped = R, e.isDefaultPrevented = j, e.nativeEvent = e
};
var L, F = {
enumerable: !1,
configurable: !0,
get: function() {
return this.class
}
},
B = t.options.vnode;
t.options.vnode = function(e) {
"string" == typeof e.type && function(e) {
var n = e.props,
r = e.type,
i = {};
for (var o in n) {
var a = n[o];
if (!("value" === o && "defaultValue" in n && null == a || A && "children" === o && "noscript" === r || "class" === o || "className" === o)) {
var s = o.toLowerCase();
"defaultValue" === o && "value" in n && null == n.value ? o = "value" : "download" === o && !0 === a ? a = "" : "ondoubleclick" === s ? o = "ondblclick" : "onchange" !== s || "input" !== r && "textarea" !== r || P(n
.type) ? "onfocus" === s ? o = "onfocusin" : "onblur" === s ? o = "onfocusout" : T.test(o) ? o = s : -1 === r.indexOf("-") && E.test(o) ? o = o.replace(O, "-$&").toLowerCase() : null === a && (a = void 0) : s = o =
"oninput", "oninput" === s && i[o = s] && (o = "oninputCapture"), i[o] = a
}
}
"select" == r && i.multiple && Array.isArray(i.value) && (i.value = t.toChildArray(n.children).forEach((function(e) {
e.props.selected = -1 != i.value.indexOf(e.props.value)
}))), "select" == r && null != i.defaultValue && (i.value = t.toChildArray(n.children).forEach((function(e) {
e.props.selected = i.multiple ? -1 != i.defaultValue.indexOf(e.props.value) : i.defaultValue == e.props.value
}))), n.class && !n.className ? (i.class = n.class, Object.defineProperty(i, "className", F)) : (n.className && !n.class || n.class && n.className) && (i.class = i.className = n.className), e.props = i
}(e), e.$$typeof = S, B && B(e)
};
var z = t.options.__r;
t.options.__r = function(e) {
z && z(e), L = e.__c
};
var H = t.options.diffed;
t.options.diffed = function(e) {
H && H(e);
var t = e.props,
n = e.__e;
null != n && "textarea" === e.type && "value" in t && t.value !== n.value && (n.value = null == t.value ? "" : t.value), L = null
};
var U = {
ReactCurrentDispatcher: {
current: {
readContext: function(e) {
return L.__n[e.__c].props.value
}
}
}
};
function W(e) {
return t.createElement.bind(null, e)
}
function V(e) {
return !!e && e.$$typeof === S
}
function X(e) {
return V(e) ? t.cloneElement.apply(null, arguments) : e
}
function G(e) {
return !!e.__k && (t.render(null, e), !0)
}
function Y(e) {
return e && (e.base || 1 === e.nodeType && e) || null
}
var q = function(e, t) {
return e(t)
},
K = function(e, t) {
return e(t)
},
$ = t.Fragment;
function Z(e) {
e()
}
function J(e) {
return e
}
function Q() {
return [!1, Z]
}
var ee = n.useLayoutEffect;
function te(e, t) {
var r = t(),
i = n.useState({
p: {
__: r,
h: t
}
}),
a = i[0].p,
s = i[1];
return n.useLayoutEffect((function() {
a.__ = r, a.h = t, o(a.__, t()) || s({
p: a
})
}), [e, r, t]), n.useEffect((function() {
return o(a.__, a.h()) || s({
p: a
}), e((function() {
o(a.__, a.h()) || s({
p: a
})
}))
}), [e]), r
}
var ne = {
useState: n.useState,
useId: n.useId,
useReducer: n.useReducer,
useEffect: n.useEffect,
useLayoutEffect: n.useLayoutEffect,
useInsertionEffect: ee,
useTransition: Q,
useDeferredValue: J,
useSyncExternalStore: te,
startTransition: Z,
useRef: n.useRef,
useImperativeHandle: n.useImperativeHandle,
useMemo: n.useMemo,
useCallback: n.useCallback,
useContext: n.useContext,
useDebugValue: n.useDebugValue,
version: "17.0.2",
Children: p,
render: M,
hydrate: D,
unmountComponentAtNode: G,
createPortal: C,
createElement: t.createElement,
createContext: t.createContext,
createFactory: W,
cloneElement: X,
createRef: t.createRef,
Fragment: t.Fragment,
isValidElement: V,
findDOMNode: Y,
Component: t.Component,
PureComponent: a,
memo: s,
forwardRef: u,
flushSync: K,
unstable_batchedUpdates: q,
StrictMode: $,
Suspense: v,
SuspenseList: y,
lazy: b,
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: U
};
Object.defineProperty(e, "Component", {
enumerable: !0,
get: function() {
return t.Component
}
}), Object.defineProperty(e, "Fragment", {
enumerable: !0,
get: function() {
return t.Fragment
}
}), Object.defineProperty(e, "createContext", {
enumerable: !0,
get: function() {
return t.createContext
}
}), Object.defineProperty(e, "createElement", {
enumerable: !0,
get: function() {
return t.createElement
}
}), Object.defineProperty(e, "createRef", {
enumerable: !0,
get: function() {
return t.createRef
}
}), e.Children = p, e.PureComponent = a, e.StrictMode = $, e.Suspense = v, e.SuspenseList = y, e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = U, e.cloneElement = X, e.createFactory = W, e.createPortal = C, e.default = ne, e
.findDOMNode = Y, e.flushSync = K, e.forwardRef = u, e.hydrate = D, e.isValidElement = V, e.lazy = b, e.memo = s, e.render = M, e.startTransition = Z, e.unmountComponentAtNode = G, e.unstable_batchedUpdates = q, e.useDeferredValue =
J, e.useInsertionEffect = ee, e.useSyncExternalStore = te, e.useTransition = Q, e.version = "17.0.2", Object.keys(n).forEach((function(t) {
"default" === t || e.hasOwnProperty(t) || Object.defineProperty(e, t, {
enumerable: !0,
get: function() {
return n[t]
}
})
}))
}(bC);
var xS, kS = V(Object.freeze({
__proto__: null,
default: function(e, t) {
if (!e) throw new Error("Invariant failed")
}
}));
function CS() {
return CS = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, CS.apply(this, arguments)
}! function(e) {
var t = l.default,
n = Dl.exports,
r = bC,
i = kS;
function o(e) {
return e && e.__esModule ? e.default : e
}
function a(e, t, n, r) {
Object.defineProperty(e, t, {
get: n,
set: r,
enumerable: !0,
configurable: !0
})
}
function s(e) {
null !== e.parentElement && e.parentElement.removeChild(e)
}
function c(e) {
e.forEach((e => s(e.element)))
}
function u(e) {
e.forEach((e => {
! function(e, t, n) {
const r = e.children[n] || null;
e.insertBefore(t, r)
}(e.parentElement, e.element, e.oldIndex)
}))
}
function h(e, t) {
const n = f(e),
r = {
parentElement: e.from
};
let i = [];
switch (n) {
case "normal":
i = [{
element: e.item,
newIndex: e.newIndex,
oldIndex: e.oldIndex,
parentElement: e.from
}];
break;
case "swap":
i = [{
element: e.item,
oldIndex: e.oldIndex,
newIndex: e.newIndex,
...r
}, {
element: e.swapItem,
oldIndex: e.newIndex,
newIndex: e.oldIndex,
...r
}];
break;
case "multidrag":
i = e.oldIndicies.map(((t, n) => ({
element: t.multiDragElement,
oldIndex: t.index,
newIndex: e.newIndicies[n].index,
...r
})))
}
const o = function(e, t) {
const n = e.map((e => ({
...e,
item: t[e.oldIndex]
}))).sort(((e, t) => e.oldIndex - t.oldIndex));
return n
}(i, t);
return o
}
function p(e, t) {
const n = [...t];
return e.concat().reverse().forEach((e => n.splice(e.oldIndex, 1))), n
}
function d(e, t, n, r) {
const i = [...t];
return e.forEach((e => {
const t = r && n && r(e.item, n);
i.splice(e.newIndex, 0, t || e.item)
})), i
}
function f(e) {
return e.oldIndicies && e.oldIndicies.length > 0 ? "multidrag" : e.swapItem ? "swap" : "normal"
}
a(e.exports, "Sortable", (() => $882b6d93070905b3$re_export$Sortable)), a(e.exports, "Direction", (() => $882b6d93070905b3$re_export$Direction)), a(e.exports, "DOMRect", (() => $882b6d93070905b3$re_export$DOMRect)), a(e.exports,
"GroupOptions", (() => $882b6d93070905b3$re_export$GroupOptions)), a(e.exports, "MoveEvent", (() => $882b6d93070905b3$re_export$MoveEvent)), a(e.exports, "Options", (() => $882b6d93070905b3$re_export$Options)), a(e.exports,
"PullResult", (() => $882b6d93070905b3$re_export$PullResult)), a(e.exports, "PutResult", (() => $882b6d93070905b3$re_export$PutResult)), a(e.exports, "SortableEvent", (() => $882b6d93070905b3$re_export$SortableEvent)), a(e.exports,
"SortableOptions", (() => $882b6d93070905b3$re_export$SortableOptions)), a(e.exports, "Utils", (() => $882b6d93070905b3$re_export$Utils)), a(e.exports, "ReactSortable", (() => m));
const g = {
dragging: null
};
class m extends r.Component {
constructor(e) {
super(e), this.ref = r.createRef();
const t = [...e.list].map((e => Object.assign(e, {
chosen: !1,
selected: !1
})));
e.setList(t, this.sortable, g), o(i)(!e.plugins,
'\nPlugins prop is no longer supported.\nInstead, mount it with "Sortable.mount(new MultiDrag())"\nPlease read the updated README.md at https://github.com/SortableJS/react-sortablejs.\n ')
}
componentDidMount() {
if (null === this.ref.current) return;
const e = this.makeOptions();
o(t).create(this.ref.current, e)
}
componentDidUpdate(e) {
e.disabled !== this.props.disabled && this.sortable && this.sortable.option("disabled", this.props.disabled)
}
render() {
const {
tag: e,
style: t,
className: n,
id: i
} = this.props, o = {
style: t,
className: n,
id: i
}, a = e && null !== e ? e : "div";
return r.createElement(a, {
ref: this.ref,
...o
}, this.getChildren())
}
getChildren() {
const {
children: e,
dataIdAttr: t,
selectedClass: i = "sortable-selected",
chosenClass: a = "sortable-chosen",
dragClass: s = "sortable-drag",
fallbackClass: l = "sortable-falback",
ghostClass: c = "sortable-ghost",
swapClass: u = "sortable-swap-highlight",
filter: h = "sortable-filter",
list: p
} = this.props;
if (!e || null == e) return null;
const d = t || "data-id";
return r.Children.map(e, ((e, t) => {
if (void 0 === e) return;
const s = p[t] || {},
{
className: l
} = e.props,
c = "string" == typeof h && {
[h.replace(".", "")]: !!s.filtered
},
u = o(n)(l, {
[i]: s.selected,
[a]: s.chosen,
...c
});
return r.cloneElement(e, {
[d]: e.key,
className: u
})
}))
}
get sortable() {
const e = this.ref.current;
if (null === e) return null;
const t = Object.keys(e).find((e => e.includes("Sortable")));
return t ? e[t] : null
}
makeOptions() {
const e = function(e) {
const {
list: t,
setList: n,
children: r,
tag: i,
style: o,
className: a,
clone: s,
onAdd: l,
onChange: c,
onChoose: u,
onClone: h,
onEnd: p,
onFilter: d,
onRemove: f,
onSort: g,
onStart: m,
onUnchoose: v,
onUpdate: _,
onMove: b,
onSpill: y,
onSelect: w,
onDeselect: x,
...k
} = e;
return k
}(this.props);
["onAdd", "onChoose", "onDeselect", "onEnd", "onRemove", "onSelect", "onSpill", "onStart", "onUnchoose", "onUpdate"].forEach((t => e[t] = this.prepareOnHandlerPropAndDOM(t))), ["onChange", "onClone", "onFilter", "onSort"]
.forEach((t => e[t] = this.prepareOnHandlerProp(t)));
return {
...e,
onMove: (e, t) => {
const {
onMove: n
} = this.props, r = e.willInsertAfter || -1;
if (!n) return r;
const i = n(e, t, this.sortable, g);
return void 0 !== i && i
}
}
}
prepareOnHandlerPropAndDOM(e) {
return t => {
this.callOnHandlerProp(t, e), this[e](t)
}
}
prepareOnHandlerProp(e) {
return t => {
this.callOnHandlerProp(t, e)
}
}
callOnHandlerProp(e, t) {
const n = this.props[t];
n && n(e, this.sortable, g)
}
onAdd(e) {
const {
list: t,
setList: n,
clone: r
} = this.props, i = h(e, [...g.dragging.props.list]);
c(i);
n(d(i, t, e, r).map((e => Object.assign(e, {
selected: !1
}))), this.sortable, g)
}
onRemove(e) {
const {
list: t,
setList: n
} = this.props, r = f(e), a = h(e, t);
u(a);
let s = [...t];
if ("clone" !== e.pullMode) s = p(a, s);
else {
let t = a;
switch (r) {
case "multidrag":
t = a.map(((t, n) => ({
...t,
element: e.clones[n]
})));
break;
case "normal":
t = a.map((t => ({
...t,
element: e.clone
})));
break;
default:
o(i)(!0, `mode "${r}" cannot clone. Please remove "props.clone" from <ReactSortable/> when using the "${r}" plugin`)
}
c(t), a.forEach((t => {
const n = t.oldIndex,
r = this.props.clone(t.item, e);
s.splice(n, 1, r)
}))
}
s = s.map((e => Object.assign(e, {
selected: !1
}))), n(s, this.sortable, g)
}
onUpdate(e) {
const {
list: t,
setList: n
} = this.props, r = h(e, t);
c(r), u(r);
const i = function(e, t) {
return d(e, p(e, t))
}(r, t);
return n(i, this.sortable, g)
}
onStart() {
g.dragging = this
}
onEnd() {
g.dragging = null
}
onChoose(e) {
const {
list: t,
setList: n
} = this.props, r = t.map(((t, n) => {
let r = t;
return n === e.oldIndex && (r = Object.assign(t, {
chosen: !0
})), r
}));
n(r, this.sortable, g)
}
onUnchoose(e) {
const {
list: t,
setList: n
} = this.props, r = t.map(((t, n) => {
let r = t;
return n === e.oldIndex && (r = Object.assign(r, {
chosen: !1
})), r
}));
n(r, this.sortable, g)
}
onSpill(e) {
const {
removeOnSpill: t,
revertOnSpill: n
} = this.props;
t && !n && s(e.item)
}
onSelect(e) {
const {
list: t,
setList: n
} = this.props, r = t.map((e => Object.assign(e, {
selected: !1
})));
e.newIndicies.forEach((e => {
const t = e.index; - 1 !== t && (r[t].selected = !0)
})), n(r, this.sortable, g)
}
onDeselect(e) {
const {
list: t,
setList: n
} = this.props, r = t.map((e => Object.assign(e, {
selected: !1
})));
e.newIndicies.forEach((e => {
const t = e.index; - 1 !== t && (r[t].selected = !0)
})), n(r, this.sortable, g)
}
}
m.defaultProps = {
clone: e => e
};
var v, _;
v = e.exports, _ = {}, Object.keys(_).forEach((function(e) {
"default" === e || "__esModule" === e || v.hasOwnProperty(e) || Object.defineProperty(v, e, {
enumerable: !0,
get: function() {
return _[e]
}
})
}))
}(_C);
var SS = e => Te("svg", CS({
width: 14,
height: 9,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), xS || (xS = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M.6 6.9a1.6 1.6 0 1 0 3.2-.001A1.6 1.6 0 0 0 .6 6.9Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001ZM3.8 2.1a1.6 1.6 0 1 0-3.202.001A1.6 1.6 0 0 0 3.8 2.1Zm1.6 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Z",
fill: "#7E7E7E"
}))),
ES = "OrderOperator-module_operate_order__Dy31o",
TS = "OrderOperator-module_img_item__M6EFs",
OS = "OrderOperator-module_img__dEUmr",
AS = "OrderOperator-module_sortable__AqKYO",
PS = "OrderOperator-module_icon__P5csN",
MS = "OrderOperator-module_item_drag__6ZxO-",
DS = "OrderOperator-module_index__-E8wZ",
IS = "OrderOperator-module_index_show__-H0q8";
c(
".OrderOperator-module_operate_order__Dy31o{display:flex;height:118px;margin:6px 0}.OrderOperator-module_img_item__M6EFs{align-items:center;display:flex;flex-direction:column}.OrderOperator-module_img_item__M6EFs+.OrderOperator-module_img_item__M6EFs{margin-left:20px}.OrderOperator-module_img__dEUmr{border-radius:4px;height:60px;object-fit:cover;width:60px}.OrderOperator-module_img_item__M6EFs:last-child{margin-right:28px}.OrderOperator-module_img_item__M6EFs:first-child{margin-left:28px}.OrderOperator-module_sortable__AqKYO{align-items:center;display:flex;overflow-x:auto}.OrderOperator-module_icon__P5csN{cursor:pointer;margin-top:8px}.OrderOperator-module_item_drag__6ZxO-{background:#fdfdfd;border:1px solid #e6e6e6;border-radius:6px;box-shadow:0 2px 10px rgba(34,34,34,.08);padding:0 4px}.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_img_item__M6EFs{height:64px;width:64px}.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_index__-E8wZ{visibility:visible!important}.OrderOperator-module_index__-E8wZ{color:rgba(51,51,51,.6);font-size:12px;font-weight:500;line-height:12px;margin:3px 0;visibility:hidden}.OrderOperator-module_index_show__-H0q8{visibility:visible!important}@media (max-width:959px){.OrderOperator-module_img_item__M6EFs:last-child{margin-right:0}.OrderOperator-module_sortable__AqKYO{padding-right:20px}.OrderOperator-module_img_item__M6EFs:first-child{margin-left:20px}.OrderOperator-module_operate_order__Dy31o{height:108px}}");
var NS, RS = e => {
var {
onChange: t,
defaultValue: n
} = e, [r, i] = dt([]), [o, a] = dt(!1);
gt((() => {
n.length !== r.length && i(n || [])
}), [n, r.length]);
return zl("div", {
className: ES,
children: zl(_C.exports.ReactSortable, {
className: AS,
list: r || [],
setList: e => {
i(e), e.length && t(e)
},
dragClass: MS,
chosenClass: MS,
onStart: () => a(!0),
onEnd: () => a(!1),
filter: ".ignore",
handle: ".handle",
direction: "horizontal",
children: null == r ? void 0 : r.map(((e, t) => {
var {
url: n,
id: r
} = e;
return zl("div", {
className: TS,
children: [zl("div", {
className: Rl([DS, {
[IS]: o
}]),
children: t + 1
}), zl("img", {
className: Rl([OS, "ignore"]),
src: n
}), zl("div", {
className: Rl(["handle", PS]),
children: zl(SS, {})
})]
}, r)
}))
})
})
};
function jS() {
return jS = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, jS.apply(this, arguments)
}
var LS, FS = e => Te("svg", jS({
width: 28,
height: 28,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), NS || (NS = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M9.707 8.293a1 1 0 0 0-1.414 1.414L12.586 14l-4.293 4.293a1 1 0 1 0 1.414 1.414L14 15.414l4.293 4.293a1 1 0 0 0 1.414-1.414L15.414 14l4.293-4.293a1 1 0 0 0-1.414-1.414L14 12.586 9.707 8.293Z",
fill: "#333"
})));
function BS() {
return BS = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, BS.apply(this, arguments)
}
var zS = e => Te("svg", BS({
width: 28,
height: 28,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), LS || (LS = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M22.707 8.293a1 1 0 0 1 0 1.414l-10 10a1 1 0 0 1-1.414 0l-5-5a1 1 0 1 1 1.414-1.414L12 17.586l9.293-9.293a1 1 0 0 1 1.414 0Z",
fill: "#333"
})));
c(
'.rc-tabs-dropdown{background:#fefefe;border:1px solid #000;max-height:200px;overflow:auto;position:absolute}.rc-tabs-dropdown-hidden{display:none}.rc-tabs-dropdown-menu{list-style:none;margin:0;padding:0}.rc-tabs-dropdown-menu-item{padding:4px 8px}.rc-tabs-dropdown-menu-item-selected{background:red}.rc-tabs-dropdown-menu-item-disabled{cursor:not-allowed;opacity:.3}.rc-tabs-content{display:flex;width:100%}.rc-tabs-content-holder{flex:auto}.rc-tabs-content-animated{transition:margin .3s}.rc-tabs-tabpane{flex:none;width:100%}.rc-tabs{display:flex}.rc-tabs-bottom,.rc-tabs-top{flex-direction:column}.rc-tabs-bottom .rc-tabs-ink-bar,.rc-tabs-top .rc-tabs-ink-bar{height:3px}.rc-tabs-top .rc-tabs-ink-bar{bottom:0}.rc-tabs-bottom .rc-tabs-nav{order:1}.rc-tabs-bottom .rc-tabs-content{order:0}.rc-tabs-bottom .rc-tabs-ink-bar{top:0}.rc-tabs-left.rc-tabs-editable .rc-tabs-tab,.rc-tabs-right.rc-tabs-editable .rc-tabs-tab{padding-right:32px}.rc-tabs-left .rc-tabs-nav-wrap,.rc-tabs-right .rc-tabs-nav-wrap{flex-direction:column}.rc-tabs-left .rc-tabs-ink-bar,.rc-tabs-right .rc-tabs-ink-bar{width:3px}.rc-tabs-left .rc-tabs-nav,.rc-tabs-right .rc-tabs-nav{flex-direction:column;min-width:50px}.rc-tabs-left .rc-tabs-nav-list,.rc-tabs-left .rc-tabs-nav-operations,.rc-tabs-right .rc-tabs-nav-list,.rc-tabs-right .rc-tabs-nav-operations{flex:1 0 auto;flex-direction:column}.rc-tabs-left .rc-tabs-ink-bar{right:0}.rc-tabs-right .rc-tabs-nav{order:1}.rc-tabs-right .rc-tabs-content{order:0}.rc-tabs-right .rc-tabs-ink-bar{left:0}.rc-tabs-dropdown-rtl,.rc-tabs-rtl{direction:rtl}.rc-tabs{border:1px solid gray;font-size:14px;overflow:hidden}.rc-tabs-nav{display:flex;flex:none;position:relative}.rc-tabs-nav-measure,.rc-tabs-nav-wrap{display:inline-block;display:flex;flex:auto;overflow:hidden;position:relative;transform:translate(0);white-space:nowrap}.rc-tabs-nav-measure-ping-left:before,.rc-tabs-nav-measure-ping-right:after,.rc-tabs-nav-wrap-ping-left:before,.rc-tabs-nav-wrap-ping-right:after{bottom:0;content:"";position:absolute;top:0}.rc-tabs-nav-measure-ping-left:before,.rc-tabs-nav-wrap-ping-left:before{border-left:1px solid red;left:0}.rc-tabs-nav-measure-ping-right:after,.rc-tabs-nav-wrap-ping-right:after{border-right:1px solid red;right:0}.rc-tabs-nav-measure-ping-bottom:after,.rc-tabs-nav-measure-ping-top:before,.rc-tabs-nav-wrap-ping-bottom:after,.rc-tabs-nav-wrap-ping-top:before{content:"";left:0;position:absolute;right:0}.rc-tabs-nav-measure-ping-top:before,.rc-tabs-nav-wrap-ping-top:before{border-top:1px solid red;top:0}.rc-tabs-nav-measure-ping-bottom:after,.rc-tabs-nav-wrap-ping-bottom:after{border-top:1px solid red;bottom:0}.rc-tabs-nav-list{display:flex;position:relative;transition:transform .3s}.rc-tabs-nav-operations{display:flex}.rc-tabs-nav-operations-hidden{pointer-events:none;position:absolute;visibility:hidden}.rc-tabs-nav-more{background:rgba(255,0,0,.1);border:1px solid blue}.rc-tabs-nav-add{background:rgba(0,255,0,.1);border:1px solid green}.rc-tabs-tab{align-items:center;background:hsla(0,0%,100%,.5);border:0;cursor:pointer;display:flex;font-size:20px;font-weight:lighter;margin:0;outline:none;position:relative}.rc-tabs-tab-btn,.rc-tabs-tab-remove{background:transparent;border:0}.rc-tabs-tab-btn{font-weight:inherit;line-height:32px}.rc-tabs-tab-remove:hover{color:red}.rc-tabs-tab-active{font-weight:bolder}.rc-tabs-ink-bar{background:red;pointer-events:none;position:absolute}.rc-tabs-ink-bar-animated{transition:all .3s}.rc-tabs-extra-content{flex:none}');
var HS, US, WS, VS, XS, GS, YS, qS, KS, $S = Rt((e => {
var {
handleOperate: t,
defaultSize: n,
defaultRotate: r,
orderList: i,
onReset: o,
onConfirm: a
} = e, {
formatMessage: s
} = vo();
return zl("div", {
className: xk,
children: zl(yk, {
defaultActiveKey: "1",
onChange: e => {},
className: wk,
tabBarStyle: {
flex: 1,
background: "rgba(230, 230, 230, 0.4)"
},
children: [zl(gk, {
disabled: !0,
tab: zl(FS, {
className: "icon-custom",
onClick: o
})
}, "0"), zl(gk, {
tab: s({
id: "size"
}),
className: kk,
children: zl(Bk, {
onChange: e => t("size", e),
defaultData: n
})
}, "1"), zl(gk, {
tab: s({
id: "rotate"
}),
className: kk,
children: zl(vC, {
onChange: e => t("rotate", e),
defaultValue: r
})
}, "2"), zl(gk, {
tab: s({
id: "order"
}),
className: kk,
children: zl(RS, {
defaultValue: i,
onChange: e => t("order", e)
})
}, "3"), zl(gk, {
disabled: !0,
tab: zl(zS, {
className: "icon-custom",
onClick: a
})
}, "4")]
})
})
}));
function ZS() {
return ZS = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, ZS.apply(this, arguments)
}
var JS = e => Te("svg", ZS({
width: 119,
height: 103,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), HS || (HS = Te("rect", {
x: 1.896,
y: 20.176,
width: 100,
height: 77.551,
rx: 4,
transform: "rotate(-8 1.896 20.176)",
fill: "#EBECED"
})), US || (US = Te("g", {
filter: "url(#UploadEmpty_svg__a)"
}, Te("rect", {
x: 8,
y: 15,
width: 98,
height: 76,
rx: 4,
fill: "#fff"
}))), WS || (WS = Te("rect", {
x: 12,
y: 19,
width: 90,
height: 68,
rx: 3,
fill: "url(#UploadEmpty_svg__b)"
})), VS || (VS = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M52.985 87H15a3 3 0 0 1-3-3v-9.35l12.64-11.907a4 4 0 0 1 5.655.169L52.985 87Z",
fill: "url(#UploadEmpty_svg__c)"
})), XS || (XS = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M102 73.691v10.31a3 3 0 0 1-3 3H28.395L58.23 49.274a8 8 0 0 1 11.237-1.312L102 73.69Z",
fill: "url(#UploadEmpty_svg__d)"
})), GS || (GS = Te("circle", {
cx: 25,
cy: 33,
r: 6,
fill: "#D3D3D3"
})), YS || (YS = Te("circle", {
cx: 104,
cy: 15,
r: 15,
fill: "#333",
fillOpacity: .9
})), qS || (qS = Te("path", {
d: "M108.619 13.85h-3.469v-3.47a1.149 1.149 0 1 0-2.3 0v3.47h-3.47a1.149 1.149 0 1 0 0 2.3h3.47v3.47a1.149 1.149 0 1 0 2.3 0v-3.47h3.469a1.149 1.149 0 1 0 0-2.3Z",
fill: "#fff"
})), KS || (KS = Te("defs", null, Te("linearGradient", {
id: "UploadEmpty_svg__b",
x1: 57,
y1: 19,
x2: 57,
y2: 87,
gradientUnits: "userSpaceOnUse"
}, Te("stop", {
stopColor: "#F5F5F5"
}), Te("stop", {
offset: 1,
stopColor: "#F1F1F1"
}), Te("stop", {
offset: 1,
stopColor: "#F1F1F1"
})), Te("linearGradient", {
id: "UploadEmpty_svg__c",
x1: 38.615,
y1: 57.687,
x2: 38.615,
y2: 97,
gradientUnits: "userSpaceOnUse"
}, Te("stop", {
stopColor: "#E2E2E2"
}), Te("stop", {
offset: 1,
stopColor: "#E1E1E1"
})), Te("linearGradient", {
id: "UploadEmpty_svg__d",
x1: 62.337,
y1: 52.452,
x2: 62.337,
y2: 96.902,
gradientUnits: "userSpaceOnUse"
}, Te("stop", {
offset: 0,
stopColor: "#E5E5E6"
}), Te("stop", {
offset: 1,
stopColor: "#D3D3D3"
})), Te("filter", {
id: "UploadEmpty_svg__a",
x: 0,
y: 11,
width: 114,
height: 92,
filterUnits: "userSpaceOnUse",
colorInterpolationFilters: "sRGB"
}, Te("feFlood", {
floodOpacity: 0,
result: "BackgroundImageFix"
}), Te("feColorMatrix", {
in: "SourceAlpha",
values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
result: "hardAlpha"
}), Te("feOffset", {
dy: 4
}), Te("feGaussianBlur", {
stdDeviation: 4
}), Te("feComposite", {
in2: "hardAlpha",
operator: "out"
}), Te("feColorMatrix", {
values: "0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0.03 0"
}), Te("feBlend", {
in2: "BackgroundImageFix",
result: "effect1_dropShadow_188_17874"
}), Te("feBlend", {
in: "SourceGraphic",
in2: "effect1_dropShadow_188_17874",
result: "shape"
}))))),
QS = "DesignUpload-module_design_upload__rei3k",
eE = "DesignUpload-module_pointer__Aud8c",
tE = "DesignUpload-module_loading__4cg3s";
c(".DesignUpload-module_design_upload__rei3k{display:flex;height:584px}.DesignUpload-module_pointer__Aud8c{cursor:pointer}.DesignUpload-module_loading__4cg3s{transform:scale(.6)}");
var nE = zl(JS, {}),
rE = e => {
var {
width: t,
height: n,
children: r,
fieldName: i
} = e, [o, a] = dt(null), [s, l] = dt(""), [c, u] = ef(), {
formatMessage: h
} = vo();
return zl("div", {
className: Rl([e.className, QS]),
style: {
width: t,
height: n
},
children: [zl(cp, {
className: eE,
action: null == o ? void 0 : o.write_host,
accept: "image/png,image/jpeg,image/gif",
beforeUpload: e => e.size > L ? (c.open({
content: h({
id: "image_size_tip"
})
}), !1) : (e.status = "uploading", l(N), e.objectName = "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat((y(e.type) || w(e.name)).toLowerCase()), !!(o && Date.now() < 1e3 * o
.expire) || v().then((t => (a(t.data), e)))),
data: e => ({
policy: o.policy,
OSSAccessKeyId: o.access_id,
success_action_status: 200,
signature: o.sign,
"x-oss-forbid-overwrite": !0,
key: e.objectName
}),
onSuccess: (t, n) => {
n.status = "success", n.url = o.read_host + n.objectName, n.label_id = i, l(R), e.onSuccess(n)
},
onError: (e, t, n) => {
n.status = "error"
},
tabIndex: "0",
children: N === s ? zl(Pp, {
className: tE
}) : r || nE
}), u]
})
},
iE = "Design-module_app_parakeet_design__container__FrvSK",
oE = "Design-module_show__WZcJY",
aE = "Design-module_border_dash__-6wEJ",
sE = "Design-module_hidden__35G87",
lE = "Design-module_upload__d0XVy",
cE = "Design-module_upload_dialog__fCkjQ",
uE = "Design-module_wrapper__WGJzH";
c(".Design-module_app_parakeet_design__container__FrvSK *{box-sizing:border-box}.Design-module_app_parakeet_design__container__FrvSK{border:2px solid hsla(0,0%,90%,.6);border-radius:8px;display:none}.Design-module_app_parakeet_design__container__FrvSK .canvas-container canvas{border-radius:8px}.Design-module_show__WZcJY{display:block!important}.Design-module_border_dash__-6wEJ{border-style:dashed!important}.Design-module_hidden__35G87{display:none!important}.Design-module_upload__d0XVy{align-items:center;background-color:#fdfdfd;border-radius:8px;display:flex;justify-content:center}.Design-module_upload_dialog__fCkjQ{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.Design-module_preview_img__B65MY{max-height:100%;max-height:544px;max-width:100%}.Design-module_footer__YubKC{height:56px}.Design-module_app_parakeet_design__container__FrvSK .Design-module_upload_dialog__fCkjQ{margin:0!important}.Design-module_upload_dialog__fCkjQ .rc-dialog-body{padding:0}@media screen and (max-width:959px){.Design-module_wrapper__WGJzH{padding:0 16px}.eva .parakeet-design--wrapper{padding:0}.flash .parakeet-design--wrapper{padding:0 8px}}"),
X.fabric.Object.prototype.transparentCorners = !1, X.fabric.Object.prototype.cornerColor = "#fff", X.fabric.Object.prototype.borderColor = "#599BFF", X.fabric.Object.prototype.cornerStrokeColor = "#599BFF", X.fabric.Object.prototype
.cornerSize = 8;
var hE = Ft(((e, t) => {
var {
data: n,
visible: r,
onAddFIle: i,
setTab: o,
onDelete: a,
fileName: s,
hasChangeSave: l
} = e, c = vt(null), [u, h] = dt(""), [p, d] = dt(null), [f, g] = dt(), [m, v] = dt(), [b, y] = dt(!0), [w, x] = dt(!1), {
formatMessage: k
} = vo(), [C, D] = dt(""), [I, N] = dt(""), [R, j] = ef(), [L, F] = dt([]), [B, z] = dt({}), H = (e, t) => {
var n = [...L];
L.forEach(((t, r) => {
var i;
e.includes(t.label_id) && (u.remove(null === (i = L[r]) || void 0 === i ? void 0 : i.el), n.splice(r, 1, ""))
}));
var r = n.filter((e => e));
F(r), r.length || t()
};
_t(t, (() => ({
compositeUrl: C,
removeImg: H,
uploadFile: $
})));
var U = t => {
t.lockScalingFlip = !0, t.on("scaling", (() => {
(e => {
var {
width: t,
height: n,
scaleX: r,
scaleY: i
} = e;
r * t > O && (e.scaleX = O / t), r * t < T && (e.scaleX = T / t), i * n > O && (e.scaleY = O / n), i * n < T && (e.scaleY = T / n);
var o = Math.ceil(t * e.scaleX),
a = Math.ceil(n * e.scaleY);
g({
width: o,
height: a
})
})(t), e.hasChangeSave(!1)
})), t.on("moving", (() => {
t.preTop = t.top, t.preLeft = t.left
})), g((e => ({
height: Math.ceil(parseInt(e.getScaledHeight(), 10)),
width: Math.ceil(parseInt(e.getScaledWidth(), 10))
}))(t))
},
W = (t, n, r) => {
new X.fabric.Image.fromURL(t, (function(i) {
(e => {
var {
width: t,
height: n
} = e, r = e.scaleX * t > O, i = e.scaleX * t < T, o = e.scaleY * n > O, a = e.scaleY * n < T;
r ? e.scaleX = O / t : i && (e.scaleX = T / t), o ? e.scaleY = O / n : a && (e.scaleY = T / n);
var s = Math.max(e.scaleX, e.scaleY);
(r || o || i || a) && !(s * t > O || s * t < T) && (e.scaleY = s, e.scaleX = s);
var l = Math.ceil(t * e.scaleX),
c = Math.ceil(n * e.scaleY);
e._initData = {
scaleX: e.scaleX,
scaleY: e.scaleY
}, g({
width: l,
height: c
})
})(i), (e => {
var {
scaleX: t,
scaleY: n,
width: r,
height: i
} = e, o = n * i, a = t * r, s = u.height - 36, l = u.width - 36, c = 1, h = o > s, p = a > l;
if (h && (c = s / i), p && (c = Math.min(l / r, c)), h || p) {
var d = c * r > T && c * i > T,
f = Math.max(l / r, s / i),
m = !d && pa ? f : c = Math.min(l / r, c);
e.scaleX = m, e.scaleY = m;
var v = Math.ceil(r * e.scaleX),
_ = Math.ceil(i * e.scaleY);
g({
width: v,
height: _
}), e._initData = {
scaleX: m,
scaleY: m
}
}
e.setPositionByOrigin(new X.fabric.Point(u.width / 2, u.height / 2))
})(i), u.add(i), (t => {
t.on("selected", (() => {
d(t), v(t.angle || 0), U(t), y(!1)
})), t.on("moving", (() => {
e.hasChangeSave(!1)
})), t.setControlVisible("mtr", !1)
})(i), u.setActiveObject(i), F([{
url: t,
el: i,
id: n,
label_id: r
}, ...L])
}), {
crossOrigin: "anonymous"
})
};
gt((() => {
var e = Y();
h(e), e.on("selection:cleared", (() => {
y(!0)
}))
}), []);
var V = e => {
z(e);
var t = new FileReader;
t.readAsDataURL(e), t.onload = function(e) {
N(e.target.result), x(!0)
}
},
G = e => {
var t, {
uid: n
} = e,
r = [...L].findIndex((e => e.id === n));
u.remove(null === (t = L[r]) || void 0 === t ? void 0 : t.el);
var i = [...L];
i.splice(r, 1), F(i)
};
gt((() => (hu.$on(P, V), hu.$on(M, G), () => {
hu.$off(P, V), hu.$off(M, G)
})), [u, L]);
var Y = () => {
var {
width: e,
height: t
} = n, r = e - 4;
return new X.fabric.Canvas(c.current, {
height: t,
width: r,
backgroundColor: "#fff",
selection: !1
})
},
q = yt((e => {
x(!1), N(""), null == a || a(e)
}), [a]),
K = yt((() => {
var {
scaleX: e,
scaleY: t
} = p._initData;
p.set({
scaleX: e,
scaleY: t
}), p.rotate(0), p.angle = 0, v(0), p.setPositionByOrigin(new X.fabric.Point(u.width / 2, u.height / 2)), u.renderAll(), l(!1), g({
width: p.width * e,
height: p.height * t
})
}), [p, u, l]),
$ = () => {
Z().then((e => {
D(e), u.discardActiveObject(), u.requestRenderAll(), y(!0), l(!0)
})).catch((() => {
R.open({
content: k({
id: "image_upload_fail"
})
})
}))
},
Z = () => {
var e = u.toDataURL({
width: u.width,
height: u.height,
left: 0,
top: 0,
multiplier: 2,
format: A
});
if (!L.length) return Promise.resolve();
var t = S(A);
return _(E(e), t)
},
{
width: J,
height: Q
} = n,
ee = J - 4;
return zl("div", {
className: Rl([
[uE, "parakeet-design--wrapper"]
]),
children: zl("div", {
id: "app-parakeet-design--container",
className: Rl([iE, {
[oE]: r
}, {
[aE]: !L.length
}]),
children: [zl("div", {
className: Rl([L.length > 0 ? oE : sE]),
children: zl("canvas", {
ref: c
})
}), !L.length && zl(rE, {
className: lE,
width: ee,
height: Q,
onSuccess: e => {
i(e), V(e)
},
fieldName: s
}), !b && zl($S, {
defaultSize: f,
orderList: L,
defaultRotate: m || 0,
handleOperate: (t, n) => {
"size" === t ? (e => {
var {
width: t,
height: n
} = e, r = p.getOriginalSize();
p.set({
scaleX: t / r.width,
scaleY: n / r.height
})
})(n) : "rotate" === t ? (e => {
p.rotate(e), v(e)
})(n) : "order" === t && function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
[...e].reverse().forEach((e => {
e.el.bringToFront()
})), F(e), u.renderAll()
}(n), e.hasChangeSave(!1), u.renderAll()
},
onReset: K,
onConfirm: $
}), w && I && zl(R_, {
className: cE,
title: null,
onClose: () => {
x(!1), N("")
},
closable: !1,
maskClosable: !1,
visible: !0,
children: zl(Kv, {
file: B,
url: I,
onConfirm: e => {
W(e.dataUrl, e.uid, e.label_id), x(!1), N(""), o(), l(!1), window.scrollTo(0, 0)
},
onCancel: q
})
}), j]
})
})
})),
pE = (e, t) => e.currentStyle ? e.currentStyle[t] : getComputedStyle(e)[t];
c(
'.rc-dialog{margin:10px;position:relative;width:auto}.rc-dialog-wrap{-webkit-overflow-scrolling:touch;bottom:0;left:0;outline:0;overflow:auto;position:fixed;right:0;top:0;z-index:1050}.rc-dialog-title{font-size:14px;font-weight:700;line-height:21px;margin:0}.rc-dialog-content{background-clip:padding-box;background-color:#fff;border:none;border-radius:6px 6px;position:relative}.rc-dialog-close{background:transparent;border:0;color:#000;cursor:pointer;filter:alpha(opacity=20);font-size:21px;font-weight:700;line-height:1;opacity:.2;position:absolute;right:20px;text-decoration:none;text-shadow:0 1px 0 #fff;top:12px}.rc-dialog-close-x:after{content:"×"}.rc-dialog-close:hover{filter:alpha(opacity=100);opacity:1;text-decoration:none}.rc-dialog-header{background:#fff;border-bottom:1px solid #e9e9e9;border-radius:5px 5px 0 0;color:#666;padding:13px 20px 14px}.rc-dialog-body{padding:20px}.rc-dialog-footer{border-radius:0 0 5px 5px;border-top:1px solid #e9e9e9;padding:10px 20px;text-align:right}.rc-dialog-zoom-appear,.rc-dialog-zoom-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.08,.82,.17,1);opacity:0}.rc-dialog-zoom-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.rc-dialog-zoom-appear.rc-dialog-zoom-appear-active,.rc-dialog-zoom-enter.rc-dialog-zoom-enter-active{animation-name:rcDialogZoomIn;animation-play-state:running}.rc-dialog-zoom-leave.rc-dialog-zoom-leave-active{animation-name:rcDialogZoomOut;animation-play-state:running}@keyframes rcDialogZoomIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes rcDialogZoomOut{0%{transform:scale(1)}to{opacity:0;transform:scale(0)}}@media (min-width:768px){.rc-dialog{margin:30px auto;width:600px}}.rc-dialog-mask{background-color:#373737;background-color:rgba(55,55,55,.6);bottom:0;filter:alpha(opacity=50);height:100%;left:0;position:fixed;right:0;top:0;z-index:1050}.rc-dialog-mask-hidden{display:none}.rc-dialog-fade-appear,.rc-dialog-fade-enter{opacity:0}.rc-dialog-fade-appear,.rc-dialog-fade-enter,.rc-dialog-fade-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.55,0,.55,.2)}.rc-dialog-fade-appear.rc-dialog-fade-appear-active,.rc-dialog-fade-enter.rc-dialog-fade-enter-active{animation-name:rcDialogFadeIn;animation-play-state:running}.rc-dialog-fade-leave.rc-dialog-fade-leave-active{animation-name:rcDialogFadeOut;animation-play-state:running}@keyframes rcDialogFadeIn{0%{opacity:0}to{opacity:1}}@keyframes rcDialogFadeOut{0%{opacity:1}to{opacity:0}}');
var dE;
function fE() {
return fE = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, fE.apply(this, arguments)
}
c(
'.rc-notification{align-items:flex-end;display:flex;max-height:100vh;overflow-y:auto;padding:10px;position:fixed;z-index:1000}.rc-notification-top,.rc-notification-topLeft,.rc-notification-topRight{flex-direction:column;top:0}.rc-notification-topRight{right:0}.rc-notification-notice{background:#fff;border:0 solid transparent;border-radius:3px 3px;box-shadow:0 0 10px rgba(0,0,0,.2);box-sizing:border-box;display:block;line-height:1.5;margin:12px 0;position:relative;width:auto}.rc-notification-notice-content{padding:7px 20px 7px 10px}.rc-notification-notice-closable .rc-notification-notice-content{padding-right:20px}.rc-notification-notice-close{color:#000;cursor:pointer;filter:alpha(opacity=20);font-size:16px;font-weight:700;line-height:1;opacity:.2;outline:none;position:absolute;right:5px;text-decoration:none;text-shadow:0 1px 0 #fff;top:3px}.rc-notification-notice-close-x:after{content:"×"}.rc-notification-notice-close:hover{filter:alpha(opacity=100);opacity:1;text-decoration:none}.rc-notification-fade{overflow:hidden;transition:all .3s}.rc-notification-fade-appear-start{opacity:0;transform:translateX(100%)}.rc-notification-fade-appear-active{opacity:1;transform:translateX(0)}');
var gE = e => Te("svg", fE({
width: 24,
height: 24,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), dE || (dE = Te("path", {
d: "M6.992 5.342a1.167 1.167 0 0 0-1.65 1.65L10.35 12l-5.008 5.008a1.167 1.167 0 1 0 1.65 1.65L12 13.65l5.008 5.008a1.167 1.167 0 0 0 1.65-1.65L13.65 12l5.008-5.008a1.167 1.167 0 0 0-1.65-1.65L12 10.35 6.992 5.342Z",
fill: "#333"
})));
var mE = {
customize_not_complete: "商品定制未完成",
select_add_price_tip: "选择{key}将加价{price}",
add_price_tip: "{key}将加价{price}",
select: "选择",
cancel: "取消",
size: "尺寸",
rotate: "旋转",
order: "顺序",
width: "宽度",
height: "高度",
size_range: "尺寸范围",
upload_img_price: "上传图片价格",
image_upload_success: "图片上传成功",
image_upload_fail: "图片上传失败 ",
image_size_tip: "图片大小超过10M",
url_confirm_title: "保存设计图",
url_confirm_desc: "是否要保存并上传设计图至订单?",
url_confirm_yes: "是的",
url_confirm_no: "不需要",
preview_personalization: "预览定制效果",
view_product_image: "查看商品图集",
font_color: "文本颜色",
font: "字体",
font_size: "字号",
preview_range_tip: "请勿超出打印区域",
"options.upload.large.text": "将您的图片拖放到此处,或者",
"options.upload.large.text.mobile": "在此上传图片",
"options.upload.large.browse": "浏览",
"options.upload.large.limit": "接受 .gif、.jpg、.jpeg 和 .png,最大 10MB",
"options.upload.large.maxfiles": "最大上传数量",
upload_max_tip: "图片上传数量不应超过{max}张",
image_upload_section_fail: "部分图片上传失败",
required_tip: "此项为必填项"
},
vE = {
hello: "hello",
customize_not_complete: "Product customization is not completed",
select_add_price_tip: "Selection of {key} will add {price} to the price",
add_price_tip: "{key} will add {price} to the price",
select: "Select",
cancel: "Cancel",
size: "Size",
rotate: "Rotate",
order: "Order",
width: "Width",
height: "Height",
size_range: "Size range",
upload_img_price: "Image upload price",
image_upload_success: "Upload successfully",
image_upload_fail: "Upload failed",
image_size_tip: "Image size exceeds 10M",
url_confirm_title: "Save your design",
url_confirm_desc: "Do you want to save and upload the design to your order?",
url_confirm_yes: "Yes",
url_confirm_no: "No",
preview_personalization: "Preview your personalization",
view_product_image: "View original product image",
font_color: "Font color",
font: "Font",
font_size: "Font size",
preview_range_tip: "Please keep it inside the print area",
"options.upload.large.text": "Drop your image here, or ",
"options.upload.large.text.mobile": "Upload your image here",
"options.upload.large.browse": "browse",
"options.upload.large.limit": "Accepts .gif, .jpg, .jpeg, and .png, 10MB max",
"options.upload.large.maxfiles": "Maximum number of uploads",
upload_max_tip: "Maximum number of uploads: {max}",
image_upload_section_fail: "Some images failed to upload",
required_tip: "This is a required field"
},
_E = {
customize_not_complete: "Produktanpassung nicht abgeschlossen",
select_add_price_tip: "Wählen Sie {key} erhöht den Preis um {price}",
add_price_tip: "{key} Addiert {price} zum Preis",
select: "Wählen Sie",
cancel: "Abbrechen",
size: "Größe",
rotate: "Drehen",
order: "Bestellung",
width: "Breite",
height: "Höhe",
size_range: "Größenbereich",
upload_img_price: "Bildpreis hochladen",
image_upload_success: "Bild erfolgreich hochgeladen",
image_upload_fail: "Bild-Upload fehlgeschlagen ",
image_size_tip: "Die Bildgröße überschreitet 10 MB",
url_confirm_title: "Speichern Sie die Blaupause",
url_confirm_desc: "Möchten Sie das Design speichern und in die Bestellung hochladen?",
url_confirm_yes: "Ja",
url_confirm_no: "unnötig",
preview_personalization: "Sehen Sie sich Ihre Personalisierung in der Vorschau an",
view_product_image: "Originalproduktbild ansehen",
font_color: "Schriftfarbe",
font: "Schriftart",
font_size: "Schriftgröße",
preview_range_tip: "Bitte bewahren Sie es innerhalb des Druckbereichs auf",
"options.upload.large.text": "Legen Sie Ihr Bild hier ab oder ",
"options.upload.large.text.mobile": "Laden Sie Ihr Bild hier hoch",
"options.upload.large.browse": "stöbern Sie",
"options.upload.large.limit": "Akzeptiert .gif, .jpeg, .jpg und .png, maximal 10 MB",
"options.upload.large.maxfiles": "Maximale Anzahl an Uploads",
upload_max_tip: "Maximale Anzahl an Uploads {max}",
image_upload_section_fail: "Einige Bilder konnten nicht hochgeladen werden",
required_tip: "Das ist ein Pflichtfeld"
},
bE = {
customize_not_complete: "No se ha completado la personalización del producto",
select_add_price_tip: "Seleccione {key} añadirá {price} al precio",
add_price_tip: "{key} Añadir {price} al precio",
select: "Seleccione",
cancel: "Cancelar",
size: "Tamaño",
rotate: "Girar",
order: "Pedir",
width: "Anchura",
height: "Altura",
size_range: "Tamaño",
upload_img_price: "Subir imagen precio",
image_upload_success: "Imagen cargada con éxito",
image_upload_fail: "Carga de imagen fallida",
image_size_tip: "El tamaño de la imagen supera los 10M",
url_confirm_title: "Guardar el plano",
url_confirm_desc: "¿Quieres guardar y subir el diseño al pedido?",
url_confirm_yes: "Sí",
url_confirm_no: "innecesario",
preview_personalization: "Vista previa de su personalización",
view_product_image: "Ver imagen original del producto",
font_color: "Color de fuente",
font: "Fuente",
font_size: "Tamaño de fuente",
preview_range_tip: "Manténgalo dentro del área de impresión",
"options.upload.large.text": "Suelta tu imagen aquí, o ",
"options.upload.large.text.mobile": "Sube tu imagen aquí",
"options.upload.large.browse": "navega",
"options.upload.large.limit": "Acepta .gif, .jpeg, .jpg y .png, 10 MB máx",
"options.upload.large.maxfiles": "Número máximo de subidas",
upload_max_tip: "Número máximo de subidas {max}",
image_upload_section_fail: "Algunas imágenes no se pudieron cargar",
required_tip: "Este es un campo obligatorio"
},
yE = {
customize_not_complete: "La personnalisation du produit n'est pas terminée",
select_add_price_tip: "Sélectionner {key} ajoutera {price} au prix",
add_price_tip: "{key} Ajouter {price} au prix",
select: "Sélectionnez",
cancel: "Annuler",
size: "Taille",
rotate: "Faire pivoter",
order: "Commander",
width: "Largeur",
height: "Hauteur",
size_range: "Gamme de taille",
upload_img_price: "Télécharger le prix de l'image",
image_upload_success: "Image téléchargée avec succès",
image_upload_fail: "Le téléchargement de l'image a échoué ",
image_size_tip: "La taille de l'image dépasse 10M",
url_confirm_title: "Enregistrer le plan",
url_confirm_desc: "Voulez-vous enregistrer et télécharger le design dans la commande ?",
url_confirm_yes: "Oui",
url_confirm_no: "nutile",
preview_personalization: "Prévisualisez votre personnalisation",
view_product_image: "Voir l'image originale du produit",
preview_range_tip: "Veuillez le conserver à l'intérieur de la zone d'impression",
font_color: "Couleur de la police",
font: "Police de caractère",
font_size: "Taille de police",
"options.upload.large.text": "Déposez votre image ici, ou ",
"options.upload.large.text.mobile": "Téléchargez votre image ici",
"options.upload.large.browse": "parcourez",
"options.upload.large.limit": "Accepte .gif, .jpeg, .jpg et .png, 10 Mo max",
"options.upload.large.maxfiles": "Nombre maximal de téléchargements",
upload_max_tip: "Nombre maximal de téléchargements: {max}",
image_upload_section_fail: "Certaines images n'ont pas pu être téléchargées",
required_tip: "Ceci est un champ obligatoire"
},
wE = {
customize_not_complete: "Kustomisasi komoditas belum selesai",
select_add_price_tip: "Memilih {key} akan menambahkan {price}",
add_price_tip: "{key} akan menaikkan harga sebesar {price}",
select: "memilih",
cancel: "Membatalkan",
size: "ukuran",
rotate: "untuk memutar",
order: "memesan",
width: "lebar",
height: "tinggi",
size_range: "Kisaran ukuran",
upload_img_price: "Unggah harga gambar",
image_upload_success: "Gambar berhasil diunggah",
image_upload_fail: "Pengunggahan gambar gagal",
image_size_tip: "Ukuran gambar melebihi 10M",
url_confirm_title: "Simpan cetak biru",
url_confirm_desc: "Apakah Anda ingin menyimpan dan mengunggah desain ke pesanan?",
url_confirm_yes: "Ya",
url_confirm_no: "tidak perlu",
preview_personalization: "Pratinjau personalisasi Anda",
view_product_image: "Lihat gambar produk asli",
font_color: "Warna huruf",
font: "Fon",
font_size: "Ukuran huruf",
preview_range_tip: "Harap simpan di dalam area cetak",
"options.upload.large.text": "Jatuhkan gambar Anda di sini, atau ",
"options.upload.large.text.mobile": "Unggah gambar Anda di sini",
"options.upload.large.browse": "jelajahi",
"options.upload.large.limit": "Menerima .gif, .jpeg, .jpg, dan .png, maksimal 10MB",
"options.upload.large.maxfiles": "Jumlah unggahan maksimum",
upload_max_tip: "Jumlah unggahan maksimum {max}",
image_upload_section_fail: "Beberapa gambar gagal diunggah",
required_tip: "Ini adalah kolom yang harus diisi"
},
xE = {
customize_not_complete: "Personalizzazione del prodotto non completata",
select_add_price_tip: "Selezionare {key} aggiungerà {price} al prezzo",
add_price_tip: "{key} Aggiungi {price} al prezzo",
select: "Selezionare",
cancel: "Annulla",
size: "Dimensione",
rotate: "Ruotare",
order: "Ordine",
width: "Larghezza",
height: "Altezza",
size_range: "Gamma di dimensioni",
upload_img_price: "Carica il prezzo dell'immagine",
image_upload_success: "Immagine caricata con successo",
image_upload_fail: "Caricamento dell'immagine non riuscito",
image_size_tip: "La dimensione dell'immagine supera i 10M",
url_confirm_title: "Salva il progetto",
url_confirm_desc: "Vuoi salvare e caricare il design nell'ordine?",
url_confirm_yes: "SÌ",
url_confirm_no: "non necessario",
preview_personalization: "Visualizza in anteprima la tua personalizzazione",
view_product_image: "Visualizza l'immagine del prodotto originale",
font_color: "Visualizza l'immagine del prodotto originale",
font: "Font",
font_size: "Dimensione del font",
preview_range_tip: "Si prega di tenerlo all'interno dell'area di stampa",
"options.upload.large.text": "Trascina qui la tua immagine o ",
"options.upload.large.text.mobile": "Carica qui la tua immagine",
"options.upload.large.browse": "sfoglia",
"options.upload.large.limit": "Accetta .gif, .jpeg, .jpg e .png, 10 MB max",
"options.upload.large.maxfiles": "Numero massimo di caricamenti",
upload_max_tip: "Numero massimo di caricamenti {max}",
image_upload_section_fail: "Impossibile caricare alcune immagini",
required_tip: "Questo è un campo obbligatorio"
},
kE = {
customize_not_complete: "製品のカスタマイズが完了しない",
select_add_price_tip: "セレクト{key} を選択すると、価格に{price}が加算されます",
add_price_tip: "{key} 価格に{price}を加算する ",
select: "選択する",
cancel: "キャンセル",
size: "サイズ",
rotate: "回転させる",
order: "注文方法",
width: "幅",
height: "高さ",
size_range: "サイズ範囲",
upload_img_price: "画像の価格をアップロードする",
image_upload_success: "画像が正常にアップロードされました",
image_upload_fail: "画像のアップロードに失敗しました",
image_size_tip: "画像サイズが10Mを超える.",
url_confirm_title: "設計図を保存する",
url_confirm_desc: "デザインを保存して注文にアップロードしますか?",
url_confirm_yes: "はい",
url_confirm_no: "不要",
preview_personalization: "パーソナライズをプレビューする",
view_product_image: "元の製品画像を見る",
font_color: "文字の色",
font: "フォント",
font_size: "フォントサイズ",
preview_range_tip: "印刷範囲内に収めてください",
"options.upload.large.text": "ここに画像をドロップするか、参照してください",
"options.upload.large.text.mobile": "ここに画像をアップロードしてください",
"options.upload.large.browse": "閲覧",
"options.upload.large.limit": ".gif、.jpg、.jpeg、.png を受け入れ、最大 10MB",
"options.upload.large.maxfiles": "最大アップロード数",
upload_max_tip: "最大アップロード数 {max}",
image_upload_section_fail: "一部の画像のアップロードに失敗しました",
required_tip: "これは必要項目です"
},
CE = {
customize_not_complete: "제품 사용자 지정이 완료되지 않았습니다.",
select_add_price_tip: "선택 {key} 가격에 {price}달러가 추가됩니다",
add_price_tip: "{key} Ajouter {price} ",
select: "선택",
cancel: "취소",
size: "사이즈",
rotate: "회전",
order: "주문",
width: "폭",
height: "높이",
size_range: "크기 범위",
upload_img_price: "이미지 가격 업로드",
image_upload_success: "이미지가 성공적으로 업로드되었습니다.",
image_upload_fail: "이미지 업로드 실패 ",
image_size_tip: "이미지 크기가 10M를 초과합니다.",
url_confirm_title: "청사진 저장",
url_confirm_desc: "디자인을 저장하고 오더에 업로드하시겠습니까?",
url_confirm_yes: "예",
url_confirm_no: "불필요한",
preview_personalization: "개인화 미리보기",
view_product_image: "원본 제품 이미지 보기",
preview_range_tip: "인쇄 영역 안에 보관하십시오",
font_color: "글꼴 색상",
font: "폰트",
font_size: "글꼴 크기",
"options.upload.large.text": "이미지를 여기로 드래그 앤 드롭하거나",
"options.upload.large.text.mobile": "여기에 이미지 업로드",
"options.upload.large.browse": "검색",
"options.upload.large.limit": ".gif, .jpeg, .jpg 및 .png 허용, 최대 10MB",
"options.upload.large.maxfiles": "최대 업로드 수",
upload_max_tip: "최대 업로드 수 {max}",
image_upload_section_fail: "일부 이미지를 업로드하지 못했습니다",
required_tip: "필수 입력란입니다."
},
SE = {
"en-us": vE,
"zh-cn": mE,
"zh-tw": {
customize_not_complete: "商品定制未完成",
select_add_price_tip: "選擇{key}將加價{price}",
add_price_tip: "{key}將加價{price}",
select: "選擇",
cancel: "取消",
size: "尺寸",
rotate: "旋轉",
order: "順序",
width: "寬度",
height: "高度",
size_range: "尺寸範圍",
upload_img_price: "上傳圖片價格",
image_upload_success: "圖片上傳成功",
image_upload_fail: "圖片上傳失敗",
image_size_tip: "圖片大小超過10M",
url_confirm_title: "保存设计图",
url_confirm_desc: "是否要保存并上传设计图至订单?",
url_confirm_yes: "是的",
url_confirm_no: "不需要",
preview_personalization: "預覽定制效果",
view_product_image: "查看商品圖集",
font_color: "文本顏色",
font: "字體",
font_size: "字號",
preview_range_tip: "請勿超出打印區域",
"options.upload.large.text": "將您的圖片拖放到此處,或",
"options.upload.large.text.mobile": "在此上傳圖片",
"options.upload.large.browse": "瀏覽",
"options.upload.large.limit": "接受 .gif、.jpg、.jpeg 和 .png,最大 10MB",
"options.upload.large.maxfiles": "最大上傳數量",
upload_max_tip: "圖片上傳數量不應超過{max}張",
image_upload_section_fail: "部分圖片上傳失敗",
required_tip: "此項為必填項"
},
"th-th": {
customize_not_complete: "การปรับแต่งสินค้าไม่เสร็จสมบูรณ์",
select_add_price_tip: "การเลือก{key}จะเพิ่ม {price}",
add_price_tip: "{key}จะเพิ่มราคาอีก{price}",
select: "เลือก",
cancel: "ยกเลิก",
size: "ขนาด",
rotate: "เพื่อหมุน",
order: "คำสั่ง",
width: "ความกว้าง",
height: "สูง",
size_range: "ช่วงขนาด",
upload_img_price: "อัพโหลดภาพราคา",
image_upload_success: "อัปโหลดรูปภาพสำเร็จแล้ว",
image_upload_fail: "การอัปโหลดรูปภาพล้มเหลว ",
image_size_tip: "ขนาดภาพเกิน 10M",
url_confirm_title: "บันทึกพิมพ์เขียว",
url_confirm_desc: "คุณต้องการบันทึกและอัปโหลดการออกแบบไปยังคำสั่งซื้อหรือไม่",
url_confirm_yes: "ใช่",
url_confirm_no: "ไม่จำเป็น",
preview_personalization: "ดูตัวอย่างการปรับเปลี่ยนในแบบของคุณ",
view_product_image: "ดูภาพผลิตภัณฑ์ต้นฉบับ",
preview_range_tip: "โปรดเก็บไว้ในพื้นที่พิมพ์",
font_color: "สีตัวอักษร",
font: "แบบอักษร",
font_size: "ขนาดตัวอักษร",
"options.upload.large.text": "ลากและวางรูปภาพของคุณที่นี่",
"options.upload.large.text.mobile": "อัปโหลดภาพของคุณที่นี่",
"options.upload.large.browse": "เรียกดู",
"options.upload.large.limit": "ยอมรับ .gif, .jpeg, .jpg และ .png ขนาดสูงสุด 10MB",
"options.upload.large.maxfiles": "จำนวนการอัปโหลดสูงสุด",
upload_max_tip: "จำนวนการอัปโหลดสูงสุด {max}",
image_upload_section_fail: "ภาพบางภาพไม่สามารถอัปโหลดได้",
required_tip: "นี่คือข้อมูลที่จำเป็น"
},
"fr-fr": yE,
"ko-kr": CE,
"ja-jp": kE,
"es-es": bE,
"pt-pt": {
customize_not_complete: "Personalização do produto não concluída",
select_add_price_tip: "Seleccione {key} adicionará {price} ao preço",
add_price_tip: "{key} Añadir {price} al precio",
select: "Seleccione",
cancel: "Cancelar",
size: "Tamanho",
rotate: "Rodar",
order: "Encomenda",
width: "Largura",
height: "Altura",
size_range: "Gama de tamanhos",
upload_img_price: "Carregar preço da imagem",
image_upload_success: "Imagem enviada com sucesso",
image_upload_fail: "Falha no upload da imagem",
image_size_tip: "O tamanho da imagem excede 10M",
url_confirm_title: "Salve o projeto",
url_confirm_desc: "Deseja salvar e enviar o design para o pedido?",
url_confirm_yes: "Sim",
url_confirm_no: "desnecessário",
preview_personalization: "Visualize sua personalização",
view_product_image: "Veja a imagem original do produto",
font_color: "Cor da fonte",
font: "Fonte",
font_size: "Tamanho da fonte",
preview_range_tip: "Por favor, mantenha-o dentro da área de impressão",
"options.upload.large.text": "Solte sua imagem aqui ou ",
"options.upload.large.text.mobile": "Carregue sua imagem aqui",
"options.upload.large.browse": "navegue",
"options.upload.large.limit": "Aceita .gif, .jpeg, .jpg e .png, máximo de 10 MB",
"options.upload.large.maxfiles": "Número máximo de carregamentos",
upload_max_tip: "Número máximo de carregamentos {max}",
image_upload_section_fail: "Algumas imagens não foram carregadas",
required_tip: "Este é um campo obrigatório"
},
"ru-ru": {
customize_not_complete: "Настройка продукта не завершена",
select_add_price_tip: "Выберите {key} добавит {price} к цене",
add_price_tip: "{key} Добавить {price} к цене",
select: "Выберите",
cancel: "Отменить",
size: "Размер",
rotate: "Повернуть",
order: "Заказать",
width: "Ширина",
height: "Высота",
size_range: "Диапазон размеров",
upload_img_price: "Загрузить изображение цена",
image_upload_success: "Изображение успешно загружено",
image_upload_fail: "Не удалось загрузить изображение",
image_size_tip: "Размер изображения превышает 10M",
url_confirm_title: "Сохраните план",
url_confirm_desc: "Хотите сохранить и загрузить дизайн в заказ?",
url_confirm_yes: "Да",
url_confirm_no: "ненужный",
preview_personalization: "Предварительный просмотр вашей персонализации",
view_product_image: "Посмотреть исходное изображение продукта",
font_color: "Цвет шрифта",
font: "Цвет шрифта",
font_size: "Размер шрифта",
preview_range_tip: "Пожалуйста, держите его внутри области печати",
"options.upload.large.text": "Перетащите свое изображение сюда или ",
"options.upload.large.text.mobile": "Загрузите свое изображение сюда",
"options.upload.large.browse": "просматривать",
"options.upload.large.limit": "Принимаются форматы .gif, .jpeg, .jpg и .png, не более 10 МБ",
"options.upload.large.maxfiles": "Максимальное количество загрузок",
upload_max_tip: "Максимальное количество загрузок {max}",
image_upload_section_fail: "Не удалось загрузить некоторые изображения",
required_tip: "Данное поле является обязательным к заполнению"
},
"it-it": xE,
"ar-sa": {
customize_not_complete: "لم يتم الانتهاء من تخصيص السلع",
select_add_price_tip: "{price} سيضيف {key} تحديد",
add_price_tip: "{key} سيزيد السعر بمقدار {price} دولار",
select: "يختار",
cancel: "يلغي",
size: "مقاس",
rotate: "لتدوير",
order: "طلب",
width: "عرض",
height: "عالي",
size_range: "نطاق الحجم",
upload_img_price: "سعر تحميل الصورة",
image_upload_success: "تم تحميل الصورة بنجاح",
image_upload_fail: "فشل تحميل الصورة",
image_size_tip: "10M حجم الصورة يتجاوز",
url_confirm_title: "احفظ المخطط",
url_confirm_desc: "هل تريد حفظ وتحميل التصميم على الطلب؟",
url_confirm_yes: "نعم",
url_confirm_no: "غير ضروري",
preview_personalization: "معاينة التخصيص الخاص بك",
view_product_image: "عرض صورة المنتج الأصلي",
font_color: "لون الخط",
font: "الخط",
font_size: "حجم الخط",
preview_range_tip: "يرجى الاحتفاظ بها داخل منطقة الطباعة",
"options.upload.large.text": "ضع صورتك هنا ، أو ",
"options.upload.large.text.mobile": "قم بتحميل صورتك هنا",
"options.upload.large.browse": "تصفح",
"options.upload.large.limit": "يقبل .gif و. jpeg و. jpg و. png ، بحد أقصى 10 ميغابايت",
"options.upload.large.maxfiles": "أقصى عدد للتحميلات",
upload_max_tip: "أقصى عدد للتحميلات {max}",
image_upload_section_fail: "فشل تحميل بعض الصور",
required_tip: "هذا مجال مطلوب"
},
"id-id": wE,
"de-de": _E,
"nl-nl": {
customize_not_complete: "Productaanpassing niet voltooid",
select_add_price_tip: "Selecteer {key} zal {price} toevoegen aan de prijs",
add_price_tip: "{key} Voeg {price} toe aan de prijs",
select: "Selecteer",
cancel: "Annuleren",
size: "Maat",
rotate: "Draai",
order: "Bestel",
width: "Breedte",
height: "Hoogte",
size_range: "Maatbereik",
upload_img_price: "Prijs afbeelding uploaden",
image_upload_success: "Afbeelding geüpload",
image_upload_fail: "Het uploaden van afbeeldingen is mislukt",
image_size_tip: "De afbeeldingsgrootte overschrijdt 10M",
url_confirm_title: "Bewaar de blauwdruk",
url_confirm_desc: "Wil je het ontwerp opslaan en uploaden naar de bestelling?",
url_confirm_yes: "Ja",
url_confirm_no: "onnodig",
preview_personalization: "Bekijk een voorbeeld van uw personalisatie",
view_product_image: "Bekijk de originele productafbeelding",
font_color: "Letterkleur",
font: "Lettertype",
font_size: "Lettertypegrootte",
preview_range_tip: "Bewaar het binnen het afdrukgebied",
"options.upload.large.text": "Zet je afbeelding hier neer, of ",
"options.upload.large.text.mobile": "Upload hier uw afbeelding",
"options.upload.large.browse": "blader",
"options.upload.large.limit": "Accepteert .gif, .jpeg, .jpg en .png, max. 10 MB",
"options.upload.large.maxfiles": "Maximaal aantal uploads",
upload_max_tip: "Maximaal aantal uploads {max}",
image_upload_section_fail: "Sommige afbeeldingen konden niet worden geüpload",
required_tip: "dit is een verplicht veld"
},
"pl-pl": {
customize_not_complete: "Dostosowanie produktu nie zostało zakończone",
select_add_price_tip: "Wybranie {key} doda {price}",
add_price_tip: "{key} podniesie cenę o {price}",
select: "wybierać",
cancel: "Anulować",
size: "rozmiar",
rotate: "obrócić",
order: "zamówienie",
width: "szerokość",
height: "wysoki",
size_range: "Zakres rozmiarów",
upload_img_price: "Prześlij cenę zdjęcia",
image_upload_success: "Obraz przesłany pomyślnie",
image_upload_fail: "Przesyłanie obrazu nie powiodło się",
image_size_tip: "Rozmiar obrazu przekracza 10M",
url_confirm_title: "Zapisz plan",
url_confirm_desc: "Chcesz zapisać i wgrać projekt do zamówienia?",
url_confirm_yes: "ak",
url_confirm_no: "niepotrzebny",
preview_personalization: "Wyświetl podgląd swojej personalizacji",
view_product_image: "Zobacz oryginalne zdjęcie produktu",
font_color: "Kolor czcionki",
font: "Czcionka",
font_size: "Rozmiar czcionki",
preview_range_tip: "Proszę trzymać go w obszarze drukowania",
"options.upload.large.text": "Upuść swój obraz tutaj lub ",
"options.upload.large.text.mobile": "Prześlij swój obraz tutaj",
"options.upload.large.browse": "Uprzeglądaj",
"options.upload.large.limit": "Akceptuje pliki .gif, .jpeg, .jpg i .png, maks. 10 MB",
"options.upload.large.maxfiles": "Maksymalna liczba przesłanych plików",
upload_max_tip: "Maksymalna liczba przesłanych plików {max}",
image_upload_section_fail: "Nie udało się przesłać niektórych obrazów",
required_tip: "To pole jest wymagane"
}
},
EE = e => t => {
var n, r = (null === (n = document.documentElement.lang) || void 0 === n ? void 0 : n.toLowerCase()) || j,
i = bt((() => SE[r] || SE[j]), [r]);
return zl(ko, {
messages: i,
locale: r,
defaultLocale: j,
children: zl(e, h({}, t))
})
},
TE = e => {
var t, n, r, i = [];
try {
var o;
null == e || e.forEach((e => {
var t, n;
e.isHidden && null !== (t = e.preview_setting) && void 0 !== t && t.preview_open && (null === (n = e.preview_setting.data) || void 0 === n || n.forEach((e => {
var t;
null === (t = e.cards) || void 0 === t || t.forEach((e => {
e.isShow = !1
}))
})))
}));
var a = re.exports.cloneDeep(e.filter((e => {
var t;
return null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open
})));
if (null == a || !a.length) return [];
null == a || a.forEach((e => {
if (2 === e.preview_setting.type) {
var t;
if (null !== (t = e.preview_setting.data.filter((e => e.bgSelected))) && void 0 !== t && t.length) {
var n = e.preview_setting.data.filter((e => e.bgSelected))[0];
i.push(h(h({}, n), {}, {
orders: [e.order]
}))
}
} else {
var r = e.preview_setting.data[0];
i.push(h(h({}, r), {}, {
orders: [e.order]
}))
}
}));
var s = re.exports.cloneDeep(i);
null === (o = i) || void 0 === o || o.forEach((e => {
var t, n = [],
r = [];
null === (t = s.filter((t => e.bg_image_url === t.bg_image_url))) || void 0 === t || t.forEach((e => {
n = n.concat(e.cards), r = r.concat(e.orders)
})), e.cards = n, e.orders = r
})), t = i, n = "bg_image_url", r = new Map, i = t.filter((e => !r.has(e[n]) && r.set(e[n], 1)))
} catch (e) {
return []
}
return i
};
function OE(e) {
return e.startsWith("http") ? e : "https:".concat(e)
}
var AE = (e, t) => {
var {
tl: n,
tr: r,
bl: i,
br: o
} = e.aCoords, {
tl: a,
tr: s,
bl: l,
br: c
} = t.aCoords;
return n.x >= a.x && n.x <= s.x && n.y >= s.y && n.y <= c.y && r.x >= a.x && r.x <= s.x && r.y >= s.y && r.y <= c.y && i.x >= a.x && i.x <= s.x && i.y >= s.y && i.y <= c.y && o.x >= a.x && o.x <= s.x && o.y >= s.y && o.y <= c.y
};
X.fabric.Object.prototype.set({
borderColor: "#599BFF",
cornerColor: "#fff",
cornerStrokeColor: "#599BFF",
cornerSize: 8,
transparentCorners: !1
});
var PE, ME, DE = {
text: [],
upload: []
},
IE = e => {
var t = DE[e.configType];
t.push(h({}, e)), t.length > 20 && t.shift()
},
NE = Rt((e => {
var {
width: t = 0,
height: n = 0,
previewInfo: r = {},
isShow: i,
index: o,
data: a,
setData: s,
variantID: l
} = e, {
formatMessage: c
} = vo(), [u, p] = dt(null), [d, f] = dt(!1), [g, m] = ef(), v = bt((() => Math.min(t, n)), [t, n]), _ = bt((() => v / Math.max(r.bg_image_width, r.bg_image_height)), [v, r]), b = bt((() => v / 560), [v]);
gt((() => {
var e = new X.fabric.Canvas(r.bg_image_url, {
preserveObjectStacking: !0
});
p(e)
}), [r.bg_image_url]), gt((() => {
u && (ie.addInstance(u, o), ie.addImgOrders(r.orders, o), u.wrapperEl.style.margin = "0 auto", u.selection = !1, u.preserveObjectStacking = !0)
}), [u, o, l]), gt((() => {
null == u || u.clear(), DE = {
text: [],
upload: []
}
}), [l]);
var y = () => {
setTimeout((() => {
u.getObjects().forEach((e => {
"text" == e.configType && e.previewOrder && e.moveTo(e.previewOrder)
})), u.renderAll()
}))
};
return gt((() => {
if (u) return hu.$on(H, e), hu.$on(U, t), () => {
hu.$off(H, e), hu.$off(U, t)
};
function e(e) {
var t = u.getObjects().find((function(t) {
return t.fid === e && "img" === t.fidType
}));
t && (u.setActiveObject(t), y(), u.renderAll())
}
function t() {
f(!0), setTimeout((() => {
u.discardActiveObject(), y(), u.renderAll(), f(!1)
}))
}
}), [u]), gt((() => {
var e;
u && (u.backgroundImage || u.setBackgroundImage(OE(r.bg_image_url), u.renderAll.bind(u), {
scaleX: _,
scaleY: _,
left: v / 2,
top: v / 2,
originX: "center",
originY: "center",
crossOrigin: !0
}), null === (e = r.cards) || void 0 === e || e.forEach(((e, t) => {
if ("swatch" === e.configType) {
var n = u.getObjects().find((function(t) {
return t.oid ? t.oid === e.fid && e.configFid === t.fid : t.fid === e.configFid
}));
n && !e.isShow && u.remove(n), !n && e.isShow && X.fabric.Image.fromURL(OE(e.value), (t => {
t.top = e.top * b, t.configType = e.configType, t.left = e.left * b, t.scaleX = e.scaleX ? e.scaleX * b : e.width / t.width, t.scaleY = e.scaleY ? e.scaleY * b : e.height / t.height, t.angle = e.angle,
t.selectable = !1, t.hoverCursor = "default", t.fid = e.configFid, t.oid = e.fid, u.insertAt(t, e.previewOrder), u.renderAll()
}), {
crossOrigin: "anonymous"
})
}
if ("upload" === e.configType) {
var i = u.getObjects().find((function(t) {
return t.fid === e.configFid
}));
if (u.getObjects().forEach((t => {
t.fid !== e.configFid || e.isShow || u.remove(t)
})), !i && e.isShow) {
var o = new X.fabric.Rect({
left: e.print_area_left * b,
top: e.print_area_top * b,
width: e.print_area_width * e.scaleX * b,
height: e.print_area_height * e.scaleY * b,
fill: "transparent",
selectable: !1,
hoverCursor: "default",
fid: e.configFid,
shapeType: "boundsReact",
configType: e.configType,
evented: !1
});
("down" === (null == e ? void 0 : e.upload_img_level) ? new Promise(((t, n) => {
X.fabric.Image.fromURL(OE(r.bg_image_url), (n => {
n.set({
scaleX: _,
scaleY: _,
left: v / 2,
top: v / 2,
originX: "center",
originY: "center",
crossOrigin: !0,
evented: !1,
shapeType: "overlay",
fid: e.configFid,
configType: e.configType
}), t(n)
}), {
crossOrigin: "anonymous"
})
})) : new Promise(((e, t) => {
e(null)
}))).then((t => {
X.fabric.Image.fromURL(e.uploadDataUrl, (n => {
var {
left: r,
top: i,
scale: a
} = ((e, t) => {
var n = e.width,
r = e.height,
i = n / r,
o = t.left + 4,
a = t.top + 4,
s = t.width - 8,
l = t.height - 8,
c = s / l,
u = 1,
h = 0,
p = 0;
return (i > c || i === c) && (n > s ? (h = o, p = a + (l - r * (u = s / n)) / 2) : (u = 1, h = o + (s - n) / 2, p = a + (l - r) / 2)), i < c && (r > l ? (h = o + (s - n * (u = l / r)) / 2,
p = a) : (u = 1, h = o + (s - n) / 2, p = a + (l - r) / 2)), {
scale: u,
left: h,
top: p
}
})(n, o);
n.set({
left: r,
top: i,
scaleX: a,
scaleY: a,
fid: e.configFid,
configType: e.configType,
fidType: "img"
}), n.scaleToWidth(n.width * a), n.scaleToHeight(n.height * a), u.insertAt(o, e.previewOrder), u.insertAt(n, e.previewOrder), t && u.insertAt(t, e.previewOrder), u.renderAll()
}), {
crossOrigin: "anonymous"
})
}))
}
}
if ("text" === e.configType && (u.getObjects().find((function(t) {
return t.fid === e.configFid
})), u.getObjects().forEach((t => {
t.fid === e.configFid && e.focusing && u.remove(t)
})), e.isShow && e.focusing)) {
if (e.moveabled) {
var s = new X.fabric.Rect({
left: e.print_area_left * b,
top: e.print_area_top * b,
width: e.print_area_width * (e.print_scale_x || 1) * b,
height: e.print_area_height * (e.print_scale_y || 1) * b,
fill: e.fill || "transparent",
selectable: !1,
angle: e.print_area_angle || 0,
fid: e.fid,
shapeType: "boundsReact",
hoverCursor: "default",
statefullCache: !0,
configType: e.configType,
evented: !1
}),
p = new X.fabric.Textbox(e.textValue || "", {
padding: 0,
fontSize: e.textSize || 30,
fill: e.textColor || "black",
width: e.width ? e.width : e.print_area_width * (e.print_scale_x || 1) * b - 8,
top: e.text_top ? e.text_top * b : (e.print_area_height * (e.print_scale_y || 1) / 2 + e.print_area_top) * b - e.textSize / 2,
left: e.text_left ? e.text_left * b : e.print_area_left * b,
scaleX: e.scaleX ? e.scaleX * b : b,
scaleY: e.scaleY ? e.scaleY * b : b,
fontFamily: e.textFont,
fid: e.configFid,
angle: e.text_angle || 0,
focusing: e.focusing,
lockScalingX: !0,
lockScalingY: !0,
splitByGrapheme: !0,
editable: !1,
textAlign: "center",
configType: e.configType,
previewOrder: e.previewOrder
});
u.insertAt(s, e.previewOrder), u.insertAt(p, e.previewOrder), !e.focusing || e.isInit || d || u.setActiveObject(p), u.renderAll()
} else {
var f, m, y = {
fontSize: e.textSize || 30,
fill: e.textColor || "black",
top: e.text_top * b,
left: e.text_left * b,
scaleX: e.scaleX ? e.scaleX * b : 1,
scaleY: e.scaleY ? e.scaleY * b : 1,
angle: e.text_angle || 0,
fontFamily: e.textFont,
fid: e.fid,
focusing: e.focusing,
lockScalingX: !0,
lockScalingY: !0,
splitByGrapheme: !0,
selectable: !1,
hoverCursor: "default",
lockRotation: !0,
originX: "center",
originY: "center",
configType: e.configType
},
w = new X.fabric.Text(e.textValue || "", y);
null !== (f = window) && void 0 !== f && null !== (m = f.appparakeet_switch) && void 0 !== m && m.preview_fixed && (w = new X.fabric.Textbox(e.textValue || "", h(h({}, y), {}, {
scaleX: e.scaleX ? e.scaleX * b : b,
scaleY: e.scaleY ? e.scaleY * b : b,
width: e.width ? e.width : e.print_area_width * (e.print_scale_x || 1) * b - 8,
editable: !1,
textAlign: "center",
originY: "top",
previewOrder: e.previewOrder
}))), u.insertAt(w, e.previewOrder)
}
u.renderAll()
}
setTimeout((() => {
u.renderAll()
})), u && u.off("after:render"), u && u.off("mouse:up"), u && u.on("mouse:up", (() => {
var e = u.getObjects(),
t = u.getActiveObject();
if (null != e && e.length && e.forEach((e => {
t && t.fid === e.fid || "text" != e.configType || !e.previewOrder || e.moveTo(e.previewOrder)
})), t) {
var n = e.find((e => e.fid === t.fid && "boundsReact" === e.shapeType));
if (!AE(t, n)) {
var r = DE[t.configType],
i = r[r.length - 1];
if (!i) return;
t.set({
width: i.width,
height: i.height,
left: i.left,
top: i.top,
angle: i.angle || 0,
scaleX: i.scaleX || 1,
scaleY: i.scaleY || 1
}), u.renderAll()
}
}
})), u && u.on("after:render", (() => {
var e = u.getObjects(),
t = u.getActiveObject();
if (t) {
var n = e.find((e => e.fid === t.fid && "boundsReact" === e.shapeType));
"text" === t.configType ? a.forEach(((e, r) => {
var i;
e.fid === t.fid && (l && e.preview_setting.data.length > 1 ? e.preview_setting.data.forEach((n => {
n.variant_id && n.variant_id === l && (n.cards[0].text_height = t.height, n.cards[0].text_width = t.width, n.cards[0].text_left = t.left / b, n.cards[0].text_top = t.top / b, n.cards[
0].text_angle = t.angle, n.cards[0].text_size = t.fontSize, n.cards[0].scaleX = t.scaleX / b, n.cards[0].scaleY = t.scaleY / b, e.preview_setting.moveabled && (n.cards[0].width =
t.width))
})) : 1 != e.preview_setting.data.length || null !== (i = e.preview_setting.data[0]) && void 0 !== i && i.variant_id || (e.preview_setting.data[0].cards[0].text_height = t.height, e
.preview_setting.data[0].cards[0].text_width = t.width, e.preview_setting.data[0].cards[0].text_left = t.left / b, e.preview_setting.data[0].cards[0].text_top = t.top / b, e
.preview_setting.data[0].cards[0].text_angle = t.angle, e.preview_setting.data[0].cards[0].text_size = t.fontSize, e.preview_setting.data[0].cards[0].scaleX = t.scaleX / b, e
.preview_setting.data[0].cards[0].scaleY = t.scaleY / b, e.preview_setting.moveabled && (e.preview_setting.data[0].cards[0].width = t.width)), e.preview_setting.moveabled && (AE(t, n) ? (
IE(t), n.fill = "transparent", e.preview_setting.data[0].cards[0].fill = "transparent") : (n.fill = "rgba(221, 29, 24, 0.3)", e.preview_setting.data[0].cards[0].fill =
"rgba(221, 29, 24, 0.3)", g.destroy(), g.open({
content: c({
id: "preview_range_tip"
})
}))))
})) : AE(t, n) ? (IE(t), n.set("fill", "transparent")) : (n.set("fill", "rgba(221, 29, 24, 0.3)"), g.destroy(), g.open({
content: c({
id: "preview_range_tip"
})
}))
}
}))
})), setTimeout((() => {
u.renderAll()
})))
}), [r, u]), zl("div", {
style: {
display: i ? "block" : "none"
},
children: [zl("canvas", {
id: r.bg_image_url,
width: v,
height: v
}), m]
})
}));
function RE() {
return RE = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}, RE.apply(this, arguments)
}
var jE = e => Te("svg", RE({
width: 22,
height: 22,
fill: "none",
xmlns: "http://www.w3.org/2000/svg"
}, e), PE || (PE = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M11.048 5.867h-.002c-3.952 0-7.288 2.195-8.348 5.201a.346.346 0 0 0 0 .23c1.06 3.007 4.396 5.202 8.348 5.202 3.976 0 7.33-2.223 8.367-5.26a.177.177 0 0 0 0-.114c-1.038-3.036-4.39-5.258-8.365-5.26Zm-7.358 5.45a.341.341 0 0 1 0-.268c.718-1.678 2.308-3.085 4.384-3.786a3.867 3.867 0 1 0 5.953.003c2.07.703 3.658 2.108 4.374 3.783a.341.341 0 0 1 0 .269c-1.031 2.412-3.867 4.264-7.355 4.264-3.489 0-6.324-1.852-7.356-4.264Zm7.259-4.531a1.45 1.45 0 1 1-2.798.452 9.282 9.282 0 0 1 2.798-.452Z",
fill: "#292929"
})), ME || (ME = Te("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M11.048 5.867h-.002c-3.952 0-7.288 2.195-8.348 5.201a.346.346 0 0 0 0 .23c1.06 3.007 4.396 5.202 8.348 5.202 3.976 0 7.33-2.223 8.367-5.26a.177.177 0 0 0 0-.114c-1.038-3.036-4.39-5.258-8.365-5.26Zm-7.358 5.45a.341.341 0 0 1 0-.268c.718-1.678 2.308-3.085 4.384-3.786a3.867 3.867 0 1 0 5.953.003c2.07.703 3.658 2.108 4.374 3.783a.341.341 0 0 1 0 .269c-1.031 2.412-3.867 4.264-7.355 4.264-3.489 0-6.324-1.852-7.356-4.264Zm7.259-4.531a1.45 1.45 0 1 1-2.798.452 9.282 9.282 0 0 1 2.798-.452Z",
fill: "#292929"
}))),
LE = "index-module_preview_wrap__wyD3z",
FE = "index-module_upload_dialog__zsPoE",
BE = "index-module_canvas-container-fixed__KUEdU";
c(
".index-module_preview_wrap__wyD3z{background-color:#fff;height:100%;left:0;pointer-events:auto;position:absolute;top:0;width:100%}.index-module_upload_dialog__zsPoE{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.index-module_upload_dialog__zsPoE .rc-dialog-body{padding:0}.index-module_canvas-container-fixed__KUEdU{border-radius:6px;box-shadow:0 1px 10px 0 rgba(0,0,0,.2);left:0;pointer-events:none;position:fixed!important;top:1px;transition:opacity .5s;z-index:1031}.index-module_canvas-container-fixed__KUEdU .lower-canvas,.index-module_canvas-container-fixed__KUEdU .upper-canvas{height:100%!important;width:100%!important}");
var zE = (() => {
var e, t = document.querySelector(".product-detail-gallery>#product-detail-gallery-inner>.product-images-container") || document.querySelector(".product-main-images-container") || document.querySelector(".product-image__content") ||
document.querySelector("#product-images-carousel") || (null === (e = document.querySelector(".product-image")) || void 0 === e ? void 0 : e.querySelector("div"));
return "Wind" === ka() && (t = document.querySelector("#product-images-carousel").parentNode), t && (t.style.position = "relative"), t
})(),
HE = Rt((e => {
var t, n, r, {
data: i,
variantID: o,
setData: a,
onUploadDelete: s
} = e,
{
formatMessage: l
} = vo(),
c = bt((() => TE(i)), [i]),
[u, p] = dt(!1),
[d, f] = dt(0),
[g, m] = dt(!1),
[v, _] = dt({}),
[b, y] = dt(""),
w = () => {
hu.$emit(U)
},
x = re.exports.debounce((() => {
var e = document.querySelector(".canvas-container"),
t = document.querySelector(".header_container"),
n = document.querySelector(".product-info-body"),
r = (null == t ? void 0 : t.offsetHeight) || 0,
i = (null == e ? void 0 : e.offsetHeight) || 0,
o = e.getAttribute("data-canvas-width");
if (i && pa()) {
var a = window.scrollY;
n.style.zIndex = 1, a > r + i ? (!o && e.setAttribute("data-canvas-width", null == e ? void 0 : e.offsetWidth), e.classList.add(BE), e.style.top = "".concat(r, "px"), e.style.width = "".concat(.7 * window.innerWidth,
"px"), e.style.height = "".concat(.7 * window.innerWidth, "px")) : (e.classList.remove(BE), o && (e.style.top = 0, e.style.width = "".concat(o, "px"), e.style.height = "".concat(o, "px")))
}
}), 300);
gt((() => {
var e, t;
return null !== (e = window) && void 0 !== e && null !== (t = e.appparakeet_switch) && void 0 !== t && t.preview_fixed && (window.addEventListener("scroll", x), x()), () => {
var e, t;
null !== (e = window) && void 0 !== e && null !== (t = e.appparakeet_switch) && void 0 !== t && t.preview_fixed && window.removeEventListener("scroll", x)
}
}), [c]), gt((() => {
function e(e) {
a((t => {
var n = TE(t).findIndex((t => e.preview_setting.data.filter((e => e.bg_image_url === t.bg_image_url)).length)) || 0;
f(n);
var r = re.exports.cloneDeep(t);
return r.forEach((t => {
var n, r;
null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (null === (r = t.preview_setting.data) || void 0 === r || r.forEach((n => {
var r;
null === (r = n.cards) || void 0 === r || r.forEach((n => {
"text" == n.configType && (n.fid = t.fid, n.focusing = e.fid === t.fid, n.isShow = !!e.textValue, n.moveabled = t.preview_setting.moveabled, n.adjust_font_size = t.preview_setting
.adjust_font_size, n.textColor = e.textColor, n.textFont = e.textFont, n.textSize = e.textSize, n.textColor = e.textColor, n.textValue = e.textValue, n.isInit = e.isInit)
}))
})))
})), r
})), e.isInit || p(!0)
}
function t(e) {
w(), a((t => {
var n = TE(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
f(n);
var r = re.exports.cloneDeep(t);
return null == r || r.forEach((t => {
var n, r;
null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (null === (r = t.preview_setting.data) || void 0 === r || r.forEach((t => {
var n;
null === (n = t.cards) || void 0 === n || n.forEach((t => {
var n, r;
null !== (n = e.checked_fids) && void 0 !== n && n.includes(t.fid) && (t.isShow = !0), null !== (r = e.un_checked_fids) && void 0 !== r && r.includes(t.fid) && (t.isShow = !1)
}))
})))
})), r
})), p(!0)
}
function n(e) {
if (w(), e.url) {
_(e);
var t = new FileReader;
t.readAsDataURL(e), t.onload = function(t) {
y(t.target.result), m(!1), k(e)
}
} else a((t => {
var n, r = TE(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
f(r);
var i = re.exports.cloneDeep(t);
return null === (n = i.filter((t => t.fid === e.label_id))[0].preview_setting.data) || void 0 === n || n.forEach((e => {
e.cards[0].isShow = !1, e.cards[0].uploadDataUrl = ""
})), i
}))
}
return hu.$on(F, t), hu.$on(B, n), hu.$on(z, e), () => {
hu.$off(z, e), hu.$off(F, t), hu.$off(B, n)
}
}), [a]), gt((() => {
var e, t, n;
function r() {
p(!1)
}
p(!(null === (e = window) || void 0 === e || null === (t = e.appparakeet_switch) || void 0 === t || !t.preview_show));
var i = document.querySelector("#product-thumb-images-container") || document.querySelector(".product-thumb-images-container") || document.querySelector(".product-image__thumbs");
return (null === (n = window.appparakeet_images) || void 0 === n ? void 0 : n.length) > 1 && (null == i || i.addEventListener("click", r)), () => {
var e;
(null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) > 1 && (null == i || i.removeEventListener("click", r))
}
}), []), gt((() => {
if (zE) return zE.style.pointerEvents = u ? "none" : "auto", () => {
zE && (zE.style.pointerEvents = "auto")
}
}), [u]);
var k = yt((e => {
w(), a((t => {
var n, r = TE(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
f(r);
var i = re.exports.cloneDeep(t);
return null === (n = i.filter((t => t.fid === e.label_id))[0].preview_setting.data) || void 0 === n || n.forEach((t => {
t.cards[0].uploadDataUrl = e.dataUrl || e.url, t.cards[0].isShow = !0
})), i
})), p(!0), m(!1), y(""), window.scrollTo(0, 0)
}), [a]),
C = yt((e => {
m(!1), y(""), null == s || s(e)
}), [s]);
return !(null == c || !c.length) && zl(Pe, {
children: [zl("div", {
className: "pk-flex pk-items-center !pk-mt-7 pk-cursor-pointer",
onClick: () => {
var e;
(null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) < 2 && u ? p(!1) : p(!0), window.scrollTo({
top: 0,
behavior: "smooth"
})
},
children: [zl(jE, {}), (null === (t = window.appparakeet_images) || void 0 === t ? void 0 : t.length) < 2 && u ? zl(Ul, {
className: "pk-ml-2",
children: l({
id: "view_product_image"
})
}) : zl(Ul, {
className: "pk-ml-2",
children: l({
id: "preview_personalization"
})
})]
}), zE && Jt(zl("div", {
id: "appparakeet-preview-img",
className: LE,
style: h({
display: u ? "block" : "none",
zIndex: "Life Style" === ka() ? 9 : 99
}, (null === (n = window) || void 0 === n || null === (r = n.appparakeet_switch) || void 0 === r ? void 0 : r.custom_img_center) && {
display: u ? "flex" : "none",
alignItems: "center"
}),
children: null == c ? void 0 : c.map(((e, t) => zl(NE, {
width: null == zE ? void 0 : zE.clientWidth,
height: null == zE ? void 0 : zE.clientHeight,
previewInfo: e,
isShow: t === d,
index: t,
data: i,
setData: a,
variantID: o
}, e.bg_image_url)))
}), zE), g && zl(R_, {
className: FE,
title: null,
onClose: () => {
m(!1)
},
closable: !1,
maskClosable: !1,
visible: !0,
children: zl(Kv, {
file: v,
url: b,
onConfirm: k,
onCancel: C
})
})]
})
})),
UE = ["PHOTO", "DESIGN"],
WE = EE((e => {
var t, {
isQuick: n,
productId: r,
data: i = null,
queryWrapperTarget: o,
className: a = ""
} = e,
{
formatMessage: s
} = vo(),
[l, c] = dt((null == i ? void 0 : i.length) > 0),
u = bt((() => {
return e = window.appparakeet_data, t = [], null == e || e.forEach(((e, n) => {
var r, i;
null !== (r = e.preview_setting) && void 0 !== r && r.preview_open && (null === (i = e.preview_setting.data) || void 0 === i || i.forEach((e => {
t.push(e.bg_image_url)
})))
})), null == e || e.forEach(((e, n) => {
var r, i;
null !== (r = e.preview_setting) && void 0 !== r && r.preview_open && (null === (i = e.preview_setting.data) || void 0 === i || i.forEach((r => {
var i;
r.bg_image_url = t.filter((e => Sa(e) === Sa(r.bg_image_url)))[0], null === (i = r.cards) || void 0 === i || i.forEach(((t, r) => {
var i;
t.configType = e.type, t.upload_img_level = (null == e || null === (i = e.preview_setting) || void 0 === i ? void 0 : i.upload_img_level) || "up", t.configFid = e.fid, t.previewOrder = 1e3 * (n +
1) + r, e.preview_setting.moveabled && "text" === t.configType && (t.text_left = void 0, t.text_top = void 0)
}))
})))
})), e;
var e, t
}), []),
[p, f] = dt(u || []),
[g, m] = dt(UE[0]),
[v, _] = dt(""),
[b, y] = dt(""),
[w, x] = dt({
with: 0,
height: 0
}),
[k, S] = dt(!0),
E = vt(!0),
T = vt(null),
O = bt((() => ({
title: s({
id: "url_confirm_title"
}),
message: s({
id: "url_confirm_desc"
}),
confirmText: s({
id: "url_confirm_yes"
}),
cancelText: s({
id: "url_confirm_no"
})
})), [s]);
O.onConfirm = null === (t = T.current) || void 0 === t ? void 0 : t.uploadFile, O.onClose = () => {
S(!0)
};
var A = function(e) {
var [t, n] = dt(!1), {
title: r,
message: i,
confirmText: o,
cancelText: a,
onClose: s,
onConfirm: l
} = e, c = () => {
n(!1), null == s || s()
}, u = () => {
n(!1), l()
};
return {
isOpen: t,
open: () => {
n(!0)
},
closeDialog: c,
renderDialog: () => t ? Jt(zl(R_, {
className: Gd,
wrapClassName: Zd,
title: null,
onClose: c,
closable: !0,
closeIcon: zl(gE, {}),
maskClosable: !1,
visible: !0,
children: [zl("div", {
className: Yd,
children: r
}), zl("div", {
className: qd,
children: i
}), zl("div", {
className: Kd,
children: [zl("button", {
className: Rl([$d, Jd]),
onClick: c,
children: a
}), zl("button", {
className: Rl($d, Qd),
onClick: u,
children: o
})]
})]
}), document.body) : null
}
}(O),
P = null,
N = document.querySelector("#product_detail_".concat(r, " .product-image")) || document.querySelector(".product-images-container") || document.querySelector(".product-detail .product-images");
P = Ca(["Eva"]) ? N.parentNode : Ca(["Wind"]) ? (N.parentElement.style.flexDirection = "column", N.parentElement) : N || document.querySelector(".product-details .product-images") || document.querySelector(
".product-detail .product-images");
var R = null;
gt((() => {
if (!n) {
(R = document.createElement("div")).id = "app-parakeet-tab";
var e = P.querySelector("spz-carousel#product-detail-images") || P.querySelector("div");
P && !document.querySelector("#app-parakeet-tab") && P.insertBefore(R, e);
var t = Ca("Flash") ? 16 : 32,
r = pa() ? e.offsetWidth - t : e.offsetWidth;
x({
width: r,
height: r
});
var i = document.createElement("div");
i.id = "app-parakeet-design", P && !document.querySelector("#app-parakeet-design") && P.append(i)
}
}), []), gt((() => {
(() => {
if (!i) {
var e = window.appparakeet_data;
if (0 === (null == e ? void 0 : e.length)) return void c(!1);
f(e), c(!0)
}
})()
}), [r, i]);
var {
setError: j,
clearErrors: L,
handleSubmit: F,
formState: {
isValid: B,
isValidating: z
},
control: H,
setValue: U,
getValues: W,
unregister: V,
register: X,
trigger: G
} = function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
t = Nn.useRef(),
[n, r] = Nn.useState({
isDirty: !1,
isValidating: !1,
isSubmitted: !1,
isSubmitting: !1,
isSubmitSuccessful: !1,
isValid: !1,
submitCount: 0,
dirtyFields: {},
touchedFields: {},
errors: {},
defaultValues: e.defaultValues
});
t.current || (t.current = h(h({}, el(e)), {}, {
formState: n
}));
var i = t.current.control;
return i._options = e, ts({
subject: i._subjects.state,
callback: Nn.useCallback((e => {
Ja(e, i._proxyFormState, !0) && (i._formState = h(h({}, i._formState), e), r(h({}, i._formState)))
}), [i])
}), Nn.useEffect((() => {
i._stateFlags.mount || (i._proxyFormState.isValid && i._updateValid(), i._stateFlags.mount = !0), i._stateFlags.watch && (i._stateFlags.watch = !1, i._subjects.state.next({})), i._removeUnmounted()
})), Nn.useEffect((() => {
n.submitCount && i._focusError()
}), [i, n.submitCount]), t.current.formState = $a(n, i), t.current
}({
mode: "onChange",
shouldFocusError: !0,
shouldUnregister: !0
});
window.triggerCusForm = () => new Promise(((e, t) => {
F((() => {
e(!0)
}), (() => {
t(!1)
}))()
}));
var {
formDom: Y
} = K_({
data: p,
control: H,
setData: f
}), q = yt((e => {
var {
newData: t,
count: n
} = function(e, t, n, r, i) {
var o = 0,
a = e.map((e => {
var a;
return "field" !== (null == e || null === (a = e.conditional_setting) || void 0 === a ? void 0 : a.type) ? e : ha(e, t) && e.isHidden ? (r(e.fid), "text" === e.type && null != e && e.default && i(e.fid, e
.default), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, e.default_selection_values || []), o++, h(h({}, e), {}, {
isHidden: !1
})) : ha(e, t) || e.isHidden ? e : (n(e.fid), "text" === e.type && null != e && e.default && i(e.fid, ""), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, []), o++,
h(h({}, e), {}, {
isHidden: !0
}))
}));
try {
ua()
} catch (e) {}
return {
newData: a,
count: o
}
}(p, e, V, X, U);
n > 0 && (f(t, (() => {
G()
})), setTimeout((() => {
G()
}), 1e3))
}), [p, V, X, G, U]), K = W();
gt((() => {
q(K), setTimeout((() => {
document.dispatchEvent(new Event("plugin_currency_update"))
}))
}), [K, q]);
var $ = bt((() => {
var e = [];
return null == p || p.forEach((t => {
t.isHidden || "design" !== t.type || e.push(t.fid)
})), null != e && e.length || m(UE[0]), e
}), [p]);
gt((() => {
var e, t = [];
($.forEach((e => {
var n;
null !== (n = K[e]) && void 0 !== n && n.length || t.push(e)
})), t.length) && (null === (e = T.current) || void 0 === e || e.removeImg(t, (() => {
t.forEach((e => {
var t = $.findIndex((t => t === e));
U("".concat($[t < 0 ? 0 : t]), [])
}))
})))
}), [K, $, U]);
var [Z, J] = dt(0), [Q, ee] = dt(0), te = yt(((e, t, n) => {
var {
newData: r,
count: i
} = function(e, t, n, r, i) {
var o = 0,
a = e.map((e => {
var a, s, l;
if ("variant" !== (null == e || null === (a = e.conditional_setting) || void 0 === a ? void 0 : a.type)) return e;
var c = null == e || null === (s = e.conditional_setting) || void 0 === s || null === (l = s.variant_values) || void 0 === l ? void 0 : l.map((e => e.value)).includes(t);
return c || e.isHidden ? c && e.isHidden ? (r(e.fid), "text" === e.type && null != e && e.default && i(e.fid, e.default), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e
.fid, e.default_selection_values || []), o++, h(h({}, e), {}, {
isHidden: !1
})) : e : (n(e.fid), o++, "text" === e.type && null != e && e.default && i(e.fid, ""), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, []), h(h({}, e), {}, {
isHidden: !0
}))
}));
try {
ua()
} catch (e) {}
return {
newData: a,
count: o
}
}(p, t, V, X, U);
i > 0 && (f(r, (() => {
G()
})), setTimeout((() => {
G()
}), 1e3)), void 0 !== e && J(e), void 0 !== n && ee(n), void 0 !== e && fa(r, K, e, n)
}), [p, K, V, X, G, U]), ne = yt((e => {
f((t => {
var n, r = re.exports.cloneDeep(t);
return null == r || null === (n = r.filter((e => {
var t;
return 2 === (null === (t = e.preview_setting) || void 0 === t ? void 0 : t.type)
}))) || void 0 === n || n.forEach((t => {
var n, r;
return null === (n = t.preview_setting) || void 0 === n || null === (r = n.data) || void 0 === r ? void 0 : r.forEach((t => {
t.variant_id === e ? t.bgSelected = !0 : t.bgSelected = !1
}))
})), r
}))
}), []), [ie, oe] = dt("");
gt((() => {
var e, t = null === (e = window.appparakeet_variants) || void 0 === e ? void 0 : e.findIndex((e => {
return e.id === (t = "variant", n = location.search.substr(1), r = new RegExp("(^|&)".concat(t, "=([^&]*)(&|$)"), "i"), null === (i = n.match(r)) ? null : i[2]);
var t, n, r, i
}));
t = t < 0 ? 0 : t;
var n = window.appparakeet_variants[t].price,
r = window.appparakeet_variants[t].id,
i = window.appparakeet_variants[t].retail_price;
r && te(n, r, i), oe(r), ne(r)
}), []);
var ae = yt((e => {
var t = e.detail.selected.price,
n = e.detail.selected.id,
r = e.detail.selected.retail_price;
n && te(t, n, r), oe(n), ne(n)
}), [te, ne]);
gt((() => (document.body.addEventListener("dj.viewContent", ae), () => {
document.body.removeEventListener("dj.viewContent", ae)
})), [ae]), gt((() => {
fa(p, K, Z, Q)
}), [K]);
var se = bt((() => ({
setError: j,
clearErrors: L
})), [L, j]);
gt((() => {
hu.$on(M, (() => S(!1)))
}), []);
var le = () => {
var e = Ca("Hero") ? document.querySelector(".product-image .properties-content") : document.querySelector("#app-parakeet-tab").nextSibling;
return Ca("Nova 2022") && (e = document.querySelector("#app-parakeet-design").previousElementSibling), e
};
gt((() => {
var e = le();
if (e) {
var t = pE(e, "display"),
n = pE(e, "position");
Ca("Nova 2022") || _("none" === t ? "block" : t), y(n)
}
}), []), gt((() => {
var e = le();
if (e) {
var t = pa() && Ca(["Nova 2022", "Hero", "Eva", "Flash"]),
n = "PHOTO" === g;
if (t) {
var r = n ? "visible" : "hidden";
return e.style.visibility = r, e.style.position = n ? b : "absolute", void(e.style.zIndex = n ? "1" : "-1")
}
var i = n ? v : "none";
e.style.display = i
}
}), [g, v, N]);
var ce = bt((() => new tl(o)), [o]),
ue = bt((() => Object.keys(K).some((e => {
var t;
return $.includes(e) && (null === (t = K[e]) || void 0 === t ? void 0 : t.length)
}))), [K, $]);
Ml((() => {
var e;
if (null !== (e = window.appparakeet_data) && void 0 !== e && e.length) {
var t = ue && k || !ue;
E.current = t;
var n = E.current && B;
n ? ce.enableATCAndBNBtNs() : ce.disableATCAndBNBtNs(F((() => {
E.current || A.open()
}))), n ? al() : ol(F((() => {
E.current || A.open()
})))
}
}), [B, k, ue]), gt((() => {
var e, t, n;
ma() && (e = null === (t = window.djInterceptors) || void 0 === t || null === (n = t.request) || void 0 === n ? void 0 : n.use(function() {
var e = d((function*(e) {
var t;
return yield va(e, W(), p, null === (t = T.current) || void 0 === t ? void 0 : t.compositeUrl, F, s)
}));
return function(t) {
return e.apply(this, arguments)
}
}()));
return () => {
var t;
ma() && (null === (t = window.djInterceptors) || void 0 === t || t.request.eject(e))
}
}), [r, W, p, F, s]), gt((() => (ma() && document.addEventListener("dj.response", wa), () => {
ma() && document.removeEventListener("dj.response", wa)
})), []), ((e, t) => {
ll((() => {
"loading" !== document.readyState ? e() : document.addEventListener("DOMContentLoaded", e)
}), t)
})((() => {
z && la("plugin_product_customizer_click", {
product_id: r
})
}), [z, r]), gt((() => {
var e, t;
if (null != p && p.length) {
var n = e => {
var t, n;
e.detail.product_id === r && la("plugin_customizer_add_to_cart", {
product_id: r,
template_type: null === (t = window) || void 0 === t || null === (n = t.SHOP_PARAMS) || void 0 === n ? void 0 : n.template_type,
quantity: e.detail.number,
rule_id: ""
})
};
return document.body.addEventListener("dj.addToCart", n), la("plugin_customizer_products_view", {
product_id: r,
template_type: null === (e = window) || void 0 === e || null === (t = e.SHOP_PARAMS) || void 0 === t ? void 0 : t.template_type,
rule_id: ""
}), () => document.body.removeEventListener("dj.addToCart", n)
}
}), [p, r]);
if (!l) return null;
var he = document.querySelector("#app-parakeet-tab"),
pe = document.querySelector("#app-parakeet-design"),
de = ma(),
fe = !(null == $ || !$.length);
return zl("div", {
className: "",
children: zl(pu.Provider, {
value: ie,
children: [de && fe && zl(Pe, {
children: [!!he && !n && Jt(zl(ub, {
tabs: UE,
value: g,
onChange: e => m(e)
}), he), !!pe && Jt(zl(hE, {
ref: T,
visible: "DESIGN" === g,
data: w,
onAddFIle: e => {
C(e).then((t => {
e.thumbUrl = t, U("".concat($[0], ".0"), e), hu.$emit(D), G()
}))
},
onDelete: e => {
var t = $.findIndex((t => t === e.label_id)),
n = t < 0 ? 0 : t,
r = [...K[$[n]]];
r.splice(r.length - 1, 1), U("".concat($[n]), r), hu.$emit(I), G()
},
fileName: null == $ ? void 0 : $[0],
hasChangeSave: e => {
S(e)
},
setTab: () => {
m(UE[1])
}
}), pe)]
}), zl("div", {
className: Rl("pk-my-6", pa() ? "pk-space-y-4" : "pk-space-y-5", a),
children: [zl(Op.Provider, {
value: se,
children: Y
}), zl(ab, {
data: p,
control: H
}), zl(HE, {
data: p,
variantID: ie,
setData: f,
onUploadDelete: e => {
U(e.label_id, []), G()
}
})]
}), A.isOpen && A.renderDialog()]
})
})
}));
try {
var VE;
if (!window.appparakeet_env) null !== (VE = window.appparakeet_data) && void 0 !== VE && VE.length && setTimeout((() => {
var e;
(() => {
var e, t;
if (null !== (e = window.appparakeet_data) && void 0 !== e && null !== (t = e.filter((e => {
var t;
return "text" === e.type && (null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open)
}))) && void 0 !== t && t.length) try {
var n, r, i, o, a, s, l, c = [{
name: "Lexend",
src: "@font-face { font-family: 'Lexend'; font-style: normal; font-weight: 100; font-display: swap; src: url(https://fonts.gstatic.com/s/lexend/v15/wlptgwvFAVdoq2_F94zlCfv0bz1WCzsXzLdneg.woff2) format('woff2');}"
}, {
name: "Abril Fatface",
src: "@font-face { font-family: 'Abril Fatface'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/abrilfatface/v19/zOL64pLDlL1D99S8g8PtiKchq-dmjQ.woff2) format('woff2');}"
}, {
name: "Amiri",
src: "@font-face { font-family: 'Amiri'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/amiri/v24/J7aRnpd8CGxBHpUutLM.woff2) format('woff2');}"
}, {
name: "Archivo",
src: "@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 100; font-stretch: normal; font-display: swap; src: url(https://fonts.gstatic.com/s/archivo/v16/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q82sJaRE-NWIDdgffTTNDJZ9xdp.woff2) format('woff2');}"
}, {
name: "Archivo Black",
src: "@font-face { font-family: 'Archivo Black'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/archivoblack/v17/HTxqL289NzCGg4MzN6KJ7eW6CYyF_g.woff2) format('woff2');}"
}, {
name: "Arimo",
src: "@font-face { font-family: 'Arimo'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/arimo/v26/P5sfzZCDf9_T_3cV7NCUECyoxNk37cxcABrB.woff2) format('woff2');}"
}, {
name: "Arvo",
src: "@font-face { font-family: 'Arvo'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/arvo/v20/tDbD2oWUg0MKqScQ7Q.woff2) format('woff2');}"
}, {
name: "Bakbak One",
src: "@font-face { font-family: 'Bakbak One'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/bakbakone/v6/zOL54pXAl6RI-p_ardnu-cNkvg.woff2) format('woff2');}"
}, {
name: "Cardo",
src: "@font-face { font-family: 'Cardo'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/cardo/v19/wlp_gwjKBV1pqhv43IE.woff2) format('woff2');}"
}, {
name: "Caudex",
src: "@font-face { font-family: 'Caudex'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/caudex/v15/esDQ311QOP6BJUr4zfKB.woff2) format('woff2');}"
}, {
name: "Concert One",
src: "@font-face { font-family: 'Concert One'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/concertone/v17/VEM1Ro9xs5PjtzCu-srDqSTijP4.woff2) format('woff2');}"
}, {
name: "Cormorant",
src: "@font-face { font-family: 'Cormorant'; font-style: normal; font-weight: 300; font-display: swap; src: url(https://fonts.gstatic.com/s/cormorant/v16/H4cgBXOCl9bbnla_nHIiRLmohYaz.woff2) format('woff2');}"
}, {
name: "Cormorant Garamond",
src: "@font-face { font-family: 'Cormorant Garamond'; font-style: normal; font-weight: 300; font-display: swap; src: url(https://fonts.gstatic.com/s/cormorantgaramond/v15/co3YmX5slCNuHLi8bLeY9MK7whWMhyjQAllfvg-I.woff2) format('woff2');}"
}, {
name: "Crimson Pro",
src: "@font-face { font-family: 'Crimson Pro'; font-style: normal; font-weight: 200; font-display: swap; src: url(https://fonts.gstatic.com/s/crimsonpro/v21/q5uUsoa5M_tv7IihmnkabC5XiXCAlXGks1WZTm1MP5s-.woff2) format('woff2');}"
}, {
name: "Didact Gothic",
src: "@font-face { font-family: 'Didact Gothic'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/didactgothic/v19/ahcfv8qz1zt6hCC5G4F_P4ASlUuYpg.woff2) format('woff2');}"
}, {
name: "Eater",
src: "@font-face { font-family: 'Eater'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/eater/v21/mtG04_FCK7bOvquxsXA.woff2) format('woff2');}"
}, {
name: "Eczar",
src: "@font-face { font-family: 'Eczar'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/eczar/v16/BXR2vF3Pi-DLmxcpJB-qbNTyTMDXHd6mrjgU.woff2) format('woff2');}"
}, {
name: "Exo 2",
src: "@font-face { font-family: 'Exo 2'; font-style: normal; font-weight: 100; font-display: swap; src: url(https://fonts.gstatic.com/s/exo2/v19/7cH1v4okm5zmbvwkAx_sfcEuiD8jvvOsOdC_.woff2) format('woff2');}"
}, {
name: "Fira Sans",
src: "@font-face { font-family: 'Fira Sans'; font-style: normal; font-weight: 100; font-display: swap; src: url(https://fonts.gstatic.com/s/firasans/v16/va9C4kDNxMZdWfMOD5Vn9LjJYTI.woff2) format('woff2');}"
}, {
name: "Fjalla One",
src: "@font-face { font-family: 'Fjalla One'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/fjallaone/v13/Yq6R-LCAWCX3-6Ky7FAFrOF6kg.woff2) format('woff2');}"
}],
u = null !== (n = window) && void 0 !== n && n.appparakeet_data[0] ? null === (r = window) || void 0 === r ? void 0 : r.appparakeet_data[0].text_custom_family_map : null;
u && null != Object && null !== (i = Object.keys(u)) && void 0 !== i && i.length && Object.keys(u).forEach((e => {
var t = {};
t.name = e, t.url = u[e], t.src = "@font-face { font-family: ".concat(e, ";src: url('").concat(u[e], "');}"), c.push(t)
}));
var h = document.createElement("style"),
p = (null === (o = window) || void 0 === o || null === (a = o.appparakeet_data) || void 0 === a ? void 0 : a.filter((e => {
var t;
return "text" === (null == e ? void 0 : e.type) && (null == e || null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open)
}))) || [];
(p = null === (s = p) || void 0 === s ? void 0 : s.map((e => {
var t;
return null == e || null === (t = e.preview_setting) || void 0 === t ? void 0 : t.text_families
}))) && null !== (l = p) && void 0 !== l && l.length && (p = Array.from(new Set(p.flat())) || []), null == c || c.forEach((e => {
var t;
if (null !== (t = p) && void 0 !== t && t.includes(e.name)) {
h.appendChild(document.createTextNode(e.src));
var n = document.createElement("div");
n.class = "mock_span", n.innerHTML = "1", n.style.fontFamily = e.name, n.style.position = "fixed", n.style.top = "-99999px", document.body.appendChild(n)
}
})), document.head.appendChild(h)
} catch (e) {}
})();
var t, n, r = document.getElementById("app-parakeet"),
i = document.createElement("div"),
o = r.dataset.productId;
o && (window.appparakeet_data = (null === (t = window) || void 0 === t || null === (n = t.appparakeet_data) || void 0 === n ? void 0 : n.filter((e => e.product_origin_id === o))) || []);
null !== (e = window.appparakeet_data) && void 0 !== e && e.length && (r.append(i), $e(zl(WE, {
productId: r.dataset.productId
}), i))
}), 800)
} catch (e) {}
}));
//**app-parakeet.js-end**//
</script>
<div class=" mt-4 lg:mt-5">
<div class="leading-1.25 font-semibold lg:body-plus-2"> Quantity </div>
<spz-quantity class="product-info-qty mt-2 lg:mt-3 i-spzhtml-layout-fixed-height i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="product-info-quantity" name="quantity" value="1" min="1" max="999999999"
icon-class="product-info-qty-btn clear flex items-center justify-center flex-shrink-0" input-class="product-info-qty-input clear flex-shrink-0 body-plus-2 text-center" height="40" layout="fixed-height" style="height:40px;"
i-spzhtml-layout="fixed-height">
<div class="i-spzhtml-fill-content i-spzhtml-replaced-content"><span role="button" aria-label="decrease" class="i-spzhtml-quantity-number-decrease product-info-qty-btn clear flex items-center justify-center flex-shrink-0" disabled=""><svg
role="decrease" class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M13.7 7.4a.3.3 0 0 1 .3.3v.6a.3.3 0 0 1-.3.3H2.3a.3.3 0 0 1-.3-.3v-.6a.3.3 0 0 1 .3-.3h11.4z" fill="currentColor"></path>
</svg></span><input type="number" name="quantity" min="1" max="999999999" class="i-spzhtml-quantity-number-input product-info-qty-input clear flex-shrink-0 body-plus-2 text-center" aria-label="quantity"><span role="button"
aria-label="increase" class="i-spzhtml-quantity-number-increase product-info-qty-btn clear flex items-center justify-center flex-shrink-0"><svg role="increase" class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8.3 14a.3.3 0 0 0 .3-.3V8.6h5.1a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V2.3a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.1H2.3a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.1v5.1a.3.3 0 0 0 .3.3h.6z" fill="currentColor"></path>
</svg></span></div>
</spz-quantity>
</div>
<div class="product-info__btn mt-4 lg:mt-5">
<button class="relative button-secondary flex items-center justify-center w-full body-plus-2 leading-1.25 type-text-font-family rounded-btn product-info_atc_btn painter-shrink-animation" type="button" role="addToCart" data-track="click"
data-track-content="add_to_cart" data-track-source="add_to_cart">
<span role="content">Add to cart</span>
<spz-render id="product-info-btn-price" layout="container" template="product-info-btn-price-template" manual="" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container"
style="height: auto;">
<div class="flex"><span class="product_price_before"></span><spz-currency value="39" layout="container" class="i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
<div class="money">$39.00</div>
</spz-currency></div>
</spz-render>
<style>
.product_price_before::before {
content: ' - ';
display: block;
width: 20px;
}
</style>
<template id="product-info-btn-price-template"> ${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants
&& data.product.variants[0]); const productVariant =
{"id":"142b5a3e-4cff-445b-ad08-9171b725a440","product_id":"acc02d31-4861-4fd4-9a08-4bfe571f5e46","title":"S","weight_unit":"kg","inventory_quantity":999,"sku":"animefwiw-24071232601-S","barcode":"","position":1,"option1":"S","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":39,"min_quantity":1}],"weight":"0","compare_at_price":"49","price":"39","retail_price":"49","available":true,"url":"\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-9171b725a440","available_quantity":999999999,"options":[{"name":"Size","value":"S"}],"off_ratio":20,"flashsale_info":[],"sales":2};
const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex =
wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const
wholesalePrice = wholesale_price[wholesaleIndex] || ''; return ` <div class="flex">
<span class="product_price_before"></span><spz-currency value="${wholesalePrice.price}" layout="container"></spz-currency>
</div> ` }else { const price = variantData && variantData.price; return price != undefined ? `<div class="flex"><span class="product_price_before"></span><spz-currency value="${price}" layout="container"></spz-currency></div>` :
'<span></span>'; } }()} </template>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<button class="relative button-primary w-full body-plus-2 leading-1.25 type-text-font-family rounded-btn mt-2 lg:mt-3 product-info_atc_btn" role="buyNow" type="button" data-track="click" data-track-content="checkout"
data-track-source="buy_now">
<span role="content">Buy now</span>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<spz-paypal class="mt-3 rounded-btn i-spzhtml-layout-fixed-height i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="paypal-express-button-container" variant="#product-info-variants"
quantity="#product-info-quantity" product-id="acc02d31-4861-4fd4-9a08-4bfe571f5e46" variant-id="142b5a3e-4cff-445b-ad08-9171b725a440" product-form="#product-info-body" role="paypal" layout="fixed-height" height="52"
paypal-js="https://www.paypal.com/sdk/js?client-id=AUwoRlv3iZ3jt3o3hhcft_tZ5g6tvefEpjCf9YNGeH7q8p_WraleitkKfLnWIs8HLpzalgRA5AMT0BYO&currency=USD&disable-funding=card%2Cbancontact%2Cblik%2Ceps%2Cgiropay%2Cideal%2Cmercadopago%2Cmybank%2Cp24%2Csepa%2Csofort%2Cvenmo&enable-funding=paylater&merchant-id=BCUHQSM6T7CSQ"
style="height:52px;" i-spzhtml-layout="fixed-height">
<div id="zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta" class="paypal-buttons paypal-buttons-context-iframe paypal-buttons-label-unknown paypal-buttons-layout-horizontal" data-paypal-smart-button-version="5.0.463"
style="height: 52px; transition: 0.2s ease-in-out;">
<style nonce="">
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta {
position: relative;
display: inline-block;
width: 100%;
min-height: 25px;
min-width: 150px;
font-size: 0;
}
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta>iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta>iframe.component-frame {
z-index: 100;
}
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta>iframe.prerender-frame {
transition: opacity .2s linear;
z-index: 200;
}
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta>iframe.visible {
opacity: 1;
}
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta>iframe.invisible {
opacity: 0;
pointer-events: none;
}
#zoid-paypal-buttons-uid_af1d17b32e_mji6ndi6mta>.smart-menu {
position: absolute;
z-index: 300;
top: 0;
left: 0;
width: 100%;
}
</style><iframe allowtransparency="true"
name="__zoid__paypal_buttons__eyJzZW5kZXIiOnsiZG9tYWluIjoiaHR0cHM6Ly93d3cuYW5pbWVmd2l3LmNvbSJ9LCJtZXRhRGF0YSI6eyJ3aW5kb3dSZWYiOnsidHlwZSI6InBhcmVudCIsImRpc3RhbmNlIjowfX0sInJlZmVyZW5jZSI6eyJ0eXBlIjoicmF3IiwidmFsIjoie1widWlkXCI6XCJ6b2lkLXBheXBhbC1idXR0b25zLXVpZF9hZjFkMTdiMzJlX21qaTZuZGk2bXRhXCIsXCJjb250ZXh0XCI6XCJpZnJhbWVcIixcInRhZ1wiOlwicGF5cGFsLWJ1dHRvbnNcIixcImNoaWxkRG9tYWluTWF0Y2hcIjp7XCJfX3R5cGVfX1wiOlwicmVnZXhcIixcIl9fdmFsX19cIjpcIlxcXFwucGF5cGFsXFxcXC4oY29tfGNuKSg6XFxcXGQrKT8kXCJ9LFwidmVyc2lvblwiOlwiMTBfM18zXCIsXCJwcm9wc1wiOntcImVudlwiOlwicHJvZHVjdGlvblwiLFwiY29tbWl0XCI6dHJ1ZSxcInN0eWxlXCI6e1wibGFiZWxcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwibGF5b3V0XCI6XCJob3Jpem9udGFsXCIsXCJjb2xvclwiOlwiZ29sZFwiLFwic2hhcGVcIjpcInJlY3RcIixcInRhZ2xpbmVcIjpmYWxzZSxcImhlaWdodFwiOjUyLFwicGVyaW9kXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm1lbnVQbGFjZW1lbnRcIjpcImJlbG93XCIsXCJkaXNhYmxlTWF4V2lkdGhcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiZGlzYWJsZU1heEhlaWdodFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJib3JkZXJSYWRpdXNcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9fSxcImZ1bmRpbmdcIjp7XCJkaXNhbGxvd2VkXCI6W1wiY3JlZGl0XCJdfSxcIm9uQXBwcm92ZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2UxZDNkZjJlNzhfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcImJvdW5kIHZhbHVlXCJ9fSxcImNyZWF0ZU9yZGVyXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfZTU2ZDkxMzIxM19tamk2bmRpNm10YVwiLFwibmFtZVwiOlwiYm91bmQgdmFsdWVcIn19LFwiY3NwTm9uY2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiYWxsb3dCaWxsaW5nUGF5bWVudHNcIjp0cnVlLFwiYW1vdW50XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImFwaVN0YWdlSG9zdFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJhcHBsZVBheVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJhcHBsZVBheVN1cHBvcnRcIjpmYWxzZSxcImJyYW5kZWRcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiYnV0dG9uTG9jYXRpb25cIjpcInd3dy5hbmltZWZ3aXcuY29tXCIsXCJidXR0b25TZXNzaW9uSURcIjpcInVpZF8yY2Q5MGZiMmI4X21qaTZuZGk2bXRhXCIsXCJidXR0b25TaXplXCI6XCJodWdlXCIsXCJidXllckNvdW50cnlcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiY2xpZW50QWNjZXNzVG9rZW5cIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiY3VzdG9tZXJJZFwiOlwiXCIsXCJjbGllbnRJRFwiOlwiQVV3b1JsdjNpWjNqdDNvM2hoY2Z0X3RaNWc2dHZlZkVwakNmOVlOR2VIN3E4cF9XcmFsZWl0a0tmTG5XSXM4SExwemFsZ1JBNUFNVDBCWU9cIixcImNsaWVudE1ldGFkYXRhSURcIjpcInVpZF84YzEwMGEyYTI1X21qaTZuZGk2bXRhXCIsXCJjb21wb25lbnRzXCI6W1wiYnV0dG9uc1wiXSxcImNyZWF0ZUJpbGxpbmdBZ3JlZW1lbnRcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiY3JlYXRlU3Vic2NyaXB0aW9uXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImNyZWF0ZVZhdWx0U2V0dXBUb2tlblwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJjc3BcIjp7XCJub25jZVwiOlwiXCJ9LFwiY3VycmVuY3lcIjpcIlVTRFwiLFwiZGVidWdcIjpmYWxzZSxcImRpc2FibGVDYXJkXCI6W10sXCJkaXNhYmxlRnVuZGluZ1wiOltcImNhcmRcIixcImJhbmNvbnRhY3RcIixcImJsaWtcIixcImVwc1wiLFwiZ2lyb3BheVwiLFwiaWRlYWxcIixcIm1lcmNhZG9wYWdvXCIsXCJteWJhbmtcIixcInAyNFwiLFwic2VwYVwiLFwic29mb3J0XCIsXCJ2ZW5tb1wiXSxcImRpc2FibGVTZXRDb29raWVcIjp0cnVlLFwiZGlzcGxheU9ubHlcIjpbXSxcImVuYWJsZUZ1bmRpbmdcIjpbXCJwYXlsYXRlclwiXSxcImVuYWJsZVRocmVlRG9tYWluU2VjdXJlXCI6ZmFsc2UsXCJlbmFibGVWYXVsdFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJleHBlcmltZW50XCI6e1wiZW5hYmxlVmVubW9cIjpmYWxzZSxcInZlbm1vVmF1bHRXaXRob3V0UHVyY2hhc2VcIjpmYWxzZSxcInZlbm1vV2ViRW5hYmxlZFwiOmZhbHNlfSxcImV4cGVyaW1lbnRhdGlvblwiOnt9LFwiZmxvd1wiOlwicHVyY2hhc2VcIixcImZ1bmRpbmdFbGlnaWJpbGl0eVwiOntcInBheXBhbFwiOntcImVsaWdpYmxlXCI6dHJ1ZSxcInZhdWx0YWJsZVwiOmZhbHNlfSxcInBheWxhdGVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOmZhbHNlLFwicHJvZHVjdHNcIjp7XCJwYXlJbjNcIjp7XCJlbGlnaWJsZVwiOmZhbHNlLFwidmFyaWFudFwiOm51bGx9LFwicGF5SW40XCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhcmlhbnRcIjpudWxsfSxcInBheWxhdGVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhcmlhbnRcIjpudWxsfX19LFwiY2FyZFwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJicmFuZGVkXCI6dHJ1ZSxcImluc3RhbGxtZW50c1wiOmZhbHNlLFwidmVuZG9yc1wiOntcInZpc2FcIjp7XCJlbGlnaWJsZVwiOnRydWUsXCJ2YXVsdGFibGVcIjp0cnVlfSxcIm1hc3RlcmNhcmRcIjp7XCJlbGlnaWJsZVwiOnRydWUsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImFtZXhcIjp7XCJlbGlnaWJsZVwiOnRydWUsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImRpc2NvdmVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOnRydWV9LFwiaGlwZXJcIjp7XCJlbGlnaWJsZVwiOmZhbHNlLFwidmF1bHRhYmxlXCI6ZmFsc2V9LFwiZWxvXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOnRydWV9LFwiamNiXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJtYWVzdHJvXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJkaW5lcnNcIjp7XCJlbGlnaWJsZVwiOnRydWUsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImN1cFwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjp0cnVlfX0sXCJndWVzdEVuYWJsZWRcIjp0cnVlfSxcInZlbm1vXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOmZhbHNlfSxcIml0YXVcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImNyZWRpdFwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiYXBwbGVwYXlcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInNlcGFcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImlkZWFsXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJiYW5jb250YWN0XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJnaXJvcGF5XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJlcHNcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInNvZm9ydFwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwibXliYW5rXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJwMjRcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcIndlY2hhdHBheVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwicGF5dVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiYmxpa1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwidHJ1c3RseVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwib3h4b1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiYm9sZXRvXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJib2xldG9iYW5jYXJpb1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwibWVyY2Fkb3BhZ29cIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcIm11bHRpYmFuY29cIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInNhdGlzcGF5XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJwYWlkeVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9fSxcImZ1bmRpbmdTb3VyY2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiZ2V0UGFnZVVybFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2JiNmRiMWU3MDBfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcImdldFBhZ2VVcmxcIn19LFwiZ2V0UG9wdXBCcmlkZ2VcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF83ZTYwZWJkZWIxX21qaTZuZGk2bXRhXCIsXCJuYW1lXCI6XCJnZXRQb3B1cEJyaWRnZVwifX0sXCJnZXRQcmVyZW5kZXJEZXRhaWxzXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNzE0NDJmZDljMl9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwiZ2V0UHJlcmVuZGVyRGV0YWlsc1wifX0sXCJnZXRRdWVyaWVkRWxpZ2libGVGdW5kaW5nXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMWQyMzg0MGM4Ml9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwiZ2V0UXVlcmllZEVsaWdpYmxlRnVuZGluZ1wifX0sXCJob3N0ZWRCdXR0b25JZFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJpbnRlbnRcIjpcImNhcHR1cmVcIixcImpzU2RrTGlicmFyeVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJsb2NhbGVcIjp7XCJjb3VudHJ5XCI6XCJVU1wiLFwibGFuZ1wiOlwiZW5cIn0sXCJtZXJjaGFudElEXCI6W1wiQkNVSFFTTTZUN0NTUVwiXSxcIm1lcmNoYW50UmVxdWVzdGVkUG9wdXBzRGlzYWJsZWRcIjpmYWxzZSxcIm1lc3NhZ2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwibm9uY2VcIjpcIlwiLFwib25DYW5jZWxcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwib25DbGlja1wiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJvbkNvbXBsZXRlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm9uSW5pdFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzMyYWExNDk4OTVfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcIm9uSW5pdFwifX0sXCJvbk1lc3NhZ2VDbGlja1wiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzQwYWUxOTZjNTNfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcIm9uTWVzc2FnZUNsaWNrXCJ9fSxcIm9uTWVzc2FnZUhvdmVyXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfYWI3MTVkYzg2Nl9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwib25NZXNzYWdlSG92ZXJcIn19LFwib25NZXNzYWdlUmVhZHlcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF9hNmI4ZTQzMGYwX21qaTZuZGk2bXRhXCIsXCJuYW1lXCI6XCJvbk1lc3NhZ2VSZWFkeVwifX0sXCJvblNoaXBwaW5nQWRkcmVzc0NoYW5nZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJvblNoaXBwaW5nQ2hhbmdlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm9uU2hpcHBpbmdPcHRpb25zQ2hhbmdlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImhhc1NoaXBwaW5nQ2FsbGJhY2tcIjpmYWxzZSxcInBhZ2VUeXBlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInBhcnRuZXJBdHRyaWJ1dGlvbklEXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInBheW1lbnRNZXRob2ROb25jZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJwYXltZW50TWV0aG9kVG9rZW5cIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwicGF5bWVudFJlcXVlc3RcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwicGxhdGZvcm1cIjpcImRlc2t0b3BcIixcInJlZmVycmVyRG9tYWluXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInJlbWVtYmVyXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNzczNTYwNWUzZF9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwicmVtZW1iZXJcIn19LFwicmVtZW1iZXJlZFwiOltdLFwicmVuZGVyZWRCdXR0b25zXCI6W1wicGF5cGFsXCJdLFwic2Vzc2lvbklEXCI6XCJ1aWRfOGMxMDBhMmEyNV9tamk2bmRpNm10YVwiLFwic2RrQ29ycmVsYXRpb25JRFwiOlwiZjk3NDA0OGM1OWE4OVwiLFwic2Vzc2lvblN0YXRlXCI6e1wiZ2V0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMWRiN2Y1NTY5OV9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwiZ2V0XCJ9fSxcInNldFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2RlMzJkYjY3MzlfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcInNldFwifX19LFwiZ2V0U2hvcHBlckluc2lnaHRzVXNlZFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzkyMzdiMDhjMmRfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcIkNyXCJ9fSxcInN0YWdlSG9zdFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJzdG9yYWdlSURcIjpcInVpZF84YWRmNmJkYTRjX21qaTZuZGk2bXRhXCIsXCJzdG9yYWdlU3RhdGVcIjp7XCJnZXRcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF85NDdkMDE5ZDNkX21qaTZuZGk2bXRhXCIsXCJuYW1lXCI6XCJnZXRcIn19LFwic2V0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNjU0MTQ3M2FlYV9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwic2V0XCJ9fX0sXCJzdXBwb3J0ZWROYXRpdmVCcm93c2VyXCI6ZmFsc2UsXCJzdXBwb3J0c1BvcHVwc1wiOnRydWUsXCJ0ZXN0XCI6e1wiYWN0aW9uXCI6XCJjaGVja291dFwifSxcInVzZXJFeHBlcmllbmNlRmxvd1wiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJ1c2VySURUb2tlblwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJ2YXVsdFwiOmZhbHNlLFwid2FsbGV0XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifX0sXCJleHBvcnRzXCI6e1wiaW5pdFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2FjZTU0OTcwMzRfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcImluaXRcIn19LFwiY2xvc2VcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF84MTFmZmU0MzBjX21qaTZuZGk2bXRhXCIsXCJuYW1lXCI6XCJjbG9zZTo6bWVtb2l6ZWRcIn19LFwiY2hlY2tDbG9zZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzEwM2M5MjJhZmJfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcImNoZWNrQ2xvc2VcIn19LFwicmVzaXplXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfZDZmZTMxY2U4NV9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwiX25cIn19LFwib25FcnJvclwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzVhY2I3MzYwODhfbWppNm5kaTZtdGFcIixcIm5hbWVcIjpcInFuXCJ9fSxcInNob3dcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF9jZTZlYzc1OGFkX21qaTZuZGk2bXRhXCIsXCJuYW1lXCI6XCJnblwifX0sXCJoaWRlXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfZDQ2MzM2ODRiNF9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwidm5cIn19LFwiZXhwb3J0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfODEyNTZkZDFkMF9tamk2bmRpNm10YVwiLFwibmFtZVwiOlwiV25cIn19fX0ifX0__"
title="PayPal" allowpaymentrequest="allowpaymentrequest" scrolling="no" id="jsx-iframe-4cd5cd1773" class="component-frame visible" style="background-color: transparent; border: none;"></iframe>
<div id="smart-menu" class="smart-menu"></div>
<div id="installments-modal" class="installments-modal"></div><iframe name="__detect_close_uid_d4e4e20db4_mji6ndi6mta__" style="display: none;"></iframe>
</div>
</spz-paypal>
<div class="product-info__out_stock mt-2 text-center text-sm leading-1.3 opacity-70 lg:mt-3 hidden"> Product was out of stock. </div>
<div class="product-info__unavailable mt-2 text-center text-sm leading-1.3 opacity-70 lg:mt-3 hidden"> Product is unavailable. </div>
</div>
<div class="mt-3 lg:mt-4">
<div class="product-info__sale-item flex items-center">
<svg class="flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M17.14 13.65h-3.457c.327-1.022.517-2.081.568-3.164h3.751a7.954 7.954 0 0 1-.862 3.165zm-5.784 4.259a13.405 13.405 0 0 0 1.968-3.285h3.226a8.038 8.038 0 0 1-5.194 3.285zM3.45 14.624h3.227a13.407 13.407 0 0 0 1.968 3.285 8.039 8.039 0 0 1-5.195-3.285zm-1.451-4.138h3.751c.051 1.083.24 2.142.568 3.165H2.86a7.97 7.97 0 0 1-.862-3.165zM2.86 6.35h3.457a12.244 12.244 0 0 0-.568 3.164H1.998A7.97 7.97 0 0 1 2.86 6.35zm5.784-4.258a13.416 13.416 0 0 0-1.968 3.285H3.449a8.04 8.04 0 0 1 5.195-3.285zm7.906 3.285h-3.226a13.414 13.414 0 0 0-1.968-3.285 8.04 8.04 0 0 1 5.194 3.285zm-4.3 0h-4.5A12.805 12.805 0 0 1 10 2.007a12.807 12.807 0 0 1 2.25 3.37zM6.734 9.513C6.79 8.43 7 7.37 7.358 6.35h5.284c.359 1.02.568 2.08.624 3.164H6.734zm.624 4.138a11.26 11.26 0 0 1-.624-3.165h6.532a11.26 11.26 0 0 1-.624 3.165H7.358zm.392.973h4.5A12.799 12.799 0 0 1 10 17.992a12.797 12.797 0 0 1-2.25-3.368zm10.252-5.11h-3.75a12.265 12.265 0 0 0-.569-3.165h3.457c.493.96.794 2.03.862 3.164zM1 10c0 4.963 4.037 9 9 9s9-4.037 9-9-4.037-9-9-9-9 4.037-9 9z"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item break-words flex-1 md:body-minus-2 body-minus-1 ml-1">Free shipping on order over $60</div>
</div>
<div class="product-info__sale-item flex items-center">
<svg class="flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M9.496 0 0 5.45v8.993L9.5 20l9.5-5.522V5.281L9.496 0zm-7.96 5.745 7.968-4.573 3.01 1.673-7.67 4.77-3.308-1.87zm4.321 2.442 7.678-4.775 3.929 2.183-7.968 4.648-3.639-2.056zm4.149 2.94 7.983-4.657v7.416l-7.983 4.64v-7.4zM1.01 13.852V6.62l3.34 1.888v3.007l1.012.45V9.079l3.631 2.052v7.391l-7.983-4.67z"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item break-words flex-1 md:body-minus-2 body-minus-1 ml-1">Not in love? 100% guarantee & free returns.</div>
</div>
<div class="product-info__sale-item flex items-center">
<svg class="flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="m16.185 9.248-4.237-.92 4.46-4.46c.345 1.804.26 3.646-.223 5.38m-3.019 5.18-.092.091c-2.54 2.484-5.592 1.881-7.533.216l5.592-5.591 4.749 1.03a11.784 11.784 0 0 1-2.716 4.253m-8.094-7.91.092-.093a11.775 11.775 0 0 1 4.252-2.717l1.031 4.751-5.591 5.591c-1.666-1.94-2.268-4.993.216-7.532m8.45-3.548a11.7 11.7 0 0 1 2.202.212l-4.462 4.462-.919-4.235a11.829 11.829 0 0 1 3.18-.439m3.634-.193-.072-.27-.27-.073A12.802 12.802 0 0 0 4.477 5.74l-.099.099c-2.094 2.14-2.985 5.782-.205 8.894L2 16.905l.686.686 2.17-2.171c1.383 1.235 2.869 1.752 4.283 1.752 1.769 0 3.424-.796 4.614-1.96l.1-.1a12.802 12.802 0 0 0 3.304-12.336"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item break-words flex-1 md:body-minus-2 body-minus-1 ml-1">High quality comfortable fabric that won't crack, peel or flake.</div>
</div>
</div>
</div><input name="product_id" type="hidden" value="acc02d31-4861-4fd4-9a08-4bfe571f5e46"><input name="variant_id" type="hidden" value="142b5a3e-4cff-445b-ad08-9171b725a440"><input name="note" type="hidden">
<div class="plugin__buy_on_others empty-hidden"></div>
</form>
<form class="zb-flex zb-flex-col zb-relative zb-w-full">
<div class="zb-overflow-y-auto zb-pb-[100px]">
<div class="zb-flex zb-items-center zb-pb-4 zb-border-b zb-border-t-0 zb-border-l-0 zb-border-r-0 zb-border-solid zb-border-[#eee] md:zb-border-none">
<ljs-render layout="container" class="zb-flex-shrink-0 zb-w-[66px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0 zb-h-[70px] md:zb-hidden" id="smart_recommend_product_image" manual="" template="smart_recommend_product_image_template"></ljs-render>
<div class="zb-w-full">
<div class="zb-line-clamp-2 zb-mb-2 zb-text-sm md:zb-text-base">${product.title}</div>
<div class="zb-flex zb-justify-between zb-items-center">
<spz-render layout="container" template="smart_recommend_price_template" id="smart_recommend_modal_price" manual="">
<div class="zb-flex zb-items-center">
<ljs-currency class="zb-font-semibold zb-text-[22px] zb-text-[#CD201A] zb-mr-2" layout="container" value="${product.min_price_variant.price}"></ljs-currency>
<ljs-currency class="zb-text-[#93989D] zb-text-xs zb-line-through" layout="container" value="${product.min_price_variant.compare_at_price}"
spz-if="${product.min_price_variant.compare_at_price > product.min_price_variant.price ? true : false}"></ljs-currency>
</div>
</spz-render>
<a class="zb-flex zb-items-center zb-cursor-pointer zb-text-[#212B36] zb-no-underline" href="${product.url}?${toQuery({ aid: 'smart_recommend.' + data.show_type + '.' + data.rule_id, ifb: product.ifb || '', cfb: product.cfb || '', scm: data.scm || '', ssp: data.ssp || '' })}">
<span class="zb-text-[13px]">See detail</span>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path d="M13.1714 12.0007L8.22168 7.05093L9.63589 5.63672L15.9999 12.0007L9.63589 18.3646L8.22168 16.9504L13.1714 12.0007Z" fill="#93989D"></path></svg>
</a>
</div>
</div>
</div>
<ljs-variants id="smart_recommend_product_variants" layout="container" template="smart_recommend_product_variant_template" slide="smart_recommend_carousel" disabled-dj-event="" interference="">
</ljs-variants>
<div class="zb-text-sm zb-mb-2">Quantity</div>
<ljs-quantity disabled-dj-event="" layout="fixed" width="150" height="52" min="1" max="999999" value="1" input-class="!zb-text-base" icon-class="!zb-p-3"></ljs-quantity>
</div>
<div class="zb-absolute zb-bottom-0 zb-flex md:zb-flex-col zb-w-full zb-bg-white">
<button class="zb-flex zb-items-center zb-mr-2 rtl:zb-ml-2 rtl:zb-mr-0 md:zb-mb-2 zb-justify-center zb-cursor-pointer zb-w-full zb-border zb-border-solid zb-border-[#313131] zb-bg-white zb-rounded zb-h-[42px]" role="addToCart" type="button"
@tap="smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');">
<span>Add To Cart</span>
</button>
<button class="zb-flex zb-items-center zb-justify-center zb-cursor-pointer zb-w-full zb-bg-[#292929] zb-text-white zb-rounded zb-h-[42px] zb-border-none" type="button" role="buyNow"
@tap="smart_recommend_loading.showLoading;smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');">
<span>Buy Now</span>
</button>
</div>
</form>
<form>
<input name="variant_id" type="hidden" value="f5693614-bc93-4094-a5c0-1898cd7dfb39">
<button type="button" class="product-snippet__quick-shop-icon" role="addToCart" data-quick-shop="skeletor-masters-of-the-universe-coffee-40oz-tumbler-with-handle-exclusive-design" data-track-product-id="da0eca46-4fd6-4615-b752-00da9de6c268"
data-track="click" data-track-content="add_to_cart" data-track-source="quick_shop">
<svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"></path>
</svg>
</button>
</form>
<form>
<input name="variant_id" type="hidden" value="c89d6b1b-8068-458f-ac84-bd43a1f6723c">
<button type="button" class="product-snippet__quick-shop-icon" role="addToCart" data-quick-shop="deadpool-coffee-40oz-tumbler-with-handle-exclusive-design" data-track-product-id="1c44c912-5364-4742-b03a-1c9ef916f25d" data-track="click"
data-track-content="add_to_cart" data-track-source="quick_shop">
<svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"></path>
</svg>
</button>
</form>
<form>
<div class="quick-shop-content rounded-global-small">
<div class="quick-shop-inner-content">
<spz-variants name="quick-shop-variant" id="quick-shop-variants" class="pointer-events-none" layout="container" template="quick-shop-variant-template" spz-if="${product_options && product_options.length > 0}" interact="hover"
interference="" ${mouse_out_event}="" ${mouse_over_event}=""></spz-variants>
<button class="relative mt-5 lg:mt-6 button-primary flex items-center justify-center body-plus-2 type-text-font-family rounded-btn quick-shop_atc_btn" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart"
data-track-source="add_to_cart">
<span role="content">${statusLan}</span>
<spz-render id="quick-shop-btn-price" layout="container" template="quick-shop-button-price-template" manual=""></spz-render>
<div class="loading items-center justify-center absolute inset-0" role="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
</div>
</div>
</form>
<form class="">
<div class="zb-flex">
<a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
<div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
<div>
<div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
</div>
<div>
<div class="zb-relative zb-w-full zb-cursor-pointer">
<div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
@tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
spz-if="${!!(product.options && product.options.length && product.options.length > 0) && data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
fill="#0A1533"></path>
</svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
<div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
</ljs-lightbox>
</div>
<div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
@tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
<ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
<div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
fill="white"></path>
</svg>Added</span></div>
<div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
<div class="smart_cart_pop_loading"></div>
</div>
</button> </div>
</div>
</div>
</div>
<div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
disabled-dj-event="" interference=""> </ljs-variants></div>
</form>
Text Content
${(function(){ const get_random_six_digits = () => { return Math.random().toString().slice(-6) }; const wholesale_enabled = false; const setting_product_image_display = "natural"; const product_image = data.image; const secondary_image = data.secondImage; const image_width = product_image.width; let image_height = product_image.height; if(setting_product_image_display == '100%'){ image_height = image_width }else if(setting_product_image_display == '133.33%'){ image_height = image_width * 1.3333; }; const product_image_hover_on = true && !!secondary_image.src; const has_save_label = false && ((+data.compare_at_price) > (+data.price)); const is_single_variant = data.variants.length == 1; const min_price_variant_href = (data.min_price_variant && data.min_price_variant.available) ? data.min_price_variant.withinUrl : data.withinUrl; const retail_price_max = data.retail_price_max || data.compare_at_price_max; const THUMBNAILS_MAX_SIZE = 3; const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE); const image_wrap_id = 'image_wrap_' + get_random_six_digits(); const image_carousel_id = 'image_carousel_' + get_random_six_digits(); const thumbnails_selector_id = 'thumbnails_selector_' + get_random_six_digits(); const form_id = 'form_' + get_random_six_digits(); const mixed_wholesale = data.mixed_wholesale; return ` ${ data.available ? `` : "Sold out" } Mixed Lot ${DATA.TITLE} ${ data.price_min != data.price_max ? `from ` : ` ` } +${data.remainInvisibleThumbCount} ` })()} Buy More Save More: Up to 15% Extra Discount Free Shipping On Order Over $60 Buy More Save More: Up to 15% Extra Discount Free Shipping On Order Over $60 Free Shipping On Order Over $60 Buy More Save More: Up to 15% Extra Discount * Log in * Create an account ${data.data && data.data.count} * NEW IN | Exclusive * Best Sellers * 🔥Xmas Sweaters * 🔥40oz Tumbler * Tops * Button Up Shirts * Rash Guard * Tank Top * Polo Shirts * T-Shirts * Long Sleeve Button Up * Rash Guard Long Sleeve * Sweatshirts * Ugly Sweaters * Bottoms * Gym Shorts * 2-in-1 Performance Shorts * Leggings Spats Training Tights * Board Shorts Beach Trunks * Women's Board Shorts * Basketball Shorts * Jogger Sweatpants * Jersey * Personalized Jerseys * Baseball Jerseys * Basketball Jerseys * Outerwear * Pullover Hoodies * Zip Hoodies * Varsity Jackets * Kimono * Masked Hoodies * Full Face Zip Hoodies * Dream Cloak * Blanket Hoodies * Bomber Jackets * Accessories * 40oz Tumbler * Backpack * Snapback & Caps * Wool Scarf * Leather Wallet * Popular Interests * - Search More🔍 - * Pokemon * Naruto * My Hero Academia * Dragon Ball * Demon Slayer * One Piece * Super Mario * Legend of Zelda * Attack On Titan * Jujutsu Kaisen * Fullmetal Alchemist * Sailor Moon * Jojo's Bizarre Adventure * Hunter x Hunter * Power Rangers * Akatsuki * Marvel / DC Comics * Rockos Modern Life * Macho Man * Snoopy * More links ${(function(){ const formatLinks = (links) => { return links.map(link => { link.tag = tags[link.title.toUpperCase()] || {}; link.target_attr = link.target == '_blank' ? 'target="_blank"' : ''; link.href_attr = link.url ? `href="${link.url}"` : ''; if(link.children && link.children.length){ link.children = formatLinks(link.children); } return link; }) }; const tags = "{}"; let linkList = [ { id: 70052187, title: "NEW IN | Exclusive", url: "\/collections\/new-in-exclusive-design", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052189, title: "Best Sellers", url: "\/collections\/trending-now", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052191, title: "\ud83d\udd25Xmas Sweaters", url: "\/collections\/ugly-sweaters", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052193, title: "\ud83d\udd2540oz Tumbler", url: "\/collections\/40oz-tumbler", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052195, title: "Tops", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Button Up Shirts", url: "\/collections\/button-up-shirts", target: "", levels: 0, children: [ ] }, { title: "Rash Guard", url: "\/collections\/rash-guard-compression-shirts", target: "", levels: 0, children: [ ] }, { title: "Tank Top", url: "\/collections\/tank-top", target: "", levels: 0, children: [ ] }, { title: "Polo Shirts", url: "\/collections\/polo-shirts", target: "", levels: 0, children: [ ] }, { title: "T-Shirts", url: "\/collections\/t-shirts", target: "", levels: 0, children: [ ] }, { title: "Long Sleeve Button Up", url: "\/collections\/long-sleeve-button-up", target: "", levels: 0, children: [ ] }, { title: "Rash Guard Long Sleeve", url: "\/collections\/rash-guard-long-sleeve", target: "", levels: 0, children: [ ] }, { title: "Sweatshirts", url: "\/collections\/sweatshirts", target: "", levels: 0, children: [ ] }, { title: "Ugly Sweaters", url: "\/collections\/ugly-sweaters", target: "", levels: 0, children: [ ] }, ] }, { id: 70052215, title: "Bottoms", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Gym Shorts", url: "\/collections\/gym-shorts", target: "", levels: 0, children: [ ] }, { title: "2-in-1 Performance Shorts", url: "\/collections\/2-in-1-performance-shorts", target: "", levels: 0, children: [ ] }, { title: "Leggings Spats Training Tights", url: "\/collections\/leggings-spats-training-tights", target: "", levels: 0, children: [ ] }, { title: "Board Shorts Beach Trunks", url: "\/collections\/board-shorts", target: "", levels: 0, children: [ ] }, { title: "Women's Board Shorts", url: "\/collections\/womens-board-shorts", target: "", levels: 0, children: [ ] }, { title: "Basketball Shorts", url: "\/collections\/basketball-shorts", target: "", levels: 0, children: [ ] }, { title: "Jogger Sweatpants", url: "\/collections\/sweatpants", target: "", levels: 0, children: [ ] }, ] }, { id: 70052231, title: "Jersey", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Personalized Jerseys", url: "\/collections\/personalized-jerseys", target: "", levels: 0, children: [ ] }, { title: "Baseball Jerseys", url: "\/collections\/baseball-jerseys", target: "", levels: 0, children: [ ] }, { title: "Basketball Jerseys", url: "\/collections\/basketball-jerseys", target: "", levels: 0, children: [ ] }, ] }, { id: 70052239, title: "Outerwear", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Pullover Hoodies", url: "\/collections\/pullover-hoodies", target: "", levels: 0, children: [ ] }, { title: "Zip Hoodies", url: "\/collections\/zip-hoodies", target: "", levels: 0, children: [ ] }, { title: "Varsity Jackets", url: "\/collections\/varsity-jackets", target: "", levels: 0, children: [ ] }, { title: "Kimono", url: "\/collections\/kimono", target: "", levels: 0, children: [ ] }, { title: "Masked Hoodies", url: "\/collections\/masked-hoodies", target: "", levels: 0, children: [ ] }, { title: "Full Face Zip Hoodies", url: "\/collections\/full-face-zip-hoodies", target: "", levels: 0, children: [ ] }, { title: "Dream Cloak", url: "\/collections\/dream-cloak", target: "", levels: 0, children: [ ] }, { title: "Blanket Hoodies", url: "\/collections\/blanket-hoodies", target: "", levels: 0, children: [ ] }, { title: "Bomber Jackets", url: "\/collections\/bomber-jackets", target: "", levels: 0, children: [ ] }, ] }, { id: 70052259, title: "Accessories", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "40oz Tumbler", url: "\/collections\/40oz-tumbler", target: "", levels: 0, children: [ ] }, { title: "Backpack", url: "\/collections\/backpack", target: "", levels: 0, children: [ ] }, { title: "Snapback & Caps", url: "\/collections\/snapback-caps", target: "", levels: 0, children: [ ] }, { title: "Wool Scarf", url: "\/collections\/wool-scarf", target: "", levels: 0, children: [ ] }, { title: "Leather Wallet", url: "\/collections\/leather-wallet", target: "", levels: 0, children: [ ] }, ] }, { id: 70052271, title: "Popular Interests", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "- Search More\ud83d\udd0d -", url: "https:\/\/www.animefwiw.com\/search?q=", target: "", levels: 0, children: [ ] }, { title: "Pokemon", url: "https:\/\/www.animefwiw.com\/search?q=pokemon", target: "", levels: 0, children: [ ] }, { title: "Naruto", url: "https:\/\/www.animefwiw.com\/search?q=naruto", target: "", levels: 0, children: [ ] }, { title: "My Hero Academia", url: "https:\/\/www.animefwiw.com\/search?q=my%20hero%20academia", target: "", levels: 0, children: [ ] }, { title: "Dragon Ball", url: "https:\/\/www.animefwiw.com\/search?q=dragon%20ball", target: "", levels: 0, children: [ ] }, { title: "Demon Slayer", url: "https:\/\/www.animefwiw.com\/search?q=demon%20slayer", target: "", levels: 0, children: [ ] }, { title: "One Piece", url: "https:\/\/www.animefwiw.com\/search?q=one%20piece", target: "", levels: 0, children: [ ] }, { title: "Super Mario", url: "https:\/\/www.animefwiw.com\/search?q=super%20mario%20bros", target: "", levels: 0, children: [ ] }, { title: "Legend of Zelda", url: "https:\/\/www.animefwiw.com\/search?q=legend%20of%20zelda ", target: "", levels: 0, children: [ ] }, { title: "Attack On Titan", url: "https:\/\/www.animefwiw.com\/search?q=attack%20on%20titan", target: "", levels: 0, children: [ ] }, { title: "Jujutsu Kaisen", url: "https:\/\/www.animefwiw.com\/search?q=satoru%20gojo%20jujutsu%20kaisen", target: "", levels: 0, children: [ ] }, { title: "Fullmetal Alchemist", url: "https:\/\/www.animefwiw.com\/search?q=fullmetal%20alchemist", target: "", levels: 0, children: [ ] }, { title: "Sailor Moon", url: "https:\/\/www.animefwiw.com\/search?q=sailor%20moon", target: "", levels: 0, children: [ ] }, { title: "Jojo's Bizarre Adventure", url: "https:\/\/www.animefwiw.com\/search?q=jojos%20bizarre%20adventure", target: "", levels: 0, children: [ ] }, { title: "Hunter x Hunter", url: "https:\/\/www.animefwiw.com\/search?q=hunter%20x%20hunter", target: "", levels: 0, children: [ ] }, { title: "Power Rangers", url: "https:\/\/www.animefwiw.com\/search?q=power%20rangers", target: "", levels: 0, children: [ ] }, { title: "Akatsuki", url: "https:\/\/www.animefwiw.com\/search?q=akatsuki", target: "", levels: 0, children: [ ] }, { title: "Marvel \/ DC Comics", url: "https:\/\/www.animefwiw.com\/search?q=marvel%20dc%20comics", target: "", levels: 0, children: [ ] }, { title: "Rockos Modern Life", url: "https:\/\/www.animefwiw.com\/search?q=rockos%20modern%20life", target: "", levels: 0, children: [ ] }, { title: "Macho Man", url: "https:\/\/www.animefwiw.com\/search?q=macho%20man%20the%20cream%20of%20the%20crop%20mega%20power", target: "", levels: 0, children: [ ] }, { title: "Snoopy", url: "https:\/\/www.animefwiw.com\/search?q=Snoopy", target: "", levels: 0, children: [ ] }, ] }, ].slice(offset); linkList = formatLinks(linkList); const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id)); return ` * ${link.title} ${link.tag.label} * ${second_link.title} ${second_link.tag.label} ${third_links.title} ${third_links.tag.label} * ${link.title} ${link.tag.label} ` })()} * NEW IN | Exclusive * Best Sellers * 🔥Xmas Sweaters * 🔥40oz Tumbler * Tops * Button Up Shirts * Rash Guard * Tank Top * Polo Shirts * T-Shirts * Long Sleeve Button Up * Rash Guard Long Sleeve * Sweatshirts * Ugly Sweaters * Bottoms * Gym Shorts * 2-in-1 Performance Shorts * Leggings Spats Training Tights * Board Shorts Beach Trunks * Women's Board Shorts * Basketball Shorts * Jogger Sweatpants * Jersey * Personalized Jerseys * Baseball Jerseys * Basketball Jerseys * Outerwear * Pullover Hoodies * Zip Hoodies * Varsity Jackets * Kimono * Masked Hoodies * Full Face Zip Hoodies * Dream Cloak * Blanket Hoodies * Bomber Jackets * Accessories * 40oz Tumbler * Backpack * Snapback & Caps * Wool Scarf * Leather Wallet * Popular Interests * - Search More🔍 - * Pokemon * Naruto * My Hero Academia * Dragon Ball * Demon Slayer * One Piece * Super Mario * Legend of Zelda * Attack On Titan * Jujutsu Kaisen * Fullmetal Alchemist * Sailor Moon * Jojo's Bizarre Adventure * Hunter x Hunter * Power Rangers * Akatsuki * Marvel / DC Comics * Rockos Modern Life * Macho Man * Snoopy * More links ${(function(){ const formatLinks = (links) => { return links.map(link => { link.tag = tags[link.title.toUpperCase()] || {}; link.target_attr = link.target == '_blank' ? 'target="_blank"' : ''; link.href_attr = link.url ? `href="${link.url}"` : ''; if(link.children && link.children.length){ link.children = formatLinks(link.children); } return link; }) }; const tags = "{}"; let linkList = [ { id: 70052187, title: "NEW IN | Exclusive", url: "\/collections\/new-in-exclusive-design", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052189, title: "Best Sellers", url: "\/collections\/trending-now", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052191, title: "\ud83d\udd25Xmas Sweaters", url: "\/collections\/ugly-sweaters", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052193, title: "\ud83d\udd2540oz Tumbler", url: "\/collections\/40oz-tumbler", target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id: 70052195, title: "Tops", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Button Up Shirts", url: "\/collections\/button-up-shirts", target: "", levels: 0, children: [ ] }, { title: "Rash Guard", url: "\/collections\/rash-guard-compression-shirts", target: "", levels: 0, children: [ ] }, { title: "Tank Top", url: "\/collections\/tank-top", target: "", levels: 0, children: [ ] }, { title: "Polo Shirts", url: "\/collections\/polo-shirts", target: "", levels: 0, children: [ ] }, { title: "T-Shirts", url: "\/collections\/t-shirts", target: "", levels: 0, children: [ ] }, { title: "Long Sleeve Button Up", url: "\/collections\/long-sleeve-button-up", target: "", levels: 0, children: [ ] }, { title: "Rash Guard Long Sleeve", url: "\/collections\/rash-guard-long-sleeve", target: "", levels: 0, children: [ ] }, { title: "Sweatshirts", url: "\/collections\/sweatshirts", target: "", levels: 0, children: [ ] }, { title: "Ugly Sweaters", url: "\/collections\/ugly-sweaters", target: "", levels: 0, children: [ ] }, ] }, { id: 70052215, title: "Bottoms", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Gym Shorts", url: "\/collections\/gym-shorts", target: "", levels: 0, children: [ ] }, { title: "2-in-1 Performance Shorts", url: "\/collections\/2-in-1-performance-shorts", target: "", levels: 0, children: [ ] }, { title: "Leggings Spats Training Tights", url: "\/collections\/leggings-spats-training-tights", target: "", levels: 0, children: [ ] }, { title: "Board Shorts Beach Trunks", url: "\/collections\/board-shorts", target: "", levels: 0, children: [ ] }, { title: "Women's Board Shorts", url: "\/collections\/womens-board-shorts", target: "", levels: 0, children: [ ] }, { title: "Basketball Shorts", url: "\/collections\/basketball-shorts", target: "", levels: 0, children: [ ] }, { title: "Jogger Sweatpants", url: "\/collections\/sweatpants", target: "", levels: 0, children: [ ] }, ] }, { id: 70052231, title: "Jersey", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Personalized Jerseys", url: "\/collections\/personalized-jerseys", target: "", levels: 0, children: [ ] }, { title: "Baseball Jerseys", url: "\/collections\/baseball-jerseys", target: "", levels: 0, children: [ ] }, { title: "Basketball Jerseys", url: "\/collections\/basketball-jerseys", target: "", levels: 0, children: [ ] }, ] }, { id: 70052239, title: "Outerwear", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "Pullover Hoodies", url: "\/collections\/pullover-hoodies", target: "", levels: 0, children: [ ] }, { title: "Zip Hoodies", url: "\/collections\/zip-hoodies", target: "", levels: 0, children: [ ] }, { title: "Varsity Jackets", url: "\/collections\/varsity-jackets", target: "", levels: 0, children: [ ] }, { title: "Kimono", url: "\/collections\/kimono", target: "", levels: 0, children: [ ] }, { title: "Masked Hoodies", url: "\/collections\/masked-hoodies", target: "", levels: 0, children: [ ] }, { title: "Full Face Zip Hoodies", url: "\/collections\/full-face-zip-hoodies", target: "", levels: 0, children: [ ] }, { title: "Dream Cloak", url: "\/collections\/dream-cloak", target: "", levels: 0, children: [ ] }, { title: "Blanket Hoodies", url: "\/collections\/blanket-hoodies", target: "", levels: 0, children: [ ] }, { title: "Bomber Jackets", url: "\/collections\/bomber-jackets", target: "", levels: 0, children: [ ] }, ] }, { id: 70052259, title: "Accessories", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "40oz Tumbler", url: "\/collections\/40oz-tumbler", target: "", levels: 0, children: [ ] }, { title: "Backpack", url: "\/collections\/backpack", target: "", levels: 0, children: [ ] }, { title: "Snapback & Caps", url: "\/collections\/snapback-caps", target: "", levels: 0, children: [ ] }, { title: "Wool Scarf", url: "\/collections\/wool-scarf", target: "", levels: 0, children: [ ] }, { title: "Leather Wallet", url: "\/collections\/leather-wallet", target: "", levels: 0, children: [ ] }, ] }, { id: 70052271, title: "Popular Interests", url: "", target: "", levels: 1, product0: { id: (null) }, children: [ { title: "- Search More\ud83d\udd0d -", url: "https:\/\/www.animefwiw.com\/search?q=", target: "", levels: 0, children: [ ] }, { title: "Pokemon", url: "https:\/\/www.animefwiw.com\/search?q=pokemon", target: "", levels: 0, children: [ ] }, { title: "Naruto", url: "https:\/\/www.animefwiw.com\/search?q=naruto", target: "", levels: 0, children: [ ] }, { title: "My Hero Academia", url: "https:\/\/www.animefwiw.com\/search?q=my%20hero%20academia", target: "", levels: 0, children: [ ] }, { title: "Dragon Ball", url: "https:\/\/www.animefwiw.com\/search?q=dragon%20ball", target: "", levels: 0, children: [ ] }, { title: "Demon Slayer", url: "https:\/\/www.animefwiw.com\/search?q=demon%20slayer", target: "", levels: 0, children: [ ] }, { title: "One Piece", url: "https:\/\/www.animefwiw.com\/search?q=one%20piece", target: "", levels: 0, children: [ ] }, { title: "Super Mario", url: "https:\/\/www.animefwiw.com\/search?q=super%20mario%20bros", target: "", levels: 0, children: [ ] }, { title: "Legend of Zelda", url: "https:\/\/www.animefwiw.com\/search?q=legend%20of%20zelda ", target: "", levels: 0, children: [ ] }, { title: "Attack On Titan", url: "https:\/\/www.animefwiw.com\/search?q=attack%20on%20titan", target: "", levels: 0, children: [ ] }, { title: "Jujutsu Kaisen", url: "https:\/\/www.animefwiw.com\/search?q=satoru%20gojo%20jujutsu%20kaisen", target: "", levels: 0, children: [ ] }, { title: "Fullmetal Alchemist", url: "https:\/\/www.animefwiw.com\/search?q=fullmetal%20alchemist", target: "", levels: 0, children: [ ] }, { title: "Sailor Moon", url: "https:\/\/www.animefwiw.com\/search?q=sailor%20moon", target: "", levels: 0, children: [ ] }, { title: "Jojo's Bizarre Adventure", url: "https:\/\/www.animefwiw.com\/search?q=jojos%20bizarre%20adventure", target: "", levels: 0, children: [ ] }, { title: "Hunter x Hunter", url: "https:\/\/www.animefwiw.com\/search?q=hunter%20x%20hunter", target: "", levels: 0, children: [ ] }, { title: "Power Rangers", url: "https:\/\/www.animefwiw.com\/search?q=power%20rangers", target: "", levels: 0, children: [ ] }, { title: "Akatsuki", url: "https:\/\/www.animefwiw.com\/search?q=akatsuki", target: "", levels: 0, children: [ ] }, { title: "Marvel \/ DC Comics", url: "https:\/\/www.animefwiw.com\/search?q=marvel%20dc%20comics", target: "", levels: 0, children: [ ] }, { title: "Rockos Modern Life", url: "https:\/\/www.animefwiw.com\/search?q=rockos%20modern%20life", target: "", levels: 0, children: [ ] }, { title: "Macho Man", url: "https:\/\/www.animefwiw.com\/search?q=macho%20man%20the%20cream%20of%20the%20crop%20mega%20power", target: "", levels: 0, children: [ ] }, { title: "Snoopy", url: "https:\/\/www.animefwiw.com\/search?q=Snoopy", target: "", levels: 0, children: [ ] }, ] }, ].slice(offset); linkList = formatLinks(linkList); const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id)); return ` * ${link.title} ${link.tag.label} * ${second_link.title} ${second_link.tag.label} ${third_links.title} ${third_links.tag.label} * ${link.title} ${link.tag.label} ` })()} * Log in * Create an account ${data.data && data.data.count} * NEW IN | Exclusive * Best Sellers * 🔥Xmas Sweaters * 🔥40oz Tumbler * Tops * Tops * Button Up Shirts * Rash Guard * Tank Top * Polo Shirts * T-Shirts * Long Sleeve Button Up * Rash Guard Long Sleeve * Sweatshirts * Ugly Sweaters * Bottoms * Bottoms * Gym Shorts * 2-in-1 Performance Shorts * Leggings Spats Training Tights * Board Shorts Beach Trunks * Women's Board Shorts * Basketball Shorts * Jogger Sweatpants * Jersey * Jersey * Personalized Jerseys * Baseball Jerseys * Basketball Jerseys * Outerwear * Outerwear * Pullover Hoodies * Zip Hoodies * Varsity Jackets * Kimono * Masked Hoodies * Full Face Zip Hoodies * Dream Cloak * Blanket Hoodies * Bomber Jackets * Accessories * Accessories * 40oz Tumbler * Backpack * Snapback & Caps * Wool Scarf * Leather Wallet * Popular Interests * Popular Interests * - Search More🔍 - * Pokemon * Naruto * My Hero Academia * Dragon Ball * Demon Slayer * One Piece * Super Mario * Legend of Zelda * Attack On Titan * Jujutsu Kaisen * Fullmetal Alchemist * Sailor Moon * Jojo's Bizarre Adventure * Hunter x Hunter * Power Rangers * Akatsuki * Marvel / DC Comics * Rockos Modern Life * Macho Man * Snoopy Log in Create an account (function(){ let w = window.innerWidth; function setHeaderCssVar() { const headerEle = document.getElementById('shoplaza-section-header'); if(!headerEle){ return }; document.body.style.setProperty('--window-height', `${window.innerHeight}px`); document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`); const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide'); if (mdScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`); } const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide'); if (pcScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`); } } function handlResize() { if(w == window.innerWidth){return}; w = window.innerWidth; setHeaderCssVar(); }; function init(){ setHeaderCssVar(); window.removeEventListener('resize', window._theme_header_listener) window._theme_header_listener = handlResize; window.addEventListener('resize', window._theme_header_listener); } init(); })(); Home / Harry Potter Slytherin House Ugly Christmas Sweater 1/1 ${data.index + 1}/${data.total} HARRY POTTER SLYTHERIN HOUSE UGLY CHRISTMAS SWEATER ${function() { const variantData = data.variant || {"id":"142b5a3e-4cff-445b-ad08-9171b725a440","product_id":"acc02d31-4861-4fd4-9a08-4bfe571f5e46","title":"S","weight_unit":"kg","inventory_quantity":999,"sku":"animefwiw-24071232601-S","barcode":"","position":1,"option1":"S","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":39,"min_quantity":1}],"weight":"0","compare_at_price":"49","price":"39","retail_price":"49","available":true,"url":"\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-9171b725a440","available_quantity":999999999,"options":[{"name":"Size","value":"S"}],"off_ratio":20,"flashsale_info":[],"sales":2}; const saveType = "amount"; const productLabelDiscountOn = false; return ` - ${saveType == 'percentage' ? `-${variantData.off_ratio}%` : `-` } `; }()} $39.00 $49.00 Buy 2 Item Get Extra 5%off Free Shipping Over $60 Size: ${function(){ const optName = "Size"; const optionValue = data.originData.selectData ? data.originData.selectData[optName].value : data.originData.value; const optionValueText = optionValue ? (optionValue) : ''; return `${optionValueText}`; }()} S Size Guide S M L XL 2XL 3XL 4XL 5XL ${function(){ const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data); return ` ${tipText} ` }()} Quantity Add to cart $39.00 ${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]); const productVariant = {"id":"142b5a3e-4cff-445b-ad08-9171b725a440","product_id":"acc02d31-4861-4fd4-9a08-4bfe571f5e46","title":"S","weight_unit":"kg","inventory_quantity":999,"sku":"animefwiw-24071232601-S","barcode":"","position":1,"option1":"S","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":39,"min_quantity":1}],"weight":"0","compare_at_price":"49","price":"39","retail_price":"49","available":true,"url":"\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-9171b725a440","available_quantity":999999999,"options":[{"name":"Size","value":"S"}],"off_ratio":20,"flashsale_info":[],"sales":2}; const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex = wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const wholesalePrice = wholesale_price[wholesaleIndex] || ''; return ` ` }else { const price = variantData && variantData.price; return price != undefined ? ` ` : ''; } }()} Buy now Product was out of stock. Product is unavailable. Free shipping on order over $60 Not in love? 100% guarantee & free returns. High quality comfortable fabric that won't crack, peel or flake. DESCRIPTION This AnimeFwiw exclusive Ugly Christmas Sweater design is guaranteed to get attention and get the party started. It's sure to be your best holiday purchase yet! * This design is made with high-quality material that will never crack, peel or flake. * Features a specialty high definition heat-dye application that ensures long lasting color vibrancy even after machine washing. * Fabric is durable and resistant to wrinkles, shrinking and mildew. * Finished with elasticated cuffs and waist for a stylish fit. All of our Ugly Christmas Sweaters are custom-made-to-order and handcrafted to the highest quality standards. UNIQUE ONE OF A KIND ITEM! We print our Ugly Christmas Sweaters using dye-sublimation, a technology that allows for us to produce these insanely vibrant all over designs. Due to this process, each item is a unique, one-of-a-kind product, printed exclusively for the customer who ordered it! * Not available in stores We're on a mission to make high-quality art accessible. By skipping the middleman and selling directly to you, we can offer high-quality designs at affordable prices. * Limited-edition designs Unlike a lot of mass-produced designs on the market, each and every item is part of a unique, limited-edition series produced by our in-house team of designers from all over the world. * Only the best materials Our apparel is made with premium eco-friendly inks that blend seamlessly with the threads of the shirt and our inks are odorless and environmentally friendly. * Absolutely no regrets Our 100% Satisfaction Guarantee and Return Policy guarantees you’ll make a no-regret purchase when you buy Because it's handmade for you, these Ugly Christmas Sweaters require 6-8 business days before they are shipped. Orders placed before midnight will be included in the following day’s batch for manufacturing. FAQ ORDERING -IS YOUR SITE SAFE AND SECURE? Yes, our site is 100% secure. We use 256-bit SSL, the same level of encryption used by large banks around the world. -HOW MUCH IS SHIPPING? We offer affordable shipping, starting at just $9 (Free shipping on orders over $69)for shipping worldwide. -DO YOU SHIP OUTSIDE OF THE US? Yes. Check our full shipping policy to see what countries we ship to! -WHAT FORMS OF PAYMENT DO YOU ACCEPT? We take PayPaly, Klarna, Visa, Mastercard, American Express, Discover and more! -DO YOU HAVE A QUALITY GUARANTEE? Yes absolutely! We want you to be completely satisfied with your purchase. If your products are flawed in any way, just contact us and we’ll make it right. -HOW LONG DOES IT TAKE FOR ANIME FWIW TO SHIP? All of our items are handcrafted so please allow 5-10 business days for your order to ship out. We source products from all over the world to bring you epic offers and the lowest prices. This means sometimes you have to wait a little longer to get your order depending on the item but it’s always worth it! You will receive a tracking number via email once they are shipped. Once shipped, please allow 3-7 business days for your order to arrive to the majority of the continental United States and please allow 1-2 weeks for your order to arrive to most international countries. CUSTOMERS -WHEN CAN I EXPECT MY ITEMS? All of our items are handcrafted so please allow 5-10 business days for your order to ship out. We source products from all over the world to bring you epic offers and the lowest prices. This means sometimes you have to wait a little longer to get your order depending on the item but it’s always worth it! You will receive a tracking number via email once they are shipped. Once shipped, please allow 3-7 business days for your order to arrive to the majority of the continental United States and please allow 1-2 weeks for your order to arrive to most international countries. -HOW CAN I CANCEL OR CHANGE MY ORDER? Regrets happen, we know… So If you decide you want to cancel an order, just contact us within 24 hours after the order was placed and we’ll cancel it no questions asked. If it has been more than 24 hours, we may have already sent your order to the printer and may not be able to cancel as it will already be in the crafting or shipping process. -I ORDERED 2 ITEMS, WHY DID I ONLY RECEIVE ONE? Since we have fulfillment centers all over the world, when you order multiple items, they may be shipped from different warehouses. You may receive one item before the next. So don’t panic if you don’t receive all of your items at once…they will get to you, and if in doubt, just contact us. -THE STATUS OF MY TRACKING NUMBER HAS NOT CHANGED? Depending on which fulfillment center is crafting your orders, they may create the tracking number while your order is still being crafted to prepare the courier of the incoming shipment. If so, it may look like your package is standing still, but don’t worry, it is making progress to reach your hands. Also, during holiday months, we may have delays because of a bigger volume of orders, please be patient with us as we are a small business and take pride in masterfully crafting each product to ensure the highest quality when it reaches its new home. -OH NO, I MESSED UP MY SHIPPING ADDRESS AND/OR SIZE! CAN I CHANGE IT? If this happens to you, just email us as soon as you can and we MIGHT be able care of it. However, we can’t make any promises. All of our shirts are printed on demand so we usually start immediately after you order and it ships out the same day. If your order has already been shipped, take heart. We’ll still try to make it right. We know how frustrating it can be to pay for something you can’t use. -I DIDN'T RECEIVE AN ORDER CONFIRMATION EMAIL AFTER MY ORDER? If you have not received an Order Confirmation Email, please check your Spam Folder. If you did not receive it, please feel free to contact us if necessary. -MY ITEM CAME IN WITH SOME DISCOLORATION THAT LOOKS LIKE A STAIN, WHAT SHOULD I DO? Due to our sublimation printing process and vacuum sealed shipping, lighter colored items may arrive with slight discoloration which is completely normal and will come out after one light wash! RETURNS -WHAT IS THE RETURN POLICY? Our 30 Day Return Policy guarantees you’ll make a no-regret purchase when you buy. Unhappy with your product for any reason? We’ll take it back! We stand by our high quality products with award winning customer service. Your satisfaction is 100% guaranteed -ARE THERE ANY CHARGES FOR EXCHANGES OR RETURNS? At this time, all customers are responsible for their own return postage since we are still a small but growing company Original shipping charges are also non-refundable -HOW DO I REQUEST A RETURN? Just contact us and we’ll process your return in a snap! -WHAT ITEMS ARE RETURNABLE? Any items purchased within the last 30 days In original condition Unwashed and unworn In the original packaging (if applicable) -I RECEIVED A DEFECTIVE, DAMAGED OR AN INCORRECT ITEM, WHAT SHOULD I DO? If you received a defective, damaged or an incorrect item, contact us within 7 days of receiving your order and we will get it sorted out immediately; since it was our fault, we will not require you to ship the item back. SHIPPING INFO Shipping Information: - We offer worldwide shipping to all countries. No matter where you are, you can place an order for our products. - Handling Time: 3-7 business days - Standard Shipping: 10-20 Business Days - Receiving Time = Handling Time + Shipping Time Shipping Policy: - Free shipping on orders over $69. - For orders of less than $69, a shipping fee of $9 will be applied. Thank you for choosing us as your shopping destination! /** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1725522303849').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust); ${data.module_title} To display this card to customers, you need to go to "Booster & Store Conversion" to turn on the trust enhancement feature. ${data.module_title} ${item.title} ${item.title} ${item.content.replaceAll("{store_name}","animefwiw")} To display this card to customers, you need to go to "Booster & Store Conversion" to turn on the trust enhancement feature. ${data.module_title} ${item.title} ${data.module_title} ${item.title} ${item.content.replaceAll("{store_name}","animefwiw")} Security and Service Security and Service Payment Security Privacy Protection Efficient and Safe Logitics Customer Service Payment Security animefwiw is committed to your secure shopping experience. We offer safe and trusted payment options to protect your transactions. Your payment information is shared only with our certified payment service providers, who are dedicated to maintaining the confidentiality of your details. Privacy Protection At animefwiw, your privacy is our priority. We employ internationally recognized encryption methods for all network transmissions, ensuring the utmost security for your private data during your shopping journey. This includes the protection of your shipping address, credit card information, shopping details, and more. Shop with confidence, knowing your privacy is safeguarded with us. Efficient and Safe Logitics At animefwiw, we ensure secure and efficient logistics. Track your order in real-time right from the order page. For added security, consider our optional "Shipping Protection" service. If your purchase encounters any delays, damage, or loss during delivery, rest assured, our insurance will cover your losses. learn more Customer Service If you encounter problems during or after shopping, don't hesitate to reach out. animefwiw's customer service team is here to assist you. learn more Security and Service Payment Security Privacy Protection Efficient and Safe Logitics Customer Service Security and Service Payment Security animefwiw is committed to your secure shopping experience. We offer safe and trusted payment options to protect your transactions. Your payment information is shared only with our certified payment service providers, who are dedicated to maintaining the confidentiality of your details. Privacy Protection At animefwiw, your privacy is our priority. We employ internationally recognized encryption methods for all network transmissions, ensuring the utmost security for your private data during your shopping journey. This includes the protection of your shipping address, credit card information, shopping details, and more. Shop with confidence, knowing your privacy is safeguarded with us. Efficient and Safe Logitics At animefwiw, we ensure secure and efficient logistics. Track your order in real-time right from the order page. For added security, consider our optional "Shipping Protection" service. If your purchase encounters any delays, damage, or loss during delivery, rest assured, our insurance will cover your losses. learn more Customer Service If you encounter problems during or after shopping, don't hesitate to reach out. animefwiw's customer service team is here to assist you. learn more ${function(){ const rules = data.data.rules; return ` ` }()} You May Also Like * Snorlax Face Pokemon Gym Shorts Add to Cart * Togepi Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Bulbasaur Face Pokemon Gym Shorts Add to Cart * The Cream of the Crop Randy Savage Pop Culture Button Up Hawaiian Shirt Add to Cart * Vegeta Badman Pink Dragon Ball Z Button Up Hawaiian Shirt Add to Cart * Gengar Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Monkey D. Luffy Gear 5 Name Coffee 40oz Tumbler Cup With Handle Anime Add to Cart * Daredevil Marvel Baseball Jersey Add to Cart * Jigglypuff Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Mega Powers Macho Man and Hulk Hogan Pop Culture Gym Shorts Add to Cart * Shine Sprite Mario Bros Sunshine Button Up Hawaiian Shirt Add to Cart * Luffy Gear5th One Piece Button Up Hawaiian Shirt Add to Cart * Gengar Classic Pokemon Gym Shorts Add to Cart * Capsule Corp Dragon Ball Z Zip Hoodie Jacket Add to Cart * Pokemon Eevee Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Togepi Pattern Pokemon Gym Shorts Add to Cart * Sailor Moon 40oz Tumbler Cup With Handle Anime Add to Cart * Jedi Skywalker Star Wars Baseball Jersey Add to Cart * Spongebob Pattern Spongebob Squarepants Button Up Hawaiian Shirt Add to Cart * Chimera V1 Fullmetal Alchemist Button Up Hawaiian Shirt Add to Cart * Gengar Face Pokemon Gym Shorts Add to Cart * Mario Bros Items Pattern Button Up Hawaiian Shirt Add to Cart * Trippy The Cream of the Crop Randy Savage Pop Culture Gym Shorts Add to Cart * Pokemon Charizard Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Piranha Plant Mario Bros Button Up Hawaiian Shirt Add to Cart * Pokemon Bulbasaur Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Snorlax Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Android 17 Dragon Ball Z T-Shirt Add to Cart * Mario Bros Baseball Jersey Add to Cart * Snorlax Pokemon Hoodie Add to Cart * Naruto Shippuden Zip Hoodie Jacket Add to Cart * Satoru Gojo 40oz Tumbler Cup With Handle Jujutsu Kaisen Anime Add to Cart * Strawhats Jolly Roger One Piece Board Shorts Swim Trunks Add to Cart * Snorlax Classic Pokemon Gym Shorts Add to Cart * Sylveon Pokemon Zip Hoodie Jacket Add to Cart * Bartholomew Kuma One Piece Zip Hoodie Jacket Add to Cart * Elements of Magic the Gathering Baseball Jersey Add to Cart * Goku Dragon Ball Z Gym Shorts Add to Cart * Doflamingo Pattern One Piece Button Up Hawaiian Shirt Add to Cart * Snorlax Pokemon Button Up Hawaiian Shirt Add to Cart * Togepi Pokemon Hoodie Add to Cart * Gengar 40oz Tumbler Cup With Handle Pokemon Anime Cup Add to Cart * Umbrella Corp Resident Evil Baseball Jersey Add to Cart * Trippy The Cream of the Crop Randy Savage Pop Culture T-Shirt Add to Cart * Magikarp Face Pokemon Gym Shorts Add to Cart * Usagi Tsukino Sailor Moon Button Up Hawaiian Shirt Add to Cart * Mandalorians Boba Fett Star Wars Baseball Jersey Add to Cart * Luffy v2 One Piece Gym Shorts Add to Cart * Jigglypuff Face Pokemon Gym Shorts Add to Cart * Pokemon Snorlax 40oz Tumbler Cup With Handle Add to Cart * Dungeons & Dragons Baseball Jersey Add to Cart * Venom Marvel Comics Button Up Hawaiian Shirt Add to Cart * Nezuko Kamado 40oz Tumbler Cup With Handle Anime Cup Add to Cart * Magikarp Pokemon Button Up Hawaiian Shirt Add to Cart * Crest Symbols Digimon Button Up Hawaiian Shirt Add to Cart * Pokemon Dragonite Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Snorlax Attack Pokemon T-Shirt Add to Cart * Uchiha Symbol Naruto T-Shirt Add to Cart * Rockos Shirt Rockos Modern Life Button Up Hawaiian Shirt Add to Cart * Pokemon Snorlax Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Capsule Corp Dragon Ball Z Gym Shorts Add to Cart * Strawhats Jolly Roger One Piece T-Shirt Add to Cart * Goku Super Saiyan 2 Anime 40oz Tumbler Cup With Handle Manga Art Name Add to Cart * Sailor Jupiter 40oz Tumbler Cup With Handle Anime Add to Cart * Squirtle Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * South Park Cows McCormick South Park Baseball Jersey Add to Cart * Android 17 MIR Dragon Ball Super Hoodie Add to Cart * Luffy Straw Hats One Piece Basketball Shorts Add to Cart * Navy Blue Monkey D. Luffy Dressrosa One Piece Button Up Hawaiian Shirt Add to Cart * Vegeta Dum Cumpster Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Add to Cart * King Boo and Boo Ghosts Mario Bros Button Up Hawaiian Shirt Add to Cart * Gengar Nightshade Pokemon Gym Shorts Add to Cart * Minato Namikaze 4th Hokage Naruto Dream Cloak Coat Add to Cart * Edward Elric Fullmetal Alchemist Dream Cloak Coat Add to Cart * Sailor Neptune 40oz Tumbler Cup With Handle Anime Add to Cart * Yoshi Mario Bros Button Up Hawaiian Shirt Add to Cart * Vegeta Blowjob Princess Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Add to Cart * Goku Dragon Ball Z Zip Hoodie Jacket Add to Cart * Koopa Troopas Mario Bros Baseball Jersey Add to Cart * Sharingan Naruto Shippuden Button Up Hawaiian Shirt Add to Cart * Dragonite Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Patrick Star SpongeBob SquarePants Gym Shorts Add to Cart * Hans Gruber Fall Nakatomi Plaza Die Hard Ugly Christmas Sweater Add to Cart * Link Legend of Zelda Button Up Hawaiian Shirt Add to Cart * Trippy Ghostly Evolution Ghastly Haunter Gengar Pokemon Dream Cloak Coat Add to Cart * Sailor Saturn Hotaru Tomoe 40oz Travel Tumbler Anime Cup Add to Cart * Batman DC Comics Baseball Jersey Add to Cart * Sailor Pluto 40oz Tumbler Cup With Handle Anime Add to Cart * SpongeBob SquarePants Gym Shorts Add to Cart * Mew Classic Pokemon Gym Shorts Add to Cart * Bowser Mario Bros Button Up Hawaiian Shirt Add to Cart * Gengar Attack Pokemon Gym Shorts Add to Cart * Roronoa Zoro Anime 40oz Tumbler Cup With Handle Manga Art Name Add to Cart * Vegeta Pattern Dragon Ball Button Up Hawaiian Shirt Add to Cart * Tegridy Farms Marsh South Park Baseball Jersey Add to Cart * Trafalgar Punk Hazard One Piece Button Up Hawaiian Shirt Add to Cart * Umbreon Face Pokemon Gym Shorts Add to Cart * Frankys Shirt One Piece Button Up Hawaiian Shirt Add to Cart * King Bob Omb Mario Bros Button Up Hawaiian Shirt Add to Cart * Typhlosion Pokemon Streetwear Hoodie Add to Cart Similar Products * Harry Potter Retro Hogwarts Ugly Christmas Sweater Add to Cart * Harry Potter Gryffindor Ugly Christmas Sweater Add to Cart * The Dark Sweater Harry Potter Ugly Christmas Sweater Add to Cart * Slytherin House Harry Potter Baseball Jersey Add to Cart * Harry Potter Hufflepuff House Ugly Christmas Sweater Add to Cart * Harry Potter Hogwarts Houses Ugly Christmas Sweater Add to Cart * Harry Potter Ugly Christmas Sweater Add to Cart * Christmas Squirtle Pokemon Ugly Christmas Sweater Add to Cart * Harry Potter Ravenclaw House Ugly Christmas Sweater Add to Cart * Christmas Spider-man Venom Marvel Comics Ugly Christmas Sweater Add to Cart * Hogwarts Legacy Slytherin Harry Potter Sweatshirt Add to Cart * Chimera V1 Fullmetal Alchemist Button Up Hawaiian Shirt Add to Cart * Harry Potter Avada Kedavra Ugly Christmas Sweater Add to Cart * 007 James Bond Ugly Christmas Sweater Add to Cart * Harry Potter Christmas Ornaments Ugly Christmas Sweater Add to Cart * Christmas Venom Marvel Comics Ugly Christmas Sweater Add to Cart * Lord of the Rings Filthy Hobitses Ugly Christmas Sweater Add to Cart * Hogwarts Legacy Slytherin Harry Potter Hoodie Add to Cart * Captain Picard Star Trek Ugly Christmas Sweater Add to Cart * Christmas Spongebob Nickelodeon Ugly Christmas Sweater Add to Cart * Game of Thrones House Bolton Ugly Christmas Sweater Add to Cart * Christmas Charizard Pokemon Ugly Christmas Sweater Add to Cart * Game of Thrones House Targaryen Ugly Christmas Sweater Add to Cart * Cobra G.I. Joe Ugly Christmas Sweater Add to Cart * The Nightmare Before Christmas Ugly Christmas Sweater Add to Cart * Snorlax Face Pokemon Gym Shorts Add to Cart * Naughty Brats Krampus Ugly Christmas Sweater Add to Cart * Christmas Gengar Pokemon Ugly Christmas Sweater Add to Cart * Xenomorph Alien Ugly Christmas Sweater Add to Cart * Santa wants cookies! Ugly Christmas Sweater Add to Cart * Pennywise IT Ugly Christmas Sweater Add to Cart * Bowser Mario Bros Ugly Christmas Sweater Add to Cart * Kid Buu Face Dragon Ball Z Ugly Christmas Sweater Add to Cart * Shenron Dragon Ball Ugly Christmas Sweater Add to Cart * Black Butler Holiday Ugly Christmas Sweater Add to Cart * Christmas Charmander Pokemon Ugly Christmas Sweater Add to Cart * Classic Horror Christmas Ugly Christmas Sweater Add to Cart * Deadpool Jolly Red Guy Ugly Christmas Sweater Add to Cart * Snorlax Holiday Pokemon Ugly Christmas Sweater Add to Cart * Cute Christmas Hello Kitty Ugly Christmas Sweater Add to Cart * Togepi Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Hans Gruber Fall Nakatomi Plaza Die Hard Ugly Christmas Sweater Add to Cart * Heres Johnny The Shining Ugly Christmas Sweater Add to Cart * Merry Drunk Im Christmas Sterling Archer Ugly Christmas Sweater Add to Cart * Pokemon Eating Candy Cane Charizard Ugly Christmas Sweater Add to Cart * The Cream of the Crop Randy Savage Pop Culture Button Up Hawaiian Shirt Add to Cart * Gengar Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Vegeta Badman Pink Dragon Ball Z Button Up Hawaiian Shirt Add to Cart * Shine Sprite Mario Bros Sunshine Button Up Hawaiian Shirt Add to Cart * Pokemon Eevee Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Mega Powers Macho Man and Hulk Hogan Pop Culture Gym Shorts Add to Cart * Capsule Corp Dragon Ball Z Zip Hoodie Jacket Add to Cart * Jedi Skywalker Star Wars Baseball Jersey Add to Cart * Gengar Classic Pokemon Gym Shorts Add to Cart * Sailor Moon 40oz Tumbler Cup With Handle Anime Add to Cart * Pokemon Bulbasaur Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Pokemon Charizard Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Piranha Plant Mario Bros Button Up Hawaiian Shirt Add to Cart * Togepi Pattern Pokemon Gym Shorts Add to Cart * Snorlax Pokemon Hoodie Add to Cart * Naruto Shippuden Zip Hoodie Jacket Add to Cart * Sylveon Pokemon Zip Hoodie Jacket Add to Cart * Monkey D. Luffy Gear 5 Name Coffee 40oz Tumbler Cup With Handle Anime Add to Cart * Bartholomew Kuma One Piece Zip Hoodie Jacket Add to Cart * Snorlax Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Spongebob Pattern Spongebob Squarepants Button Up Hawaiian Shirt Add to Cart * Strawhats Jolly Roger One Piece Board Shorts Swim Trunks Add to Cart * Mario Bros Items Pattern Button Up Hawaiian Shirt Add to Cart * Elements of Magic the Gathering Baseball Jersey Add to Cart * Snorlax Pokemon Button Up Hawaiian Shirt Add to Cart * Usagi Tsukino Sailor Moon Button Up Hawaiian Shirt Add to Cart * Mario Bros Baseball Jersey Add to Cart * Android 17 Dragon Ball Z T-Shirt Add to Cart * Doflamingo Pattern One Piece Button Up Hawaiian Shirt Add to Cart * Pokemon Dragonite Coffee 40oz Tumbler Cup With Handle Anime Accessories Add to Cart * Vegeta Dum Cumpster Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Add to Cart * Togepi Pokemon Hoodie Add to Cart * Minato Namikaze 4th Hokage Naruto Dream Cloak Coat Add to Cart * Crest Symbols Digimon Button Up Hawaiian Shirt Add to Cart * Trippy The Cream of the Crop Randy Savage Pop Culture Gym Shorts Add to Cart * Vegeta Blowjob Princess Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Add to Cart * Satoru Gojo 40oz Tumbler Cup With Handle Jujutsu Kaisen Anime Add to Cart * Umbrella Corp Resident Evil Baseball Jersey Add to Cart * Jigglypuff Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Trippy Ghostly Evolution Ghastly Haunter Gengar Pokemon Dream Cloak Coat Add to Cart * Venom Marvel Comics Button Up Hawaiian Shirt Add to Cart * Gengar 40oz Tumbler Cup With Handle Pokemon Anime Cup Add to Cart * Edward Elric Fullmetal Alchemist Dream Cloak Coat Add to Cart * Pokemon Snorlax 40oz Tumbler Cup With Handle Add to Cart * Magikarp Face Pokemon Gym Shorts Add to Cart * Squirtle Pattern Pokemon Button Up Hawaiian Shirt Add to Cart * Dungeons & Dragons Baseball Jersey Add to Cart * Sailor Jupiter 40oz Tumbler Cup With Handle Anime Add to Cart * Typhlosion Pokemon Streetwear Hoodie Add to Cart * Chimera Fullmetal Alchemist Gym Shorts Add to Cart * Android 17 MIR Dragon Ball Super Hoodie Add to Cart * Magikarp Pokemon Button Up Hawaiian Shirt Add to Cart * Snorlax Classic Pokemon Gym Shorts Add to Cart * Gengar Face Pokemon Gym Shorts Add to Cart * Navy Blue Monkey D. Luffy Dressrosa One Piece Button Up Hawaiian Shirt Add to Cart ${function(){ const isCart = data.data.isCart; const isCollection = data.data.isCollection; const isProduct = data.data.isProduct; const isIndex = data.data.isIndex; return ` ${isCart ? 'The items in the shopping cart do not participate in any recommendation rule. Add the participating items to your shopping cart to check the design.' : ''} ${isProduct ? 'This product did not participated in any recommendation rule. Switch to another product to check the design.' : ''} ${isCollection ? 'The items in this collection do not participate in any recommendation rule. Switch the participating items to check the design.' : ''} ${isIndex ? 'The home page do not participate in any recommendation rule.' : ''} (This prompt would not display on client-side) Recommended Products ` }()} ${function(){ const rule = data.data; const getImageHeight = function(image){ const image_size = rule.config.image_size || 0; const imageWidth = image.width || 600; const imageHeight = image.height || 800; let ratio = 0; if(image_size == 0){ ratio = (imageHeight / imageWidth).toFixed(2); }else if(image_size == 1){ ratio = 1.5; }else if(image_size == 2){ ratio = 1; }else if(image_size == 3){ ratio = 0.75; } return imageWidth * ratio; }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); return ` ${rule.config.title} * ${product.title} ${rule.config.quick_shop_button_text} ` }()} class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent); ${(function(){ const product = data.product; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); return ` ${product.images.map((image) => { return `` }).join('')} ${product.title} See detail Quantity Add To Cart Buy Now `; })()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} The current produc does not participate any Rebate. Switch the participating product to check the design. (This prompt will not be displayed on the client-side.) ${function() { const show = rebate.format_rules.length > data.maxShowCount; return ` ${rule} ${function() { if(!show) return ""; return ` `; }()} `; }()} SPECIAL OFFER ${rule} CLOSE ${originData.rebate.format_rules.join(", ")} Buy 2 items and save 5% off, Buy 3 items and save 10% off, Buy 4 items and save 15% off if(window.self === window.top) { (window.disabled_exts ||=[]).push('product_detail_rebate'); } class SpzRebateComponent extends SPZ.BaseElement { constructor(element) { super(element); } xhr_ = SPZServices.xhrFor(this.win); viewport_ = this.getViewport(); action_ = null; lang = document.documentElement.lang || 'en-US'; landPage = "\/promotions\/rebate\/"; pageType = 1; cart = {"line_items":[],"ineffectives":[],"discount_applications":[],"total_discount":"0.00","discount_line_item_price":"0.00","invalid_msg":"","currency":null,"note":"","item_count":0,"original_line_price":0,"original_total_price":0,"line_price":0,"total_price":0,"total_weight":0}; initData = null; rebateInfo = null; renderData = null; footerImage = `${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`; isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.initData = this.getProduct(); this.action_ = SPZServices.actionServiceForDoc(this.element); this.registerAction("triggerGetRenderData", () => { const event = SPZUtils.Event.create(this.win, "triggerGetRenderData", this.renderData); this.action_.trigger(this.element, "getRenderData", event); }); this.registerAction("bindPropagation", () => { document.querySelector(".product_detail_rebate_list").addEventListener("click", e => { e.stopPropagation(); this.win.sa && this.win.sa.track("plugin_rebate_promotion_click", { plugin_timestamp: Date.now(), plugin_location: "info", product_id: this.initData.product.id, discount_id: this.rebateInfo.discount_list.map((item) => item.discount_id)[0], }); }); }); } async mountCallback() { document.addEventListener("dj.variantChange", e => { const data = e.detail; if (document.querySelector("#product-select-modal.show")) return; if (this.initData && this.initData.product && data.product && this.initData.product.id === data.product.id) { this.initData = data; this.initRebate(this.initData, true); } else { this.initData = data; this.getRebateInfo(); } }); document.addEventListener("dj.addToCart", e => { const v = e.detail; this.rebateInfo && this.win.sa && this.win.sa.track("plugin_rebate_atc", { variant_discount_id: this.getVariantDiscountId(v.variant_id).map(item => item.discount_id), discount_ids: this.rebateInfo.discount_list.map(item => item.discount_id), variant_id: v.variant_id, product_id: v.product_id, price: v.item_price, number: v.number, }); }); await this.getRebateInfo(); if (document.querySelector(".plugin-container__bottom-fixed")) { this.showDiscountPopupsInfoBar(); } else { this.win.addEventListener("extloaded", () => { this.showDiscountPopupsInfoBar(); }); } } getProduct = (() => { document.addEventListener("dj.variantChange", e => { if (!e.detail || !e.detail.product) return; const productJson = document.querySelector("#product-json"); if (productJson && productJson.textContent && JSON.parse(productJson.textContent)) { productJson.textContent = JSON.stringify(e.detail); } if (this.win.jQuery && this.win.jQuery.fn && this.win.jQuery(document).data("djproduct")) { this.win.jQuery(document).data("djproduct", e.detail); } }); return () => { let productData = null; if (this.win.jQuery && this.win.jQuery.fn) { try { let product = this.win.jQuery(document).data("djproduct"); if (product) { productData = JSON.parse(JSON.stringify(product)); } else { productData = null; } } catch (error) { productData = null; } } if (!productData) { const productJson = document.querySelector("#product-json"); productData = (productJson && productJson.textContent && JSON.parse(productJson.textContent)) || null; } return productData; }; })(); initRebate = this.win.SPZCore.Types.debounce( this.win, (async (data, variantChange) => { let discount_list = Object.assign([], this.rebateInfo.discount_list); /* 按子商品的多少对优惠信息进行排序 */ discount_list && discount_list.sort((a, b) => { return b.variant_ids.length - a.variant_ids.length; }); /* 选中子商品时 筛选子商品的优惠信息 */ if (data.selected && data.selected.id) { discount_list = this.getVariantDiscountId(data.selected.id); } /* 无满减信息 */ if (!(discount_list && discount_list.length)) { return; } const isSection = !!document.querySelector( `div[data-section-type^="shoplazza://apps/publicapp/blocks/rebate"] #rebate_custom_component` ); if ( (this.rebateInfo.rebate_type == "sku" && data && data.selected && data.selected.id) || this.rebateInfo.rebate_type == "spu" ) { let nowLandpage = this.landPage; if (discount_list[0]) { nowLandpage = this.landPage + discount_list[0].discount_id || ""; } const info = { rebate: discount_list[0], maxShowCount: this.win.innerWidth > 768 ? 3 : 1, landPage: nowLandpage, modalFooterImg: `url(${`${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`})`, }; this.renderData = info; if(isSection) { SPZ.whenApiDefined( document.getElementById("app_rebate_section") ).then(apis => { apis.render(info, true); }); } else { // 重新渲染 抖动问题处理 this.templates_ = SPZServices.templatesForDoc(); const newTplDom = await this.templates_.renderTemplate(document.querySelector('#appRebateBlockTpl'), info) const parentDiv = document.querySelector('#app_rebate_block'); const oldDom = parentDiv.querySelector('.app_rebate_list'); if(oldDom){ parentDiv.replaceChild(newTplDom, oldDom); } else { parentDiv.appendChild(newTplDom); } } } this.insertSlideTag(this.rebateInfo.tag, variantChange); var pluginCurrencyEvent = new CustomEvent("plugin_currency_update"); document.dispatchEvent(pluginCurrencyEvent); }).bind(this), 10 ); getRebateInfo = async () => { if (this.initData && this.initData.product && this.initData.product.id) { var variant_ids = this.initData.product.variants.map(variant => variant.id); const res = await this.xhr_.fetchJson( "\/api\/discount-rebate\/product-discount", { method: "POST", body: { product_id: this.initData.product.id, product_type: this.initData.product.product_type, variant_ids: variant_ids, }, } ); if (!SPZCore.Types.isEmptyObject(res.rebate_info)) { res.rebate_info.tag = res.tag; res.rebate_info.rebate_type = res.rebate_type; this.rebateInfo = res.rebate_info; this.initRebate(this.initData); } else { if (this.win.top !== this.win.self) { const noActivity = document.getElementById("no-rebate-activity"); noActivity && (noActivity["style"].display = "block"); } } } }; getVariantDiscountId = (variant_id) => { if (!variant_id || !this.rebateInfo) return []; var rebateId = this.rebateInfo.variant_discount_map[variant_id]; return this.rebateInfo.discount_list.filter(item => item.discount_id == rebateId) || []; }; insertSlideTag = (tag, variantChange) => { setTimeout(() => { if (tag) { var tag_container; var modal = document.getElementById("product-select-modal"); if (modal && modal.classList.contains("show")) { if (!variantChange && modal.querySelector(".slider-discount-tag")) return; if ( variantChange && modal.querySelector(".slider-discount-tag:not(.rebate-tag)") ) return; tag_container = modal; } else { var product_detail_card = document.querySelector( '.page_container > [data-section-type="product_detail"], .page_container > [data-section-type="product-template"]' ); if(!product_detail_card) return; if (!variantChange && product_detail_card.querySelector(".slider-discount-tag")) return; if (variantChange && product_detail_card.querySelector(".slider-discount-tag:not(.rebate-tag)")) return; tag_container = product_detail_card; } if (tag_container.matches("#product-select-modal") && this.pageType === 13 && document.documentElement.clientWidth < 768) return; const tagDom = `<div class="slider-discount-tag dj_skin_product_title rebate-tag">${tag}</div>` if (document.querySelector(".sep-loaded-slider")) { var loadedSlider = tag_container.querySelector(".sep-loaded-slider"); loadedSlider.querySelectorAll(".slider-discount-tag").forEach(function(element) { element.remove(); }); loadedSlider.insertAdjacentHTML("beforeend", tagDom); } else { if (tag_container.querySelector(".support-slick")) { var supportSlick = tag_container.querySelectorAll(".support-slick, .sep-slider"); supportSlick.forEach((element) => { element.querySelectorAll(".slider-discount-tag").forEach((element) => { element.remove(); }); element.insertAdjacentHTML("beforeend",tagDom); }); } else { var sepSlider = tag_container.querySelector(".sep-slider"); sepSlider.querySelectorAll(".slider-discount-tag").forEach(function(element) { element.remove(); }); sepSlider.insertAdjacentHTML("beforeend",tagDom); } } if (document.documentElement.clientWidth < 768) { const sliderDiscountTagHeight = tag_container.querySelector(".slider-discount-tag").offsetHeight || 0; document.querySelector(".product-image__swiper_bullets").style.bottom = `${sliderDiscountTagHeight + 15}px`; } } }, 1000); }; fetchInfoBar = () => { let discount_ids = []; if (this.pageType === 1) { discount_ids = this.rebateInfo && this.rebateInfo.discount_list.map(item => item.discount_id); } else if (this.pageType === 38) { discount_ids = [this.win.rebateObj.rebateCollection_id] || []; } const productObj = this.getProduct(); return this.xhr_.fetchJson("\/api\/discount-rebate\/global-text", { method: "POST", body: { product_type: productObj && productObj.product && productObj.product.product_type, line_items: (this.cart.line_items || []).map(item => ({ variant_id: item.variant_id, product_id: item.product_id, quantity: item.quantity, price: item.price, selected: !item.unchecked, })), discount_ids: discount_ids, }, }); }; renderBottomBanner = res => { if (!res.tips) return; if (document.querySelector(".discount__info-bar")) return; var bar_style = `background:linear-gradient(90deg,${res.config.background_color_start},${res.config.background_color_end}); color:${res.config.color};`; let data = { tips: res.tips, landPage: this.landPage + res.id, bar_style }; const html = SPZCore.Dom.htmlFor(this.element); const banner = html([ `<a impr="1" imprevt="1" id="rebate_bottom_bar" href=${data.landPage} class="discount__info-bar text-truncate" data-activity-type="rebate" style="${data.bar_style}">${data.tips}</a>`, ]); document.querySelector(".plugin-container__bottom-fixed").appendChild(banner); const pluginCurrencyEvent = new CustomEvent("plugin_currency_update"); document.dispatchEvent(pluginCurrencyEvent); if (res.id) { var trackParams = { page: this.pageType, discount_id: res.id, product_id: this.getProduct()?.product.id, }; banner.addEventListener("click", () => { this.win.sa && this.win.sa.track("plugin_rebate_promotion_click", { plugin_timestamp: Date.now(), plugin_location: "bottom_bar", product_id: trackParams.product_id, discount_id: trackParams.discount_id, }); }); this.win.sa && this.win.sa.track("plugin_rebate_banner_pv", trackParams); } }; showDiscountPopupsInfoBar = () => { if ([13, 14, 19, 30, 31].includes(this.pageType)) return; if (document.querySelector(".plugin-container__bottom-fixed .discount__info-bar")) return; this.fetchInfoBar().then(this.renderBottomBanner); document.addEventListener("dj.cartChange", () => { this.fetchInfoBar().then(this.renderBottomBanner); }); }; } SPZ.defineElement("spz-custom-rebate", SpzRebateComponent); CUSTOMER REVIEWS 10 Reviews Daniel Davids I really enjoyed the shirt. It didn't fit there way I wanted, and the Amazing customer service fixed my issue asap and now I'm telling EVERYONE about animefwiw! Tara Henderson I bought this shirt for my husband. It's high quality and comfy. The first time he wore it in public, he got a compliment and he's gotten more since then. This company is legitimate and they have fast shipping. Versharia Chiles I love the style of these shorts, it’s very unique! It pairs well with the Baseball jersey I’ve ordered. I will order again! Thank you! Madison Dintleman I like the simplicity and they fit well goes great with the shirt and is very light weight also has pockets! Erica Purdy Just like picture online, excellent quality, & true to size. My son loves it! View more Tyler Lunsford This is a really good quality shirt that is both comfortable and cool on the hot summer days. The material is breathable and the design is awesome! Benjamin GIllespie Comfy and looks great, happy to have more wearables of my favorite sonic character. Anthony Riso I’m buying way more of these shorts. They are super comfy, and I love lifting in them. Jamie BERMUDEZ Jacket is super comfortable and great quality. Customer service was great as well with a very fast response time. Jeremy Garcia Amazing quality, I had unfortunately ordered the wrong size, thanks to Support I was able to get assistance with ordering the correct size! NEW IN | EXPLORE EXCLUSIVE DESIGN View more View more MIMIKYU POKEMON V2 BUTTON UP HAWAIIAN SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 MANDALORIANS STAR WARS BUTTON UP HAWAIIAN SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 MACHO MAN ZEBRA-STRIPE GYM SHORTS | EXCLUSIVE DESIGN $29.00 $39.00 'NO REST!' SNORLAX POKEMON SHORT SLEEVE RASH GUARD COMPRESSION SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 DEADPOOL SHORT SLEEVE RASH GUARD COMPRESSION SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 PSYDUCK POKEMON BASEBALL JERSEY | EXCLUSIVE DESIGN $29.00 $39.00 CHAMPION LEAGUE POKEMON SHORT SLEEVE RASH GUARD COMPRESSION SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 CARTMAN SOUTH PARK SHORT SLEEVE RASH GUARD COMPRESSION SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 SKELETOR MASTERS OF THE UNIVERSE SHORT SLEEVE RASH GUARD COMPRESSION SHIRT | EXCLUSIVE DESIGN-1 $29.00 $39.00 HANS GRUBER FALLS FROM NAKATOMI PLAZA DIE HARD GYM SHORTS | EXCLUSIVE DESIGN $29.00 $39.00 PSYDUCK POKEMON SHORT SLEEVE RASH GUARD COMPRESSION SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 GENGAR IN HALLOWEEN POKEMON FULL-PRINT BUTTON UP HAWAIIAN SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 GHOST TYPE POKEMON FULL-PRINT BUTTON UP HAWAIIAN SHIRT | EXCLUSIVE DESIGN $29.00 $39.00 SKELETOR MASTERS OF THE UNIVERSE COFFEE 40OZ TUMBLER WITH HANDLE | EXCLUSIVE DESIGN $39.00 $49.00 DEADPOOL COFFEE 40OZ TUMBLER WITH HANDLE | EXCLUSIVE DESIGN $39.00 $49.00 'JUST DO IT LATER' SNORLAX POKEMON BASEBALL JERSEY | EXCLUSIVE DESIGN $29.00 $39.00 ${data.index + 1}/${data.total} RECOMMENDED FOR YOU RECENTLY VIEWED * Mastercard * Visa * JCB * American Express * PayPal * Klarna * Mastercard * Visa * JCB * American Express * PayPal * Klarna Email: service@animefwiw.com Email: service@animefwiw.com Follow us * * * Follow us * * * © 2024 animefwiw is a Fans-Based Design Contribution & Distribution Company. All apparels/props seen on site are produced by Fans. All designs are intended as a fan representation only. Tracking Your Order About Us Contact Us Shipping and Delivery Refund Policy Order Cancellation Policy Privacy Policy Term of Service Payment & Pricing DMCA ${data.mm}m ${data.ss}s CART Your shopping bag is empty Continue shopping Your cart is reserved for ! * ${item.product_title} * ${item.options.map(option => option.value).join('/')} * ${propertie.name}/${propertie.isImage ? `View image` : propertie.value} Free gift Mixed Lot *${item.quantity} ${item.item_text} ${discount_item.title} (-) ${(function(){ var total_price = data.total_price; var postageFreeAmount = 60; var freeAmount = postageFreeAmount - total_price; var isFreeShipping = freeAmount <= 0; var rate = Math.min(total_price / postageFreeAmount * 100, 100).toFixed(2); const textArray = ("Spend {{ amount }} more and get free shipping!").split(/\{\{\s*amount\s*\}\}/); const textArrayHtml = textArray.map((text, index) => { if (index == 0) { return `${text}`; } return `${text}`; }).join(''); return ` ${textArrayHtml} You've got free shipping ${rate}% ` })()} Total: ${function() { const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 && textArray.length < 2) { textArray.push(''); } return textArray.map((text, index) => { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()} ${function() { const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 && textArray.length < 2) { textArray.push(''); } return textArray.map((text, index) => { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()} * ${discount_application.title}: - ${data.invalid_msg} Check out Taxes and shipping calculated at checkout ${(function(){ var total_price = data.total_price; var postageFreeAmount = 60; var freeAmount = postageFreeAmount - total_price; var isFreeShipping = freeAmount <= 0; var rate = Math.min(total_price / postageFreeAmount * 100, 100).toFixed(2); const textArray = ("Spend {{ amount }} more and get free shipping!").split(/\{\{\s*amount\s*\}\}/); const textArrayHtml = textArray.map((text, index) => { if (index == 0) { return `${text}`; } return `${text}`; }).join(''); return ` ${textArrayHtml} You've got free shipping ${rate}% ` })()} ${data.invalid_msg} Total: ${function() { const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 && textArray.length < 2) { textArray.push(''); } return textArray.map((text, index) => { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()} ${function() { const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 && textArray.length < 2) { textArray.push(''); } return textArray.map((text, index) => { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()} ${function() { const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 && textArray.length < 2) { textArray.push(''); } return textArray.map((text, index) => { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()} * ${discount_application.title}: - Check out ${data.invalid_msg} Check out Taxes and shipping calculated at checkout * Subtotal: * ${discount_application.title}: - Total: Check out Taxes and shipping calculated at checkout const summaryStickyRender = document.querySelector('#cart-drawer-summary-sticky-render'); if (summaryStickyRender) { document.body.style.setProperty('--cart-drawer-summary-sticky-height', summaryStickyRender.clientHeight + 'px'); } View Cart ${function(){ const productData = data.product; let product_change_event = '', mouse_over_event = ' '; mouse_out_event = ''; const product_options = productData.options.filter(Boolean) || []; for (let opt of product_options) { const nameEscape = opt.name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '') product_change_event = product_change_event + `quick-shop-selected-variant-${opt.id}.rerender(data=event.selectedValues.${opt.name});`; mouse_out_event = mouse_out_event + `@${nameEscape}Mouseout="quick-shop-selected-variant-${opt.id}.rerender(data=event.selectData.${opt.name}, redo=true);"`; mouse_over_event = mouse_over_event + `@${nameEscape}Mouseover="quick-shop-selected-variant-${opt.id}.rerender(data=event, redo=true);"`; } const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ? "Sold out" : "Add to cart"; return ` ${statusLan} ` }()} ${function(){ const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]); const variantData = currentSelectVariant || defaultVariant || data; const retail_price = variantData.retail_price || 0; return ` Retail ` }()} ${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]); const productVariant = {"id":"142b5a3e-4cff-445b-ad08-9171b725a440","product_id":"acc02d31-4861-4fd4-9a08-4bfe571f5e46","title":"S","weight_unit":"kg","inventory_quantity":999,"sku":"animefwiw-24071232601-S","barcode":"","position":1,"option1":"S","option2":"","option3":"","note":"","image":null,"wholesale_price":[{"price":39,"min_quantity":1}],"weight":"0","compare_at_price":"49","price":"39","retail_price":"49","available":true,"url":"\/products\/harry-potter-slytherin-house-ugly-christmas-sweater?variant=142b5a3e-4cff-445b-ad08-9171b725a440","available_quantity":999999999,"options":[{"name":"Size","value":"S"}],"off_ratio":20,"flashsale_info":[],"sales":2}; const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex = wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const wholesalePrice = wholesale_price[wholesaleIndex] || ''; return ` ` }else { const price = variantData && variantData.price; return price != undefined ? ` ` : ''; } }()} ${function() { let variantImageShowed = false; const currentProduct = data.product; return (currentProduct.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; const position = `option${index + 1}`; let isThumbImage = false; if (currentProduct.need_variant_image && !variantImageShowed) { const variantNames = ["color","colour"] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; variantImageShowed = true; } } } const variantType = "button"; const thumbStyle = "image_with_text"; return ` ${optionName}: ${option.values.map((value, idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = currentProduct.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} ` }).join('')} ${optionName} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` }).join(''); }()} ${data.originData && data.originData.value || data.value} const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation); 111 GIFTS POINTS Item has been added ${(function(){ const products = data.products; const getDefaultVariant = function(product){ if (product.min_price_variant.available){ return product.min_price_variant; }else { const avail_variants = product.variants.filter(function(variant){ return variant.available; }); if (avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams = function(product, index){ const variant = getDefaultVariant(product); const params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm || '', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams = Object.keys(params).map(function(key){ return params[key]; }).join('__'); return trackParams; }; const hasMore = (data.products.length - data.target_top_product_num - data.page * data.limit) === 0; return ` ${(function(){ return ` ${data.config.pop_title} ${data.rebate_tips || ''} `; })()} ${product.title} Added `; })()} class SpzCustomComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = []; this.products_ = []; this.activityId_ = null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('pop mounted'); this.i18n_ = window.smartRecommendI18n && window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase = `smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, }; const that = this; document.addEventListener('dj.addToCart', (event) => { try { const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block || this.rendered_) return; that.fetchActivityData({product_id: e.product_id, variant_id: e.variant_id}).then(data => { if (!data || !data.products || !data.products.length) return; that.config_ = data.config; const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` #plugin_recommend_atc_pop { display: none !important; } `; document.head.appendChild(recommendStyle); if (data.config.pop_frequency === 'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ api.render(Object.assign({}, data, extra), true).then(function() { that.rendered_ = true; if (data.products.length) { const headEl = document.getElementById("smart_cart_pop_head_render"); if (headEl) { SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); }); } SPZ.whenApiDefined(modalEl).then(function(api){ that.impressListen('#smart_cart_pop_activity', function(){ that.trackPluginImpression_(data); }); api.open(); const intersectionObserver = new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio > 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_) === that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } ); intersectionObserver.observe( document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) } catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that = this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_ }).then(function(data) { data.products = that.products_; data.target_top_product_num = that.target_top_product_num_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) } fetchActivityData(data) { const that = this; if (data.product_id) { that._atcLineItem = data; } that.loading_ = true; return that.getCart().then(cart => { that.cart_ = cart.cart; return fetch(window.C_SETTINGS.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.C_SETTINGS.shop.shop_id, }, body: JSON.stringify({ "show_type": 2, "line_item": { "product_id": that._atcLineItem.product_id, "variant_id": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page": data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } that.products_ = that.products_.concat(data.products || []); that.page_ = data.page || 1; that.limit_ = data.limit || 10; return data; }).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ = false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data) => { if (!data.args.data || !data.args.data.data || !data.args.data.data.data) return false; const config = data.args.data.data.data.config; const bannerBgEl = document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) { bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color = config.banner_text_color; } }); this.registerAction('handleProductChange', (data) => { const that = this; const imageEl = document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`); SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data: data.args.data, config: that.config_ }); }); const atcTextEl = document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`); SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data: data.args.data, defaultText: data.args.defaultText, soldOutText: that.i18n_.sold_out }); }); if (data.args.data.variant.available) { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none'); } else { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none'); } }); this.registerAction('handleProduct', (detail) => { const that = this; this.renderProductsForm_(detail.args.data.data); }); this.registerAction('addATCHook', (data) => { const params = data.args; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.C_SETTINGS.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.C_SETTINGS.meta.page.template_name}.${spm}`, ssp: ssp, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { const that = this; const checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.C_SETTINGS.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.C_SETTINGS.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.C_SETTINGS.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.C_SETTINGS.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart', SpzCustomComponent); ${function(){ return ` ${data.data.rebate_tips || ''} `; }()} ${function(){ const getImageHeight = function(image){ const width = image.width || 500; const height = image.height || 500; const image_size = data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height / width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 * ratio; }; const image = data.data.variant.image || data.data.product.image; return ` `; }()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} ${(function(){ const variant = data.variant; return ` `; })()} ${(function(){ const variant = data.variant; return ` ${ variant.options.map(function(option){ return option.value; }).join("/") || 'Not exist' } `; })()} ${(function(){ const variant = data.data && data.data.variant; const defaultText = data.defaultText || 'Add To Cart'; const text = (!variant || variant.available) ? defaultText: data.soldOutText; return ` ${text} `; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; } return ` ${cart.item_count >=0 ? cart.item_count : '..'} `; })()} ${(function(){ return ` ${data.i18n.checkout} `; })()}