__( 'Save as a template', 'elementor' ); __( 'New', 'elementor' ); __( 'Create component', 'elementor' ); __( 'To create new components, update Elementor Pro to the latest version.', 'elementor' ); __( 'Update Now', 'elementor' ); __( 'Add %s', 'elementor' ); __( 'Edit %s', 'elementor' ); __( 'Duplicate %s', 'elementor' ); __( 'Delete %s', 'elementor' );# Members - EDD Integration The Members - EDD Integration add-on more nicely integrates the [Easy Digital Downloads](https://easydigitaldownloads.com/) plugin capabilities into the Members plugin's role manager. The [Members plugin](https://themehybrid.com/plugins/members) and the Easy Digital Downloads plugin are required to be installed and activated for this plugin to work. ## Shop Role Group The plugin creates a new "Shop" role group for Easy Digital Downloads, which is located under the Users > Roles screen in the admin. This role group lists the following roles: - Shop Accountant - Shop Manager - Shop Vendor - Shop Worker - Any other roles that have EDD-related capabilities. This allows you to see any roles that have EDD permissions at a glance. ## Downloads Capability Group When editing or creating a new role in Members, this add-on creates a new "Downloads" tab (cap group). This tab combines all of the Easy Digital Downloads capabilities in one place. That way, you can see all available caps without jumping between different tabs. ## Copyright and License This project is licensed under the [GNU GPL](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html), version 2 or later. 2019 © [Justin Tadlock](http://justintadlock.com). /******/ (function() { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js ***! \*****************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ arrayLikeToArray: function() { return /* binding */ _arrayLikeToArray; }, /* harmony export */ arrayWithHoles: function() { return /* binding */ _arrayWithHoles; }, /* harmony export */ defineProperty: function() { return /* binding */ _defineProperty; }, /* harmony export */ iterableToArrayLimit: function() { return /* binding */ _iterableToArrayLimit; }, /* harmony export */ nonIterableRest: function() { return /* binding */ _nonIterableRest; }, /* harmony export */ objectSpread2: function() { return /* binding */ _objectSpread2; }, /* harmony export */ objectWithoutProperties: function() { return /* binding */ _objectWithoutProperties; }, /* harmony export */ objectWithoutPropertiesLoose: function() { return /* binding */ _objectWithoutPropertiesLoose; }, /* harmony export */ slicedToArray: function() { return /* binding */ _slicedToArray; }, /* harmony export */ toPrimitive: function() { return /* binding */ _toPrimitive; }, /* harmony export */ toPropertyKey: function() { return /* binding */ _toPropertyKey; }, /* harmony export */ unsupportedIterableToArray: function() { return /* binding */ _unsupportedIterableToArray; } /* harmony export */ }); function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = true, o = false; try { if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = true, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/config/index.js": /*!*******************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/config/index.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ config; } /* harmony export */ }); var config = { paths: { vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs' } }; /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/index.js": /*!************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/index.js ***! \************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* reexport safe */ _loader_index_js__WEBPACK_IMPORTED_MODULE_0__["default"]; } /* harmony export */ }); /* harmony import */ var _loader_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loader/index.js */ "./node_modules/@monaco-editor/loader/lib/es/loader/index.js"); /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/loader/index.js": /*!*******************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/loader/index.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ loader; } /* harmony export */ }); /* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_virtual/_rollupPluginBabelHelpers.js */ "./node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js"); /* harmony import */ var state_local__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! state-local */ "./node_modules/state-local/lib/es/state-local.js"); /* harmony import */ var _config_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config/index.js */ "./node_modules/@monaco-editor/loader/lib/es/config/index.js"); /* harmony import */ var _validators_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../validators/index.js */ "./node_modules/@monaco-editor/loader/lib/es/validators/index.js"); /* harmony import */ var _utils_compose_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/compose.js */ "./node_modules/@monaco-editor/loader/lib/es/utils/compose.js"); /* harmony import */ var _utils_deepMerge_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/deepMerge.js */ "./node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js"); /* harmony import */ var _utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/makeCancelable.js */ "./node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js"); var _excluded = ["monaco"]; /** the local state of the module */ var _state$create = state_local__WEBPACK_IMPORTED_MODULE_1__["default"].create({ config: _config_index_js__WEBPACK_IMPORTED_MODULE_2__["default"], isInitialized: false, resolve: null, reject: null, monaco: null }), _state$create2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.slicedToArray)(_state$create, 2), getState = _state$create2[0], setState = _state$create2[1]; /** * set the loader configuration * @param {Object} config - the configuration object */ function config(globalConfig) { var _validators$config = _validators_index_js__WEBPACK_IMPORTED_MODULE_3__["default"].config(globalConfig), monaco = _validators$config.monaco, config = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.objectWithoutProperties)(_validators$config, _excluded); setState(function (state) { return { config: (0,_utils_deepMerge_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.config, config), monaco: monaco }; }); } /** * handles the initialization of the monaco-editor * @return {Promise} - returns an instance of monaco (with a cancelable promise) */ function init() { var state = getState(function (_ref) { var monaco = _ref.monaco, isInitialized = _ref.isInitialized, resolve = _ref.resolve; return { monaco: monaco, isInitialized: isInitialized, resolve: resolve }; }); if (!state.isInitialized) { setState({ isInitialized: true }); if (state.monaco) { state.resolve(state.monaco); return (0,_utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__["default"])(wrapperPromise); } if (window.monaco && window.monaco.editor) { storeMonacoInstance(window.monaco); state.resolve(window.monaco); return (0,_utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__["default"])(wrapperPromise); } (0,_utils_compose_js__WEBPACK_IMPORTED_MODULE_4__["default"])(injectScripts, getMonacoLoaderScript)(configureLoader); } return (0,_utils_makeCancelable_js__WEBPACK_IMPORTED_MODULE_6__["default"])(wrapperPromise); } /** * injects provided scripts into the document.body * @param {Object} script - an HTML script element * @return {Object} - the injected HTML script element */ function injectScripts(script) { return document.body.appendChild(script); } /** * creates an HTML script element with/without provided src * @param {string} [src] - the source path of the script * @return {Object} - the created HTML script element */ function createScript(src) { var script = document.createElement('script'); return src && (script.src = src), script; } /** * creates an HTML script element with the monaco loader src * @return {Object} - the created HTML script element */ function getMonacoLoaderScript(configureLoader) { var state = getState(function (_ref2) { var config = _ref2.config, reject = _ref2.reject; return { config: config, reject: reject }; }); var loaderScript = createScript("".concat(state.config.paths.vs, "/loader.js")); loaderScript.onload = function () { return configureLoader(); }; loaderScript.onerror = state.reject; return loaderScript; } /** * configures the monaco loader */ function configureLoader() { var state = getState(function (_ref3) { var config = _ref3.config, resolve = _ref3.resolve, reject = _ref3.reject; return { config: config, resolve: resolve, reject: reject }; }); var require = window.require; require.config(state.config); require(['vs/editor/editor.main'], function (loaded) { var monaco = loaded.m /* for 0.53 & 0.54 */ || loaded /* for other versions */; storeMonacoInstance(monaco); state.resolve(monaco); }, function (error) { state.reject(error); }); } /** * store monaco instance in local state */ function storeMonacoInstance(monaco) { if (!getState().monaco) { setState({ monaco: monaco }); } } /** * internal helper function * extracts stored monaco instance * @return {Object|null} - the monaco instance */ function __getMonacoInstance() { return getState(function (_ref4) { var monaco = _ref4.monaco; return monaco; }); } var wrapperPromise = new Promise(function (resolve, reject) { return setState({ resolve: resolve, reject: reject }); }); var loader = { config: config, init: init, __getMonacoInstance: __getMonacoInstance }; /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/utils/compose.js": /*!********************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/utils/compose.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ compose; } /* harmony export */ }); var compose = function compose() { for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) { fns[_key] = arguments[_key]; } return function (x) { return fns.reduceRight(function (y, f) { return f(y); }, x); }; }; /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/utils/curry.js": /*!******************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/utils/curry.js ***! \******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ curry; } /* harmony export */ }); function curry(fn) { return function curried() { var _this = this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return args.length >= fn.length ? fn.apply(this, args) : function () { for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { nextArgs[_key2] = arguments[_key2]; } return curried.apply(_this, [].concat(args, nextArgs)); }; }; } /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js": /*!**********************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ merge; } /* harmony export */ }); /* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_virtual/_rollupPluginBabelHelpers.js */ "./node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js"); function merge(target, source) { Object.keys(source).forEach(function (key) { if (source[key] instanceof Object) { if (target[key]) { Object.assign(source[key], merge(target[key], source[key])); } } }); return (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.objectSpread2)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.objectSpread2)({}, target), source); } /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/utils/isObject.js": /*!*********************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/utils/isObject.js ***! \*********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ isObject; } /* harmony export */ }); function isObject(value) { return {}.toString.call(value).includes('Object'); } /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js": /*!***************************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js ***! \***************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ CANCELATION_MESSAGE: function() { return /* binding */ CANCELATION_MESSAGE; }, /* harmony export */ "default": function() { return /* binding */ makeCancelable; } /* harmony export */ }); // The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325 var CANCELATION_MESSAGE = { type: 'cancelation', msg: 'operation is manually canceled' }; function makeCancelable(promise) { var hasCanceled_ = false; var wrappedPromise = new Promise(function (resolve, reject) { promise.then(function (val) { return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val); }); promise["catch"](reject); }); return wrappedPromise.cancel = function () { return hasCanceled_ = true; }, wrappedPromise; } /***/ }), /***/ "./node_modules/@monaco-editor/loader/lib/es/validators/index.js": /*!***********************************************************************!*\ !*** ./node_modules/@monaco-editor/loader/lib/es/validators/index.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ validators; }, /* harmony export */ errorHandler: function() { return /* binding */ errorHandler; }, /* harmony export */ errorMessages: function() { return /* binding */ errorMessages; } /* harmony export */ }); /* harmony import */ var _utils_curry_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/curry.js */ "./node_modules/@monaco-editor/loader/lib/es/utils/curry.js"); /* harmony import */ var _utils_isObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/isObject.js */ "./node_modules/@monaco-editor/loader/lib/es/utils/isObject.js"); /** * validates the configuration object and informs about deprecation * @param {Object} config - the configuration object * @return {Object} config - the validated configuration object */ function validateConfig(config) { if (!config) errorHandler('configIsRequired'); if (!(0,_utils_isObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(config)) errorHandler('configType'); if (config.urls) { informAboutDeprecation(); return { paths: { vs: config.urls.monacoBase } }; } return config; } /** * logs deprecation message */ function informAboutDeprecation() { console.warn(errorMessages.deprecation); } function throwError(errorMessages, type) { throw new Error(errorMessages[type] || errorMessages["default"]); } var errorMessages = { configIsRequired: 'the configuration object is required', configType: 'the configuration object should be an object', "default": 'an unknown error accured in `@monaco-editor/loader` package', deprecation: "Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n " }; var errorHandler = (0,_utils_curry_js__WEBPACK_IMPORTED_MODULE_0__["default"])(throwError)(errorMessages); var validators = { config: validateConfig }; /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.styles.ts": /*!************************************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.styles.ts ***! \************************************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ EditorWrapper: function() { return /* binding */ EditorWrapper; }, /* harmony export */ ResizeHandle: function() { return /* binding */ ResizeHandle; } /* harmony export */ }); /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_0__); const EditorWrapper = (0,_elementor_ui__WEBPACK_IMPORTED_MODULE_0__.styled)((0,_elementor_ui__WEBPACK_IMPORTED_MODULE_0__.Box))` /* @noflip */ direction: ltr; border: 1px solid var( --e-a-border-color ); border-radius: 8px; padding: 4px; position: relative; height: 200px; .monaco-editor .suggest-widget { width: 220px !important; max-width: 220px !important; z-index: 1001; } .visual-content-dimmed { opacity: 0.6; color: #aaa !important; pointer-events: none; } .monaco-editor { .margin-view-overlays > div:nth-of-type( 1 ) .cldr.codicon.codicon-folding-expanded { visibility: hidden; } .monaco-scrollable-element { > .scrollbar { width: 6px !important; > .slider { width: 6px !important; } } } } `; const ResizeHandle = (0,_elementor_ui__WEBPACK_IMPORTED_MODULE_0__.styled)((0,_elementor_ui__WEBPACK_IMPORTED_MODULE_0__.Button))` position: absolute; bottom: 0; left: 0; right: 0; height: 6px; cursor: ns-resize; background: transparent; border: none; padding: 0; &:hover { background: rgba( 0, 0, 0, 0.05 ); } &:active { background: rgba( 0, 0, 0, 0.1 ); } &::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate( -50%, -50% ); width: 30px; height: 2px; background: var( --e-a-border-color ); border-radius: 1px; } `; /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.tsx": /*!******************************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.tsx ***! \******************************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ CssEditor: function() { return /* binding */ CssEditor; } /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls"); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui"); /* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _monaco_editor_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @monaco-editor/react */ "./node_modules/@monaco-editor/react/dist/index.mjs"); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_editor_styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./css-editor.styles */ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.styles.ts"); /* harmony import */ var _css_validation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./css-validation */ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-validation.ts"); /* harmony import */ var _resize_handle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./resize-handle */ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/resize-handle.tsx"); /* harmony import */ var _visual_content_change_protection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./visual-content-change-protection */ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/visual-content-change-protection.ts"); const createEditorDidMountHandler = (editorRef, monacoRef, onUserContentChange, setIsValid, syntaxRuleOptions) => { return (editor, monaco) => { editorRef.current = editor; monacoRef.current = monaco; (0,_visual_content_change_protection__WEBPACK_IMPORTED_MODULE_9__.preventChangeOnVisualContent)(editor); (0,_css_validation__WEBPACK_IMPORTED_MODULE_7__.setCustomSyntaxRules)(editor, monaco, syntaxRuleOptions); const initialCode = editor.getModel()?.getValue() ?? ''; const initialUserContent = (0,_visual_content_change_protection__WEBPACK_IMPORTED_MODULE_9__.getActual)(initialCode); onUserContentChange(initialUserContent); monaco.editor.onDidChangeMarkers(() => { (0,_css_validation__WEBPACK_IMPORTED_MODULE_7__.clearMarkersFromVisualContent)(editor, monaco); setIsValid((0,_css_validation__WEBPACK_IMPORTED_MODULE_7__.validate)(editor, monaco)); }); editor.setPosition({ lineNumber: 2, column: (editor.getModel()?.getLineContent(2).length ?? 0) + 1 }); disableFoldingFirstRow(editor); // eslint-disable-next-line no-bitwise editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyA, () => { const editorModel = editor.getModel(); if (!editorModel) { return; } const fullRange = editorModel.getFullModelRange(); const contentEndLine = fullRange.endLineNumber - 1; let endColumn = editorModel.getLineLastNonWhitespaceColumn(contentEndLine); if (endColumn === 0) { endColumn = editorModel.getLineMaxColumn(contentEndLine); } editor.setSelection(new monaco.Selection(fullRange.startLineNumber + 1, fullRange.startColumn, contentEndLine, endColumn)); }); }; }; function disableFoldingFirstRow(editor) { if (!(typeof editor.getDomNode === 'function')) { return; } const marginViewOverlays = editor.getDomNode()?.querySelector('.margin-view-overlays'); const handler = event => { const ev = event; if (ev.button !== 0) { return; } const target = ev.target; const firstElem = marginViewOverlays?.children[0]; const isFirstRow = target === firstElem || target.parentElement === firstElem; if (isFirstRow) { event.preventDefault(); event.stopPropagation(); } }; marginViewOverlays?.addEventListener('mousedown', handler); editor.onDidDispose(() => { marginViewOverlays?.removeEventListener('mousedown', handler); }); } const CssEditor = ({ value, onChange, syntaxRuleOptions, readOnly = false }) => { const theme = (0,_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.useTheme)(); const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); const editorRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); const monacoRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); const debounceTimer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); const [hasContent, setHasContent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(value.trim() !== ''); const [isValid, setIsValid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true); const [contentVersion, setContentVersion] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0); useOnUpdate(() => { const code = editorRef.current?.getModel()?.getValue() ?? ''; const userContent = (0,_visual_content_change_protection__WEBPACK_IMPORTED_MODULE_9__.getActual)(code); setHasContent(!userContent.trim()); onChange(userContent, isValid); }, [contentVersion, isValid]); const handleUserContentChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newValue => { setHasContent(newValue.trim() !== ''); }, []); const handleResize = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => { editorRef.current?.layout(); }, []); const handleHeightChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(height => { if (containerRef.current) { containerRef.current.style.height = `${height}px`; } }, []); const handleEditorChange = () => { if (!editorRef.current || !monacoRef.current) { return; } (0,_css_validation__WEBPACK_IMPORTED_MODULE_7__.setCustomSyntaxRules)(editorRef?.current, monacoRef.current, syntaxRuleOptions); if (debounceTimer.current) { clearTimeout(debounceTimer.current); } debounceTimer.current = setTimeout(() => { setContentVersion(prev => prev + 1); }, 500); }; const handleEditorDidMount = createEditorDidMountHandler(editorRef, monacoRef, handleUserContentChange, setIsValid, syntaxRuleOptions); const handleReset = () => editorRef.current?.getModel()?.setValue((0,_visual_content_change_protection__WEBPACK_IMPORTED_MODULE_9__.setVisualContent)('')); (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { const timerRef = debounceTimer; return () => { const timer = timerRef.current; if (timer) { clearTimeout(timer); } }; }, []); return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__.FloatingActionsBar, { actions: hasContent ? [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.ClearIconButton, { key: "clear", tooltipText: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Clear', 'elementor-pro'), onClick: handleReset })] : [] }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_css_editor_styles__WEBPACK_IMPORTED_MODULE_6__.EditorWrapper, { ref: containerRef, dir: "ltr" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_monaco_editor_react__WEBPACK_IMPORTED_MODULE_4__.Editor, { height: "100%", language: "css", theme: theme.palette.mode === 'dark' ? 'vs-dark' : 'vs', value: (0,_visual_content_change_protection__WEBPACK_IMPORTED_MODULE_9__.setVisualContent)(value), onMount: handleEditorDidMount, onChange: handleEditorChange, options: { lineNumbers: 'on', lineNumbersMinChars: 3, folding: true, minimap: { enabled: false }, fontFamily: 'Roboto, Arial, Helvetica, Verdana, sans-serif', fontSize: 12, renderLineHighlight: 'none', hideCursorInOverviewRuler: true, overviewRulerBorder: false, fixedOverflowWidgets: true, suggestFontSize: 10, suggestLineHeight: 14, stickyScroll: { enabled: false }, lineDecorationsWidth: 2, wordWrap: 'on', scrollBeyondLastLine: false, readOnly, editContext: false } }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_resize_handle__WEBPACK_IMPORTED_MODULE_8__.ResizeHandleComponent, { onResize: handleResize, containerRef: containerRef, onHeightChange: handleHeightChange })))); }; function useOnUpdate(callback, dependencies) { const hasMounted = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false); (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { if (hasMounted.current) { callback(); } else { hasMounted.current = true; } // eslint-disable-next-line react-hooks/exhaustive-deps }, dependencies); } /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-validation.ts": /*!*********************************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-validation.ts ***! \*********************************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ clearMarkersFromVisualContent: function() { return /* binding */ clearMarkersFromVisualContent; }, /* harmony export */ setCustomSyntaxRules: function() { return /* binding */ setCustomSyntaxRules; }, /* harmony export */ validate: function() { return /* binding */ validate; } /* harmony export */ }); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__); const syntaxRules = { pseudoState: { pattern: '^\\s*[&]{0,1}\\s*(?::hover|:active|:focus)', regex: true, message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('The use of pseudo-states is not permitted. Instead, switch to the desired pseudo state and add your custom code there.', 'elementor-pro') }, mediaQuery: { pattern: '@media\\s+[^{]*\\b(?:min-width|max-width|width)\\b', regex: true, message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__.__)('The use of @media width queries is not permitted. Instead, switch to the desired breakpoint and add your custom code there.', 'elementor-pro') } }; function setCustomSyntaxRules(editor, monaco, options) { const model = editor.getModel(); if (!model) { return true; } const customMarkers = []; Object.entries(syntaxRules).forEach(([id, rule]) => { if (options?.rules?.[id] === false) { return; } const matches = model.findMatches(rule.pattern, true, rule.regex ?? false, true, null, true); matches.forEach(match => { customMarkers.push({ severity: monaco.MarkerSeverity.Error, message: rule.message, startLineNumber: match.range.startLineNumber, startColumn: match.range.startColumn, endLineNumber: match.range.endLineNumber, endColumn: match.range.endColumn, source: 'custom-css-rules' }); }); }); monaco.editor.setModelMarkers(model, 'custom-css-rules', customMarkers); return customMarkers.length === 0; } function validate(editor, monaco) { const model = editor.getModel(); if (!model) { return true; } const allMarkers = monaco.editor.getModelMarkers({ resource: model.uri }); return allMarkers.filter(marker => marker.severity === monaco.MarkerSeverity.Error).length === 0; } function clearMarkersFromVisualContent(editor, monaco) { const model = editor.getModel(); if (!model) { return; } const allMarkers = monaco.editor.getModelMarkers({ resource: model.uri }); const filteredMarkers = allMarkers.filter(marker => marker.startLineNumber !== 1); const nonCustomMarkers = filteredMarkers.filter(m => m.source !== 'custom-css-rules'); if (nonCustomMarkers.length === allMarkers.length) { return; } monaco.editor.setModelMarkers(model, 'css', nonCustomMarkers); } /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/resize-handle.tsx": /*!*********************************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/resize-handle.tsx ***! \*********************************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ResizeHandleComponent: function() { return /* binding */ ResizeHandleComponent; } /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_editor_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css-editor.styles */ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.styles.ts"); const ResizeHandleComponent = ({ onResize, containerRef, onHeightChange }) => { const handleResizeMove = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(e => { const container = containerRef.current; if (!container) { return; } const containerRect = container.getBoundingClientRect(); const newHeight = Math.max(100, e.clientY - containerRect.top); onHeightChange?.(newHeight); onResize(newHeight); }, [containerRef, onResize, onHeightChange]); const handleResizeEnd = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(() => { document.removeEventListener('mousemove', handleResizeMove); document.removeEventListener('mouseup', handleResizeEnd); }, [handleResizeMove]); const handleResizeStart = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(e => { e.preventDefault(); e.stopPropagation(); document.addEventListener('mousemove', handleResizeMove); document.addEventListener('mouseup', handleResizeEnd); }, [handleResizeMove, handleResizeEnd]); react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => { return () => { document.removeEventListener('mousemove', handleResizeMove); document.removeEventListener('mouseup', handleResizeEnd); }; }, [handleResizeMove, handleResizeEnd]); return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_css_editor_styles__WEBPACK_IMPORTED_MODULE_1__.ResizeHandle, { onMouseDown: handleResizeStart, "aria-label": "Resize editor height", title: "Drag to resize editor height" }); }; /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/visual-content-change-protection.ts": /*!***************************************************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/visual-content-change-protection.ts ***! \***************************************************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getActual: function() { return /* binding */ getActual; }, /* harmony export */ preventChangeOnVisualContent: function() { return /* binding */ preventChangeOnVisualContent; }, /* harmony export */ setVisualContent: function() { return /* binding */ setVisualContent; } /* harmony export */ }); const preventChangeOnVisualContent = editor => { const model = editor.getModel(); if (!model) { return; } // On first load applyVisualContentStyling(editor, model); // On every change model.onDidChangeContent(() => { applyVisualContentStyling(editor, model); }); disableCursorOnVisualContent(editor); overridePushEditOperations(model); }; const applyVisualContentStyling = (editor, model) => { const decorationsCollection = editor.createDecorationsCollection(); const lineCount = model.getLineCount(); const decorations = []; decorations.push({ range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: model.getLineContent(1).length + 1 }, options: { inlineClassName: 'visual-content-dimmed', isWholeLine: false } }); if (lineCount > 1) { decorations.push({ range: { startLineNumber: lineCount, startColumn: 1, endLineNumber: lineCount, endColumn: model.getLineContent(lineCount).length + 1 }, options: { inlineClassName: 'visual-content-dimmed', isWholeLine: false } }); } decorationsCollection.set(decorations); }; const disableCursorOnVisualContent = editor => { const model = editor.getModel(); if (!model) { return; } editor.onDidChangeCursorPosition(e => { const totalLines = model.getLineCount(); const position = e.position; if (position.lineNumber === 1) { editor.setPosition({ lineNumber: 2, column: 1 }); } else if (position.lineNumber === totalLines) { editor.setPosition({ lineNumber: totalLines - 1, column: model.getLineContent(totalLines - 1).length + 1 }); } }); }; const overridePushEditOperations = model => { const originalPushEditOperations = model.pushEditOperations; model.pushEditOperations = (beforeCursorState, editOperations, cursorStateComputer) => { const totalLines = model.getLineCount(); const modelRange = model.getFullModelRange(); const filteredOperations = editOperations.filter(operation => { const range = operation.range; const affectsProtectedLine = range.startLineNumber === 1 || range.endLineNumber === 1 || range.startLineNumber === totalLines || range.endLineNumber === totalLines; if (affectsProtectedLine && isFullContentReplacement(range, modelRange) && hasVisualContent(operation.text)) { return true; } return !affectsProtectedLine; }); return originalPushEditOperations.call(model, beforeCursorState, filteredOperations, cursorStateComputer); }; }; const isFullContentReplacement = (range, modelRange) => { return range.startLineNumber === modelRange.startLineNumber && range.endLineNumber === modelRange.endLineNumber && range.startColumn === modelRange.startColumn && range.endColumn === modelRange.endColumn; }; const hasVisualContent = text => { if (!text) { return false; } return text.startsWith('element.style {') && text.endsWith('}'); }; const setVisualContent = value => { const trimmed = value.trim(); return `element.style {\n${trimmed ? ' ' + trimmed.replace(/\n/g, '\n ') + '\n' : ' \n'}}`; }; const getActual = value => { const lines = value.split('\n'); if (lines.length < 2) { return ''; } return lines.slice(1, -1).map(line => line.replace(/^ {2}/, '')).join('\n'); }; /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/controls/attributes-control.tsx": /*!********************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/controls/attributes-control.tsx ***! \********************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ AttributesControl: function() { return /* binding */ AttributesControl; } /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls"); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__); const AttributesControl = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.createControl)(() => { const getHelperText = (key, value) => { if (value && !key) { return { keyHelper: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)("Empty attribute names aren't valid and won't render on the page.", 'elementor-pro') }; } return {}; }; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.KeyValueControl, { keyName: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Name', 'elementor-pro'), valueName: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Value', 'elementor-pro'), regexKey: "^[a-zA-Z0-9_-]*$", validationErrorMessage: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Names can only use letters, numbers, dashes (-) and underscores (_).', 'elementor-pro'), getHelperText: getHelperText }); }); /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/controls/display-conditions-control.tsx": /*!****************************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/controls/display-conditions-control.tsx ***! \****************************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ DisplayConditionsControl: function() { return /* binding */ DisplayConditionsControl; } /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls"); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); /* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); /* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _prop_types_display_conditions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../prop-types/display-conditions */ "./packages/packages/pro/editor-controls-extended/src/prop-types/display-conditions.ts"); /* harmony import */ var _utils_display_conditions_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/display-conditions-utils */ "./packages/packages/pro/editor-controls-extended/src/utils/display-conditions-utils.ts"); const OPEN_MODAL_EVENT = 'elementor/display-conditions/open'; const CLOSE_MODAL_EVENT = 'elementor/display-conditions/close'; const SET_CACHE_NOTICE_STATUS_EVENT = 'elementor/display-conditions/set-cache-notice-status'; const ariaLabel = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Display Conditions', 'elementor-pro'); async function setCacheNoticeStatus() { return new Promise((resolve, reject) => { window.dispatchEvent(new CustomEvent(SET_CACHE_NOTICE_STATUS_EVENT, { detail: { resolve, reject } })); }); } const DisplayConditionsControl = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.createControl)(({ disabled = false }) => { const { setValue, value: displayConditionsValue } = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.useBoundProp)(_prop_types_display_conditions__WEBPACK_IMPORTED_MODULE_5__.displayConditionsPropTypeUtil); const [isModalOpen, setIsModalOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false); const hasValue = !!displayConditionsValue?.length; const setControlValue = value => setValue((0,_utils_display_conditions_utils__WEBPACK_IMPORTED_MODULE_6__.transformV3ToV4)(JSON.parse(value ?? '[]'))); const getControlValue = () => (0,_utils_display_conditions_utils__WEBPACK_IMPORTED_MODULE_6__.transformV4ToV3)(displayConditionsValue) ?? []; const onClose = () => { setIsModalOpen(false); window.dispatchEvent(new CustomEvent(CLOSE_MODAL_EVENT)); }; const conditions = getControlValue(); const openConditionsModal = () => { setIsModalOpen(true); window.dispatchEvent(new CustomEvent(OPEN_MODAL_EVENT, { detail: { props: { getControlValue, setControlValue, onClose, setCacheNoticeStatus } } })); }; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Stack, { direction: "row", spacing: 2, sx: { justifyContent: 'flex-end', alignItems: 'center' } }, disabled && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Chip, { icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__.CrownFilledIcon, { fontSize: "tiny" }), size: "tiny", color: "promotion", variant: "standard", sx: { width: '20px', '& .MuiChip-label': { display: 'none' } } }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Tooltip, { title: ariaLabel, placement: "top" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, { sx: { cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ToggleButton, { value: JSON.stringify(conditions), size: "tiny", variant: "outline", "aria-pressed": hasValue, "aria-expanded": isModalOpen, selected: hasValue, "aria-haspopup": "dialog", "aria-label": ariaLabel, onClick: openConditionsModal, disabled: disabled, sx: { pointerEvents: disabled ? 'none' : 'auto' }, "data-behavior": "display-conditions" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__.SitemapIcon, { fontSize: "tiny" })))))); }); /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/controls/options-control.tsx": /*!*****************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/controls/options-control.tsx ***! \*****************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ OptionsControl: function() { return /* binding */ OptionsControl; } /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls"); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__); const OptionsControl = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.createControl)(() => { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.KeyValueControl, { keyName: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Name', 'elementor-pro'), valueName: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Value', 'elementor-pro') }); }); /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/extend-transition-properties.ts": /*!********************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/extend-transition-properties.ts ***! \********************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ extendTransitionProperties: function() { return /* binding */ extendTransitionProperties; }, /* harmony export */ transitionProperties: function() { return /* reexport safe */ _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionProperties; }, /* harmony export */ transitionsItemsList: function() { return /* reexport safe */ _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionsItemsList; } /* harmony export */ }); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls"); /* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__); function extendTransitionProperties(isDisabled = false) { if (!_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionProperties || _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionProperties.length === 0) { return; } _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionProperties.forEach(category => { category.properties.forEach(property => { if (property.value !== 'all') { property.isDisabled = isDisabled; } }); }); _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionsItemsList.splice(0, _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionsItemsList.length, ..._elementor_editor_controls__WEBPACK_IMPORTED_MODULE_0__.transitionProperties.map(category => ({ label: category.label, items: category.properties.map(property => property.label) }))); } /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/init.ts": /*!********************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/init.ts ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ init: function() { return /* binding */ init; } /* harmony export */ }); /* harmony import */ var _elementor_license_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/license-api */ "@elementor/license-api"); /* harmony import */ var _elementor_license_api__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_license_api__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _extend_transition_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./extend-transition-properties */ "./packages/packages/pro/editor-controls-extended/src/extend-transition-properties.ts"); async function init() { const [isExpired, features] = await Promise.all([(0,_elementor_license_api__WEBPACK_IMPORTED_MODULE_0__.fetchLicenseStatus)().catch(() => false), (0,_elementor_license_api__WEBPACK_IMPORTED_MODULE_0__.fetchTierFeatures)().catch(() => [])]); if (features.includes('transitions')) { (0,_extend_transition_properties__WEBPACK_IMPORTED_MODULE_1__.extendTransitionProperties)(isExpired); } } /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/prop-types/condition-group.ts": /*!******************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/prop-types/condition-group.ts ***! \******************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ conditionGroupPropTypeUtil: function() { return /* binding */ conditionGroupPropTypeUtil; } /* harmony export */ }); /* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props"); /* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema"); /* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__); const unknownChildrenSchema = _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.any().nullable(); const conditionGroupPropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('condition-group', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.array(unknownChildrenSchema)); /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/prop-types/display-conditions.ts": /*!*********************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/prop-types/display-conditions.ts ***! \*********************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ displayConditionsPropTypeUtil: function() { return /* binding */ displayConditionsPropTypeUtil; } /* harmony export */ }); /* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props"); /* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema"); /* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__); const unknownChildrenSchema = _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.any().nullable(); const displayConditionsPropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('display-conditions', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.array(unknownChildrenSchema)); /***/ }), /***/ "./packages/packages/pro/editor-controls-extended/src/utils/display-conditions-utils.ts": /*!**********************************************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/utils/display-conditions-utils.ts ***! \**********************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ transformV3ToV4: function() { return /* binding */ transformV3ToV4; }, /* harmony export */ transformV4ToV3: function() { return /* binding */ transformV4ToV3; } /* harmony export */ }); /* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props"); /* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__); // Value must be falsy for navigator indication to work properly function transformV3ToV4(displayConditions) { if (!Array.isArray(displayConditions) || !displayConditions?.length) { return null; } const transformed = displayConditions.filter(conditionGroup => !!conditionGroup?.length).map(conditionGroup => ({ $$type: 'condition-group', value: conditionGroup.map(condition => _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.stringPropTypeUtil.create(JSON.stringify(condition))) })); return transformed.length ? transformed : null; } function transformV4ToV3(value) { const conditionGroups = value; const transformed = conditionGroups?.map(group => group.value.map(conditions => { return JSON.parse(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.stringPropTypeUtil.extract(conditions) ?? '[]'); })) ?? null; return getStructuredConditions(transformed); } function shouldConvertConditionsStructure(conditions) { return !!conditions?.length && !Array.isArray(conditions?.[0]); } function getStructuredConditions(conditions) { return shouldConvertConditionsStructure(conditions) ? [conditions] : conditions; } /***/ }), /***/ "./node_modules/state-local/lib/es/state-local.js": /*!********************************************************!*\ !*** ./node_modules/state-local/lib/es/state-local.js ***! \********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function compose() { for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) { fns[_key] = arguments[_key]; } return function (x) { return fns.reduceRight(function (y, f) { return f(y); }, x); }; } function curry(fn) { return function curried() { var _this = this; for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return args.length >= fn.length ? fn.apply(this, args) : function () { for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { nextArgs[_key3] = arguments[_key3]; } return curried.apply(_this, [].concat(args, nextArgs)); }; }; } function isObject(value) { return {}.toString.call(value).includes('Object'); } function isEmpty(obj) { return !Object.keys(obj).length; } function isFunction(value) { return typeof value === 'function'; } function hasOwnProperty(object, property) { return Object.prototype.hasOwnProperty.call(object, property); } function validateChanges(initial, changes) { if (!isObject(changes)) errorHandler('changeType'); if (Object.keys(changes).some(function (field) { return !hasOwnProperty(initial, field); })) errorHandler('changeField'); return changes; } function validateSelector(selector) { if (!isFunction(selector)) errorHandler('selectorType'); } function validateHandler(handler) { if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType'); if (isObject(handler) && Object.values(handler).some(function (_handler) { return !isFunction(_handler); })) errorHandler('handlersType'); } function validateInitial(initial) { if (!initial) errorHandler('initialIsRequired'); if (!isObject(initial)) errorHandler('initialType'); if (isEmpty(initial)) errorHandler('initialContent'); } function throwError(errorMessages, type) { throw new Error(errorMessages[type] || errorMessages["default"]); } var errorMessages = { initialIsRequired: 'initial state is required', initialType: 'initial state should be an object', initialContent: 'initial state shouldn\'t be an empty object', handlerType: 'handler should be an object or a function', handlersType: 'all handlers should be a functions', selectorType: 'selector should be a function', changeType: 'provided value of changes should be an object', changeField: 'it seams you want to change a field in the state which is not specified in the "initial" state', "default": 'an unknown error accured in `state-local` package' }; var errorHandler = curry(throwError)(errorMessages); var validators = { changes: validateChanges, selector: validateSelector, handler: validateHandler, initial: validateInitial }; function create(initial) { var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; validators.initial(initial); validators.handler(handler); var state = { current: initial }; var didUpdate = curry(didStateUpdate)(state, handler); var update = curry(updateState)(state); var validate = curry(validators.changes)(initial); var getChanges = curry(extractChanges)(state); function getState() { var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) { return state; }; validators.selector(selector); return selector(state.current); } function setState(causedChanges) { compose(didUpdate, update, validate, getChanges)(causedChanges); } return [getState, setState]; } function extractChanges(state, causedChanges) { return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges; } function updateState(state, changes) { state.current = _objectSpread2(_objectSpread2({}, state.current), changes); return changes; } function didStateUpdate(state, handler, changes) { isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) { var _handler$field; return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]); }); return changes; } var index = { create: create }; /* harmony default export */ __webpack_exports__["default"] = (index); /***/ }), /***/ "react": /*!**************************!*\ !*** external ["React"] ***! \**************************/ /***/ (function(module) { module.exports = window["React"]; /***/ }), /***/ "@elementor/editor-controls": /*!*************************************************!*\ !*** external ["elementorV2","editorControls"] ***! \*************************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["editorControls"]; /***/ }), /***/ "@elementor/editor-props": /*!**********************************************!*\ !*** external ["elementorV2","editorProps"] ***! \**********************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["editorProps"]; /***/ }), /***/ "@elementor/editor-ui": /*!*******************************************!*\ !*** external ["elementorV2","editorUi"] ***! \*******************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["editorUi"]; /***/ }), /***/ "@elementor/icons": /*!****************************************!*\ !*** external ["elementorV2","icons"] ***! \****************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["icons"]; /***/ }), /***/ "@elementor/license-api": /*!*********************************************!*\ !*** external ["elementorV2","licenseApi"] ***! \*********************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["licenseApi"]; /***/ }), /***/ "@elementor/schema": /*!*****************************************!*\ !*** external ["elementorV2","schema"] ***! \*****************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["schema"]; /***/ }), /***/ "@elementor/ui": /*!*************************************!*\ !*** external ["elementorV2","ui"] ***! \*************************************/ /***/ (function(module) { module.exports = window["elementorV2"]["ui"]; /***/ }), /***/ "@wordpress/i18n": /*!******************************!*\ !*** external ["wp","i18n"] ***! \******************************/ /***/ (function(module) { module.exports = window["wp"]["i18n"]; /***/ }), /***/ "./node_modules/@monaco-editor/react/dist/index.mjs": /*!**********************************************************!*\ !*** ./node_modules/@monaco-editor/react/dist/index.mjs ***! \**********************************************************/ /***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ DiffEditor: function() { return /* binding */ we; }, /* harmony export */ Editor: function() { return /* binding */ de; }, /* harmony export */ "default": function() { return /* binding */ Ft; }, /* harmony export */ loader: function() { return /* reexport safe */ _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"]; }, /* harmony export */ useMonaco: function() { return /* binding */ Le; } /* harmony export */ }); /* harmony import */ var _monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @monaco-editor/loader */ "./node_modules/@monaco-editor/loader/lib/es/index.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react"); var le={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},v=le;var ae={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},Y=ae;function Me({children:e}){return react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{style:Y.container},e)}var Z=Me;var $=Z;function Ee({width:e,height:r,isEditorReady:n,loading:t,_ref:a,className:m,wrapperProps:E}){return react__WEBPACK_IMPORTED_MODULE_1__.createElement("section",{style:{...v.wrapper,width:e,height:r},...E},!n&&react__WEBPACK_IMPORTED_MODULE_1__.createElement($,null,t),react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{ref:a,style:{...v.fullWidth,...!n&&v.hide},className:m}))}var ee=Ee;var H=(0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(ee);function Ce(e){(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(e,[])}var k=Ce;function he(e,r,n=!0){let t=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(!0);(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(t.current||!n?()=>{t.current=!1}:e,r)}var l=he;function D(){}function h(e,r,n,t){return De(e,t)||be(e,r,n,t)}function De(e,r){return e.editor.getModel(te(e,r))}function be(e,r,n,t){return e.editor.createModel(r,n,t?te(e,t):void 0)}function te(e,r){return e.Uri.parse(r)}function Oe({original:e,modified:r,language:n,originalLanguage:t,modifiedLanguage:a,originalModelPath:m,modifiedModelPath:E,keepCurrentOriginalModel:g=!1,keepCurrentModifiedModel:N=!1,theme:x="light",loading:P="Loading...",options:y={},height:V="100%",width:z="100%",className:F,wrapperProps:j={},beforeMount:A=D,onMount:q=D}){let[M,O]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!1),[T,s]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!0),u=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null),c=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null),w=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null),d=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(q),o=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(A),b=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(!1);k(()=>{let i=_monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"].init();return i.then(f=>(c.current=f)&&s(!1)).catch(f=>f?.type!=="cancelation"&&console.error("Monaco initialization: error:",f)),()=>u.current?I():i.cancel()}),l(()=>{if(u.current&&c.current){let i=u.current.getOriginalEditor(),f=h(c.current,e||"",t||n||"text",m||"");f!==i.getModel()&&i.setModel(f)}},[m],M),l(()=>{if(u.current&&c.current){let i=u.current.getModifiedEditor(),f=h(c.current,r||"",a||n||"text",E||"");f!==i.getModel()&&i.setModel(f)}},[E],M),l(()=>{let i=u.current.getModifiedEditor();i.getOption(c.current.editor.EditorOption.readOnly)?i.setValue(r||""):r!==i.getValue()&&(i.executeEdits("",[{range:i.getModel().getFullModelRange(),text:r||"",forceMoveMarkers:!0}]),i.pushUndoStop())},[r],M),l(()=>{u.current?.getModel()?.original.setValue(e||"")},[e],M),l(()=>{let{original:i,modified:f}=u.current.getModel();c.current.editor.setModelLanguage(i,t||n||"text"),c.current.editor.setModelLanguage(f,a||n||"text")},[n,t,a],M),l(()=>{c.current?.editor.setTheme(x)},[x],M),l(()=>{u.current?.updateOptions(y)},[y],M);let L=(0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{if(!c.current)return;o.current(c.current);let i=h(c.current,e||"",t||n||"text",m||""),f=h(c.current,r||"",a||n||"text",E||"");u.current?.setModel({original:i,modified:f})},[n,r,a,e,t,m,E]),U=(0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{!b.current&&w.current&&(u.current=c.current.editor.createDiffEditor(w.current,{automaticLayout:!0,...y}),L(),c.current?.editor.setTheme(x),O(!0),b.current=!0)},[y,x,L]);(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{M&&d.current(u.current,c.current)},[M]),(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{!T&&!M&&U()},[T,M,U]);function I(){let i=u.current?.getModel();g||i?.original?.dispose(),N||i?.modified?.dispose(),u.current?.dispose()}return react__WEBPACK_IMPORTED_MODULE_1__.createElement(H,{width:z,height:V,isEditorReady:M,loading:P,_ref:w,className:F,wrapperProps:j})}var ie=Oe;var we=(0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(ie);function Pe(){let[e,r]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(_monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"].__getMonacoInstance());return k(()=>{let n;return e||(n=_monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"].init(),n.then(t=>{r(t)})),()=>n?.cancel()}),e}var Le=Pe;function He(e){let r=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();return (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{r.current=e},[e]),r.current}var se=He;var _=new Map;function Ve({defaultValue:e,defaultLanguage:r,defaultPath:n,value:t,language:a,path:m,theme:E="light",line:g,loading:N="Loading...",options:x={},overrideServices:P={},saveViewState:y=!0,keepCurrentModel:V=!1,width:z="100%",height:F="100%",className:j,wrapperProps:A={},beforeMount:q=D,onMount:M=D,onChange:O,onValidate:T=D}){let[s,u]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!1),[c,w]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!0),d=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null),o=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null),b=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null),L=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(M),U=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(q),I=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(),i=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(t),f=se(m),Q=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(!1),B=(0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(!1);k(()=>{let p=_monaco_editor_loader__WEBPACK_IMPORTED_MODULE_0__["default"].init();return p.then(R=>(d.current=R)&&w(!1)).catch(R=>R?.type!=="cancelation"&&console.error("Monaco initialization: error:",R)),()=>o.current?pe():p.cancel()}),l(()=>{let p=h(d.current,e||t||"",r||a||"",m||n||"");p!==o.current?.getModel()&&(y&&_.set(f,o.current?.saveViewState()),o.current?.setModel(p),y&&o.current?.restoreViewState(_.get(m)))},[m],s),l(()=>{o.current?.updateOptions(x)},[x],s),l(()=>{!o.current||t===void 0||(o.current.getOption(d.current.editor.EditorOption.readOnly)?o.current.setValue(t):t!==o.current.getValue()&&(B.current=!0,o.current.executeEdits("",[{range:o.current.getModel().getFullModelRange(),text:t,forceMoveMarkers:!0}]),o.current.pushUndoStop(),B.current=!1))},[t],s),l(()=>{let p=o.current?.getModel();p&&a&&d.current?.editor.setModelLanguage(p,a)},[a],s),l(()=>{g!==void 0&&o.current?.revealLine(g)},[g],s),l(()=>{d.current?.editor.setTheme(E)},[E],s);let X=(0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{if(!(!b.current||!d.current)&&!Q.current){U.current(d.current);let p=m||n,R=h(d.current,t||e||"",r||a||"",p||"");o.current=d.current?.editor.create(b.current,{model:R,automaticLayout:!0,...x},P),y&&o.current.restoreViewState(_.get(p)),d.current.editor.setTheme(E),g!==void 0&&o.current.revealLine(g),u(!0),Q.current=!0}},[e,r,n,t,a,m,x,P,y,E,g]);(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{s&&L.current(o.current,d.current)},[s]),(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{!c&&!s&&X()},[c,s,X]),i.current=t,(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{s&&O&&(I.current?.dispose(),I.current=o.current?.onDidChangeModelContent(p=>{B.current||O(o.current.getValue(),p)}))},[s,O]),(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{if(s){let p=d.current.editor.onDidChangeMarkers(R=>{let G=o.current.getModel()?.uri;if(G&&R.find(J=>J.path===G.path)){let J=d.current.editor.getModelMarkers({resource:G});T?.(J)}});return()=>{p?.dispose()}}return()=>{}},[s,T]);function pe(){I.current?.dispose(),V?y&&_.set(m,o.current.saveViewState()):o.current.getModel()?.dispose(),o.current.dispose()}return react__WEBPACK_IMPORTED_MODULE_1__.createElement(H,{width:z,height:F,isEditorReady:s,loading:N,_ref:b,className:j,wrapperProps:A})}var fe=Ve;var de=(0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(fe);var Ft=de; //# sourceMappingURL=index.mjs.map /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.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 /******/ if (!(moduleId in __webpack_modules__)) { /******/ delete __webpack_module_cache__[moduleId]; /******/ var e = new Error("Cannot find module '" + moduleId + "'"); /******/ e.code = 'MODULE_NOT_FOUND'; /******/ throw e; /******/ } /******/ __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); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ }(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. !function() { /*!*********************************************************************!*\ !*** ./packages/packages/pro/editor-controls-extended/src/index.ts ***! \*********************************************************************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ AttributesControl: function() { return /* reexport safe */ _controls_attributes_control__WEBPACK_IMPORTED_MODULE_1__.AttributesControl; }, /* harmony export */ CssEditor: function() { return /* reexport safe */ _components_css_code_editor_css_editor__WEBPACK_IMPORTED_MODULE_6__.CssEditor; }, /* harmony export */ DisplayConditionsControl: function() { return /* reexport safe */ _controls_display_conditions_control__WEBPACK_IMPORTED_MODULE_3__.DisplayConditionsControl; }, /* harmony export */ OptionsControl: function() { return /* reexport safe */ _controls_options_control__WEBPACK_IMPORTED_MODULE_2__.OptionsControl; }, /* harmony export */ conditionGroupPropTypeUtil: function() { return /* reexport safe */ _prop_types_condition_group__WEBPACK_IMPORTED_MODULE_5__.conditionGroupPropTypeUtil; }, /* harmony export */ displayConditionsPropTypeUtil: function() { return /* reexport safe */ _prop_types_display_conditions__WEBPACK_IMPORTED_MODULE_4__.displayConditionsPropTypeUtil; } /* harmony export */ }); /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init */ "./packages/packages/pro/editor-controls-extended/src/init.ts"); /* harmony import */ var _controls_attributes_control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controls/attributes-control */ "./packages/packages/pro/editor-controls-extended/src/controls/attributes-control.tsx"); /* harmony import */ var _controls_options_control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controls/options-control */ "./packages/packages/pro/editor-controls-extended/src/controls/options-control.tsx"); /* harmony import */ var _controls_display_conditions_control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controls/display-conditions-control */ "./packages/packages/pro/editor-controls-extended/src/controls/display-conditions-control.tsx"); /* harmony import */ var _prop_types_display_conditions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./prop-types/display-conditions */ "./packages/packages/pro/editor-controls-extended/src/prop-types/display-conditions.ts"); /* harmony import */ var _prop_types_condition_group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./prop-types/condition-group */ "./packages/packages/pro/editor-controls-extended/src/prop-types/condition-group.ts"); /* harmony import */ var _components_css_code_editor_css_editor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/css-code-editor/css-editor */ "./packages/packages/pro/editor-controls-extended/src/components/css-code-editor/css-editor.tsx"); (0,_init__WEBPACK_IMPORTED_MODULE_0__.init)(); }(); (window.elementorV2 = window.elementorV2 || {}).editorControlsExtended = __webpack_exports__; /******/ })() ; window.elementorV2.editorControlsExtended?.init?.(); Uncategorized Archives - Char's Footsteps Best Female Travel Blogs 2024 Wed, 13 Aug 2025 19:22:30 +0000 en-US hourly 1 The Best Things to Do in Semuc Champey https://www.charsfootsteps.com/travel/central-america/guatemala/the-best-things-to-do-in-semuc-champey/?utm_source=rss&utm_medium=rss&utm_campaign=the-best-things-to-do-in-semuc-champey https://www.charsfootsteps.com/travel/central-america/guatemala/the-best-things-to-do-in-semuc-champey/#respond Thu, 23 Nov 2023 09:51:57 +0000 https://www.charsfootsteps.com/?p=2656 In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in the Alta Verapaz region, this has become a destination for travellers looking to go off the beaten path, explore some of the lush landscapes Guatemala has to offer and enjoy some thrill-seeking activities. My travels […]

