Changeset 1972900
- Timestamp:
- 11/12/2018 10:19:47 AM (7 years ago)
- Location:
- testimonials-slider-block/trunk
- Files:
-
- 6 edited
-
README.md (modified) (1 diff)
-
dist/blocks.build.js (modified) (1 diff)
-
dist/blocks.style.build.css (modified) (1 diff)
-
readme.txt (modified) (1 diff)
-
src/block/slider.js (modified) (8 diffs)
-
src/block/style.scss (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
testimonials-slider-block/trunk/README.md
r1927943 r1972900 35 35 --- 36 36 37 Feel free to say hi to me on Twitter [@muhsinlk](https://twitter.com/muhsinlk/) 37 This project was based on [guten-testimonial-block](https://github.com/laccadive-io/guten-testimonial-block) which was bootstrapped with [Create Guten Block](https://github.com/ahmadawais/create-guten-block). -
testimonials-slider-block/trunk/dist/blocks.build.js
r1927943 r1972900 366 366 /*! all exports used */ 367 367 /*! ModuleConcatenation bailout: Cannot concat with ./node_modules/babel-runtime/core-js/object/assign.js (<- Module is not an ECMAScript module) */ 368 /*! ModuleConcatenation bailout: Cannot concat with ./node_modules/babel-runtime/helpers/toConsumableArray.js (<- Module is not an ECMAScript module) */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js\nvar toConsumableArray = __webpack_require__(1);\nvar toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/core-js/object/assign.js\nvar object_assign = __webpack_require__(2);\nvar assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);\n\n// EXTERNAL MODULE: ./src/block/style.scss\nvar style = __webpack_require__(61);\n\n// EXTERNAL MODULE: ./src/block/editor.scss\nvar editor = __webpack_require__(62);\n\n// CONCATENATED MODULE: ./src/block/slider.js\n\n\n/**\r\n * BLOCK: my-block\r\n *\r\n * Registering a basic block with Gutenberg.\r\n * Simple block, renders and saves the same content without any interactivity.\r\n */\n\n// Import CSS.\n\n\n\nvar __ = wp.i18n.__; // The __() for internationalization.\nvar registerBlockType = wp.blocks.registerBlockType; // The registerBlockType() to register blocks.\nvar _wp$editor = wp.editor,\n MediaUpload = _wp$editor.MediaUpload,\n PlainText = _wp$editor.PlainText;\n\n/**\r\n * Register: a Gutenberg Block.\r\n *\r\n * Registers a new block provided a unique name and an object defining its\r\n * behavior. Once registered, the block is made editor as an option to any\r\n * editor interface where blocks are implemented.\r\n *\r\n * @link https://wordpress.org/gutenberg/handbook/block-api/\r\n * @param {string} name Block name.\r\n * @param {Object} settings Block settings.\r\n * @return {?WPBlock} The block, if it has been successfully\r\n * registered; otherwise `undefined`.\r\n */\n\nregisterBlockType("gts/testimonials-slider-block", {\n // Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.\n title: __("Testimonials Slider"), // Block title.\n icon: "format-quote", // Block icon from Dashicons → https://developer.wordpress.org/resource/dashicons/.\n category: "common", // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.\n keywords: [__("Testimonials Slider"), __("gts")],\n\n attributes: {\n testimonials: {\n type: "array",\n source: "query",\n default: [],\n selector: "blockquote.testimonial",\n query: {\n image: {\n source: "attribute",\n selector: "img",\n attribute: "src"\n },\n index: {\n type: "string",\n source: "text",\n selector: "span.testimonial-index"\n },\n content: {\n type: "string",\n source: "text",\n selector: "span.testimonial-text"\n },\n author: {\n type: "string",\n source: "text",\n selector: "span.testimonial-author span"\n },\n link: {\n type: "string",\n source: "text",\n selector: ".testimonial-author-link"\n }\n }\n },\n id: {\n type: "string",\n source: "attribute",\n selector: ".carousel.slide",\n attribute: "id"\n }\n },\n\n /**\r\n * The edit function describes the structure of your block in the context of the editor.\r\n * This represents what the editor will render when the block is used.\r\n *\r\n * The "edit" property must be a valid function.\r\n *\r\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\r\n */\n\n // The "edit" property must be a valid function.\n edit: function edit(props) {\n var testimonials = props.attributes.testimonials;\n\n if (!props.attributes.id) {\n var id = "testimonial" + Math.floor(Math.random() * 100);\n props.setAttributes({\n id: id\n });\n }\n\n var testimonialsList = testimonials.sort(function (a, b) {\n return a.index - b.index;\n }).map(function (testimonial) {\n return wp.element.createElement(\n "div",\n { className: "gts-testimonial-block" },\n wp.element.createElement(\n "p",\n null,\n wp.element.createElement(\n "span",\n null,\n "Insert Testmonial ",\n Number(testimonial.index) + 1,\n " Here:"\n ),\n wp.element.createElement(\n "span",\n {\n className: "remove-testimonial",\n onClick: function onClick() {\n var newTestimonials = testimonials.filter(function (item) {\n return item.index != testimonial.index;\n }).map(function (t) {\n if (t.index > testimonial.index) {\n t.index -= 1;\n }\n\n return t;\n });\n\n props.setAttributes({\n testimonials: newTestimonials\n });\n }\n },\n wp.element.createElement("i", { className: "fa fa-times" })\n )\n ),\n wp.element.createElement(\n "blockquote",\n { className: "wp-block-quote" },\n wp.element.createElement(PlainText, {\n className: "content-plain-text",\n style: { height: 58 },\n placeholder: "Testimonial Text",\n value: testimonial.content,\n autoFocus: true,\n onChange: function onChange(content) {\n var newObject = assign_default()({}, testimonial, {\n content: content\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n }),\n wp.element.createElement(\n "div",\n { className: "row" },\n wp.element.createElement(\n "div",\n { className: "gts__picture col-3" },\n wp.element.createElement(MediaUpload, {\n onSelect: function onSelect(media) {\n var image = media.sizes.medium ? media.sizes.medium.url : media.url;\n var newObject = assign_default()({}, testimonial, {\n image: image\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n },\n type: "image",\n value: testimonial.image,\n render: function render(_ref) {\n var open = _ref.open;\n return !!testimonial.image ? wp.element.createElement(\n "div",\n null,\n props.isSelected && wp.element.createElement(\n "div",\n { className: "gts__picture__actions" },\n wp.element.createElement(\n "a",\n {\n onClick: function onClick() {\n var newObject = assign_default()({}, testimonial, {\n image: null\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n },\n "\\xD7 Remove"\n )\n ),\n wp.element.createElement("div", {\n className: "gts__picture__image",\n style: {\n backgroundImage: "url(" + testimonial.image + ")"\n },\n onClick: open\n })\n ) : wp.element.createElement(\n "a",\n { className: "gts__picture__image", onClick: open },\n "Select Image"\n );\n }\n })\n ),\n wp.element.createElement(\n "div",\n { className: "col-9 mt-3" },\n wp.element.createElement(PlainText, {\n className: "author-plain-text",\n placeholder: "Author",\n value: testimonial.author,\n onChange: function onChange(author) {\n var newObject = assign_default()({}, testimonial, {\n author: author\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n }),\n wp.element.createElement(PlainText, {\n className: "link-plain-text",\n placeholder: "Link to Author Profile",\n value: testimonial.link,\n onChange: function onChange(link) {\n var newObject = assign_default()({}, testimonial, {\n link: link\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n })\n )\n )\n )\n );\n });\n return wp.element.createElement(\n "div",\n null,\n testimonialsList,\n wp.element.createElement(\n "button",\n {\n className: "add-more-testimonial",\n onClick: function onClick(content) {\n return props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(props.attributes.testimonials), [{\n index: props.attributes.testimonials.length,\n content: "",\n author: "",\n link: ""\n }])\n });\n }\n },\n "+"\n )\n );\n },\n\n /**\r\n * The save function defines the way in which the different attributes should be combined\r\n * into the final markup, which is then serialized by Gutenberg into post_content.\r\n *\r\n * The "save" property must be specified and must be a valid function.\r\n *\r\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\r\n */\n save: function save(props) {\n var testimonials = props.attributes.testimonials; // Content in our block.\n\n var id = props.attributes.id;\n var carouselIndicators = testimonials.map(function (testimonial, index) {\n return wp.element.createElement("li", {\n "data-target": "#" + id,\n "data-slide-to": index,\n className: testimonial.index == 0 ? "active" : ""\n });\n });\n var testimonialsList = testimonials.map(function (testimonial) {\n var carouselClass = testimonial.index == 0 ? "carousel-item active" : "carousel-item";\n return wp.element.createElement(\n "div",\n { className: carouselClass, key: testimonial.index },\n wp.element.createElement(\n "blockquote",\n { className: "testimonial" },\n wp.element.createElement(\n "span",\n { className: "testimonial-index", style: { display: "none" } },\n testimonial.index\n ),\n testimonial.content && wp.element.createElement(\n "p",\n { className: "testimonial-text-container" },\n wp.element.createElement("i", { className: "fa fa-quote-left pull-left", "aria-hidden": "true" }),\n wp.element.createElement(\n "span",\n { className: "testimonial-text" },\n testimonial.content\n ),\n wp.element.createElement("i", { "class": "fa fa-quote-right pull-right", "aria-hidden": "true" })\n ),\n wp.element.createElement(\n "div",\n { className: "row" },\n testimonial.image && wp.element.createElement(\n "div",\n { className: "gts__picture col-3" },\n wp.element.createElement("img", { src: testimonial.image, style: { display: \'none\' } }),\n wp.element.createElement("div", {\n className: "gts__picture__image",\n style: {\n backgroundImage: "url(" + testimonial.image + ")"\n }\n })\n ),\n wp.element.createElement(\n "div",\n { className: "testimonial-author-container mt-3 col-9" },\n testimonial.author && wp.element.createElement(\n "p",\n { className: "testimonial-author-name" },\n wp.element.createElement(\n "span",\n { className: "testimonial-author" },\n "\\u2014 ",\n wp.element.createElement(\n "span",\n null,\n testimonial.author\n )\n )\n ),\n testimonial.link && wp.element.createElement(\n "p",\n { className: "testimonial-author-container" },\n wp.element.createElement(\n "a",\n { target: "_blank", href: testimonial.link },\n wp.element.createElement("i", { className: "fas fa-user" }),\n wp.element.createElement(\n "span",\n { className: "testimonial-author-link" },\n testimonial.link\n )\n )\n )\n )\n )\n )\n );\n });\n if (testimonials.length > 0) {\n return wp.element.createElement(\n "div",\n { className: "testimonial-slider" },\n wp.element.createElement(\n "div",\n { className: "carousel slide", "data-ride": "carousel", id: id },\n wp.element.createElement(\n "ol",\n { className: "carousel-indicators" },\n carouselIndicators\n ),\n wp.element.createElement(\n "div",\n { className: "carousel-inner w-75 mx-auto" },\n testimonialsList\n ),\n wp.element.createElement(\n "a",\n {\n "class": "carousel-control-prev",\n href: "#" + id,\n role: "button",\n "data-slide": "prev"\n },\n wp.element.createElement(\n "span",\n { "class": "carousel-control-prev-icon", "aria-hidden": "true" },\n wp.element.createElement("i", { className: "fa fa-chevron-left" })\n ),\n wp.element.createElement(\n "span",\n { "class": "sr-only" },\n "Previous"\n )\n ),\n wp.element.createElement(\n "a",\n {\n "class": "carousel-control-next",\n href: "#" + id,\n role: "button",\n "data-slide": "next"\n },\n wp.element.createElement(\n "span",\n { "class": "carousel-control-next-icon", "aria-hidden": "true" },\n wp.element.createElement("i", { className: "fa fa-chevron-right" })\n ),\n wp.element.createElement(\n "span",\n { "class": "sr-only" },\n "Next"\n )\n )\n )\n );\n } else return null;\n }\n});\n// CONCATENATED MODULE: ./src/index.js\n/**\r\n * Import blocks\r\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2svc2xpZGVyLmpzP2NlOWEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luZGV4LmpzPzM3MDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX09iamVjdCRhc3NpZ24gZnJvbSBcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduXCI7XG4vKipcclxuICogQkxPQ0s6IG15LWJsb2NrXHJcbiAqXHJcbiAqIFJlZ2lzdGVyaW5nIGEgYmFzaWMgYmxvY2sgd2l0aCBHdXRlbmJlcmcuXHJcbiAqIFNpbXBsZSBibG9jaywgcmVuZGVycyBhbmQgc2F2ZXMgdGhlIHNhbWUgY29udGVudCB3aXRob3V0IGFueSBpbnRlcmFjdGl2aXR5LlxyXG4gKi9cblxuLy8gIEltcG9ydCBDU1MuXG5pbXBvcnQgXCIuL3N0eWxlLnNjc3NcIjtcbmltcG9ydCBcIi4vZWRpdG9yLnNjc3NcIjtcblxudmFyIF9fID0gd3AuaTE4bi5fXzsgLy8gVGhlIF9fKCkgZm9yIGludGVybmF0aW9uYWxpemF0aW9uLlxudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlOyAvLyBUaGUgcmVnaXN0ZXJCbG9ja1R5cGUoKSB0byByZWdpc3RlciBibG9ja3MuXG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBNZWRpYVVwbG9hZCA9IF93cCRlZGl0b3IuTWVkaWFVcGxvYWQsXG4gICAgUGxhaW5UZXh0ID0gX3dwJGVkaXRvci5QbGFpblRleHQ7XG5cbi8qKlxyXG4gKiBSZWdpc3RlcjogYSBHdXRlbmJlcmcgQmxvY2suXHJcbiAqXHJcbiAqIFJlZ2lzdGVycyBhIG5ldyBibG9jayBwcm92aWRlZCBhIHVuaXF1ZSBuYW1lIGFuZCBhbiBvYmplY3QgZGVmaW5pbmcgaXRzXHJcbiAqIGJlaGF2aW9yLiBPbmNlIHJlZ2lzdGVyZWQsIHRoZSBibG9jayBpcyBtYWRlIGVkaXRvciBhcyBhbiBvcHRpb24gdG8gYW55XHJcbiAqIGVkaXRvciBpbnRlcmZhY2Ugd2hlcmUgYmxvY2tzIGFyZSBpbXBsZW1lbnRlZC5cclxuICpcclxuICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gICBuYW1lICAgICBCbG9jayBuYW1lLlxyXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgc2V0dGluZ3MgQmxvY2sgc2V0dGluZ3MuXHJcbiAqIEByZXR1cm4gez9XUEJsb2NrfSAgICAgICAgICBUaGUgYmxvY2ssIGlmIGl0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseVxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZDsgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxyXG4gKi9cblxucmVnaXN0ZXJCbG9ja1R5cGUoXCJndHMvdGVzdGltb25pYWxzLXNsaWRlci1ibG9ja1wiLCB7XG4gIC8vIEJsb2NrIG5hbWUuIEJsb2NrIG5hbWVzIG11c3QgYmUgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBuYW1lc3BhY2UgcHJlZml4LiBFeGFtcGxlOiBteS1wbHVnaW4vbXktY3VzdG9tLWJsb2NrLlxuICB0aXRsZTogX18oXCJUZXN0aW1vbmlhbHMgU2xpZGVyXCIpLCAvLyBCbG9jayB0aXRsZS5cbiAgaWNvbjogXCJmb3JtYXQtcXVvdGVcIiwgLy8gQmxvY2sgaWNvbiBmcm9tIERhc2hpY29ucyDihpIgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZXNvdXJjZS9kYXNoaWNvbnMvLlxuICBjYXRlZ29yeTogXCJjb21tb25cIiwgLy8gQmxvY2sgY2F0ZWdvcnkg4oCUIEdyb3VwIGJsb2NrcyB0b2dldGhlciBiYXNlZCBvbiBjb21tb24gdHJhaXRzIEUuZy4gY29tbW9uLCBmb3JtYXR0aW5nLCBsYXlvdXQgd2lkZ2V0cywgZW1iZWQuXG4gIGtleXdvcmRzOiBbX18oXCJUZXN0aW1vbmlhbHMgU2xpZGVyXCIpLCBfXyhcImd0c1wiKV0sXG5cbiAgYXR0cmlidXRlczoge1xuICAgIHRlc3RpbW9uaWFsczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgc291cmNlOiBcInF1ZXJ5XCIsXG4gICAgICBkZWZhdWx0OiBbXSxcbiAgICAgIHNlbGVjdG9yOiBcImJsb2NrcXVvdGUudGVzdGltb25pYWxcIixcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgc291cmNlOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICAgIHNlbGVjdG9yOiBcImltZ1wiLFxuICAgICAgICAgIGF0dHJpYnV0ZTogXCJzcmNcIlxuICAgICAgICB9LFxuICAgICAgICBpbmRleDoge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgc291cmNlOiBcInRleHRcIixcbiAgICAgICAgICBzZWxlY3RvcjogXCJzcGFuLnRlc3RpbW9uaWFsLWluZGV4XCJcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgc291cmNlOiBcInRleHRcIixcbiAgICAgICAgICBzZWxlY3RvcjogXCJzcGFuLnRlc3RpbW9uaWFsLXRleHRcIlxuICAgICAgICB9LFxuICAgICAgICBhdXRob3I6IHtcbiAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgIHNvdXJjZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgc2VsZWN0b3I6IFwic3Bhbi50ZXN0aW1vbmlhbC1hdXRob3Igc3BhblwiXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgIHNvdXJjZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgc2VsZWN0b3I6IFwiLnRlc3RpbW9uaWFsLWF1dGhvci1saW5rXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBzb3VyY2U6IFwiYXR0cmlidXRlXCIsXG4gICAgICBzZWxlY3RvcjogXCIuY2Fyb3VzZWwuc2xpZGVcIixcbiAgICAgIGF0dHJpYnV0ZTogXCJpZFwiXG4gICAgfVxuICB9LFxuXG4gIC8qKlxyXG4gICAqIFRoZSBlZGl0IGZ1bmN0aW9uIGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIHlvdXIgYmxvY2sgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGVkaXRvci5cclxuICAgKiBUaGlzIHJlcHJlc2VudHMgd2hhdCB0aGUgZWRpdG9yIHdpbGwgcmVuZGVyIHdoZW4gdGhlIGJsb2NrIGlzIHVzZWQuXHJcbiAgICpcclxuICAgKiBUaGUgXCJlZGl0XCIgcHJvcGVydHkgbXVzdCBiZSBhIHZhbGlkIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvYmxvY2stZWRpdC1zYXZlL1xyXG4gICAqL1xuXG4gIC8vIFRoZSBcImVkaXRcIiBwcm9wZXJ0eSBtdXN0IGJlIGEgdmFsaWQgZnVuY3Rpb24uXG4gIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICB2YXIgdGVzdGltb25pYWxzID0gcHJvcHMuYXR0cmlidXRlcy50ZXN0aW1vbmlhbHM7XG5cbiAgICBpZiAoIXByb3BzLmF0dHJpYnV0ZXMuaWQpIHtcbiAgICAgIHZhciBpZCA9IFwidGVzdGltb25pYWxcIiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCk7XG4gICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgaWQ6IGlkXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgdGVzdGltb25pYWxzTGlzdCA9IHRlc3RpbW9uaWFscy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSkubWFwKGZ1bmN0aW9uICh0ZXN0aW1vbmlhbCkge1xuICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBjbGFzc05hbWU6IFwiZ3RzLXRlc3RpbW9uaWFsLWJsb2NrXCIgfSxcbiAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgIFwicFwiLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgXCJJbnNlcnQgVGVzdG1vbmlhbCBcIixcbiAgICAgICAgICAgIE51bWJlcih0ZXN0aW1vbmlhbC5pbmRleCkgKyAxLFxuICAgICAgICAgICAgXCIgSGVyZTpcIlxuICAgICAgICAgICksXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJyZW1vdmUtdGVzdGltb25pYWxcIixcbiAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV3VGVzdGltb25pYWxzID0gdGVzdGltb25pYWxzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggIT0gdGVzdGltb25pYWwuaW5kZXg7XG4gICAgICAgICAgICAgICAgfSkubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICBpZiAodC5pbmRleCA+IHRlc3RpbW9uaWFsLmluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHQuaW5kZXggLT0gMTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsczogbmV3VGVzdGltb25pYWxzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIsIHsgY2xhc3NOYW1lOiBcImZhIGZhLXRpbWVzXCIgfSlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBcImJsb2NrcXVvdGVcIixcbiAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ3cC1ibG9jay1xdW90ZVwiIH0sXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFBsYWluVGV4dCwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImNvbnRlbnQtcGxhaW4tdGV4dFwiLFxuICAgICAgICAgICAgc3R5bGU6IHsgaGVpZ2h0OiA1OCB9LFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiVGVzdGltb25pYWwgVGV4dFwiLFxuICAgICAgICAgICAgdmFsdWU6IHRlc3RpbW9uaWFsLmNvbnRlbnQsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IHRydWUsXG4gICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY29udGVudCkge1xuICAgICAgICAgICAgICB2YXIgbmV3T2JqZWN0ID0gX09iamVjdCRhc3NpZ24oe30sIHRlc3RpbW9uaWFsLCB7XG4gICAgICAgICAgICAgICAgY29udGVudDogY29udGVudFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcHJvcHMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxzOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRlc3RpbW9uaWFscy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluZGV4ICE9IHRlc3RpbW9uaWFsLmluZGV4O1xuICAgICAgICAgICAgICAgIH0pKSwgW25ld09iamVjdF0pXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJyb3dcIiB9LFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJndHNfX3BpY3R1cmUgY29sLTNcIiB9LFxuICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoTWVkaWFVcGxvYWQsIHtcbiAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QobWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IG1lZGlhLnNpemVzLm1lZGl1bSA/IG1lZGlhLnNpemVzLm1lZGl1bS51cmwgOiBtZWRpYS51cmw7XG4gICAgICAgICAgICAgICAgICB2YXIgbmV3T2JqZWN0ID0gX09iamVjdCRhc3NpZ24oe30sIHRlc3RpbW9uaWFsLCB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBpbWFnZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdGltb25pYWxzOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRlc3RpbW9uaWFscy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmRleCAhPSB0ZXN0aW1vbmlhbC5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfSkpLCBbbmV3T2JqZWN0XSlcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXN0aW1vbmlhbC5pbWFnZSxcbiAgICAgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgb3BlbiA9IF9yZWYub3BlbjtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAhIXRlc3RpbW9uaWFsLmltYWdlID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5pc1NlbGVjdGVkICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcImd0c19fcGljdHVyZV9fYWN0aW9uc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld09iamVjdCA9IF9PYmplY3QkYXNzaWduKHt9LCB0ZXN0aW1vbmlhbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsczogW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0ZXN0aW1vbmlhbHMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluZGV4ICE9IHRlc3RpbW9uaWFsLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBbbmV3T2JqZWN0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFx4RDcgUmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImd0c19fcGljdHVyZV9faW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBcInVybChcIiArIHRlc3RpbW9uaWFsLmltYWdlICsgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IG9wZW5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICkgOiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJndHNfX3BpY3R1cmVfX2ltYWdlXCIsIG9uQ2xpY2s6IG9wZW4gfSxcbiAgICAgICAgICAgICAgICAgICAgXCJTZWxlY3QgSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJjb2wtOSBtdC0zXCIgfSxcbiAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFBsYWluVGV4dCwge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJhdXRob3ItcGxhaW4tdGV4dFwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIkF1dGhvclwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXN0aW1vbmlhbC5hdXRob3IsXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGF1dGhvcikge1xuICAgICAgICAgICAgICAgICAgdmFyIG5ld09iamVjdCA9IF9PYmplY3QkYXNzaWduKHt9LCB0ZXN0aW1vbmlhbCwge1xuICAgICAgICAgICAgICAgICAgICBhdXRob3I6IGF1dGhvclxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdGltb25pYWxzOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRlc3RpbW9uaWFscy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmRleCAhPSB0ZXN0aW1vbmlhbC5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfSkpLCBbbmV3T2JqZWN0XSlcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChQbGFpblRleHQsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwibGluay1wbGFpbi10ZXh0XCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiTGluayB0byBBdXRob3IgUHJvZmlsZVwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXN0aW1vbmlhbC5saW5rLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsaW5rKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgbmV3T2JqZWN0ID0gX09iamVjdCRhc3NpZ24oe30sIHRlc3RpbW9uaWFsLCB7XG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGxpbmtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsczogW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0ZXN0aW1vbmlhbHMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggIT0gdGVzdGltb25pYWwuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH0pKSwgW25ld09iamVjdF0pXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImRpdlwiLFxuICAgICAgbnVsbCxcbiAgICAgIHRlc3RpbW9uaWFsc0xpc3QsXG4gICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiYWRkLW1vcmUtdGVzdGltb25pYWxcIixcbiAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgdGVzdGltb25pYWxzOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByb3BzLmF0dHJpYnV0ZXMudGVzdGltb25pYWxzKSwgW3tcbiAgICAgICAgICAgICAgICBpbmRleDogcHJvcHMuYXR0cmlidXRlcy50ZXN0aW1vbmlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgYXV0aG9yOiBcIlwiLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiXCJcbiAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiK1wiXG4gICAgICApXG4gICAgKTtcbiAgfSxcblxuICAvKipcclxuICAgKiBUaGUgc2F2ZSBmdW5jdGlvbiBkZWZpbmVzIHRoZSB3YXkgaW4gd2hpY2ggdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVzIHNob3VsZCBiZSBjb21iaW5lZFxyXG4gICAqIGludG8gdGhlIGZpbmFsIG1hcmt1cCwgd2hpY2ggaXMgdGhlbiBzZXJpYWxpemVkIGJ5IEd1dGVuYmVyZyBpbnRvIHBvc3RfY29udGVudC5cclxuICAgKlxyXG4gICAqIFRoZSBcInNhdmVcIiBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBhbmQgbXVzdCBiZSBhIHZhbGlkIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvYmxvY2stZWRpdC1zYXZlL1xyXG4gICAqL1xuICBzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG4gICAgdmFyIHRlc3RpbW9uaWFscyA9IHByb3BzLmF0dHJpYnV0ZXMudGVzdGltb25pYWxzOyAvLyBDb250ZW50IGluIG91ciBibG9jay5cblxuICAgIHZhciBpZCA9IHByb3BzLmF0dHJpYnV0ZXMuaWQ7XG4gICAgdmFyIGNhcm91c2VsSW5kaWNhdG9ycyA9IHRlc3RpbW9uaWFscy5tYXAoZnVuY3Rpb24gKHRlc3RpbW9uaWFsLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgXCJkYXRhLXRhcmdldFwiOiBcIiNcIiArIGlkLFxuICAgICAgICBcImRhdGEtc2xpZGUtdG9cIjogaW5kZXgsXG4gICAgICAgIGNsYXNzTmFtZTogdGVzdGltb25pYWwuaW5kZXggPT0gMCA/IFwiYWN0aXZlXCIgOiBcIlwiXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgdGVzdGltb25pYWxzTGlzdCA9IHRlc3RpbW9uaWFscy5tYXAoZnVuY3Rpb24gKHRlc3RpbW9uaWFsKSB7XG4gICAgICB2YXIgY2Fyb3VzZWxDbGFzcyA9IHRlc3RpbW9uaWFsLmluZGV4ID09IDAgPyBcImNhcm91c2VsLWl0ZW0gYWN0aXZlXCIgOiBcImNhcm91c2VsLWl0ZW1cIjtcbiAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgY2xhc3NOYW1lOiBjYXJvdXNlbENsYXNzLCBrZXk6IHRlc3RpbW9uaWFsLmluZGV4IH0sXG4gICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBcImJsb2NrcXVvdGVcIixcbiAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbFwiIH0sXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1pbmRleFwiLCBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9IH0sXG4gICAgICAgICAgICB0ZXN0aW1vbmlhbC5pbmRleFxuICAgICAgICAgICksXG4gICAgICAgICAgdGVzdGltb25pYWwuY29udGVudCAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcInRlc3RpbW9uaWFsLXRleHQtY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImlcIiwgeyBjbGFzc05hbWU6IFwiZmEgZmEtcXVvdGUtbGVmdCBwdWxsLWxlZnRcIiwgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiB9KSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcInRlc3RpbW9uaWFsLXRleHRcIiB9LFxuICAgICAgICAgICAgICB0ZXN0aW1vbmlhbC5jb250ZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7IFwiY2xhc3NcIjogXCJmYSBmYS1xdW90ZS1yaWdodCBwdWxsLXJpZ2h0XCIsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJyb3dcIiB9LFxuICAgICAgICAgICAgdGVzdGltb25pYWwuaW1hZ2UgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJndHNfX3BpY3R1cmUgY29sLTNcIiB9LFxuICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgeyBzcmM6IHRlc3RpbW9uaWFsLmltYWdlLCBzdHlsZTogeyBkaXNwbGF5OiAnbm9uZScgfSB9KSxcbiAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZ3RzX19waWN0dXJlX19pbWFnZVwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IFwidXJsKFwiICsgdGVzdGltb25pYWwuaW1hZ2UgKyBcIilcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcInRlc3RpbW9uaWFsLWF1dGhvci1jb250YWluZXIgbXQtMyBjb2wtOVwiIH0sXG4gICAgICAgICAgICAgIHRlc3RpbW9uaWFsLmF1dGhvciAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwidGVzdGltb25pYWwtYXV0aG9yLW5hbWVcIiB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwidGVzdGltb25pYWwtYXV0aG9yXCIgfSxcbiAgICAgICAgICAgICAgICAgIFwiXFx1MjAxNCBcIixcbiAgICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsLmF1dGhvclxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgdGVzdGltb25pYWwubGluayAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwidGVzdGltb25pYWwtYXV0aG9yLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICB7IHRhcmdldDogXCJfYmxhbmtcIiwgaHJlZjogdGVzdGltb25pYWwubGluayB9LFxuICAgICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7IGNsYXNzTmFtZTogXCJmYXMgZmEtdXNlclwiIH0pLFxuICAgICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwidGVzdGltb25pYWwtYXV0aG9yLWxpbmtcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbC5saW5rXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICAgIGlmICh0ZXN0aW1vbmlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBjbGFzc05hbWU6IFwidGVzdGltb25pYWwtc2xpZGVyXCIgfSxcbiAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBjbGFzc05hbWU6IFwiY2Fyb3VzZWwgc2xpZGVcIiwgXCJkYXRhLXJpZGVcIjogXCJjYXJvdXNlbFwiLCBpZDogaWQgfSxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcIm9sXCIsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJjYXJvdXNlbC1pbmRpY2F0b3JzXCIgfSxcbiAgICAgICAgICAgIGNhcm91c2VsSW5kaWNhdG9yc1xuICAgICAgICAgICksXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcImNhcm91c2VsLWlubmVyIHctNzUgbXgtYXV0b1wiIH0sXG4gICAgICAgICAgICB0ZXN0aW1vbmlhbHNMaXN0XG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJjbGFzc1wiOiBcImNhcm91c2VsLWNvbnRyb2wtcHJldlwiLFxuICAgICAgICAgICAgICBocmVmOiBcIiNcIiArIGlkLFxuICAgICAgICAgICAgICByb2xlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICBcImRhdGEtc2xpZGVcIjogXCJwcmV2XCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7IFwiY2xhc3NcIjogXCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiIH0sXG4gICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImlcIiwgeyBjbGFzc05hbWU6IFwiZmEgZmEtY2hldnJvbi1sZWZ0XCIgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7IFwiY2xhc3NcIjogXCJzci1vbmx5XCIgfSxcbiAgICAgICAgICAgICAgXCJQcmV2aW91c1wiXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJjbGFzc1wiOiBcImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiLFxuICAgICAgICAgICAgICBocmVmOiBcIiNcIiArIGlkLFxuICAgICAgICAgICAgICByb2xlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICBcImRhdGEtc2xpZGVcIjogXCJuZXh0XCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7IFwiY2xhc3NcIjogXCJjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvblwiLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiIH0sXG4gICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImlcIiwgeyBjbGFzc05hbWU6IFwiZmEgZmEtY2hldnJvbi1yaWdodFwiIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgeyBcImNsYXNzXCI6IFwic3Itb25seVwiIH0sXG4gICAgICAgICAgICAgIFwiTmV4dFwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxufSk7IiwiLyoqXHJcbiAqIEltcG9ydCBibG9ja3NcclxuICovXG5pbXBvcnQgJy4vYmxvY2svc2xpZGVyLmpzJzsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbmJBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///60\n')},368 /*! ModuleConcatenation bailout: Cannot concat with ./node_modules/babel-runtime/helpers/toConsumableArray.js (<- Module is not an ECMAScript module) */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js\nvar toConsumableArray = __webpack_require__(1);\nvar toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/core-js/object/assign.js\nvar object_assign = __webpack_require__(2);\nvar assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);\n\n// EXTERNAL MODULE: ./src/block/style.scss\nvar style = __webpack_require__(61);\n\n// EXTERNAL MODULE: ./src/block/editor.scss\nvar editor = __webpack_require__(62);\n\n// CONCATENATED MODULE: ./src/block/slider.js\n\n\n/**\r\n * BLOCK: my-block\r\n *\r\n * Registering a basic block with Gutenberg.\r\n * Simple block, renders and saves the same content without any interactivity.\r\n */\n\n// Import CSS.\n\n\n\nvar __ = wp.i18n.__; // The __() for internationalization.\nvar registerBlockType = wp.blocks.registerBlockType; // The registerBlockType() to register blocks.\nvar _wp$editor = wp.editor,\n MediaUpload = _wp$editor.MediaUpload,\n PlainText = _wp$editor.PlainText;\n\n/**\r\n * Register: a Gutenberg Block.\r\n *\r\n * Registers a new block provided a unique name and an object defining its\r\n * behavior. Once registered, the block is made editor as an option to any\r\n * editor interface where blocks are implemented.\r\n *\r\n * @link https://wordpress.org/gutenberg/handbook/block-api/\r\n * @param {string} name Block name.\r\n * @param {Object} settings Block settings.\r\n * @return {?WPBlock} The block, if it has been successfully\r\n * registered; otherwise `undefined`.\r\n */\n\nregisterBlockType("gts/testimonials-slider-block", {\n // Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.\n title: __("Testimonials Slider"), // Block title.\n icon: "format-quote", // Block icon from Dashicons → https://developer.wordpress.org/resource/dashicons/.\n category: "common", // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.\n keywords: [__("Testimonials Slider"), __("gts")],\n\n attributes: {\n id: {\n source: "attribute",\n selector: ".carousel.slide",\n attribute: "id"\n },\n testimonials: {\n source: "query",\n default: [],\n selector: "blockquote.testimonial",\n query: {\n image: {\n source: "attribute",\n selector: "img",\n attribute: "src"\n },\n index: {\n source: "text",\n selector: "span.testimonial-index"\n },\n content: {\n source: "text",\n selector: "span.testimonial-text"\n },\n author: {\n source: "text",\n selector: "span.testimonial-author span"\n },\n link: {\n source: "text",\n selector: ".testimonial-author-link"\n }\n }\n }\n },\n\n /**\r\n * The edit function describes the structure of your block in the context of the editor.\r\n * This represents what the editor will render when the block is used.\r\n *\r\n * The "edit" property must be a valid function.\r\n *\r\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\r\n */\n\n // The "edit" property must be a valid function.\n edit: function edit(props) {\n var testimonials = props.attributes.testimonials;\n\n\n if (!props.attributes.id) {\n var id = "testimonial" + Math.floor(Math.random() * 100);\n props.setAttributes({\n id: id\n });\n }\n\n var testimonialsList = testimonials.sort(function (a, b) {\n return a.index - b.index;\n }).map(function (testimonial) {\n return wp.element.createElement(\n "div",\n { className: "gts-testimonial-block" },\n wp.element.createElement(\n "p",\n null,\n wp.element.createElement(\n "span",\n null,\n "Insert Testmonial ",\n Number(testimonial.index) + 1,\n " Here:"\n ),\n wp.element.createElement(\n "span",\n {\n className: "remove-testimonial",\n onClick: function onClick() {\n var newTestimonials = testimonials.filter(function (item) {\n return item.index != testimonial.index;\n }).map(function (t) {\n if (t.index > testimonial.index) {\n t.index -= 1;\n }\n\n return t;\n });\n\n props.setAttributes({\n testimonials: newTestimonials\n });\n }\n },\n wp.element.createElement("i", { className: "fa fa-times" })\n )\n ),\n wp.element.createElement(\n "blockquote",\n { className: "wp-block-quote" },\n wp.element.createElement(PlainText, {\n className: "content-plain-text",\n style: { height: 58 },\n placeholder: "Testimonial Text",\n value: testimonial.content,\n autoFocus: true,\n onChange: function onChange(content) {\n var newObject = assign_default()({}, testimonial, {\n content: content\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n }),\n wp.element.createElement(\n "div",\n { className: "row" },\n wp.element.createElement(\n "div",\n { className: "gts__picture col-3" },\n wp.element.createElement(MediaUpload, {\n onSelect: function onSelect(media) {\n var image = media.sizes.medium ? media.sizes.medium.url : media.url;\n var newObject = assign_default()({}, testimonial, {\n image: image\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n },\n type: "image",\n value: testimonial.image,\n render: function render(_ref) {\n var open = _ref.open;\n return !!testimonial.image ? wp.element.createElement(\n "div",\n null,\n props.isSelected && wp.element.createElement(\n "div",\n { className: "gts__picture__actions" },\n wp.element.createElement(\n "a",\n {\n href: "#",\n onClick: function onClick() {\n var newObject = assign_default()({}, testimonial, {\n image: null\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n },\n "\\xD7 Remove"\n )\n ),\n wp.element.createElement("div", {\n className: "gts__picture__image",\n style: {\n backgroundImage: "url(" + testimonial.image + ")"\n },\n onClick: open\n })\n ) : wp.element.createElement(\n "a",\n {\n href: "#",\n className: "gts__picture__image",\n onClick: open\n },\n "Select Image"\n );\n }\n })\n ),\n wp.element.createElement(\n "div",\n { className: "col-9 mt-3" },\n wp.element.createElement(PlainText, {\n className: "author-plain-text",\n placeholder: "Author",\n value: testimonial.author,\n onChange: function onChange(author) {\n var newObject = assign_default()({}, testimonial, {\n author: author\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n }),\n wp.element.createElement(PlainText, {\n className: "link-plain-text",\n placeholder: "Link to Author Profile",\n value: testimonial.link,\n onChange: function onChange(link) {\n var newObject = assign_default()({}, testimonial, {\n link: link\n });\n props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(testimonials.filter(function (item) {\n return item.index != testimonial.index;\n })), [newObject])\n });\n }\n })\n )\n )\n )\n );\n });\n return wp.element.createElement(\n "div",\n { className: props.className },\n testimonialsList,\n wp.element.createElement(\n "button",\n {\n className: "add-more-testimonial",\n onClick: function onClick(content) {\n return props.setAttributes({\n testimonials: [].concat(toConsumableArray_default()(props.attributes.testimonials), [{\n index: props.attributes.testimonials.length,\n content: "",\n author: "",\n link: ""\n }])\n });\n }\n },\n "+"\n )\n );\n },\n\n /**\r\n * The save function defines the way in which the different attributes should be combined\r\n * into the final markup, which is then serialized by Gutenberg into post_content.\r\n *\r\n * The "save" property must be specified and must be a valid function.\r\n *\r\n * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\r\n */\n save: function save(props) {\n var _props$attributes = props.attributes,\n id = _props$attributes.id,\n testimonials = _props$attributes.testimonials;\n\n var carouselIndicators = testimonials.map(function (testimonial, index) {\n return wp.element.createElement("li", {\n "data-target": "#" + id,\n "data-slide-to": index,\n className: testimonial.index == 0 ? "active" : ""\n });\n });\n var testimonialsList = testimonials.map(function (testimonial) {\n var carouselClass = testimonial.index == 0 ? "carousel-item active" : "carousel-item";\n return wp.element.createElement(\n "div",\n { className: carouselClass, key: testimonial.index },\n wp.element.createElement(\n "blockquote",\n { className: "testimonial" },\n wp.element.createElement(\n "span",\n { className: "testimonial-index", style: { display: "none" } },\n testimonial.index\n ),\n testimonial.content && wp.element.createElement(\n "p",\n { className: "testimonial-text-container" },\n wp.element.createElement("i", { className: "fa fa-quote-left pull-left", "aria-hidden": "true" }),\n wp.element.createElement(\n "span",\n { className: "testimonial-text" },\n testimonial.content\n ),\n wp.element.createElement("i", { "class": "fa fa-quote-right pull-right", "aria-hidden": "true" })\n ),\n wp.element.createElement(\n "div",\n { className: "row" },\n testimonial.image && wp.element.createElement(\n "div",\n { className: "gts__picture col-3" },\n wp.element.createElement("img", { src: testimonial.image, style: { display: "none" } }),\n wp.element.createElement("div", {\n className: "gts__picture__image",\n style: {\n backgroundImage: "url(" + testimonial.image + ")"\n }\n })\n ),\n wp.element.createElement(\n "div",\n { className: "testimonial-author-container mt-3 col-9" },\n testimonial.author && wp.element.createElement(\n "p",\n { className: "testimonial-author-name" },\n wp.element.createElement(\n "span",\n { className: "testimonial-author" },\n "\\u2014 ",\n wp.element.createElement(\n "span",\n null,\n testimonial.author\n )\n )\n ),\n testimonial.link && wp.element.createElement(\n "p",\n { className: "testimonial-author-container" },\n wp.element.createElement(\n "a",\n { target: "_blank", href: testimonial.link },\n wp.element.createElement("i", { className: "fas fa-user" }),\n wp.element.createElement(\n "span",\n { className: "testimonial-author-link" },\n testimonial.link\n )\n )\n )\n )\n )\n )\n );\n });\n if (testimonials.length > 0) {\n return wp.element.createElement(\n "div",\n { className: "testimonial-slider" },\n wp.element.createElement(\n "div",\n { className: "carousel slide", "data-ride": "carousel", id: id },\n wp.element.createElement(\n "ol",\n { className: "carousel-indicators" },\n carouselIndicators\n ),\n wp.element.createElement(\n "div",\n { className: "carousel-inner w-75 mx-auto" },\n testimonialsList\n ),\n wp.element.createElement(\n "a",\n {\n "class": "carousel-control-prev",\n href: "#" + id,\n role: "button",\n "data-slide": "prev"\n },\n wp.element.createElement(\n "span",\n { "class": "carousel-control-prev-icon", "aria-hidden": "true" },\n wp.element.createElement("i", { className: "fa fa-chevron-left" })\n ),\n wp.element.createElement(\n "span",\n { "class": "sr-only" },\n "Previous"\n )\n ),\n wp.element.createElement(\n "a",\n {\n "class": "carousel-control-next",\n href: "#" + id,\n role: "button",\n "data-slide": "next"\n },\n wp.element.createElement(\n "span",\n { "class": "carousel-control-next-icon", "aria-hidden": "true" },\n wp.element.createElement("i", { className: "fa fa-chevron-right" })\n ),\n wp.element.createElement(\n "span",\n { "class": "sr-only" },\n "Next"\n )\n )\n )\n );\n } else return null;\n }\n});\n// CONCATENATED MODULE: ./src/index.js\n/**\r\n * Import blocks\r\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2svc2xpZGVyLmpzP2NlOWEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luZGV4LmpzPzM3MDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX09iamVjdCRhc3NpZ24gZnJvbSBcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduXCI7XG4vKipcclxuICogQkxPQ0s6IG15LWJsb2NrXHJcbiAqXHJcbiAqIFJlZ2lzdGVyaW5nIGEgYmFzaWMgYmxvY2sgd2l0aCBHdXRlbmJlcmcuXHJcbiAqIFNpbXBsZSBibG9jaywgcmVuZGVycyBhbmQgc2F2ZXMgdGhlIHNhbWUgY29udGVudCB3aXRob3V0IGFueSBpbnRlcmFjdGl2aXR5LlxyXG4gKi9cblxuLy8gIEltcG9ydCBDU1MuXG5pbXBvcnQgXCIuL3N0eWxlLnNjc3NcIjtcbmltcG9ydCBcIi4vZWRpdG9yLnNjc3NcIjtcblxudmFyIF9fID0gd3AuaTE4bi5fXzsgLy8gVGhlIF9fKCkgZm9yIGludGVybmF0aW9uYWxpemF0aW9uLlxudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlOyAvLyBUaGUgcmVnaXN0ZXJCbG9ja1R5cGUoKSB0byByZWdpc3RlciBibG9ja3MuXG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBNZWRpYVVwbG9hZCA9IF93cCRlZGl0b3IuTWVkaWFVcGxvYWQsXG4gICAgUGxhaW5UZXh0ID0gX3dwJGVkaXRvci5QbGFpblRleHQ7XG5cbi8qKlxyXG4gKiBSZWdpc3RlcjogYSBHdXRlbmJlcmcgQmxvY2suXHJcbiAqXHJcbiAqIFJlZ2lzdGVycyBhIG5ldyBibG9jayBwcm92aWRlZCBhIHVuaXF1ZSBuYW1lIGFuZCBhbiBvYmplY3QgZGVmaW5pbmcgaXRzXHJcbiAqIGJlaGF2aW9yLiBPbmNlIHJlZ2lzdGVyZWQsIHRoZSBibG9jayBpcyBtYWRlIGVkaXRvciBhcyBhbiBvcHRpb24gdG8gYW55XHJcbiAqIGVkaXRvciBpbnRlcmZhY2Ugd2hlcmUgYmxvY2tzIGFyZSBpbXBsZW1lbnRlZC5cclxuICpcclxuICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gICBuYW1lICAgICBCbG9jayBuYW1lLlxyXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgc2V0dGluZ3MgQmxvY2sgc2V0dGluZ3MuXHJcbiAqIEByZXR1cm4gez9XUEJsb2NrfSAgICAgICAgICBUaGUgYmxvY2ssIGlmIGl0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseVxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZDsgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxyXG4gKi9cblxucmVnaXN0ZXJCbG9ja1R5cGUoXCJndHMvdGVzdGltb25pYWxzLXNsaWRlci1ibG9ja1wiLCB7XG4gIC8vIEJsb2NrIG5hbWUuIEJsb2NrIG5hbWVzIG11c3QgYmUgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBuYW1lc3BhY2UgcHJlZml4LiBFeGFtcGxlOiBteS1wbHVnaW4vbXktY3VzdG9tLWJsb2NrLlxuICB0aXRsZTogX18oXCJUZXN0aW1vbmlhbHMgU2xpZGVyXCIpLCAvLyBCbG9jayB0aXRsZS5cbiAgaWNvbjogXCJmb3JtYXQtcXVvdGVcIiwgLy8gQmxvY2sgaWNvbiBmcm9tIERhc2hpY29ucyDihpIgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZXNvdXJjZS9kYXNoaWNvbnMvLlxuICBjYXRlZ29yeTogXCJjb21tb25cIiwgLy8gQmxvY2sgY2F0ZWdvcnkg4oCUIEdyb3VwIGJsb2NrcyB0b2dldGhlciBiYXNlZCBvbiBjb21tb24gdHJhaXRzIEUuZy4gY29tbW9uLCBmb3JtYXR0aW5nLCBsYXlvdXQgd2lkZ2V0cywgZW1iZWQuXG4gIGtleXdvcmRzOiBbX18oXCJUZXN0aW1vbmlhbHMgU2xpZGVyXCIpLCBfXyhcImd0c1wiKV0sXG5cbiAgYXR0cmlidXRlczoge1xuICAgIGlkOiB7XG4gICAgICBzb3VyY2U6IFwiYXR0cmlidXRlXCIsXG4gICAgICBzZWxlY3RvcjogXCIuY2Fyb3VzZWwuc2xpZGVcIixcbiAgICAgIGF0dHJpYnV0ZTogXCJpZFwiXG4gICAgfSxcbiAgICB0ZXN0aW1vbmlhbHM6IHtcbiAgICAgIHNvdXJjZTogXCJxdWVyeVwiLFxuICAgICAgZGVmYXVsdDogW10sXG4gICAgICBzZWxlY3RvcjogXCJibG9ja3F1b3RlLnRlc3RpbW9uaWFsXCIsXG4gICAgICBxdWVyeToge1xuICAgICAgICBpbWFnZToge1xuICAgICAgICAgIHNvdXJjZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgICBzZWxlY3RvcjogXCJpbWdcIixcbiAgICAgICAgICBhdHRyaWJ1dGU6IFwic3JjXCJcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICBzb3VyY2U6IFwidGV4dFwiLFxuICAgICAgICAgIHNlbGVjdG9yOiBcInNwYW4udGVzdGltb25pYWwtaW5kZXhcIlxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgc291cmNlOiBcInRleHRcIixcbiAgICAgICAgICBzZWxlY3RvcjogXCJzcGFuLnRlc3RpbW9uaWFsLXRleHRcIlxuICAgICAgICB9LFxuICAgICAgICBhdXRob3I6IHtcbiAgICAgICAgICBzb3VyY2U6IFwidGV4dFwiLFxuICAgICAgICAgIHNlbGVjdG9yOiBcInNwYW4udGVzdGltb25pYWwtYXV0aG9yIHNwYW5cIlxuICAgICAgICB9LFxuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgc291cmNlOiBcInRleHRcIixcbiAgICAgICAgICBzZWxlY3RvcjogXCIudGVzdGltb25pYWwtYXV0aG9yLWxpbmtcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxyXG4gICAqIFRoZSBlZGl0IGZ1bmN0aW9uIGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIHlvdXIgYmxvY2sgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGVkaXRvci5cclxuICAgKiBUaGlzIHJlcHJlc2VudHMgd2hhdCB0aGUgZWRpdG9yIHdpbGwgcmVuZGVyIHdoZW4gdGhlIGJsb2NrIGlzIHVzZWQuXHJcbiAgICpcclxuICAgKiBUaGUgXCJlZGl0XCIgcHJvcGVydHkgbXVzdCBiZSBhIHZhbGlkIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvYmxvY2stZWRpdC1zYXZlL1xyXG4gICAqL1xuXG4gIC8vIFRoZSBcImVkaXRcIiBwcm9wZXJ0eSBtdXN0IGJlIGEgdmFsaWQgZnVuY3Rpb24uXG4gIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICB2YXIgdGVzdGltb25pYWxzID0gcHJvcHMuYXR0cmlidXRlcy50ZXN0aW1vbmlhbHM7XG5cblxuICAgIGlmICghcHJvcHMuYXR0cmlidXRlcy5pZCkge1xuICAgICAgdmFyIGlkID0gXCJ0ZXN0aW1vbmlhbFwiICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTtcbiAgICAgIHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICBpZDogaWRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciB0ZXN0aW1vbmlhbHNMaXN0ID0gdGVzdGltb25pYWxzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KS5tYXAoZnVuY3Rpb24gKHRlc3RpbW9uaWFsKSB7XG4gICAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7IGNsYXNzTmFtZTogXCJndHMtdGVzdGltb25pYWwtYmxvY2tcIiB9LFxuICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBcIkluc2VydCBUZXN0bW9uaWFsIFwiLFxuICAgICAgICAgICAgTnVtYmVyKHRlc3RpbW9uaWFsLmluZGV4KSArIDEsXG4gICAgICAgICAgICBcIiBIZXJlOlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInJlbW92ZS10ZXN0aW1vbmlhbFwiLFxuICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuICAgICAgICAgICAgICAgIHZhciBuZXdUZXN0aW1vbmlhbHMgPSB0ZXN0aW1vbmlhbHMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbmRleCAhPSB0ZXN0aW1vbmlhbC5pbmRleDtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0LmluZGV4ID4gdGVzdGltb25pYWwuaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5pbmRleCAtPSAxO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgdGVzdGltb25pYWxzOiBuZXdUZXN0aW1vbmlhbHNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImlcIiwgeyBjbGFzc05hbWU6IFwiZmEgZmEtdGltZXNcIiB9KVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgIFwiYmxvY2txdW90ZVwiLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiBcIndwLWJsb2NrLXF1b3RlXCIgfSxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUGxhaW5UZXh0LCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiY29udGVudC1wbGFpbi10ZXh0XCIsXG4gICAgICAgICAgICBzdHlsZTogeyBoZWlnaHQ6IDU4IH0sXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJUZXN0aW1vbmlhbCBUZXh0XCIsXG4gICAgICAgICAgICB2YWx1ZTogdGVzdGltb25pYWwuY29udGVudCxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb250ZW50KSB7XG4gICAgICAgICAgICAgIHZhciBuZXdPYmplY3QgPSBfT2JqZWN0JGFzc2lnbih7fSwgdGVzdGltb25pYWwsIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbHM6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGVzdGltb25pYWxzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggIT0gdGVzdGltb25pYWwuaW5kZXg7XG4gICAgICAgICAgICAgICAgfSkpLCBbbmV3T2JqZWN0XSlcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcInJvd1wiIH0sXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcImd0c19fcGljdHVyZSBjb2wtM1wiIH0sXG4gICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuICAgICAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbiBvblNlbGVjdChtZWRpYSkge1xuICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gbWVkaWEuc2l6ZXMubWVkaXVtID8gbWVkaWEuc2l6ZXMubWVkaXVtLnVybCA6IG1lZGlhLnVybDtcbiAgICAgICAgICAgICAgICAgIHZhciBuZXdPYmplY3QgPSBfT2JqZWN0JGFzc2lnbih7fSwgdGVzdGltb25pYWwsIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGltYWdlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbHM6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGVzdGltb25pYWxzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluZGV4ICE9IHRlc3RpbW9uaWFsLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9KSksIFtuZXdPYmplY3RdKVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImltYWdlXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRlc3RpbW9uaWFsLmltYWdlLFxuICAgICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKF9yZWYpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBvcGVuID0gX3JlZi5vcGVuO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuICEhdGVzdGltb25pYWwuaW1hZ2UgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmlzU2VsZWN0ZWQgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwiZ3RzX19waWN0dXJlX19hY3Rpb25zXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogXCIjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld09iamVjdCA9IF9PYmplY3QkYXNzaWduKHt9LCB0ZXN0aW1vbmlhbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsczogW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0ZXN0aW1vbmlhbHMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluZGV4ICE9IHRlc3RpbW9uaWFsLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBbbmV3T2JqZWN0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFx4RDcgUmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImd0c19fcGljdHVyZV9faW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBcInVybChcIiArIHRlc3RpbW9uaWFsLmltYWdlICsgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IG9wZW5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICkgOiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaHJlZjogXCIjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImd0c19fcGljdHVyZV9faW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBvcGVuXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiU2VsZWN0IEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwiY29sLTkgbXQtM1wiIH0sXG4gICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChQbGFpblRleHQsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiYXV0aG9yLXBsYWluLXRleHRcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJBdXRob3JcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGVzdGltb25pYWwuYXV0aG9yLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShhdXRob3IpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBuZXdPYmplY3QgPSBfT2JqZWN0JGFzc2lnbih7fSwgdGVzdGltb25pYWwsIHtcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBhdXRob3JcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsczogW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0ZXN0aW1vbmlhbHMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uaW5kZXggIT0gdGVzdGltb25pYWwuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH0pKSwgW25ld09iamVjdF0pXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUGxhaW5UZXh0LCB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImxpbmstcGxhaW4tdGV4dFwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIkxpbmsgdG8gQXV0aG9yIFByb2ZpbGVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGVzdGltb25pYWwubGluayxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UobGluaykge1xuICAgICAgICAgICAgICAgICAgdmFyIG5ld09iamVjdCA9IF9PYmplY3QkYXNzaWduKHt9LCB0ZXN0aW1vbmlhbCwge1xuICAgICAgICAgICAgICAgICAgICBsaW5rOiBsaW5rXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbHM6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGVzdGltb25pYWxzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmluZGV4ICE9IHRlc3RpbW9uaWFsLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9KSksIFtuZXdPYmplY3RdKVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUgfSxcbiAgICAgIHRlc3RpbW9uaWFsc0xpc3QsXG4gICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiYWRkLW1vcmUtdGVzdGltb25pYWxcIixcbiAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgdGVzdGltb25pYWxzOiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByb3BzLmF0dHJpYnV0ZXMudGVzdGltb25pYWxzKSwgW3tcbiAgICAgICAgICAgICAgICBpbmRleDogcHJvcHMuYXR0cmlidXRlcy50ZXN0aW1vbmlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgYXV0aG9yOiBcIlwiLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiXCJcbiAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiK1wiXG4gICAgICApXG4gICAgKTtcbiAgfSxcblxuICAvKipcclxuICAgKiBUaGUgc2F2ZSBmdW5jdGlvbiBkZWZpbmVzIHRoZSB3YXkgaW4gd2hpY2ggdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVzIHNob3VsZCBiZSBjb21iaW5lZFxyXG4gICAqIGludG8gdGhlIGZpbmFsIG1hcmt1cCwgd2hpY2ggaXMgdGhlbiBzZXJpYWxpemVkIGJ5IEd1dGVuYmVyZyBpbnRvIHBvc3RfY29udGVudC5cclxuICAgKlxyXG4gICAqIFRoZSBcInNhdmVcIiBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBhbmQgbXVzdCBiZSBhIHZhbGlkIGZ1bmN0aW9uLlxyXG4gICAqXHJcbiAgICogQGxpbmsgaHR0cHM6Ly93b3JkcHJlc3Mub3JnL2d1dGVuYmVyZy9oYW5kYm9vay9ibG9jay1hcGkvYmxvY2stZWRpdC1zYXZlL1xyXG4gICAqL1xuICBzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG4gICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5pZCxcbiAgICAgICAgdGVzdGltb25pYWxzID0gX3Byb3BzJGF0dHJpYnV0ZXMudGVzdGltb25pYWxzO1xuXG4gICAgdmFyIGNhcm91c2VsSW5kaWNhdG9ycyA9IHRlc3RpbW9uaWFscy5tYXAoZnVuY3Rpb24gKHRlc3RpbW9uaWFsLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcbiAgICAgICAgXCJkYXRhLXRhcmdldFwiOiBcIiNcIiArIGlkLFxuICAgICAgICBcImRhdGEtc2xpZGUtdG9cIjogaW5kZXgsXG4gICAgICAgIGNsYXNzTmFtZTogdGVzdGltb25pYWwuaW5kZXggPT0gMCA/IFwiYWN0aXZlXCIgOiBcIlwiXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgdGVzdGltb25pYWxzTGlzdCA9IHRlc3RpbW9uaWFscy5tYXAoZnVuY3Rpb24gKHRlc3RpbW9uaWFsKSB7XG4gICAgICB2YXIgY2Fyb3VzZWxDbGFzcyA9IHRlc3RpbW9uaWFsLmluZGV4ID09IDAgPyBcImNhcm91c2VsLWl0ZW0gYWN0aXZlXCIgOiBcImNhcm91c2VsLWl0ZW1cIjtcbiAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHsgY2xhc3NOYW1lOiBjYXJvdXNlbENsYXNzLCBrZXk6IHRlc3RpbW9uaWFsLmluZGV4IH0sXG4gICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBcImJsb2NrcXVvdGVcIixcbiAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbFwiIH0sXG4gICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1pbmRleFwiLCBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9IH0sXG4gICAgICAgICAgICB0ZXN0aW1vbmlhbC5pbmRleFxuICAgICAgICAgICksXG4gICAgICAgICAgdGVzdGltb25pYWwuY29udGVudCAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcInRlc3RpbW9uaWFsLXRleHQtY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcImlcIiwgeyBjbGFzc05hbWU6IFwiZmEgZmEtcXVvdGUtbGVmdCBwdWxsLWxlZnRcIiwgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiB9KSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcInRlc3RpbW9uaWFsLXRleHRcIiB9LFxuICAgICAgICAgICAgICB0ZXN0aW1vbmlhbC5jb250ZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7IFwiY2xhc3NcIjogXCJmYSBmYS1xdW90ZS1yaWdodCBwdWxsLXJpZ2h0XCIsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJyb3dcIiB9LFxuICAgICAgICAgICAgdGVzdGltb25pYWwuaW1hZ2UgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJndHNfX3BpY3R1cmUgY29sLTNcIiB9LFxuICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgeyBzcmM6IHRlc3RpbW9uaWFsLmltYWdlLCBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9IH0pLFxuICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJndHNfX3BpY3R1cmVfX2ltYWdlXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogXCJ1cmwoXCIgKyB0ZXN0aW1vbmlhbC5pbWFnZSArIFwiKVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwidGVzdGltb25pYWwtYXV0aG9yLWNvbnRhaW5lciBtdC0zIGNvbC05XCIgfSxcbiAgICAgICAgICAgICAgdGVzdGltb25pYWwuYXV0aG9yICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1hdXRob3ItbmFtZVwiIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1hdXRob3JcIiB9LFxuICAgICAgICAgICAgICAgICAgXCJcXHUyMDE0IFwiLFxuICAgICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgdGVzdGltb25pYWwuYXV0aG9yXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0ZXN0aW1vbmlhbC5saW5rICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1hdXRob3ItY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgICAgICAgIHsgdGFyZ2V0OiBcIl9ibGFua1wiLCBocmVmOiB0ZXN0aW1vbmlhbC5saW5rIH0sXG4gICAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXCJpXCIsIHsgY2xhc3NOYW1lOiBcImZhcyBmYS11c2VyXCIgfSksXG4gICAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1hdXRob3ItbGlua1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsLmxpbmtcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG4gICAgaWYgKHRlc3RpbW9uaWFscy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7IGNsYXNzTmFtZTogXCJ0ZXN0aW1vbmlhbC1zbGlkZXJcIiB9LFxuICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7IGNsYXNzTmFtZTogXCJjYXJvdXNlbCBzbGlkZVwiLCBcImRhdGEtcmlkZVwiOiBcImNhcm91c2VsXCIsIGlkOiBpZCB9LFxuICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwib2xcIixcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcImNhcm91c2VsLWluZGljYXRvcnNcIiB9LFxuICAgICAgICAgICAgY2Fyb3VzZWxJbmRpY2F0b3JzXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwiY2Fyb3VzZWwtaW5uZXIgdy03NSBteC1hdXRvXCIgfSxcbiAgICAgICAgICAgIHRlc3RpbW9uaWFsc0xpc3RcbiAgICAgICAgICApLFxuICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImNsYXNzXCI6IFwiY2Fyb3VzZWwtY29udHJvbC1wcmV2XCIsXG4gICAgICAgICAgICAgIGhyZWY6IFwiI1wiICsgaWQsXG4gICAgICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIFwiZGF0YS1zbGlkZVwiOiBcInByZXZcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgIHsgXCJjbGFzc1wiOiBcImNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uXCIsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSxcbiAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7IGNsYXNzTmFtZTogXCJmYSBmYS1jaGV2cm9uLWxlZnRcIiB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgIHsgXCJjbGFzc1wiOiBcInNyLW9ubHlcIiB9LFxuICAgICAgICAgICAgICBcIlByZXZpb3VzXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImNsYXNzXCI6IFwiY2Fyb3VzZWwtY29udHJvbC1uZXh0XCIsXG4gICAgICAgICAgICAgIGhyZWY6IFwiI1wiICsgaWQsXG4gICAgICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgIFwiZGF0YS1zbGlkZVwiOiBcIm5leHRcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgIHsgXCJjbGFzc1wiOiBcImNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uXCIsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSxcbiAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFwiaVwiLCB7IGNsYXNzTmFtZTogXCJmYSBmYS1jaGV2cm9uLXJpZ2h0XCIgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7IFwiY2xhc3NcIjogXCJzci1vbmx5XCIgfSxcbiAgICAgICAgICAgICAgXCJOZXh0XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xuICB9XG59KTsiLCIvKipcclxuICogSW1wb3J0IGJsb2Nrc1xyXG4gKi9cbmltcG9ydCAnLi9ibG9jay9zbGlkZXIuanMnOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BiQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///60\n')}, 369 369 /*!******************************!*\ 370 370 !*** ./src/block/style.scss ***! -
testimonials-slider-block/trunk/dist/blocks.style.build.css
r1927943 r1972900 1 .gts-testimonial-block{padding:20px;background:#f3f3f3;margin-bottom:1em;border-radius:10px;min-height:160px}.gts-testimonial-block blockquote{border-left:none;margin-bottom:1em}.testimonial- text{font-size:1.5em;font-style:normal}.testimonial-author-container{text-align:center}.testimonial-author-link,.testimonial-author-name{padding-left:12px;margin-bottom:5px;font-style:normal}span.testimonial-author{font-style:normal}.fa.fa-quote-left{padding-right:12px;padding-left:8px;font-size:1.25em}.fa.fa-quote-right{padding-left:12px;font-size:1.25em}ol.carousel-indicators{bottom:-25px}ol.carousel-indicators li{background-color:rgba(167,167,167,0.5)}ol.carousel-indicators .active{background-color:black}.entry-content a.carousel-control-prev,.entry-content a.carousel-control-next{-webkit-box-shadow:none;box-shadow:none;border-bottom:none}.entry-content a.carousel-control-prev:hover,.entry-content a.carousel-control-prev:focus,.entry-content a.carousel-control-prev:active,.entry-content a.carousel-control-next:hover,.entry-content a.carousel-control-next:focus,.entry-content a.carousel-control-next:active{-webkit-box-shadow:none;box-shadow:none;border-bottom:none}.carousel-control-next-icon,.carousel-control-prev-icon{color:#000}.gts-testimonial-slider-block.testimonial-slider{background:#f3f3f3;padding:10px;border-radius:10px;margin-bottom:1em;min-height:160px}.gts-testimonial-slider-block.testimonial-slider blockquote{border-left:none}.gts__picture{position:relative}.gts__picture .gts__picture__image{width:100px;height:100px;margin-right:30px;margin-left:4.5px;border-radius:50%;overflow:hidden;border:1px solid #dadada;font-size:.8em;background-size:cover;background-position:center}1 .gts-testimonial-block{padding:20px;background:#f3f3f3;margin-bottom:1em;border-radius:10px;min-height:160px}.gts-testimonial-block blockquote{border-left:none;margin-bottom:1em}.testimonial-slider{margin-bottom:2em}.testimonial-text{font-size:1.5em;line-height:1.5;font-style:normal}.testimonial-author-container{text-align:center}.testimonial-author-link,.testimonial-author-name{padding-left:12px;margin-bottom:5px;font-style:normal}span.testimonial-author{font-style:normal}.fa.fa-quote-left{padding-right:12px;padding-left:8px;font-size:1.25em}.fa.fa-quote-right{padding-left:12px;font-size:1.25em}ol.carousel-indicators{bottom:-25px}ol.carousel-indicators li{background-color:rgba(167,167,167,0.5)}ol.carousel-indicators .active{background-color:black}.entry-content a.carousel-control-prev,.entry-content a.carousel-control-next{-webkit-box-shadow:none;box-shadow:none;border-bottom:none}.entry-content a.carousel-control-prev:hover,.entry-content a.carousel-control-prev:focus,.entry-content a.carousel-control-prev:active,.entry-content a.carousel-control-next:hover,.entry-content a.carousel-control-next:focus,.entry-content a.carousel-control-next:active{-webkit-box-shadow:none;box-shadow:none;border-bottom:none}.carousel-control-next-icon,.carousel-control-prev-icon{color:#000}.gts-testimonial-slider-block.testimonial-slider{background:#f3f3f3;padding:10px;border-radius:10px;margin-bottom:1em;min-height:160px}.gts-testimonial-slider-block.testimonial-slider blockquote{border-left:none}.gts__picture{position:relative}.gts__picture .gts__picture__image{width:100px;height:100px;margin-right:30px;margin-left:4.5px;border-radius:50%;overflow:hidden;border:1px solid #dadada;font-size:.8em;background-size:cover;background-position:center} -
testimonials-slider-block/trunk/readme.txt
r1927954 r1972900 42 42 == Changelog == 43 43 44 = 1.0.1 (12/11/2018) = 45 * Added a11y support for author images 46 47 = 1.0.0 (21/08/2018) = 48 * First release 49 44 50 == Donations == 45 51 -
testimonials-slider-block/trunk/src/block/slider.js
r1927943 r1972900 35 35 36 36 attributes: { 37 id: { 38 source: "attribute", 39 selector: ".carousel.slide", 40 attribute: "id" 41 }, 37 42 testimonials: { 38 type: "array",39 43 source: "query", 40 44 default: [], … … 47 51 }, 48 52 index: { 49 type: "string",50 53 source: "text", 51 54 selector: "span.testimonial-index" 52 55 }, 53 56 content: { 54 type: "string",55 57 source: "text", 56 58 selector: "span.testimonial-text" 57 59 }, 58 60 author: { 59 type: "string",60 61 source: "text", 61 62 selector: "span.testimonial-author span" 62 63 }, 63 64 link: { 64 type: "string",65 65 source: "text", 66 66 selector: ".testimonial-author-link" 67 67 } 68 68 } 69 },70 id: {71 type: "string",72 source: "attribute",73 selector: ".carousel.slide",74 attribute: "id"75 69 } 76 70 }, … … 88 82 edit: props => { 89 83 const { testimonials } = props.attributes; 84 90 85 if (!props.attributes.id) { 91 86 const id = `testimonial${Math.floor(Math.random() * 100)}`; … … 174 169 <div className="gts__picture__actions"> 175 170 <a 171 href="#" 176 172 onClick={() => { 177 173 const newObject = Object.assign( … … 206 202 </div> 207 203 ) : ( 208 <a className="gts__picture__image" onClick={open}> 204 <a 205 href="#" 206 className="gts__picture__image" 207 onClick={open} 208 > 209 209 Select Image 210 210 </a> … … 258 258 }); 259 259 return ( 260 <div >260 <div className={props.className}> 261 261 {testimonialsList} 262 262 <button … … 291 291 */ 292 292 save: props => { 293 const { testimonials } = props.attributes; // Content in our block. 294 const id = props.attributes.id; 293 const { id, testimonials } = props.attributes; 295 294 const carouselIndicators = testimonials.map(function(testimonial, index) { 296 295 return ( … … 321 320 {testimonial.image && ( 322 321 <div className="gts__picture col-3"> 323 <img src={testimonial.image} style={{ display: 'none'}} />322 <img src={testimonial.image} style={{ display: "none" }} /> 324 323 <div 325 324 className="gts__picture__image" -
testimonials-slider-block/trunk/src/block/style.scss
r1927943 r1972900 17 17 } 18 18 19 .testimonial-slider { 20 margin-bottom: 2em; 21 } 22 19 23 .testimonial-text { 20 24 font-size: 1.5em; 25 line-height: 1.5; 21 26 font-style: normal; 22 27 }
Note: See TracChangeset
for help on using the changeset viewer.