UNPKG

@malga-checkout/core

Version:
1,457 lines (1,288 loc) 1.1 MB
import { createEvent, h as h$2, Host, Fragment, getRenderingRef, forceUpdate, proxyCustomElement } from '@stencil/core/internal/client'; export { setAssetPath, setPlatformOptions } from '@stencil/core/internal/client'; const checkoutAccordionCss = "@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\"); :root{--malga-checkout-color-page-background:#eef2f6;--malga-checkout-color-brand-accent-light:#79DBD4;--malga-checkout-color-brand-accent-normal:#39BFAD;--malga-checkout-color-brand-clean:#C3F4EF;--malga-checkout-color-brand-light:#79DBD4;--malga-checkout-color-brand-normal:#39BFAD;--malga-checkout-color-brand-middle:#2FAC9B;--malga-checkout-color-brand-dark:#147F70;--malga-checkout-color-grey-light:#666666;--malga-checkout-color-grey-normal:#4D4D4D;--malga-checkout-color-grey-middle:#333333;--malga-checkout-color-grey-dark:#1A1A1A;--malga-checkout-color-grey-darkness:#000000;--malga-checkout-color-accent-light:#ffffff;--malga-checkout-color-accent-normal:#F1F1F1;--malga-checkout-color-accent-middle:#CBCBCB;--malga-checkout-color-warning-light:#FFF8E6;--malga-checkout-color-warning-normal:#F9DF8D;--malga-checkout-color-warning-middle:#FFA400;--malga-checkout-color-warning-dark:#ED3A3D;--malga-checkout-color-modal-success:#00AE42;--malga-checkout-color-modal-error:#ED3A3D;--malga-checkout-color-modal-neutral:#4D4D4D;--malga-checkout-color-disabled:#F9F9F9;--malga-checkout-color-modal-action-button-error:#000000;--malga-checkout-color-modal-action-button-error-hover:#333333;--malga-checkout-color-modal-action-button-success:#000000;--malga-checkout-color-modal-action-button-success-hover:#333333;--malga-checkout-color-modal-action-button-success-font-color:#ffffff;--malga-checkout-color-modal-action-button-error-font-color:#ffffff;--malga-checkout-typography-family:\"Inter\", sans-serif;--malga-checkout-spacing-xxs:4px;--malga-checkout-spacing-xs:8px;--malga-checkout-spacing-sm:16px;--malga-checkout-spacing-default:24px;--malga-checkout-spacing-md:32px;--malga-checkout-spacing-lg:48px;--malga-checkout-spacing-xlg:64px;--malga-checkout-spacing-xxlg:96px;--malga-checkout-size-min-width:250px;--malga-checkout-border-radius-default:4px;--malga-checkout-border-radius-md:6px;--malga-checkout-border-radius-lg:20px;--malga-checkout-transition-slow:0.3s;--malga-checkout-transition-default:0.5s}.checkout-accordion__header>span{font-family:var(--malga-checkout-typography-family);font-size:12px;font-style:normal;font-weight:normal}.checkout-accordion__container{display:flex;flex-direction:column;padding:var(--malga-checkout-spacing-sm);border-radius:var(--malga-checkout-spacing-xs);background:var(--malga-checkout-color-accent-light);box-shadow:0px 0px 4px rgba(0, 0, 0, 0.1)}.checkout-accordion__container--full-width{width:100%}.checkout-accordion__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-family:var(--malga-checkout-typography-family);font-size:var(--malga-checkout-spacing-sm);font-weight:bold;color:var(--malga-checkout-color-brand-middle)}.checkout-accordion__header>button{display:flex;justify-content:center;align-items:center;cursor:pointer;background:transparent;border:none;opacity:0;transition:opacity 0.5s ease;padding:0}.checkout-accordion__header>button>checkout-icon>i>svg{color:var(--malga-checkout-color-brand-middle)}.checkout-accordion__header>span{display:flex;flex-direction:row;align-items:center;color:var(--malga-checkout-color-grey-light);fill:var(--malga-checkout-color-grey-light)}.checkout-accordion__header>span>checkout-icon{margin-right:var(--malga-checkout-spacing-xs)}.checkout-accordion__header--editable>button{opacity:1}.checkout-accordion__content{height:0px;overflow:hidden;margin-top:0}.checkout-accordion__content--opened{height:100%;margin-top:var(--malga-checkout-spacing-sm)}"; const CheckoutAccordion$1 = class extends HTMLElement { constructor() { super(); this.__registerHost(); this.expandClick = createEvent(this, "expandClick", 7); this.fullWidth = false; this.handleExpandClick = () => { this.expandClick.emit(); }; } render() { return (h$2(Host, { "aria-expanded": this.opened, class: { 'checkout-accordion__container': true, 'checkout-accordion__container--full-width': this.fullWidth, } }, h$2("header", { class: { 'checkout-accordion__header': true, 'checkout-accordion__header--editable': this.isEditable, } }, this.label, !this.opened && this.isEditable && (h$2("button", { type: "button", onClick: this.handleExpandClick }, h$2("checkout-icon", { icon: "edit" }))), this.opened && (h$2("slot", { name: "accordion-header-additional-information" }))), h$2("div", { class: { 'checkout-accordion__content': true, 'checkout-accordion__content--opened': this.opened, }, "aria-hidden": this.opened }, h$2("slot", null)))); } static get style() { return checkoutAccordionCss; } }; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } function createCommonjsModule(fn, basedir, module) { return module = { path: basedir, exports: {}, require: function (path, base) { return commonjsRequire(); } }, fn(module, module.exports), module.exports; } function commonjsRequire () { throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); } var clipboard = createCommonjsModule(function (module, exports) { /*! * clipboard.js v2.0.8 * https://clipboardjs.com/ * * Licensed MIT © Zeno Rocha */ (function webpackUniversalModuleDefinition(root, factory) { module.exports = factory(); })(commonjsGlobal, function() { return /******/ (function() { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 134: /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { // EXPORTS __webpack_require__.d(__webpack_exports__, { "default": function() { return /* binding */ clipboard; } }); // EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js var tiny_emitter = __webpack_require__(279); var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); // EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js var listen = __webpack_require__(370); var listen_default = /*#__PURE__*/__webpack_require__.n(listen); // EXTERNAL MODULE: ./node_modules/select/src/select.js var src_select = __webpack_require__(817); var select_default = /*#__PURE__*/__webpack_require__.n(src_select); function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * Inner class which performs selection from either `text` or `target` * properties and then executes copy or cut operations. */ var ClipboardAction = /*#__PURE__*/function () { /** * @param {Object} options */ function ClipboardAction(options) { _classCallCheck(this, ClipboardAction); this.resolveOptions(options); this.initSelection(); } /** * Defines base properties passed from constructor. * @param {Object} options */ _createClass(ClipboardAction, [{ key: "resolveOptions", value: function resolveOptions() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.action = options.action; this.container = options.container; this.emitter = options.emitter; this.target = options.target; this.text = options.text; this.trigger = options.trigger; this.selectedText = ''; } /** * Decides which selection strategy is going to be applied based * on the existence of `text` and `target` properties. */ }, { key: "initSelection", value: function initSelection() { if (this.text) { this.selectFake(); } else if (this.target) { this.selectTarget(); } } /** * Creates a fake textarea element, sets its value from `text` property, */ }, { key: "createFakeElement", value: function createFakeElement() { var isRTL = document.documentElement.getAttribute('dir') === 'rtl'; this.fakeElem = document.createElement('textarea'); // Prevent zooming on iOS this.fakeElem.style.fontSize = '12pt'; // Reset box model this.fakeElem.style.border = '0'; this.fakeElem.style.padding = '0'; this.fakeElem.style.margin = '0'; // Move element out of screen horizontally this.fakeElem.style.position = 'absolute'; this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically var yPosition = window.pageYOffset || document.documentElement.scrollTop; this.fakeElem.style.top = "".concat(yPosition, "px"); this.fakeElem.setAttribute('readonly', ''); this.fakeElem.value = this.text; return this.fakeElem; } /** * Get's the value of fakeElem, * and makes a selection on it. */ }, { key: "selectFake", value: function selectFake() { var _this = this; var fakeElem = this.createFakeElement(); this.fakeHandlerCallback = function () { return _this.removeFake(); }; this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true; this.container.appendChild(fakeElem); this.selectedText = select_default()(fakeElem); this.copyText(); this.removeFake(); } /** * Only removes the fake element after another click event, that way * a user can hit `Ctrl+C` to copy because selection still exists. */ }, { key: "removeFake", value: function removeFake() { if (this.fakeHandler) { this.container.removeEventListener('click', this.fakeHandlerCallback); this.fakeHandler = null; this.fakeHandlerCallback = null; } if (this.fakeElem) { this.container.removeChild(this.fakeElem); this.fakeElem = null; } } /** * Selects the content from element passed on `target` property. */ }, { key: "selectTarget", value: function selectTarget() { this.selectedText = select_default()(this.target); this.copyText(); } /** * Executes the copy operation based on the current selection. */ }, { key: "copyText", value: function copyText() { var succeeded; try { succeeded = document.execCommand(this.action); } catch (err) { succeeded = false; } this.handleResult(succeeded); } /** * Fires an event based on the copy operation result. * @param {Boolean} succeeded */ }, { key: "handleResult", value: function handleResult(succeeded) { this.emitter.emit(succeeded ? 'success' : 'error', { action: this.action, text: this.selectedText, trigger: this.trigger, clearSelection: this.clearSelection.bind(this) }); } /** * Moves focus away from `target` and back to the trigger, removes current selection. */ }, { key: "clearSelection", value: function clearSelection() { if (this.trigger) { this.trigger.focus(); } document.activeElement.blur(); window.getSelection().removeAllRanges(); } /** * Sets the `action` to be performed which can be either 'copy' or 'cut'. * @param {String} action */ }, { key: "destroy", /** * Destroy lifecycle. */ value: function destroy() { this.removeFake(); } }, { key: "action", set: function set() { var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; this._action = action; if (this._action !== 'copy' && this._action !== 'cut') { throw new Error('Invalid "action" value, use either "copy" or "cut"'); } } /** * Gets the `action` property. * @return {String} */ , get: function get() { return this._action; } /** * Sets the `target` property using an element * that will be have its content copied. * @param {Element} target */ }, { key: "target", set: function set(target) { if (target !== undefined) { if (target && _typeof(target) === 'object' && target.nodeType === 1) { if (this.action === 'copy' && target.hasAttribute('disabled')) { throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); } if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); } this._target = target; } else { throw new Error('Invalid "target" value, use a valid Element'); } } } /** * Gets the `target` property. * @return {String|HTMLElement} */ , get: function get() { return this._target; } }]); return ClipboardAction; }(); /* harmony default export */ var clipboard_action = (ClipboardAction); function clipboard_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return clipboard_typeof(obj); } function clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function clipboard_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) clipboard_defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /** * Helper function to retrieve attribute value. * @param {String} suffix * @param {Element} element */ function getAttributeValue(suffix, element) { var attribute = "data-clipboard-".concat(suffix); if (!element.hasAttribute(attribute)) { return; } return element.getAttribute(attribute); } /** * Base class which takes one or more elements, adds event listeners to them, * and instantiates a new `ClipboardAction` on each click. */ var Clipboard = /*#__PURE__*/function (_Emitter) { _inherits(Clipboard, _Emitter); var _super = _createSuper(Clipboard); /** * @param {String|HTMLElement|HTMLCollection|NodeList} trigger * @param {Object} options */ function Clipboard(trigger, options) { var _this; clipboard_classCallCheck(this, Clipboard); _this = _super.call(this); _this.resolveOptions(options); _this.listenClick(trigger); return _this; } /** * Defines if attributes would be resolved using internal setter functions * or custom functions that were passed in the constructor. * @param {Object} options */ clipboard_createClass(Clipboard, [{ key: "resolveOptions", value: function resolveOptions() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.action = typeof options.action === 'function' ? options.action : this.defaultAction; this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; this.text = typeof options.text === 'function' ? options.text : this.defaultText; this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body; } /** * Adds a click event listener to the passed trigger. * @param {String|HTMLElement|HTMLCollection|NodeList} trigger */ }, { key: "listenClick", value: function listenClick(trigger) { var _this2 = this; this.listener = listen_default()(trigger, 'click', function (e) { return _this2.onClick(e); }); } /** * Defines a new `ClipboardAction` on each click event. * @param {Event} e */ }, { key: "onClick", value: function onClick(e) { var trigger = e.delegateTarget || e.currentTarget; if (this.clipboardAction) { this.clipboardAction = null; } this.clipboardAction = new clipboard_action({ action: this.action(trigger), target: this.target(trigger), text: this.text(trigger), container: this.container, trigger: trigger, emitter: this }); } /** * Default `action` lookup function. * @param {Element} trigger */ }, { key: "defaultAction", value: function defaultAction(trigger) { return getAttributeValue('action', trigger); } /** * Default `target` lookup function. * @param {Element} trigger */ }, { key: "defaultTarget", value: function defaultTarget(trigger) { var selector = getAttributeValue('target', trigger); if (selector) { return document.querySelector(selector); } } /** * Returns the support of the given action, or all actions if no action is * given. * @param {String} [action] */ }, { key: "defaultText", /** * Default `text` lookup function. * @param {Element} trigger */ value: function defaultText(trigger) { return getAttributeValue('text', trigger); } /** * Destroy lifecycle. */ }, { key: "destroy", value: function destroy() { this.listener.destroy(); if (this.clipboardAction) { this.clipboardAction.destroy(); this.clipboardAction = null; } } }], [{ key: "isSupported", value: function isSupported() { var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; var actions = typeof action === 'string' ? [action] : action; var support = !!document.queryCommandSupported; actions.forEach(function (action) { support = support && !!document.queryCommandSupported(action); }); return support; } }]); return Clipboard; }((tiny_emitter_default())); /* harmony default export */ var clipboard = (Clipboard); /***/ }), /***/ 828: /***/ (function(module) { var DOCUMENT_NODE_TYPE = 9; /** * A polyfill for Element.matches() */ if (typeof Element !== 'undefined' && !Element.prototype.matches) { var proto = Element.prototype; proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector; } /** * Finds the closest parent that matches a selector. * * @param {Element} element * @param {String} selector * @return {Function} */ function closest (element, selector) { while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { if (typeof element.matches === 'function' && element.matches(selector)) { return element; } element = element.parentNode; } } module.exports = closest; /***/ }), /***/ 438: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var closest = __webpack_require__(828); /** * Delegates event to a selector. * * @param {Element} element * @param {String} selector * @param {String} type * @param {Function} callback * @param {Boolean} useCapture * @return {Object} */ function _delegate(element, selector, type, callback, useCapture) { var listenerFn = listener.apply(this, arguments); element.addEventListener(type, listenerFn, useCapture); return { destroy: function() { element.removeEventListener(type, listenerFn, useCapture); } } } /** * Delegates event to a selector. * * @param {Element|String|Array} [elements] * @param {String} selector * @param {String} type * @param {Function} callback * @param {Boolean} useCapture * @return {Object} */ function delegate(elements, selector, type, callback, useCapture) { // Handle the regular Element usage if (typeof elements.addEventListener === 'function') { return _delegate.apply(null, arguments); } // Handle Element-less usage, it defaults to global delegation if (typeof type === 'function') { // Use `document` as the first parameter, then apply arguments // This is a short way to .unshift `arguments` without running into deoptimizations return _delegate.bind(null, document).apply(null, arguments); } // Handle Selector-based usage if (typeof elements === 'string') { elements = document.querySelectorAll(elements); } // Handle Array-like based usage return Array.prototype.map.call(elements, function (element) { return _delegate(element, selector, type, callback, useCapture); }); } /** * Finds closest match and invokes callback. * * @param {Element} element * @param {String} selector * @param {String} type * @param {Function} callback * @return {Function} */ function listener(element, selector, type, callback) { return function(e) { e.delegateTarget = closest(e.target, selector); if (e.delegateTarget) { callback.call(element, e); } } } module.exports = delegate; /***/ }), /***/ 879: /***/ (function(__unused_webpack_module, exports) { /** * Check if argument is a HTML element. * * @param {Object} value * @return {Boolean} */ exports.node = function(value) { return value !== undefined && value instanceof HTMLElement && value.nodeType === 1; }; /** * Check if argument is a list of HTML elements. * * @param {Object} value * @return {Boolean} */ exports.nodeList = function(value) { var type = Object.prototype.toString.call(value); return value !== undefined && (type === '[object NodeList]' || type === '[object HTMLCollection]') && ('length' in value) && (value.length === 0 || exports.node(value[0])); }; /** * Check if argument is a string. * * @param {Object} value * @return {Boolean} */ exports.string = function(value) { return typeof value === 'string' || value instanceof String; }; /** * Check if argument is a function. * * @param {Object} value * @return {Boolean} */ exports.fn = function(value) { var type = Object.prototype.toString.call(value); return type === '[object Function]'; }; /***/ }), /***/ 370: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var is = __webpack_require__(879); var delegate = __webpack_require__(438); /** * Validates all params and calls the right * listener function based on its target type. * * @param {String|HTMLElement|HTMLCollection|NodeList} target * @param {String} type * @param {Function} callback * @return {Object} */ function listen(target, type, callback) { if (!target && !type && !callback) { throw new Error('Missing required arguments'); } if (!is.string(type)) { throw new TypeError('Second argument must be a String'); } if (!is.fn(callback)) { throw new TypeError('Third argument must be a Function'); } if (is.node(target)) { return listenNode(target, type, callback); } else if (is.nodeList(target)) { return listenNodeList(target, type, callback); } else if (is.string(target)) { return listenSelector(target, type, callback); } else { throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); } } /** * Adds an event listener to a HTML element * and returns a remove listener function. * * @param {HTMLElement} node * @param {String} type * @param {Function} callback * @return {Object} */ function listenNode(node, type, callback) { node.addEventListener(type, callback); return { destroy: function() { node.removeEventListener(type, callback); } } } /** * Add an event listener to a list of HTML elements * and returns a remove listener function. * * @param {NodeList|HTMLCollection} nodeList * @param {String} type * @param {Function} callback * @return {Object} */ function listenNodeList(nodeList, type, callback) { Array.prototype.forEach.call(nodeList, function(node) { node.addEventListener(type, callback); }); return { destroy: function() { Array.prototype.forEach.call(nodeList, function(node) { node.removeEventListener(type, callback); }); } } } /** * Add an event listener to a selector * and returns a remove listener function. * * @param {String} selector * @param {String} type * @param {Function} callback * @return {Object} */ function listenSelector(selector, type, callback) { return delegate(document.body, selector, type, callback); } module.exports = listen; /***/ }), /***/ 817: /***/ (function(module) { function select(element) { var selectedText; if (element.nodeName === 'SELECT') { element.focus(); selectedText = element.value; } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { var isReadOnly = element.hasAttribute('readonly'); if (!isReadOnly) { element.setAttribute('readonly', ''); } element.select(); element.setSelectionRange(0, element.value.length); if (!isReadOnly) { element.removeAttribute('readonly'); } selectedText = element.value; } else { if (element.hasAttribute('contenteditable')) { element.focus(); } var selection = window.getSelection(); var range = document.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); selectedText = selection.toString(); } return selectedText; } module.exports = select; /***/ }), /***/ 279: /***/ (function(module) { function E () { // Keep this empty so it's easier to inherit from // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) } E.prototype = { on: function (name, callback, ctx) { var e = this.e || (this.e = {}); (e[name] || (e[name] = [])).push({ fn: callback, ctx: ctx }); return this; }, once: function (name, callback, ctx) { var self = this; function listener () { self.off(name, listener); callback.apply(ctx, arguments); } listener._ = callback; return this.on(name, listener, ctx); }, emit: function (name) { var data = [].slice.call(arguments, 1); var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); var i = 0; var len = evtArr.length; for (i; i < len; i++) { evtArr[i].fn.apply(evtArr[i].ctx, data); } return this; }, off: function (name, callback) { var e = this.e || (this.e = {}); var evts = e[name]; var liveEvents = []; if (evts && callback) { for (var i = 0, len = evts.length; i < len; i++) { if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]); } } // Remove event from queue to prevent memory leak // Suggested by https://github.com/lazd // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 (liveEvents.length) ? e[name] = liveEvents : delete e[name]; return this; } }; module.exports = E; module.exports.TinyEmitter = E; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(__webpack_module_cache__[moduleId]) { /******/ return __webpack_module_cache__[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(exports, definition) { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }; /******/ }(); /******/ /************************************************************************/ /******/ // module exports must be returned from runtime so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports /******/ return __webpack_require__(134); /******/ })() .default; }); }); const Clipboard = /*@__PURE__*/getDefaultExportFromCjs(clipboard); function C(e, a, o) { var t, r, i, s, l, c, M = /([$\^\\\/()|?+*\[\]{}.\-])/g; return o = o || {}, c = o.delimiter || "{}", s = c.length, l = Math.ceil(s / 2), r = c.substr(0, l).replace(M, "\\$1"), i = c.substr(l, s).replace(M, "\\$1") || r, t = new RegExp(r + "[^" + r + i + "]+" + i, "g"), e.replace(t, function(y) { var p = y.slice(l, -l), m = p.split("."), n, u = 0, h = m.length; if (p in a) n = a[p]; else for (n = a; u < h; u++) if (m[u] in n) n = n[m[u]]; else return y; return n; }); } var I = C; function d$1(e) { return e != null && typeof e == "object" && e["@@functional/placeholder"] === !0; } function g$1(e) { return function a(o) { return arguments.length === 0 || d$1(o) ? a : e.apply(this, arguments); }; } function v$1(e) { return function a(o, t) { switch (arguments.length) { case 0: return a; case 1: return d$1(o) ? a : g$1(function(r) { return e(o, r); }); default: return d$1(o) && d$1(t) ? a : d$1(o) ? g$1(function(r) { return e(r, t); }) : d$1(t) ? g$1(function(r) { return e(o, r); }) : e(o, t); } }; } function P(e) { return Object.prototype.toString.call(e) === "[object String]"; } const q = Number.isInteger || function(a) { return a << 0 === a; }; var N = /* @__PURE__ */ v$1(function(a, o) { var t = a < 0 ? o.length + a : a; return P(o) ? o.charAt(t) : o[t]; }); const x = N; var R = /* @__PURE__ */ v$1(function(a, o) { return a.map(function(t) { for (var r = o, i = 0, s; i < t.length; ) { if (r == null) return; s = t[i], r = q(s) ? x(s, r) : r[s], i += 1; } return r; }); }); const w$1 = R; var V = /* @__PURE__ */ v$1(function(a, o) { return w$1([a], o)[0]; }); const F$1 = V, T$1 = { total: "total", processing: "Processando", other: "Outro", order: { amount: "Total", delivery: "Frete" } }, E$1 = { common: { payButton: "Pagar" }, card: { title: "Cart\xE3o de cr\xE9dito", newCardTitle: "Novo cart\xE3o de cr\xE9dito", newCard: { errorMessageAllFieldsRequired: "Preencha todos os campos para prosseguir.", creditCard: { validity: "v\xE1lido at\xE9", name: "Nome Completo", cvv: "CVV", safeEnvironment: "ambiente seguro" }, fields: { cardNumber: { label: "N\xFAmero do cart\xE3o", errorMessageRequired: "N\xFAmero do cart\xE3o \xE9 obrigat\xF3rio.", errorMessageMin: "N\xFAmero do cart\xE3o incompleto.", errorMessageInvalidFormat: "N\xFAmero do cart\xE3o inv\xE1lido." }, expirationDate: { label: "Expira\xE7\xE3o (MM/AA)", errorMessageRequired: "Validade \xE9 obrigat\xF3ria.", errorMessageMin: "Data de expira\xE7\xE3o incompleta.", errorMessageMonthInvalid: "Data de expira\xE7\xE3o inv\xE1lida.", errorMessageInvalidFormat: "Cart\xE3o vencido." }, cvv: { label: "CVV", errorMessageRequired: "CVV \xE9 obrigat\xF3rio.", errorMessageMin: "CVV incompleto.", errorMessageInvalidFormat: "CVV inv\xE1lido." }, name: { label: "Nome do titular do cart\xE3o", errorMessageRequired: "Nome do titular \xE9 obrigat\xF3rio.", errorMessageInvalidFormat: "Nome inv\xE1lido." }, installments: { label: "Parcelamento", errorMessageRequired: "Selecione uma parcela para prosseguir." }, saveCard: { label: "Armazenar cart\xE3o para compras futuras" } } }, savedCards: { card: "Cart\xE3o de cr\xE9dito \u2022\u2022\u2022\u2022", fields: { cvv: { description: "Para efetuar sua transa\xE7\xE3o de forma segura, informe o CVV presente no verso do seu cart\xE3o.", label: "C\xF3digo de seguran\xE7a (CVV)", errorMessage: "Formato inv\xE1lido, verifique os dados do cart\xE3o." }, installments: { label: "Parcelamento", errorMessage: "Parcelamento \xE9 obrigat\xF3rio." } } } }, pix: { title: "PIX", descriptions: { showQrCode: "O QR Code do PIX ser\xE1 exibido", paymentConfirmation: "ap\xF3s a confirma\xE7\xE3o de compra" } }, boleto: { title: "Boleto", descriptions: { showBarcode: "O boleto com o c\xF3digo de barras ser\xE1 exibido", paymentConfirmation: "ap\xF3s a confirma\xE7\xE3o de compra" } }, nupay: { title: "Nubank", content: { title: "Mais r\xE1pido, f\xE1cil e seguro.", subtitle: "Novidade", description: "Voc\xEA pode ter um limite extra para essa compra! Verifique no momento do pagamento se est\xE1 dispon\xEDvel." }, stepper: { first: "A compra ser\xE1 finalizada no app do Nubank.", second: "Parcele sua compra no cr\xE9dito ou pague \xE0 vista pelo d\xE9bito.", third: "N\xE3o precisa preencher os dados do seu cart\xE3o.", fourth: "Pode confiar, \xE9 seguro. Sua compra \xE9 protegida pelas nossas medidas de seguran\xE7a." }, details: { first: "Para usar essa forma de pagamento, voc\xEA", second: "precisa ser cliente do Nubank e ter limite de cr\xE9dito ou saldo dispon\xEDvel", third: "na conta." } }, drip: { title: "PIX parcelado + cashback", descriptions: { first: "S\xE3o 3 passos simples para ter sua", second: "compra confirmada em {installments}x no PIX parcelado, zero juros, cashback", third: "e dependendo do seu perfil, com ou sem pagamento de entrada." }, installments: { fifteenDays: "\xB0 PIX em 15 dias", thirtyDays: "\xB0 PIX em 30 dias" } } }, B = { common: { actionButtonLabel: "Continuar", clipboardClicked: "C\xF3digo Copiado", clipboard: "Copiar C\xF3digo", clipboardDescription: "Escaneie ou clique para copiar o c\xF3digo para pagar no aplicativo do seu banco." }, pix: { title: "PIX dispon\xEDvel para pagamento!", subtitle: "Fa\xE7a o pagamento do PIX abaixo para finalizar o seu pedido:", waitingPaymentMessage: "Pedido aguardando pagamento!", importantMessage: "Informa\xE7\xF5es importantes", importantMessageDefault: "Caso o tempo de pagamento tenha expirado e o Pix n\xE3o tenha sido pago, seu pedido ser\xE1 cancelado automaticamente. N\xE3o pague ap\xF3s este hor\xE1rio.", importantMessageFirst: "Vamos avisar por e-mail quando o banco identificar o dep\xF3sito. Esse processo \xE9 autom\xE1tico.", importantMessageSecond: "Caso o tempo de pagamento tenha expirado e o Pix n\xE3o tenha sido pago, seu pedido ser\xE1 cancelado automaticamente. N\xE3o pague ap\xF3s este hor\xE1rio.", errorMessage: "N\xE3o foi poss\xEDvel concluir sua transa\xE7\xE3o, tente novamente.", errorMessageExpired: "Caso j\xE1 tenha feito o pagamento, aguarde o e-mail de confirma\xE7\xE3o. Se n\xE3o fez o pagamento ainda, fa\xE7a um novo pedido.", errorTitleExpired: "O c\xF3digo PIX expirou", successMessage: "Pagamento feito com sucesso", expirationTimeCode: "Seu c\xF3digo", expirationTime: "expira em:", amount: "Valor a pagar:", paymentInstructions: "Para fazer o pagamento", paymentInstructionsFirstMessage: "Abra o aplicativo do seu banco e selecione o ambiente do PIX.", paymentInstructionsSecondMessage: "Escolha a op\xE7\xE3o pagar com c\xF3digo e cole o c\xF3digo acima.", paymentInstructionsThirdMessage: "Confirme as informa\xE7\xF5es e finalize a sua compra." }, boleto: { title: "Boleto dispon\xEDvel para pagamento!", subtitle: "Fa\xE7a o pagamento do Boleto abaixo para finalizar o seu pedido:", waitingPaymentMessage: "Pedido aguardando pagamento!", errorMessage: "N\xE3o foi poss\xEDvel concluir sua transa\xE7\xE3o, tente novamente.", clipboard: "Copiar C\xF3digo", amount: "Valor a pagar:", expirationDate: "Vencimento:", importantMessage: "Informa\xE7\xF5es importantes", importantMessageDefault: "Vamos avisar por e-mail quando o banco identificar o dep\xF3sito. Esse processo pode levar at\xE9 48h e \xE9 autom\xE1tico.", importantMessageFirst: "Caso o boleto n\xE3o seja pago at\xE9 {expirationDate}, o pedido ser\xE1 cancelado automaticamente. N\xE3o pague ap\xF3s esta data.", showBoleto: "Exibir Boleto" }, card: { errorMessage: "N\xE3o foi poss\xEDvel concluir sua transa\xE7\xE3o, tente novamente." }, drip: { errorMessage: "N\xE3o foi poss\xEDvel concluir sua transa\xE7\xE3o, tente novamente." }, session: { errorMessage: "N\xE3o foi poss\xEDvel concluir sua transa\xE7\xE3o, tente novamente." }, nupay: { errorMessage: "N\xE3o foi poss\xEDvel concluir sua transa\xE7\xE3o, tente novamente." }, success: { description: "Pedido recebido com sucesso!", actionButtonLabel: "Continuar" }, error: { actionButtonLabel: "Tentar Novamente" } }, D = { safeEnvironment: "Ambiente seguro", order: "Pedido", identification: "Identifica\xE7\xE3o", payment: "Pagamento", secureAndEncrypted: "Seguro e encriptado", customer: { personalData: "Dados pessoais", document: "Documento", address: "Endere\xE7o", submitButton: "Pr\xF3ximo", fields: { name: { label: "Nome completo", errorMessageRequired: "Nome \xE9 obrigat\xF3rio", errorMessageInvalidFormat: "Nome inv\xE1lido." }, email: { label: "E-mail", errorMessageRequired: "E-mail \xE9 obrigat\xF3rio.", errorMessageInvalidFormat: "E-mail inv\xE1lido." }, phoneNumber: { label: "Telefone", errorMessageRequired: "Telefone \xE9 obrigat\xF3rio.", errorMessageInvalidFormat: "Formato inv\xE1lido, verifique o seu n\xFAmero de telefone." }, documentCountry: { label: "Pa\xEDs do documento", errorMessageRequired: "Pa\xEDs \xE9 obrigat\xF3rio." }, documentType: { label: "Tipo do documento", errorMessageRequired: "Tipo do documento \xE9 obrigat\xF3rio." }, identification: { labelBrazil: "CPF/CNPJ", errorMessageRequiredBrazil: "N\xFAmero do documento \xE9 obrigat\xF3rio.", errorMessageInvalidCpf: "CPF inv\xE1lido.", errorMessageInvalidCnpj: "CNPJ inv\xE1lido.", errorInvalidNationalDocument: "Seu documento est\xE1 incompleto.", errorRequiredCountry: "Selecione um pa\xEDs.", errorRequiredType: "Selecione o tipo do documento.", errorRequiredCountryAndType: "Selecione o pa\xEDs e o tipo do documento.", labelInternational: "N\xFAmero do documento", errorMessageRequiredInternational: "N\xFAmero do documento \xE9 obrigat\xF3rio.", errorMessageInvalidFormatInternational: "Formato inv\xE1lido, verifique o seu documento." }, zipCode: { labelBrazil: "CEP", descriptionBrazil: "N\xE3o sei meu CEP", errorMessageRequiredBrazil: "CEP \xE9 obrigat\xF3rio.", labelInternational: "C\xF3digo postal (CEP)", errorMessageRequiredInternational: "C\xF3digo postal \xE9 obrigat\xF3rio.", errorMessageInvalidZipCodeFormat: "C\xF3digo postal inv\xE1lido.", errorMessageRequiredCountry: "Selecione um pa\xEDs" }, street: { label: "Endere\xE7o", errorMessageRequired: "Endere\xE7o \xE9 obrigat\xF3rio." }, number: { label: "N\xFAmero", errorMessageRequired: "N\xFAmero \xE9 obrigat\xF3rio." }, complement: { label: "Complemento (opcional)" }, neighborhood: { label: "Bairro", errorMessageRequired: "Bairro \xE9 obrigat\xF3rio." }, city: { label: "Cidade", errorMessageRequired: "Cidade \xE9 obrigat\xF3rio." }, state: { label: "Estado", errorMessageRequired: "Estado \xE9 obrigat\xF3rio." }, country: { label: "Pa\xEDs", errorMessageRequired: "Pa\xEDs \xE9 obrigat\xF3rio." } } } }, b$1 = { common: T$1, paymentMethods: E$1, dialogs: B, page: D }, S = { total: "total", processing: "Processing", other: "Other", order: { amount: "Total", delivery: "Shipping fee" } }, z = { common: { payButton: "Pay" }, card: { title: "Credit Card", newCardTitle: "New Credit Card", newCard: { errorMessageAllFieldsRequired: "Fill in all fields to proceed.", creditCard: { validity: "valid thru", name: "Full Name", cvv: "CVV", safeEnvironment: "safe session" }, fields: { cardNumber: { label: "Card number", errorMessageRequired: "A card number is required.", errorMessageMin: "Incomplete card number.", errorMessageInvalidFormat: "Invalid card number." }, expirationDate: { label: "Expiration (MM/YY)", errorMessageRequired: "The expiration date is required.", errorMessageMin: "Incomplete expiration date.", errorMessageMonthInvalid: "Invalid expiration date.", errorMessageInvalidFormat: "Expired card." }, cvv: { label: "CVV", errorMessageRequired: "A CVV is required.", errorMessageMin: "Incomplete CVV.", errorMessageInvalidFormat: "Invalid CVV." }, name: { label: "Cardholder name", errorMessageRequired: "Cardholder name is required.", errorMessageInvalidFormat: "Invalid name." }, installments: { label: "Installments", errorMessageRequired: "Select an installment to proceed." }, saveCard: { label: "Save card for future use" } } }, savedCards: { card: "Credit Card \u2022\u2022\u2022\u2022", fields: { cvv: { description: "To process your transaction, please provide the CVV on the back of your card.", label: "Card Verification Value (CVV)", errorMessage: "Invalid format. Please, verify your card data." }, installments: { label: "Installments", errorMessage: "Installments are required." } } } }, pix: { title: "PIX", descriptions: { showQrCode: "The PIX QR Code will be display", paymentConfirmation: "after confirmation" } }, boleto: { title: "Boleto", descriptions: { showBarcode: "The Boleto bar code will be display", paymentConfirmation: "after confirmation" } }, nupay: { title: "Nubank", content: { title: "Faster, easier, and safer.", subtitle: "News", description: "You may have an extra limit for this purchase! Check the app if it is available." }, stepper: { first: "The purchase will be concluded in the Nubank app.", second: "Pay in cash by debit or try credit with installments.", third: "You do not need to fill in your card details.", fourth: "It's safe. Our security measures protect your purchase." }, details: { first: "To use this payment method, you", second: "must have a Nubank account with a credit limit or available balance", third: "." } }, drip: { title: "Pix with installments + cashback", descriptions: { first: "There are 3 simple steps to have your", second: "purchase confirmed in {installments}x PIX installments with no interest and cashback", third: "and depending on your profile, with or without an entry fee." }, installments: { fifteenDays: "\xB0 PIX after 15 days", thirtyDays: "\xB0 PIX after 30 days" } } }, A$1 = { common: { actionButtonLabel: "Next", clipboardClicked: "Copied!", clipboard: "Copy code", clipboardDescription: "Scan or copy the code to pay in your bank's app." }, pix: { title: "PIX is