The post The Best Things to Do in Semuc Champey appeared first on Char's Footsteps.

]]>
In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in the Alta Verapaz region, this has become a destination for travellers looking to go off the beaten path, explore some of the lush landscapes Guatemala has to offer and enjoy some thrill-seeking activities.

My travels around Central America took me from Mexico to Colombia by bus. For my month in Guatemala, Semuc Champey was the perfect ‘middle point’ between visiting the East (Flores, Tikal etc) and the West (Antigua, Lake Atitlan, Guatemala City etc). Given the remote nature of Semuc Champey, it was a long and bumpy journey getting there!

In this guide, we’ll explore the best things to do in Semuc Champey and why it’s a great place to add to your Guatemalan adventures. 

Powered by GetYourGuide

The Semuc Champey Natural Pools

One of the most iconic images of Semuc Champey is its natural limestone turquoise pools. Earning the nickname ‘the emerald paradise’ these stunning, crystal-clear waters are the perfect places to soak up the sun and enjoy the surrounding rainforest vibes. These cascading pools offered the perfect respite from the heat and were a relaxing part of what was a busy day.

There were surprisingly quite good facilities in the area with toilets, cold showers and bench areas available near the pools. Our guide had a padlock for us to use for the lockers, but consider bringing one of your own if you’re doing the trip unguided.

Semuc Champey pools

El Mirador de Semuc Champey

To witness the cascading, natural pools from a different vantage point, embark on a hike to El Mirador de Semuc Champey. This trail takes you on a 40 minute hike through dense jungle, providing glimpses of local flora and fauna. The hike up is primarily up steep stone and wooden steps, and is fairly challenging given the high humidity and heat. However once you reach the summit, it’s totally worth the effort as the panoramic view of Semuc Champey and the surrounding mountains are spectactular. It’s a trek worth every step for the breathtaking scenery that unfolds before your eyes.

I’d highly recommend wearing as suitable shoes as possible, especially as the steps get really slippery. I wore fairly sturdy, strapped sandals but saw people struggle their way up in flimsy flip-flops. The viewing platform itself only allows 7 people at a time and there’s only one really good photo opportunity. Be prepared to queue a little and take it in turns if it’s a busy day. We were extremely fortunate that it was fairly quiet, so we had about 20 minutes to enjoy the view and take pictures.

The path down is different to the one going up, so you shouldn’t have any issues with awkwardly crossing people on narrow stairs. Once at the bottom, we spent a while cooling off in the natural pools!

Explore the Caves by Candlelight

There are a number of caves to explore in this area and this was our starting point of the Semuc Champey tour. You’ll explore the caves with candles. Sold as an enchanting experience, it ended up being quite an intense and worrisome time. You start off walking through the cave’s waters with candles and traces of daylight lighting the entrance way. Before long, you go much deeper into caves. At certain points we were fully swimming with just an arm out of the water holding our candles. Both my sister and I were quite scared – this wasn’t helped by the fact it was just us two on the guided tour. There were several points we had to climb up flimsy, roped ladders that were flat against rocks. I’m quite scared of heights and we were slipping around climbing up against these rocks. About 20 minutes into the cave experience, my sister and I asked if we could go back as we were freaked out.

Our guided tour revealed intricate rock formations, impressive stalactites and stalagmites and limestone walls. Although it was a cool, somewhat unique experience, it was quite scary and probably the only part of the trip I wouldn’t do again. On reflection, I think we misunderstood what the cave exploration fully entailed. If you decide to visit the caves, bring swimwear and consider bringing water shoes with grips. The cave tours here might all differ so this was just our experience.

Tube Down the Cahabón River

The Cahabón River winds its way through the lush landscapes surrounding Semuc Champey, making it the perfect setting for a tubing experience. This was my first experience tubing, so I don’t have anything to compare it to, but it was a great experience. Costing around $7, the adventure starts just outside of Semuc Champey. Our guide organised everything so we just blindly followed. We were guided downstream, fully immersed in the natural beauty that lines the riverbanks. The mix of gentle waters and faster rapids made it a leisurely yet exhilarating way to experience the region’s pristine wilderness.

Visit the Town of Lanquin

Lanquin is a charming town that acts as a gateway to Semuc Champey. All journeys from other parts of Guatemala will end in Lanquin. If you’re staying in accommodation in Semuc Champey, your accommodation will come to collect you from Lanquin. We spent a few hours exploring Lanquin before we got collected by our hostel. It’s a great place to get insight into local life and culture within the area. There are a few charming streets to wander around and lots of great local eateries offering traditional Guatemalan cuisine. If you’re short on time, I wouldn’t travel specifically to Lanquin, but rather see it during your transfer.

Visit Cobán

If you’re looking to stay in the area for a little while, consider visiting the nearby city of Cobán. Filled with lively markets, the historic El Calvario Church and plentiful coffeehouses, Cobán is a great balance of urban meets natural beauty. You can easily catch a bus from Lanquin to Cobán for a few dollars and the journey will take about an hour. Cobán is also a bigger transport hub, so you might need to go here anyway as part of your onward journey from the Semuc Champey/Lanquin area.

Getting to Semuc Champey

Semuc Champey is located just south of the small town of Lanquin. We travelled from Flores to Lanquin by shuttle bus, before getting collected in an open top jeep by our hostel. The next day we did a full-day private tour of the area that we organised through our hostel. Such a great day out and I’d highly recommend this to anyone looking to do something a little different.

How Long Should You Spend at Semuc Champey

Given its remote nature and long travel time, it’s worth spending a few days in this area. We spent a full day at Semuc Champey and two days relaxing in the nearby areas. Without a car, our only way to get between the east of Guatemala (Tikal/Flores) and the west (Antigua, Lake Atitlan etc) was public buses. We were told the estimated journey time was between 10-13 hours to do this. Semuc Champey became an appealing option to break up this long journey as it’s located more centrally within Guatemala.

To make the most of the area, consider spending a few days here. You’ll need a full day at Semuc Champey itself to visit everything on offer. The accommodation in this area is mostly found in beautiful, tranquil greenery – making it a very relaxing spot. Consider having a day or two just relaxing at your accommodation and soak up the nature. My sister and I stayed at a hostel which had a lot of pretty outdoor space for us to relax in. We enjoyed getting a few drinks at the hostel bar and playing cards, reading and getting to know other travellers. Definitely a nice break from the long bus journeys and more hectic parts of Guatemala. Other hostels we saw had swimming pools and outdoor hammocks, so there’s a lot of opportunity to relax for a bit. My impression of the area was that there wasn’t much nightlife outside of your accommodation, purely from how hard it was to travel around this region.

Tips for Semuc Champey

  • Bring water – be sure to bring your own water and snacks. This is especially important if you’re doing the hike up to the viewpoint as it’s very hot!
  • Bring a padlock – there are some areas you can lock away valuables. Our tour guide brought a padlock for us, so check in advance if your tour will do the same. If you’re doing this trip solo, bring your own. A few of the lockers were in eyes reach of the natural pools, but we didn’t want to chance it or be constantly checking over our stuff.
  • Sturdy water shoes – I regret not having sturdy water-appropriate shoes. We were doing the cave tour bare foot and would have potentially benefitted fro better shoes at the lakes too.
  • Avoid peak times – this might seem like an obvious, as with any tourist destination, however the caves, viewpoints and lakes were quite small and would have felt cramped and un-relaxing in busy times.
  • Bring cash – this isn’t an area where you’ll be able to use debit cards. Bring cash!
  • Consider a local guide – I wouldn’t usually opt for guided tours but I’m glad we did for this trip. Our guide was very knowledgable and helped us plan the day so we could maximise on everything it has to offer. If you decide to go solo, be sure to plan ahead with the transport. You’ll need to ensure transport to/from the Lanquin area. I can’t provide tips on this but research ahead of time / contact your accommodation for advice.

Semuc Champey – with its emerald natural pools, hidden caves, tubing adventures and surrounding natural beauty, is a haven for nature enthusiasts seeking an immersive and authentic experience. Whether you’re looking relaxation at the turquoise pools or in a jungle hammock at your accommodation, or adventure into cave systems, river tubing or hiking to panoramic viewpoints, Semuc Champey has something for everyone.

If you can over come the slightly challenging journey, Semuc Champey is definitely worth a visit and I’m glad we broke up the long journey from East to West Guatemala by paying it a visit. Having said that, if you’re tight on time in Guatemala, I would prioritise places like Tikal and Antigua over Semuc Champey. After our time in Semuc Champey, we got a shuttle bus to our next stop in Guatemala: Lake Atitlan. Check out my guide on best places to visit in Guatemala for more travel inspiration or other Central America Guides.

Related Posts

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Telica

Hiking Volcano Telica – Craters, Beers & Sunsets!

A week after climbing Acatenango, and swearing to never climb another volcano again, I found myself at the top of …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …

The post The Best Things to Do in Semuc Champey appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/guatemala/the-best-things-to-do-in-semuc-champey/feed/ 0
The Ultimate Guide to Travelling in Guatemala https://www.charsfootsteps.com/travel/central-america/guatemala/ultimate-guide-to-guatemala/?utm_source=rss&utm_medium=rss&utm_campaign=ultimate-guide-to-guatemala https://www.charsfootsteps.com/travel/central-america/guatemala/ultimate-guide-to-guatemala/#respond Sat, 18 Nov 2023 02:01:01 +0000 https://www.charsfootsteps.com/?p=337 Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America. With its mix of diverse landscapes, rich history, colourful architecture and abundance of things to do, Guatemala is the ideal trip. I had the privilege of spending a month travelling through this stunning country and […]

The post The Ultimate Guide to Travelling in Guatemala appeared first on Char's Footsteps.

]]>
Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America. With its mix of diverse landscapes, rich history, colourful architecture and abundance of things to do, Guatemala is the ideal trip. I had the privilege of spending a month travelling through this stunning country and wanted to highlight the best parts of my trip.

Best Places to Visit in Guatemala

Guatemala is a huge country with many incredible places to explore. These are the highlights from my month in Guatemala:

Flores

Flores is a small town, located in the North East end of Guatemala and is often the starting point of your trip! The town has become famous given its close proximity to some of Guetamala’s biggest Mayan ruins. We travelled from Mexico, taking buses straight from Tulum to Flores in one trip and bypassed Belize.

Upon arrival, we spent the day exploring Flores by foot – stopping for lunch at a cafe and rooftop cocktails later that evening. Our main purpose of staying in Flores was to use it as a base for visiting Tikal, but I found a great guide on other things to do in Flores if you’re there for longer.

Tikal National Park

Tikal is UNESCO World Heritage site found deep in the jingles of northern Guatemala, a 90 drive away from Flores. As one of the most iconic and well-persevered Mayan archaeological sites, Tikal boasts towering temples, plazas and ceremonial structures. For nature lovers, the flora and fauna surrounding these Mayan ruins were incredible. We went exploring with our tour guide, who pointed out toucans, monkeys and a wild tarantula!!

We signed up to one of the main popular Tikal tours whilst in Flores. The tour organised a shuttle bus that went round varies hotels and hostels to collect people, before taking us to Tikal. Once at Tikal National Park, we were all taken around by a guide, who showed us the key sites before the shuttle took us back to Flores. We opted for a tour to take the stress out of navigating the journey, and to have someone explain the history of the area and what each site meant.

We stuck to the main areas within Tikal which included the Central Acropolis, a complex of royal palaces and tombs, and the North Acropolis, a monumental architectural wonder. We also visited the Lost World complex which had fascinating pyramid and labyrinthine structures. It was fascinating to hear about the significance of this area, particularly its role as a major trade and culture hub during the peak of Mayan civilisation.

Tikal showcases archaeological sites, panoramic view points of the surrounding jungle and a fascinating insight into what life was like during the Mayan’s peak.

Our tour ended in the late afternoon, so we were walking around in the dark towards the end. This was a bit unnerving but the group’s size made walking through the jungle in the dark less unnerving. We headed back to Flores for an evening meal and good night’s sleep before the journey on to Semuc Champney.

After our time in Tikal and Flores, my sister and I took a shuttle bus from Flores to Semuc Champey. We thought this was the safest and most cost-effective way of doing the journey. The buses leave from Flores and drop you in the small village of Lanquin, where your accommodation will arrange to get you.

Semuc Champey

Semuc Champey is nestled in the lush landscapes of Alta Verapaz and is great stop if you’re backpacking across Guatemala. Our three days here offered the perfect respite for our journey between Tikal and Antigua/Lake Atitlan area, whilst providing for more adventurous activities. We took a private, full-day tour, organised by our hostel, which included; cave exploring, rope swinging, tubing down the river, hiking to viewpoints and swimming in the limestone pools.

Semuc Champey is most famous for its stunning terraced limestone pools, fed by the Cahabón River, creating a mesmerizing natural staircase. We spent some time swimming in the crystal-clear pools, surrounded by dense jungles, which was incredible. This was a refreshing treat after our hike up to the viewpoint, which offered breathtaking panoramic views of the pools against the backdrop of the surrounding mountains. The hike up was fairly strenuous, comprising of 40 minutes of steep walking up stone and wooden steps. We got to the top in a sweaty mess but it was so worth it!

We also took a candlelit tour of the caves. I would say it was fairly spooky going into a cave filled with water, only lit by our candles. To travel in the caves we had to swim with one hand out the water (to hold the candle) and climb up roped ladders to explore the different areas. My sister and I enjoyed this part the least as we were quite freaked out over the safety of it. After the cave we took it in turns to swing on a rope into the river. From there we walked through the jungles to get to the famous hike and limestone pools. You then take a tube down the river that ends where your jeeps take you back to your accommodation.

We loved our time in Semuc Champey and it was the perfect stop over during a trip backpacking across the country. From here, we took a long shuttle to Lake Atitlán.

Lake Atitlan

Lake Atitlán is a stunning lake surrounded by volcanic highlands and a popular destination in Guatemala . We decided to base ourselves in Panajachel for our entire trip. Panajachel is the main arrival/departure hub for the lake and had the most accommodation options. We then did day trips to other areas of the lake from here. If you’re staying a while, it would be worth travelling and stay in each main area whilst here.

The best places to visit in Lake Atitlán include:

Panajachel

Panajachel is the largest town around Lake Atitlán, known best as a bustling hub of restaurants, shopping, dining, traditional textiles and stunning lake views. We based ourselves here for most of our stay in Lake Atitlán and did day trips from here. It’s also a great place to be based as it’s the gateway from other places in Guatemala. If you’re coming from places like Guatemala City or Antigua, this is where you’re likely to arrive/depart from.

San Pedro La Laguna

Another very popular location for backpackers and travellers alike is San Pedro La Laguna. Smaller than Panajachel, but still very lively, full of local cafes and bars to explore. A big selling point of this village is the San Pedro Volcano hike. We visited San Pedro from Panajachel by ferry, which took around 50 minutes and cost $4 USD.

Santiago Atitlán

Santiago Atitlán is the more traditional Mayan village of the three popular places. The best things to do in Santiago Atitlán are visiting the Maximon Shrine and explore the local artisan markets filled with arts crafts. This village has a strong indigenous culture, with many people wearing traditional clothes and you’ll hear Mayan dialects spoken here. Again, you can get the ferry here from other areas in Lake Atitlán.

Lake Atitlán is a great place to visit before undertaking any high-altitude hikes in Guatemala, given the lake is situated 5,128ft above sea level. For example, staying here before visiting Antigua and climbing Acatenango will help you acclimatise better for the hike. It isn’t possible to swim in the lake, due to the high pollution and bacteria levels in the water, caused by a long history of landslides.

After enjoying out time in Lake Atitlán, we took a shuttle bus from Panajachel to Antigua. There are several ways you can do this journey; private shuttle bus, group shuttle and chicken buses. The shuttle bus from Panajachel to Antigua took around 2.5 hours and cost $15 USD. If you’re looking to take chicken buses from Panajachel to Antigua, read this guide on what to expect.

Antigua

Antigua was undoubtably my favourite place in Guatemala. I really can’t recommend it highly enough. Antigua is a UNESCO World Heritage Site that’s known for it’s volcanic landscapes, Spanish Baroque-influenced architecture and cobble-stoned streets. Filled with rich history, artisan markets, colonial-era colourful buildings and a fun food/bar scene, there’s a lot to do in Antigua. A short drive away from Antigua, are a number of incredible volcano hiking opportunities too! This will always be one of the most magical places I’ve ever visited.

We spent a week exploring all the wonderful things Antigua had to offer! From hiking Volcano Acatenango, roasting marshmallows on Volcano Pacaya, taking Spanish lessons, local cooking classes, enjoying the nightlife and exploring the cobblestoned, colourful streets that make up this beautiful city. This charming city is a must-do when in Guatemala and is one I’ll definitely be going back to again.

I have a guide on the best things to do in Antigua that goes into this city in more depth.

Acatenango Guatemala

Guatemala City

When our time in Antigua came to an end, my sister travelled on to Guatemala City for her flight back to London. I went on to travel from Antigua to Leon, Nicaragua by shuttle bus. It took 18 hours, and included a stop in El Tunco, but didn’t require an overnight stay anywhere.

For those wanting to spend some time in Guatemala City, key activities to explore as the historic district of Zona 1, the National Palace, the Mercado central, the Lxchel Museum and some scenic views from Mirador El Carmen. The backpackers I met that had travelled through Guatemala City had mixed reviews on its safety and if they felt the trip was worth it. Some said it was worth spending a couple of days before a flight home, others regretted their time. I can’t comment on Guatemala City, as I went straight from Antigua to Guatemala, so i’d encourage you do more research on Guatemala City to help inform your choice.

Guatemala FAQs

Where is Guatemala?

Guatemala is in Central America, bordered by Mexico to the north and west, Belize to the northeast, and Honduras and El Salvador to the southeast.

Is Guatemala Safe?

Guatemala has safety concerns, particularly in urban areas, but most tourist destinations are generally safe if you exercise caution and avoid travelling at night.

What Time Zone is Guatemala In?

Guatemala is in the Central Standard Time (CST) zone, which is UTC-6, with no daylight saving time.

What Language Do They Speak in Guatemala?

The official language is Spanish, but there are also 21 recognised Mayan languages spoken in various regions. I used my broken Spanish wherever possible, but in the tourist areas, many people spoke a little English too. My broken Spanish and their English was enough to get by throughout the month.

Can you Drink Water in Guatemala?

I was advised that tap water in Guatemala isn’t safe to drink. Stick to bottled or filtered water.

Are There Volcanoes in Guatemala?

Yes, Guatemala has 37 volcanoes, including active ones like Volcán de Fuego and Pacaya, and dormant ones like Acatenango. These should be high on your Guatemala bucket list as they were really once-in-a-lifetime experiences!!

What Currency Do They Use in Guatemala?

Guatemala uses the Guatemalan Quetzal (GTQ) as its official currency. This was easy to get hold of at the border crossings or through ATMs.

Related Posts

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …
Tulum

How to get from Tulum/Chetumal to Flores by bus in one day

We did this journey on 26th January 2020 so it’s probable that prices have increased since the time of writing! …

The post The Ultimate Guide to Travelling in Guatemala appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/guatemala/ultimate-guide-to-guatemala/feed/ 0
11 Best Things to do in Antigua, Guatemala https://www.charsfootsteps.com/travel/central-america/guatemala/antigua/?utm_source=rss&utm_medium=rss&utm_campaign=antigua https://www.charsfootsteps.com/travel/central-america/guatemala/antigua/#comments Thu, 31 Dec 2020 17:36:20 +0000 https://www.charsfootsteps.com/?p=175 Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua was the highlight of my time in Guatemala and was one of my favourite places throughout my time in Central America. With an abundance of things to do, great nightlife and an easy-to-navigate city, Antigua […]

The post 11 Best Things to do in Antigua, Guatemala appeared first on Char's Footsteps.

]]>
Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua was the highlight of my time in Guatemala and was one of my favourite places throughout my time in Central America. With an abundance of things to do, great nightlife and an easy-to-navigate city, Antigua makes for the perfect destination in Guatemala. I’ve compiled a list of my favourite things to do here in the hopes it’ll inspire you to go and visit this incredible gem.

Here are some of the best things to do in Antigua:

  • Hike Volcano Acatenango
  • Roast marshmallows on Volcano Pacaya
  • Traditional Guatemalan cooking class
  • Have a Spanish lesson
  • Free walking tour of Antigua
  • Visit the markets
  • Scenic views from Cerro de la Cruz
  • Walk under the iconic Santa Catalina Arch
  • The chocolate museum: ChocoMuseo
  • Enjoy the bars, restaurants and nightlife
  • Treat yourself to some RnR – spas, hairdressers, salons…

Related Post: Best Places to Visit in Guatemala

1. Overnight Volcano Acatenango Hike

Acatenango is a stratovolcano located near the city of Antigua, that has slowly become a must-do for those visiting Guatemala. This overnight hike isn’t for the faint hearted, but reaching the top is an incredible achievement and will give you once-in-a-lifetime views of Volcano Fuego. The hike will take you through different terrains and scenery. Climbing and camping on an active volcano was truly an unforgettable experience and is still one of the best things I’ve ever done.

Acatenango

I’ve written a detailed post on my experience hiking Volcano Acatenango; with tips on what to expect, what you need and how to make the hike more bearable. It is a challenging hike, but absolute worth the effort! Don’t let any reviews put you off – it’s a challenging hike at points but it’s absolutely worth it. You can go at your own pace and everyone makes it up in their own time. There are a number of tour groups that you can hike Acatenango with, many providing all the clothing and camping gear required to do this trip.

Our group was large and consisted of families, couples, friends and solo backpackers. Making it perfect for any type of traveller and a great way to make new friends.

It’s recommended to climb Acatenango towards the end of your stay in Antigua, to give you time to acclimatise to the altitude. Visiting nearby places, like Lake Atitlan or Xela, beforehand will help too. It’s advised against hiking Volcano Acatenango shortly after arriving from a beach/scuba diving trip. A few people from our hostel, who had arrived straight from Belize/Belizean islands, had to wait a few days due to altitude acclimatisation.

We hiked with Wicho & Charlie, who were absolutely fantastic! However, there are many different tours to choose from, depending on what you’re looking for, the gear you need to rent and your budget.

2. Roast Marshmallows on Pacaya Volcano

If you want a volcano experience, without the cost and physical effort of hiking Volcano Acatenango, consider Pacaya Volcano instead. Located near Antigua, Pacaya Volcano is smaller and easier to hike than Acatenango. It’s approximately an hour drive away and the main hikes take 2-3 hours to complete, making it an easy day trip from Antigua. The key attraction on Pacaya Volcano is the roasting marshmallows over lava. Roasting marshmallows over lava on an active volcano was definitely a ‘pinch-me’ moment in life. We chose a half-day tour, which I’d say is ideal for anyone wanting to have a taste of Guatemala’s many volcanos, without the cost or effort of climbing Volcano Acatenango.

Read my detailed blog post on our experience climbing Pacaya Volcano. There are several different tour options to choose from, including sunrise tours, sunset, added lunch and thermal spas etc. Walk around Antigua to gauge your options and the different pricing available. Pacaya was arguably one of the best things to do in Antigua and I’d highly recommend it!

Volcano-Pacaya

3. Take a Traditional Guatemalan Cooking Class

Antigua is home to numerous cooking schools who make fresh, authentic Guatemalan meals. We went with the lovely La Tortilla school. We were able to visit the local market to buy fresh ingredients, before going back to start cooking. At the end, we sat around the table to enjoy our efforts, whilst hearing about everything Antigua has to offer. It’s also a great way to meet a nice mix of other travellers!

There are many cooking schools available, all offering different packages, so make sure to ask around. I’d recommend choosing one that includes buying ingredients from a local market. This gave us a more in-depth look into local life in Antigua, whilst broadening our understanding of how the Mayans influenced cuisine and cooking in Guatemala.

Related Post: Volcano Telica – Craters, Beers and Sunsets

4. Have a Spanish lesson

Take advantage of the many Spanish schools Antigua has to offer. Considerably cheaper than neighbouring countries, this is a great place to brush up on useful phrases for travelling or perfecting intricate gramma. You’ll be spoilt for choice with private one-on-one lessons, group classes and home-stays.

Finding a school that provide just 1-2 hour classes, as opposed to minimum 10-20 hour weekly classes, proved to be difficult. But I came across, Modern World Language School, who provided 2 hour lessons. I went twice and they were fantastic! I met many people who based themselves in Antigua for several weeks, to months at a time, just to focus on their Spanish. Many language schools are dotted around the city for you to choose from.

Typically, you have 4 hour classes in the morning (private or group), before spending the afternoon working on any homework or enjoying Antigua. You can also join Spanish school with a homestay included. These are more expensive, as meals are often included too, but it means you’ll likely improve on your Spanish even quicker.

5. Antigua Free Walking Tours

The best way to see new place, and uncover what it has to offer, is through an Antigua walking tour. Whether that’s done through an organised private tour, a free walking group or a self-guided walk, this is an absolute must to explore Antigua.

pacaya volcan

My sister and I found numerous tours on TripAdvisor and through our hostel, all ranging from £15-75 and lasting between 3-8 hours. These included tours of Antigua, food tours and excursions to nearby ranches and the infamous volcanoes nearby (Pacaya and Acatenango).

We joined the daily free walking tour organised by Guru Walk. Like most free walking tours around the world, it’s free to join but a tip is expected/appreciated. The tour operates at 3pm daily, lasts approximately 2 hours and is available in both English and Spanish. I highly recommend this as you can really learn about the history of Antigua and get some great local tips on restaurants, bars and things to do.

Or consider doing a self-guided tour of the city yourself. Although you miss out on local knowledge and have to organise it yourself, this gives you the freedom to go at your own pace and see the bits you want to see. I highly rate using GPS my city for pre-planned self guided tours; with maps included and key landmarks/attractions highlighted on each route. Their 6 main self guided tours:

6. Visit the Markets of Antigua

There are several markets worth visiting in Antigua. The Central Market is the largest, and was definitely my favourite. The front section is filled with souvenirs and freshly cut and packaged fruit, aimed at tourists. However, once you walk past this and further into the market, you get a real taste of Guatemalan life. The atmosphere here is buzzing and every corner is bustling with all sorts – it’s hard not to get lost in it all! Weekends are the best time to go, as the market is joined by vendors from neighbouring villages! Prices are reasonable, but you’ll find they’re inflated for tourists – particularly at the front of the market.

Other markets worth checking out include the Artisans Market, Antigua’s Municipal Market and Nim Po’t. These offer everything from fresh foods and local delicacies, to fabrics, clothes and souvenirs.

We found The Culture Trip’s post on Antigua Markets helpful when we were there.

7. Take in the scenic views from Cerro de la Cruz

Cerro de la Cruz is an elevated spot a short walk north of Antigua’s old town. The 333 steps will give you unobstructed, expansive views of Volcan de Agua and Antigua itself. Alternatively, if walking up hundreds of steps in the heat isn’t your cup of tea, ride a tuk-tuk to the top and walk down. Be sure to visit at sunrise or sunset too, for great photos and to avoid the heat of the day. The Antigua Tourist Police offer free walking tours up between 10am and 3pm, which I’d recommend taking advantage of. If you’re doing this solo, be mindful that muggings are often reported here – particularly during dusk. Our hostel warned us that the area can be bit dodgy and to be careful. I wouldn’t take any valuables here, just small change and essentials. There are some vendors at the top if you’d like some refreshments. Otherwise bring a picnic and enjoy some lunch with incredible views and backdrops of the city and volcanos in the distance. Cerro de la Cruz, or Hills of the Cross, also has a few nature trails to enjoy.

8. Walk under the iconic Santa Catalina Arch

The Santa Catalina Arch is one of Antigua’s most recognisable landmarks and will likely be a place you see regularly during your time in Antigua. Dating back to the 1600s, this iconic archway was originally built to allow nuns to cross the street without being seen. Nowadays the archway, and added clock tower, is a symbol of Antigua and represents the rich colonial heritage of this city. With Volcan de Agua looming in the distance, this makes for the perfect shot! The Santa Catalina Arch is often a key stop on walking tours, in which case you’ll get to hear about the Arch’s history.

9. Visit the ChocoMuseum

Guatemala is the birthplace of chocolate! Thanks to the Mayans, who believed chocolate was the food of the Gods…they weren’t wrong. Chocomuseo lies in the heart of Antigua and is worth a visit if you’re in the city. We had a tasty hot chocolate in their cafe, before exploring their free small museum. This details the history of chocolate and the process of production. Workshops at Chocomuseo are also available everyday at 11:00, 13:30 and 16:00, for all ages. These include a truffle workshop, a mini chocolate workshop and ‘bean to bar’, where you make your own chocolate from cacao beans. There are several shops here too, giving you the opportunity to buy local jewellery and clothes, along with lots of high quality chocolate.

10. Grab a Beer at a Hidden Bar in Antigua

Antigua comes alive at night with the many bars, restaurants and speakeasies to discover. One of my favourite parts of Antigua was the number of bars hidden down side streets or inconspicuous buildings that house lively rooftop bars! A few places that we enjoyed going to during a week there was ‘Cafe no Se’ and the rooftop at Lava. I loved the mix of locals, expats and tourists. A few bars that were recommended to us, but we didn’t have time to try, included Tabacos y Vinos, Monoloco Antigua, Lucky Rabbit and Las Vibras de la Casbah. There are surprisingly a few Irish bars/pubs there too which attracted a fun crowd.

Another place worth checking out – particularly UK residents who have been away from home for a while – is The Londoner! They have proper pints and roast lunch…Yorkshire puddings included!! After 5 months on the road, this was a very welcome surprise.

11. Treat yourself to some RnR

Antigua is home to a wide array of salons, spas and beauty bars. After backpacking for 5 months, I treated myself to a haircut and a 30 minute massage. Many places have group offers for nails, facials and massages. I found it easy to book an appointment, and many places had walk-in slots available. These typically aren’t ‘backpacker prices’ but after 5 months of hostels and street food, I was able to justify a larger spend. If you find yourself with a free morning or afternoon, treat yourself to a spa package that will allow you to enjoy some amenities and have a treatment.

Related Post: My 21 days in Nicaragua

Some Common FAQs of Antigua Guatemala:

Is Antigua Guatemala Safe?

For the most part, I felt very safe during my time in Antigua Guatemala! I would say to be wary around Parque Central though. Despite the large police presence around here, we did get harassed by scammers a few times. Like any tourist place, be mindful of your belongings and err on the side of caution in typical tourist areas. These would include Parque Central, Cerro de la Cruz and Santa Catalina Arch.

How Far is Antigua from Guatemala City?

Antigua is 25 miles away from Guatemala City. However, the curved roads and traffic can make this journey longer. The best way to get between Antigua and Guatemala City is by taxi or Uber – taking approximately 1 hour to drive between the two. There are a number of shuttle buses and local buses (‘chicken buses’) to choose from too.

How Many Days to Spend in Antigua Guatemala?

How long you choose to spend in Antigua Guatemala will depend on what you’re planning to do here. We stayed in Antigua for 7 nights and felt like it was the perfect amount of time. We had the time to do several volcanos hikes (including the overnight Acatenango Volcano & Pacaya), walking tours, museums, spanish classes, cooking classes, fun nights out and a few chilled spa afternoons. We LOVED Antigua and I was genuinely sad to have to leave it.

After our amazing stay in Antigua, my sister flew back to London and I started the long journey from Antigua to Leon, Nicaragua. I managed to do this journey by bus, without any overnight stops. It was long but worth getting it over with quickly.

Related Posts

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …
Tulum

How to get from Tulum/Chetumal to Flores by bus in one day

We did this journey on 26th January 2020 so it’s probable that prices have increased since the time of writing! …

The post 11 Best Things to do in Antigua, Guatemala appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/guatemala/antigua/feed/ 7
Hiking Volcano Telica – Craters, Beers & Sunsets! https://www.charsfootsteps.com/travel/central-america/nicaragua/volcano-telica/?utm_source=rss&utm_medium=rss&utm_campaign=volcano-telica https://www.charsfootsteps.com/travel/central-america/nicaragua/volcano-telica/#comments Tue, 29 Dec 2020 14:25:22 +0000 https://www.charsfootsteps.com/?p=219 A week after climbing Acatenango, and swearing to never climb another volcano again, I found myself at the top of Volcano Telica. With the promise of an easy hike and a peak into the crater, I was sold! The infamous volcano boarding trip to Cerro Negro was originally top on my list for Leon. However […]

The post Hiking Volcano Telica – Craters, Beers & Sunsets! appeared first on Char's Footsteps.

]]>
A week after climbing Acatenango, and swearing to never climb another volcano again, I found myself at the top of Volcano Telica. With the promise of an easy hike and a peak into the crater, I was sold! The infamous volcano boarding trip to Cerro Negro was originally top on my list for Leon. However it had very mixed reviews from people in my hostel, so given our budget and limited time, we decided to try Telica Volcano. It ended up becoming one of the best things to do in Leon – so I hope this guide is useful for future travellers.

Volcan Telica

Telica is an active, stratovolcano and just one of the 26 volcanoes in Nicaragua. Situated approximately 30 kilometres north of Leon, Telica is easily accessible from Leon and makes for a fairly easy day trip. Most hiking tours pass through San Jacinto, a small town famous for its bubbling mud pits and small geothermal electric generation plant. Hiking Volcan Telica is a great experience for watching beautiful sunsets and seeing a crater up close.

Telica Tours

We booked the Telica Sunset tour through Volcano Day; an agency based in ViaVia hostel. I chose them simply because I was staying in ViaVia hostel, and everyone I met recommended their tours. However there are numerous agencies throughout Leon, so walk around and gauge prices/what’s included etc. Alternatively, if you know your itinerary and want to book in advance to secure a spot, check out tours of Telica with GYG or other similar organisations.

The Telica Sunset tour seemed fairly expensive, at USD$45. However this included return transport, a guide, watermelon at the top, a cool t-shirt PLUS free beer and dinner once back at ViaVia. So it felt like very good value for money – particularly as the volcano felt once-in-a-lifetime.

There were other tours on offer too; including a sunrise tour (day of hiking before reaching the crater for sunset), overnight tours and longer day hikes. Most agencies provide the necessary camping gear and equipment needed! As I had done several volcano tours, and long hike days during my trip in Central America, I was very content with just a small hike!

telica volcano
Telica’s Crater

Getting to Telica & The Hike

Leaving Leon at 2:40pm, we embarked on the treacherous 90 minute drive to the hike starting point. There was 6 of us in the pick up truck, driving over rocky, narrow paths up to the volcano base. Despite the uncomfortable ride, it was a nice way to get to know new people.

Upon arrival, we had a quick toilet stop amongst the bushes and then began the hike up to the rim. This only took 40 minutes and was surprisingly really easy! For once, TripAdvisor reviewers declaring a volcano hike as ‘easy’, was actually true! (Unlike the case of Volcano Pacaya). It wasn’t steep or strenuous, and given the time of day, we weren’t suffering in the heat. Furthermore, the path was clear and marked out for most of the ascent, so technically it was straightforward too. This could be due to the type of tour we booked. There are longer hiking tours available which might take a different route to the one we did.

hiking volcano telica
The paved path running up Telica

Related post: Roasting Marshmallows over Lava on Volcano Pacaya

We had about 20-30 minutes by the crater; taking pictures and drinking beer from a guy with a cooler. The 10am hike group joined us here shortly after we arrived. As a larger group, we made our way around the volcano to the sunset spot. Eating watermelon, drinking beers and watching the sun go down together was one of my best memories in Leon!

We had 40 minutes to watch the sunset. It did get fairly cold by now, so I’d recommend bringing some layers for this and the hike down.

Telica Volcano Sunset Hike
Watching the sunset

Volcano Telica Descent

We started the hike back at 6pm. Walking across the volcano wasn’t a problem. The sunset provided some natural light and the terrain wasn’t too difficult. However, the journey back down was rather unpleasant and more challenging than the ascent.

This was largely due to the rocky terrain and having to be careful where you stepped. Furthermore, it was now pitch black and we were guiding ourselves with phone torches. Headlamps would have definitely made this easier, so if you’re travelling with one, bring it!! A few people who did the longer day hike (10am group) joined us for this and I was glad to be going down with more people!

With everyone on the bus at 6:44pm, we prepared for a squished, bumpy drive back. This was the most unpleasant part of the journey and most people complained of having dead legs and pins-and-needles throughout it.

Dinner at ViaVia

Arriving back at the hostel, the battered group headed to a reserved table for free beers and dinner! This was such a nice finishing touch to the tour! On previous excursions, the group dismantled once the trip was over. But this meant we could continue to catch up and chat about the trip as a group. Dinner consisted of three large sharing platters of various local foods – 2 meat and 1 vegetarian. It was a lovely end to a great afternoon hiking Volcano Telica.

What to Pack for Hiking Volcan Telica

  • Hiking shoes or trainers: given the terrain, I strongly advise against sandals or flip flops. Be sure to wear proper, closed shoes with good grip. The hike down was tricky given the terrain and poor shoes would have made the experience even harder.
  • Bring plenty of water: although we didn’t do the long hike option, it was still a sweaty experience. Given the heat and being out in the elements it’s important to stay hydrated. This is especially important if you’re doing the long day hike option!
  • Head torch: if you have a head torch, I recommend bringing it! Although we got by with our phone lights, it would have been a more comfortable journey down if I had a head torch.
  • Extra layers: bring an extra layer for when the sun goes down and you’re all sitting at the top. It got a little chilly! The drive back was in a somewhat open vehicle where it got windy too.
  • Snacks: On the specific tour I did, we were provided with watermelon as a snack and dinner back at the hostel. If you feel like this wouldn’t be enough, consider bringing an extra snack with you.
  • Small change: Waters and beers are sold at the top in a little cooler, so bee sure to bring small change if you think you’d want to buy something.

Hiking Telica Without a Guide

It’s possible to hike Telica without paying for a tour group or guide. As an inexperienced hiker, with no sense of direction and poor map reading skills, this wasn’t something I was interested in doing. But if it’s something you’re considering, read this awesome post by FreeStyle Travelling on how to hike Telica solo. I imagine this is only something you should embark on if you have good hiking experience and proper equipment/supplies.

Camping on Volcano Telica

A camping option is available for those wanting to experience a volcano sunrise! Again, this can be booked with most travel agencies around Leon. This tour starts at 10am and will return the following morning, often with a group breakfast included to end your excursion.

Sunrise tours are also available – leaving at 2:30am!! The sunrise hike had an option for leaving at 10am, for the same price as ours. This departed at 10am, with the hike starting after a 20 minute drive from Leon. However, after climbing Acatenango, this didn’t appeal to me.

Overview of My Telica Volcano Experience

Despite the unpleasant journey back, the Telica sunset tour was a great experience. The hike up was easy and I loved watching the sunset with beers and a great group of people. I think it’s a fantastic option for people wanting to experience a volcano hike, without any strenuous or technical climbing. It differed to other volcanos I had hiked – with its crater views! The free food and drinks put on by ViaVia was an awesome addition to the tour. It further brought the group together and was a fun way to end the evening.

However, if you’re looking for a proper hike experience, opt for the overnight stay or the 10am start. I was thrilled to have a short hike, given the few bigger volcanos I had previously climbed in Guatemala. But on the drive back, several people complained about the short hike time, particularly after the long, uncomfortable drive each way. Check out my other guides for Central America Trips to help inspire you on your travels!

Related Posts

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Telica

Hiking Volcano Telica – Craters, Beers & Sunsets!

A week after climbing Acatenango, and swearing to never climb another volcano again, I found myself at the top of …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …

The post Hiking Volcano Telica – Craters, Beers & Sunsets! appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/nicaragua/volcano-telica/feed/ 1
The Ultimate Guide to Hiking Volcano Acatenango https://www.charsfootsteps.com/travel/central-america/guatemala/volcano-acatenango/?utm_source=rss&utm_medium=rss&utm_campaign=volcano-acatenango https://www.charsfootsteps.com/travel/central-america/guatemala/volcano-acatenango/#comments Thu, 20 Feb 2020 19:07:37 +0000 https://www.charsfootsteps.com/?p=177 Hiking Volcano Acatenango was on the top of our bucket list for Guatemala. But as we got close to our stay in Antigua, the nerves kicked in. Were we fit enough to climb it? Was the top as freezing as everyone said? Would it erupt in our sleep? Ok, in hindsight some of these worries […]

The post The Ultimate Guide to Hiking Volcano Acatenango appeared first on Char's Footsteps.

]]>
Hiking Volcano Acatenango was on the top of our bucket list for Guatemala. But as we got close to our stay in Antigua, the nerves kicked in. Were we fit enough to climb it? Was the top as freezing as everyone said? Would it erupt in our sleep? Ok, in hindsight some of these worries were dramatic, but I hope this post eases the mind of fellow worriers hoping to reach the top of Volcano Acatenango.

First things first. You must choose a tour group to hike up with. After much research, and hearing glowing reviews from other backpackers, we went with Wicho & Charlie. Tropicana and OXpeditions were both highly rated too. Who you choose will largely depend on your budget and the gear you already have. Given that it was my only ‘cold’ place during my 7 months of travelling, I came totally unprepared and needed everything Wicho & Charlie had to offer.

Acatenango sunset
The prize at the end!!

Volcano Acatenango Itinerary

7:30amMeet up at Wicho & Charlie to rent gear and eat breakfast.
9:00amDepart from Wicho & Charlie.
10:15am The hike starts.
12:30pm Lunch break.
15:00pmArrive at basecamp.
16:30pmSummit for sunset.
19:30pmDinner.
4:30amSummit for sunrise.
7:00amBreakfast.
8:00amStart the descent.
10:30amDepart for Antigua.
11:30amArrive back in Antigua.

Hike Day

We arrived at the W&C office promptly to pick our gear. Upon arrival, we were given beetroot shots and then sent up to the kit room in two groups. Hats, scarves, gloves, jackets, 2 reusable bottles and headlamps were included in the price. Walking poles weren’t included but I can’t stress enough how helpful these were. Pay the extra few dollars for them!! I also rented a thermal top and a backpack. You must leave ID as a deposit, so be sure to bring it on the day. They have a huge selection of other things available to hire, from hiking boots to thermal leggings.

Breakfast at Wicho & Charlie

Once our kit was hired and packed, breakfast was served. Fresh pancakes with syrup or jam/cream, fruit platters and baguettes with avocado were all included in the tour price. This was a really nice added touch as it meant we could get to know some of the people in our group ahead of the hike. There was a nice mix of couples, friends, small groups and solo backpackers. By the end of it, you’re all bonded over the experience!

Lunch and five snacks were also provided. This was to be carried by us, along with the 4 mandatory litres of water AND an extra litre for cooking with at basecamp.

After we’d eaten, collected our food packs and had a short briefing of the day ahead, it was time to go. With the van packed up, our group of 32 left Wicho & Charlie at 9:35am… there was no going back.

Arriving at Volcano Acatenango

After an hour drive along winding roads, we were at the hike starting point! All apprehensive, we collected our gear and used the one available toilet. Most people brought some form of loo roll or tissues as this isn’t provided. Stalls lined up the roadside – selling wooden walking sticks, fizzy drinks, snacks and rum. Our 5 guides proceeded to introduce themselves, followed by a briefing of the hike to basecamp. By 10:45, we were off.

The Hike

My sister and I hoped our Pacaya Volcano hike, along with several days in Lake Atitlan and Antigua, was enough to reduce our chances of altitude sickness. Despite this, we still planned to take the hike slow and avoid altitude sickness as much as possible.

The hike up Volcano Acatenango is divided into three sections: a sandy bit, the rainforest and ‘the cloud forest’.

‘The Sandy Bit’

You’ll see this path as soon as you leave the bus, as it sits right off the main road. Climbing up was challenging from the get-go. It wasn’t made easier when a large group passed us on their hike down, giving warnings over what was to come. This continuous uphill hike lasted 45 minutes, with two water breaks.

The first 45 minutes…

I found the most challenging part of this section was being in direct sunlight and the heavy backpack. As the day went on, we were eating and drinking more of our supplies, which lessened the weight. But the start was hard. Two girls in our group had paid for a porter to carry their bags (Q150-200) – so this option exists! I’m glad I took my bag, as it added to the experience, but I definitely underestimated how much harder the hike was with all the extra weight. The first part of this hike does have make shift stairs, as you’ll see from the photo, the rest doesn’t.

The group instantly divided into three rough groups, dependant on pace/speed. I was at the back.

The Rainforest

The rainforest part of Volcano Acatenango starts approximately 45 minutes into the hike. Thankfully, the trees in this section largely protect you from the direct sunlight. With the relief of having shade, came the next challenge – the terrain. Unlike the first part of the hike, which had relatively easy terrain, the paths inside the rainforest are extremely slippery. Hiking poles were a lifesaver here, as they helped reduce the weight off your legs AND stopped you sliding back down. I can’t recommend renting these enough! Most tours offer them as an add on for a few dollars and I think they really saved the experience.

Hiking through the rainforest

Within 25 minutes, we arrived at the Acatenango National Park office entry point. Here we filled out detailed forms, paid the Q50 entrance fee and had a briefing of the remaining hike. It was a welcome break, before having to continue on through the rainforest to our lunch stop!

I mentally struggled a lot throughout the rainforest, given the relentless, slippery, bendy, steep (and sometimes narrow) paths. Feeding off positive energy within the group, listening to music for periods and chatting to my sister and new friends got me through.

Related Post: Volcano Telica – Craters, Beers and Sunsets

Lunch Break

We reached our well deserved lunch stop at 1pm. I was elated to have some relief from the heavy backpack and to sit down. Wicho & Charlie had provided a baguette, banana, bag of nuts, granola snack bar and a large chocolate brownie. Lunch lasted an hour.

Post-lunch hike

The Cloud Forest

With spirits lifted from the filling lunch, we set off on our way to basecamp. Knowing we were more than half way really gave the group a boost of positivity. 2.5 hours more to go!

This next section is appropriately named, as the path is above the clouds. You’ll be faced with a mix of long, steep inclines and easier undulating paths. The few downhill parts were an amazing relief for the calves and the views provided for a fantastic distraction.

As a warning, several basecamps (including Wicho & Charlie) are situated along a very narrow path, with a sheer drop on one side. I’m terrified of heights and found this extremely scary. The high altitude at this point made breathing more challenging, so this entire section had me in tears.

This was probably my favourite part of hiking Volcano Acatenango. Every single person cheered each other on and helped each other through what felt like a never-ending climb! We were all exhausted, hungry, in pain and mentally checked out, but supported one another continuously.

Getting close to basecamp! Walking above the clouds.

Volcano Acatenango Basecamp

Reaching Volcano Acatenango basecamp was an indescribable feeling. I have never felt such relief for a physical challenge to be over with in my life – and I had run 7 marathons by the time I climbed Acatenango!!

Wicho & Charlie’s basecamp is divided into three camps. Camp 1, where I stayed with my sister, is the largest. The other two camps have capacity for around 6-8 people. Our group was very large that particular day, hence why all three were used.

Camp 1 had two large 8-bed cabins, two 2-man tents and a large dining room tent. Chairs had been put out around a campfire, and for the next hour, everyone sat in awe of the views, whilst continuing to celebrate each new arrival to the camp.

The view of Fuego erupting every 15 minutes was incredible and worth the horrible climb.

Hiking Fuego Volcano & Acatenango’s Summit

The break between arriving at basecamp and the summit/Fuego hikes will depend on how long the hike to basecamp took. Our guides came and explained the three options available to us for the evening.

  • Stay at basecamp for the entire evening
  • Climb to Volcano Acatenango’s Summit
  • Embark on the treacherous hike to Fuego

Note: This will entirely depend on the weather you have. We were extremely fortunate to have perfect weather so all options were available to us.

Enjoying Fuego Volcano erupting from basecamp. The white spec in the corner is our group hiking Fuego!!
  • Staying at basecamp: The sunsets on the other side of the volcano to the basecamp. However, you’ll be able to enjoy the colourful sky with Fuego Volcano erupting every 15 minutes.
  • Volcano Acatenango’s Summit: This took 2.5 hours return. Other than a challenging 30 minutes, it’s similar to the rest of Acatenango. You’ll be reward with 360 degree – panoramic views and the sunset.
  • Fuego Volcano: the hardest of all options. A four hour hike, harder than what we’d done, up to Fuego to see the lava up close. People who did it said it was extremely challenging, and not necessarily worth the views.

I stayed at basecamp for the evening, with 9 others from my camp. Although the sun set from the other side, we watched the skies change colour around us, with Fuego Volcano regularly erupting in the distance.

The campsite had cards, boardgames, hot chocolate and marshmallow roasting. The 10 of us sat round chatting and had a great night. We could see the headlamps of the Fuego climbers and couldn’t believe how close the lava got at points!! Their hike included a long walk along a narrow path with a sheer drop either side – we all agreed we made a great decision staying back.

Fuego erupting every 15 minutes

Sleeping and Eating at Basecamp

Once the exhausted climbers were down from the summit, tomato pasta and red wine was served. I loved the atmosphere in the dining tent, with everyone in, albeit tired, but great spirits!

The majority of the group went to bed early – either to prepare for the 4:30am summit start or from sheer exhaustion. The beds provided were thick, comfortable mattresses on the floor and -20 degree sleeping bags. Regardless of this, we all had a terrible night’s sleep. The altitude made breathing feel hard, combined with people leaving at 4:30am for the summit sunrise hike. We also had a situation with our cabin door and discovered during the night, when someone got up to pee, that it was jammed shut. Once we were able to pry ourselves out, we had to keep it open to prevent it from happening again. So the remainder of the night was quite chilly.

The view from our cabin bed!

I woke up with a terrible headache. I had drunk 5 litres of water during the climb, and in the evening, so put it down to altitude sickness. But opening our cabin door, to this view of Fuego Volcano made it all so worth it! And although it wasn’t a great night sleep, I knew the whole experience was such a once in a lifetime moment that it didn’t matter. Breakfast was porridge and was served at 7:15am.

By 7:45am, the group was packed and had started the descent down.

Hiking Down Volcano Acatenango

Personally, I found the hike down harder than the hike up – sorry if this part is a bit negative!

The first 20 minutes, or so, were ok. We walked back across the undulating paths with significantly more energy than the previous afternoon. With less food/drink supplies, our bags were lighter and more manageable too. I focused on helping my sister down during this and she was struggling a lot with the altitude. In my mind, the faster we got down, the better we’d feel.

Constant sliding down during the descent

Once we got through the cloud forest, we were back in the rainforest. This part was unbearable!! My sister and I fell a combined 19 times, due to how slippery it was. I had to use all my concentration to watch where I put my feet and to deal with the tricky, sharp bends that were steep and slippery. I hated every second of this bit!

The sandy bit was equally as challenging. Many parts were slippery, whilst the majority of it was steep. Towards the end we were able to run down. We had three organised breaks throughout the entire descent.

I think what made the descent so mentally challenging was how relentless and never-ending it felt!

A few people out of the 32 of us that managed to get the whole way down without falling. However, 3 girls sustained significant grazes from falling and most people were covered in mud. Our guide told us running down would be easier but there were many areas where this wasn’t possible.

Muddy but we made it!!!

We finally arrived back down at 10:10am, elated we accomplished it and that it was finally over. Feeling on top of the world, the beers were flowing and constant cheers were given out to those coming down the trail. Despite how hard it was, it was honestly one of the best things I’ve ever done! I would highly recommend this to anyone going to Guatemala.

I vowed to never climb another volcano! Although… this lasted a week, as I climbed Volcano Telica in Nicaragua!

Powered by GetYourGuide

Tips for Hiking Volcano Acatenango

Have the correct gear. The conditions along this hike, and at the top, are no joke. The track is steep and slippery at points. Temperatures reached -8 degrees at the top. If you don’t have proper hiking gear, rent it from the many shops in Antigua or from the organisation you’re hiking with. This will include headlamps, thermal clothes, hiking shoes and poles.

Bring minimum 4 litres of water. If your organisation doesn’t enforce a rule for that, do it anyway. Most of the hike is done in peak heat of the day and dehydration was something many people in our group were struck with. Staying hydrated will help with the symptoms of altitude sickness too.

Go at your own pace. It’s not a race to the top. Go at your own pace and take breaks whenever you need to. Organised breaks were every 20-25 minutes, but I still stopped in between to catch my breath and drink water. New guides were assigned to anyone going slower than the 3 paced groups. It just means you have a less time to chill in the basecamp than others.

Make friends in your group. You’re all in this together and supporting each other to the top will make the experience just that bit more bearable.

Rent hiking poles. Don’t choose the cheap wooden sticks on offer, rent two proper hiking poles. Not only will these help you with the steep ascent, but they help to stabilise you during the slippery descent.

Take plenty of suncream. Half the climb is in direct sunlight. Although I avoided burning my skin, I did burn my lips!!!

Wrap up

Acatenango was one of the highlights of my trip to Guatemala and such a life achievement. Camping on an active volcano, watching Fuego Volcano erupt from around our campfire, the people we met and the environment we were in, was a once in a lifetime experience. I would recommend this to anyone! Just be sure to take it seriously, as its no walk in the park.

Have a great time and….don’t scare yourself with the Tripadvisor reviews beforehand. It’s bloody hard but the views of Fuego Volcano erupting and the surrounding areas are totally worth it. We had people of all ages, sizes and fitness levels in our group and EVERYONE made it to the top. It’s no race and you can go entirely at your own speed.

If you’re planning to hike Volcano Acatenango, I’d recommend basing yourself in the lovely Antigua for at least a few days. Not only is it a great place, but you’ll then have time to prepare and recover from the hike. Other must-dos places in Guatemala are Semuc Champey, Lake Atitlan, Tikal and hike Volcano Pacaya!

Guatemala and Central America Blogs

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Telica

Hiking Volcano Telica – Craters, Beers & Sunsets!

A week after climbing Acatenango, and swearing to never climb another volcano again, I found myself at the top of …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …

The post The Ultimate Guide to Hiking Volcano Acatenango appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/guatemala/volcano-acatenango/feed/ 4
Antigua to Leon – An 18-hour Journey From Hell https://www.charsfootsteps.com/travel/central-america/guatemala/antigua-to-leon/?utm_source=rss&utm_medium=rss&utm_campaign=antigua-to-leon https://www.charsfootsteps.com/travel/central-america/guatemala/antigua-to-leon/#respond Mon, 17 Feb 2020 18:51:10 +0000 https://www.charsfootsteps.com/?p=214 Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 transport, $2 tax, $3 Honduras border, $14 Nicaraguan border) After an incredible week exploring Antigua, the time had come to move onto the next place – Leon, Nicaragua. Antigua was one of my favourite places […]

The post Antigua to Leon – An 18-hour Journey From Hell appeared first on Char's Footsteps.

]]>
Antigua to Leon Bus

Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival)

Overall cost: usd$69 ($50 transport, $2 tax, $3 Honduras border, $14 Nicaraguan border)

After an incredible week exploring Antigua, the time had come to move onto the next place – Leon, Nicaragua. Antigua was one of my favourite places in Central America and I can’t recommend it enough if you’re in Guatemala! Finding transport from Antigua to Leon proved to be less straightforward than I had originally anticipated. After reading a number of blog posts, and speaking to people in my hostel, I made the journey across both borders and wanted to detail my experience to anyone else thinking of making the journey.

My first point of call was looking at flights from Guatemala City to Manague – Nicaragua’s Capital. However, the high cost of these made it impossible to commit to on my backpacker budget. The average price being between £300-400! Additionally, all bus/shuttle companies I found online required a night stop in San Salvador, or departed Antigua at 2am. A quick Google search on the latter only brought up horror stories, involving robberies and ‘van takeovers’, in the middle of the night. I’m sure these aren’t a regular occurrence, but it still put me off doing the journey at night – particularly as a solo backpacker.

Eventually, I found a shuttle company whilst walking past the ‘Lemon Tree Hostel’ in Antigua. $50USD later, I had a place on the 7am bus for the following morning. The shuttle company was called Roneey Shuttles and they collect you from your hostel.

This isn’t the most exciting read! But hopefully it’ll be useful to anyone looking to travel from Antigua to Leon – mostly during the day and without any overnight stops. Journey times and prices included – but be mindful that these prices might have changed since I wrote this post.

Antigua to the Guatemala/El Salvador Border

Guatemalan Border (exit)

An early morning wake up, a very sad goodbye to my sister (who joined my 7 months backpacking for a month) and a quick pack-breakfast later, I found myself on the cobblestone-roads of Antigua, waiting for my shuttle. The driver was lovely and he spent the first part of the journey collecting all passengers from our individual hotels and hostels. With all 7 passengers on board, we had a quick briefing on the three border crossings and paid the driver 16Q/US$2 per person for tax. Our driver handed us immigration forms to fill out for exiting Guatemalan.

Leaving Antigua at 7:23am, it took two hours to reach the Guatemalan border. Here, we handed in our immigrations forms and received exit stamps in our passports – this took less than 10 minutes. As with most borders in Central America, it was really easy to change currencies here too.

El Salvador Border (entry)

Once we departed the Guatemala border exit, we had a very short drive away from the El Salvador border entry. A healthcare professional immediately came to the van and thoroughly checked us and our passports. As this was February 2020, I imagine this temperature check was due to the big C virus outbreak and potentially not standard procedure. We had our temperatures checked with a blue forehead light and were all question on our travel movements. Once we got the all clear, we left the border (9:48am) and made our way to El Tunco, El Salvador.

Related Post: Tulum to Flores – 3 buses, 2 borders and a Tax Scam

El Tunco, El Salvador: Drama 1

The beach town of El Tunco was two hours from the EL Salvador border control (11:48am). We were given 1.5 hours to chill here, whilst they swapped vans and drivers. El Tunco seemed like a cute surfers town, with a nice beach and several cafes. We didn’t have much time to explore but this seems like a big base for backpackers in El Salvador.

Our initial departure time was 1:15pm, but in true Central American style, our bus was late. Waiting in the 37 degree heat by the meet-up point was less than ideal. The upside of these dramas is you end up bonding a lot with other travellers, so by now, we were all very friendly with each other. Twenty minutes later, a new bus and driver appeared. Our bags had been taken out of the original van and strapped to the roof of the new one.

Drama 1 of the trip began to unfold. Three people had left belongings in the first van that hadn’t been moved to the second van – including clothes on the bus and a phone that someone had left on the seat thinking we were coming back! Understandably, they wanted to contact the original driver to retrieve their belongings. This heavily delayed our journey time, which was fine, until the driver decided to leave us in a boiling hot bus, with only a few windows open. Luckily they all got their things back. Finally, we 9 new passengers on board, we left El Tunco at 2pm.

Lesson 1: ALWAYS take your belongings with you when you leave these shuttles. The big bags are usually fine but all valuables should be kept with you.

El Salvador to the Honduras Border: Drama 2

An hour after leaving El Tunco, we stopped off at a petrol station. I highly recommend you break up any large USD notes here, by buying a bottle of water or something to eat. No border gave out change – despite blatantly having it!

El Salvador Border (exit) – 6pm

Three hours later we finally arrived at the El Salvador border (6pm). Our passports were thoroughly checked from inside the bus by an officer. El Salvador doesn’t charge an entry or exit fee, and as with other borders that day, we had the forehead temperature checks (assumingly for the C outbreak).

Drama 2 then began. A girl on our bus didn’t have an entry date included on her Guatemalan stamp. You’re entitled to a combined 90 days in Guatemala, El Salvador, Honduras and Nicaragua. However, you must make sure your passport stamp includes an entry date and the word ‘90 days’, particularly if you’re crossing borders via land.

She was taken off the van and into an office. We had to wait for 50 minutes in the hot van. It’s one of those things where you feel bad for you new found bus-friend but equally frustrated at the conditions – a little AC or open window would have been great. Eventually, our driver decided to take us to the Honduras border and come back for her later. Sundays are notorious for being especially busy at the borders and he wanted us to start queueing as soon as possible.

Honduras Border (entry)

He wasn’t kidding when he said the queues were bad. After over an hour of waiting, we finally got to the front of the queue. We gave finger prints, and paid the Gringo tax of USD $3, we got back on the bus at 8:08pm. Some people ended up paying $5 or $10 for not having the exact change! If you’re on a tight budget, be sure to have small change with you. As said above, you can get small change at the petrol station or exchange money ahead of time.

Halfway through our queueing, the girl was reunited with our group. it was great to be back as a team after the nightmare we were having. However…she was made to pay USD $45 for not having the date by her Guatemalan entry stamp and was told to leave the country within 5 days. It was unfair to her as it sounded like a complete mishap on whoever stamped her passport. Understandably, she didn’t realise you had to have ’90 days’ written in your passport.

Lesson 2: Be sure to have ‘90 days’ written in your passport if you’re planning to move between Guatemala, El Salvador, Honduras or Nicaragua.

Lesson 3: Have the exact money at each border as they don’t give change. Coins lower than $1 aren’t accepted.

At 9pm we stopped in a petrol station to pee, buy snacks and swap drivers again.

Honduras/Nicaragua Border Control

Honduras Border (exit) – 10:21pm

The Honduras border was a breeze. With no queues, we were back on the bus within 15 minutes. Very quick and easy process.

Nicaraguan Border (entry) – 10:42pm

The Nicaraguan border was a different story! Our driver collected our passports, 14USD and went inside to sort out immigration. I sat outside the bus to get some air and connect to their free WiFi.

I have no idea why, but this took over an hour – despite us being the only ones there!!! It was definitely getting quite frustrating and all of use were very ready to be in Leon. Eventually, we were back on the bus for what felt like the 100th time and tackled the last leg of the journey. Again, this whole experience REALLY bonds you as a bus as you’re all going through it together. Which is why i’m such an advocate for solo travel, as you’re never really alone!

Leon – 1:12am

Finally, more than 18 hours after leaving Antigua, we reached Leon!! The driver dropped us individually at our hostel and hotel doors. I really appreciated Roneey Shuttles for doing this. Arriving in Leon late at night was quite scary as EVERYTHING was boarded up and shut, given it quite an unwelcoming and unfriendly vibe. I wouldn’t have liked to walk alone here trying to find my hostel.

Wrap Up of Travelling From Antigua to Leon

I hope this helps anyone looking to make the trip from Antigua to Leon by bus, without any overnights stops. I was glad to get the whole journey done in a day, albeit a fairly unpleasant experience. My biggest tips would be to take the exact change for borders, have the correct passport stamps and don’t leave anything in the van during the bus swaps. Both Guatemala and Nicaragua are incredible places to explore, so this whole bus ordeal was worth it!

My absolute favourite places to visit during this was Antigua, Volcano Pacaya, Volcano Acatenango and Semuc Champey, so I highly recommend these places if you get the change to visit them!

Related Posts

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Telica

Hiking Volcano Telica – Craters, Beers & Sunsets!

A week after climbing Acatenango, and swearing to never climb another volcano again, I found myself at the top of …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …

The post Antigua to Leon – An 18-hour Journey From Hell appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/guatemala/antigua-to-leon/feed/ 0
Pacaya Volcano Hike https://www.charsfootsteps.com/travel/central-america/guatemala/volcano-pacaya/?utm_source=rss&utm_medium=rss&utm_campaign=volcano-pacaya https://www.charsfootsteps.com/travel/central-america/guatemala/volcano-pacaya/#comments Sat, 08 Feb 2020 17:16:42 +0000 https://www.charsfootsteps.com/?p=173 Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from Antigua. Located just over an hour from Guatemala City or Antigua, Pacaya offers the chance to walk across lava fields, take in panoramic views and witness volcanic activity. Sometimes even see visible lava flows!! After […]

The post Pacaya Volcano Hike appeared first on Char's Footsteps.

]]>
Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from Antigua. Located just over an hour from Guatemala City or Antigua, Pacaya offers the chance to walk across lava fields, take in panoramic views and witness volcanic activity. Sometimes even see visible lava flows!! After hearing other backpackers share their stories of roasting marshmallows over hot lava, we knew we had to hike it!! It’s one of the best volcano hikes in Guatemala and a most-do if you’re in Antigua!

… it might have also been a little taster before we attempted Volcano Acatenango.

Pacaya is located in the Pacaya National Park in Guatemala’s southern central highlands. Rising to 2,552 metres, it’s been active since the 1960s – with it’s most recent major eruptions being in 2010 and 2021. Aside for these eruptions, it’s considered very safe to hike!

Powered by GetYourGuide

Volcano Pacaya Hike Costs

It’s mandatory to hike up Volcano Pacaya with a guide. You can either do this by booking with a tour in Antigua, or make your own way to Pacaya and hire a guide from there. From asking around, people paid around Q200 for the latter. Tour agencies we spoke to were charging anything from Q170-450, with added perks of lunch and hot springs.

Eventually, we booked through our hostel, who charged Q100 for return transport and a lovely local guide. The entrance fee for the volcano itself is Q50 – paid on arrival.

Volcano-pacaya-hike
Our view from the top

The two main tours available depart at 6-7am or 1-2pm. We chose to do the afternoon tour for the sunset views – which I highly recommend! It’s worth noting, Volcano Pacaya is hard to get to via public transport, so joining a tour would be your best option.

Getting to Volcano Pacaya

The minivan arrived at our hostel 25 minutes behind the scheduled 2pm departure time. As we were the last hostel pick-up, we headed straight to the volcano.

After a 90 minute drive along winding roads, we arrived at the hike starting point. We were instantly swarmed by kids selling walking sticks for Q10 and ‘taxi’ horses for Q100. The walking sticks would have been helpful at certain points, due to the slippery walking path and steep downhill to the lava. The horses follow you up until the viewing point and are available at any time if you need them. There are toilets at the car park too.

Hiking Pacaya

The hike to the viewing point was harder than I anticipated. The forest landscape had a fairly steep track with loose gravel, ash and small rocks. We did take regular breaks along the way up, and fortunately, were blessed with clear skies! The views were incredible and we could see as far as Guatemala City!!

After an hour of walking, we reached the top and were awarded with breathtaking views of Volcano Pacaya. In addition, Volcano Acatenango, Agua and Fuego were visible from the other side. It made the sweaty hike up worth it!!

Pacaya  hike
The ‘path’ down towards Pacaya’s base

From here, we made our way down to Volcano Pacaya’s base. This was fairly challenging, given the amount of loose rock and ash. It was slippery and you had to be conscious of where you stepped. I recommend wearing proper shoes (trainers or hiking boots) and just being aware of where you’re stepping. It’s definitely doable, you just need to be looking where you’re going during this time. As someone who is terrified of heights, and gets nervous even being near a scary slope, this was fine! I’ve had harder times trying to ski.

Marshmallow Roasting on Pacaya Volcano

Volcano marshmallows
The prize at the top!

The terrain here was vastly different from the forest landscape we’d been hiking in at the start. We walked through a make-shift path surrounded by mounds of dried lava, until finally…marshmallows!! Our guide had us gather round a small hole in the lava that was hot enough to roast marshmallows.

This was probably one of the most surreal moments of my life – standing in front of an active volcano, surrounded by dried lava, eating roasted marshmallows.

Once we’d eaten all the marshmallows, we made our way down the other side to sit on a ledge and watch the sunset.

sunset hike
Hiking from the base towards the sunset

Sunsets at Pacaya Volcano

The landscape changed once again as we walked across sandy-ash towards the sunset. We stayed here for 30 minutes, taking photos and appreciating the incredible sun setting below the clouds. Without question, the sunset here goes down as one of my top three favourite sunsets!!

Once the sun starts to set, you’re able to see the hot lava on Volcano Pacaya too. By this time, it was starting to get quite chilly, so we wrapped up in our layers and got ready for the descent.

Volcano Pacaya sunset
Sunset views of Antigua’s many volcanos

At 6:30pm, we started the hike back down, guided by our phone torches. This was a different route to the ascent – much flatter with slightly easier terrain to walk on. Despite it being easier, you’ll still need to be conscious of where you step, and in the pitch dark, it was hard at times. Within an hour, we were on our way back to Antigua.

Tips for Hiking Volcano Pacaya

  1. DO THE SUNSET TOUR! I can’t stress enough how incredible it was to watch the sunset from above the clouds, surrounded by Volcanos. I don’t think the 6am tour would provide the same experience.
  2. Bring warm layers for the top. It’s windy, and after sunset, can get quite cold.
  3. Take a headlamp if you have one. Our group managed the post-sunset descent with phone torches. however, it would have been much easier if there were headlamps.
  4. Wear proper hiking shoes or trainers. The terrain can be a bit slippery at parts, so bring shoes that have good grips.
  5. Bring lots of water (and potentially some snacks). Although the hike isn’t long, we did the majority of it in the daylight and heat. You can’t buy water on the volcano so it’s better to pack some.
  6. Bring cash for any equiptment rentals (e.g. hiking poles), drinks etc

Pacaya Volcano FAQs

When is the best time to visit Pacaya Volcano?

The best time to hike Volcano Pacaya is during the dry season – November to April – as the trails are less muddy with clearer views! Wet season – May to October – is more cloudy and rainy. Although you can still do the hike, be prepared for slippery trails and reduced visibility. I would personally recommend going in dry season, as it was already fairly slippery when we went in January. Also the incredible views is what made the trip, so if you don’t have that, it might not be worth it.

How long does it take to hike Volcano Pacaya?

It’s roughly a 3-4 hour round trip, including breaks and enjoying time at the summit/lava fields.

Is Pacaya suitable for children?

Yes, older children and teenagers with moderate fitness would be fine to complete the hike. Younger children may find it challenging, but there are horses available.

How difficult is the Pacaya Volcano hike?

Overall, the hiking Pacaya is not difficult – only a basic level of fitness is needed. The hike is a steady uphill walk but with plenty of rest stops and good terrain. As with all the volcano hikes we did, the pace of the group is set by the slowest hiker. So don’t worry about being ‘too slow’ going up.

Is lava always visible?

No, the visibility of lava depends on current volcanic activity. Some months, you’ll be able to see glowing lava flows or smoke, and at other times, it’ll just be steam and heat vents. Ask your tour operator for up-to-date info before booking.

After speaking to a few people afterwards, we realise how lucky we were with the weather. Some people apparently have total whiteouts and can’t see any views off the volcano. Keep on top of the weather forecasts to help pick a clear day.

What should I wear and bring?

I recommend wearing sturdy, closed shoes. In terms of clothes, you’ll need light and breathable layers and some sort of windbreaker or light jacket at the top. I wore running leggings, a t-shirt, with a thin jumper for the top, and I was comfortable.

In addition to this, I recommend bringing cash (for any snacks, souvenirs or horse rides), sun protection, water and snacks. There are walking/hiking sticks available to rent at the trailhead, which could be useful. Although the guides bring marshmallows, feel free to bring your own too.

Can I hike Pacaya without a guide?

No, a guide is required by the park for all visitors. This can either be part of a tour or hired at the park entrance. This is for both safety and park regulation. If you’re going to Pacaya solo (e.g. with your own drivers), you’ll need to hire a local guide upon arrival.

Is it worth doing if I’ve already hiked Acatenango?

YES! Hiking Pacaya Volcano is a completely different experience to Acatenango. For starters, it’s shorter and easier, so you’re not physically exerting much energy or having to take as many supplies up. In addition, the sites and things to do differ. I highly recommend doing both if you get the chance!

Is it safe to hike?

Yes, Pacaya is gernerally considered safe to hike, especially as it’s mandatory to have a guide. The active crater is off-limits and tours strictly stick to designated trails and lava fields. That said, as it’s still an active volcano, it’s important to follow the guidelands of guides and park officials to avoid restricted areas.

If you’re planning a trip to Guatemala, check out my guide on places to visit in Guatemala for more inspiration or other posts in my Central America collection.

Related Posts

semuc champey view point

The Best Things to Do in Semuc Champey

In the heart of the Guatemalan Jungles lies Semuc Champey, a destination that perfectly blends nature with adventures. Located in …
Best things to do in Guatemala

The Ultimate Guide to Travelling in Guatemala

Guatemala is one of the most amazing countries I’ve ever visited and a must if you’re travelling through Central America …
antigua guatemala

11 Best Things to do in Antigua, Guatemala

Antigua is a UNESCO world heritage site in Guatemala, famous for its Spanish Baroque-infrastructure, ruins, cobblestoned streets and volcanoes. Antigua …
Antigua to leon

Antigua to Leon – An 18-hour Journey From Hell

Antigua to Leon Bus Overall travel time: 18 hours and 12 minutes (7am departure, 1:12am arrival) Overall cost: usd$69 ($50 …
Volcano-Pacaya

Pacaya Volcano Hike

Volcano Pacaya is one of Guatemala’s most active volcanoes and one of the most accessible for a day hike from …
Tulum

How to get from Tulum/Chetumal to Flores by bus in one day

We did this journey on 26th January 2020 so it’s probable that prices have increased since the time of writing! …

The post Pacaya Volcano Hike appeared first on Char's Footsteps.

]]>
https://www.charsfootsteps.com/travel/central-america/guatemala/volcano-pacaya/feed/ 2