diff --git a/src/command/render/filters.ts b/src/command/render/filters.ts index a13f830b6d0..5a29eb3d8b3 100644 --- a/src/command/render/filters.ts +++ b/src/command/render/filters.ts @@ -774,7 +774,7 @@ async function resolveFilterExtension( typeof (filter) === "string" && !existsSync(filter) ) { - let extensions = await options.services.extension?.find( + const extensions = await options.services.extension?.find( filter, options.source, "filters", @@ -783,16 +783,27 @@ async function resolveFilterExtension( ) || []; // Filter this list of extensions - extensions = filterExtensions(extensions || [], filter, "filter"); + const filteredExtensions = filterExtensions( + extensions || [], + filter, + "filter", + ); // Return any contributed plugins - if (extensions.length > 0) { + if (filteredExtensions.length > 0) { + // This matches an extension, use the contributed filters const filters = extensions[0].contributes.filters; if (filters) { return filters; } else { return filter; } + } else if (extensions.length > 0) { + // There was a matching extension with this name, but + // it was filtered out, just hide the filter altogether + return []; } else { + // There were no extensions matching this name, just allow it + // through return filter; } } else { diff --git a/src/extension/constants.ts b/src/extension/constants.ts index 66c90b7d99a..deb12987c40 100644 --- a/src/extension/constants.ts +++ b/src/extension/constants.ts @@ -12,3 +12,7 @@ export const kAuthor = "author"; export const kVersion = "version"; export const kQuartoRequired = "quarto-required"; export const kRevealJSPlugins = "revealjs-plugins"; + +// Special case for our lightbox extension, which we've built in +// manually (to better control filter placement) +export const kBuiltInExtNames = ["lightbox"]; diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 9b87557c9c5..75dae644046 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -26,6 +26,7 @@ import { quartoConfig } from "../core/quarto.ts"; import { kAuthor, + kBuiltInExtNames, kBuiltInExtOrg, kCommon, kExtensionDir, @@ -187,7 +188,7 @@ function filterExtensionAndWarn( warnToRemoveExtensions(filterOutExtensions); // filter out the extensions that have become built in return extensions.filter((ext) => { - return filterOutExtensions.map((ext) => ext.id.name).includes( + return !filterOutExtensions.map((ext) => ext.id.name).includes( ext.id.name, ); }); @@ -239,13 +240,14 @@ export function filterExtensions( // referenced in the yaml so we don't break code in the wild) const oldBuiltInExt = extensions?.filter((ext) => { return (ext.id.organization === kQuartoExtOrganization && - kQuartoExtBuiltIn.includes(ext.id.name)); + (kQuartoExtBuiltIn.includes(ext.id.name) || + kBuiltInExtNames.includes(ext.id.name))); }); if (oldBuiltInExt.length > 0) { - filterExtensionAndWarn(extensions, oldBuiltInExt); + return filterExtensionAndWarn(extensions, oldBuiltInExt); + } else { + return extensions; } - - return extensions; } else { return extensions; } diff --git a/src/resources/filters/ast/runemulation.lua b/src/resources/filters/ast/runemulation.lua index 0574369f385..5f2fa5bacd6 100644 --- a/src/resources/filters/ast/runemulation.lua +++ b/src/resources/filters/ast/runemulation.lua @@ -116,7 +116,8 @@ function run_as_extended_ast(specTable) innerV._filter_name = string.format("%s-%s", v.name, j) table.insert(finalResult, { filter = innerV, - name = innerV._filter_name + name = innerV._filter_name, + flags = v.flags }) end else diff --git a/src/resources/filters/crossref/format.lua b/src/resources/filters/crossref/format.lua index d854644b371..4fef2737689 100644 --- a/src/resources/filters/crossref/format.lua +++ b/src/resources/filters/crossref/format.lua @@ -14,12 +14,18 @@ function titleString(type, default) return pandoc.utils.stringify(title(type, default)) end -function titlePrefix(type, default, order) +function titlePrefix(type, default, order, with_delimiter) + if with_delimiter == nil then + with_delimiter = true + end + local prefix = title(type, default) table.insert(prefix, nbspString()) tappend(prefix, numberOption(type, order)) - tappend(prefix, titleDelim()) - table.insert(prefix, pandoc.Space()) + if with_delimiter then + tappend(prefix, titleDelim()) + table.insert(prefix, pandoc.Space()) + end return prefix end diff --git a/src/resources/filters/crossref/tables.lua b/src/resources/filters/crossref/tables.lua index b3d18de3d49..036cc0fca1e 100644 --- a/src/resources/filters/crossref/tables.lua +++ b/src/resources/filters/crossref/tables.lua @@ -222,14 +222,14 @@ function isTableDiv(el) end -function float_title_prefix(float) +function float_title_prefix(float, withDelimiter) local category = crossref.categories.by_name[float.type] if category == nil then fail("unknown float type '" .. float.type .. "'") return end - return titlePrefix(category.ref_type, category.name, float.order) + return titlePrefix(category.ref_type, category.name, float.order, withDelimiter) end function tableTitlePrefix(order) diff --git a/src/resources/filters/customnodes/floatreftarget.lua b/src/resources/filters/customnodes/floatreftarget.lua index e2b3217a6bc..98a75b49ab2 100644 --- a/src/resources/filters/customnodes/floatreftarget.lua +++ b/src/resources/filters/customnodes/floatreftarget.lua @@ -132,6 +132,52 @@ function decorate_caption_with_crossref(float) return float end +function full_caption_prefix(float, subfloat) + if not param("enable-crossref", true) then + -- don't decorate captions with crossrefs information if crossrefs are disabled + return {} + end + + float = ensure_custom(float) + -- nil should never happen here, but the Lua analyzer doesn't know it + if float == nil then + -- luacov: disable + internal_error() + -- luacov: enable + end + + if subfloat ~= nil then + subfloat = ensure_custom(subfloat) + -- nil should never happen here, but the Lua analyzer doesn't know it + if subfloat == nil then + -- luacov: disable + internal_error() + -- luacov: enable + end + end + + local float_title = {} + if not is_unlabeled_float(float) then + float_title = float_title_prefix(float, false) + end + + local subfloat_title = pandoc.Inlines({}) + if subfloat ~= nil then + if subfloat.order == nil then + warn("Subfloat without crossref information") + else + prependSubrefNumber(subfloat_title, subfloat.order) + end + end + if #subfloat_title > 0 then + tappend(float_title,{nbspString()}) + end + tappend(float_title, subfloat_title) + tappend(float_title, titleDelim()) + tappend(float_title, {pandoc.Space()}) + return pandoc.Inlines(float_title) +end + -- capture relevant figure attributes then strip them local function get_figure_attributes(el) local align = figAlignAttribute(el) diff --git a/src/resources/filters/layout/lightbox.lua b/src/resources/filters/layout/lightbox.lua new file mode 100644 index 00000000000..832552c8955 --- /dev/null +++ b/src/resources/filters/layout/lightbox.lua @@ -0,0 +1,337 @@ +-- lightbox.lua +-- Copyright (C) 2020-2022 Posit Software, PBC + +local lightbox_module = require("modules/lightbox") + + +-- attributes to forward from the image to the newly created link +local kDescription = "description" +local kForwardedAttr = { + "title", kDescription, "desc-position", + "type", "effect", "zoomable", "draggable" +} + +local kLightboxClass = "lightbox" +local kNoLightboxClass = "nolightbox" +local kGalleryPrefix = "quarto-lightbox-gallery-" + +local function readAttrValue(el, attrName) + if attrName == kDescription then + local doc = pandoc.read(el.attr.attributes[attrName]) + local attrInlines = doc.blocks[1].content + return pandoc.write(pandoc.Pandoc(attrInlines), "html") + else + return el[attrName] + end +end + + +function lightbox() + -- whether we're automatically lightboxing + local auto = false + + -- whether we need lightbox dependencies added + local needsLightbox = false + + -- a counter used to ensure each image is in its own gallery + local imgCount = 0 + local function lightboxImage(imgEl, description, gallery) + -- note that we need to include the dependency for lightbox + needsLightbox = true + imgCount = imgCount + 1 + + -- remove the class from the image + imgEl.attr.classes = imgEl.attr.classes:filter(function(clz) + return clz ~= kLightboxClass + end) + + -- attributes for the link + local linkAttributes = {} + + -- mark this image as a lightbox target + linkAttributes.class = kLightboxClass + + -- get the alt text from image and use that as title + local title = nil + if imgEl.caption ~= nil and #imgEl.caption > 0 then + title = pandoc.utils.stringify(imgEl.caption) + elseif imgEl.attributes['fig-alt'] ~= nil and #imgEl.attributes['fig-alt'] > 0 then + title = pandoc.utils.stringify(imgEl.attributes['fig-alt']) + end + + -- move a group attribute to the link, if present + if imgEl.attr.attributes.group ~= nil then + linkAttributes.gallery = imgEl.attr.attributes.group + imgEl.attr.attributes.group = nil + elseif gallery ~= nil then + linkAttributes.gallery = gallery + else + linkAttributes.gallery = kGalleryPrefix .. imgCount + end + + -- write a description, if provided + if description ~= nil then + linkAttributes[kDescription] = inlinesToString(quarto.utils.as_inlines(description)) + end + + -- forward any other known attributes + for i, v in ipairs(kForwardedAttr) do + if imgEl.attr.attributes[v] ~= nil then + -- forward the attribute + linkAttributes[v] = readAttrValue(imgEl, v) + + -- clear the attribute + imgEl.attr.attributes[v] = nil + end + + -- clear the title + if (imgEl.title == 'fig:') then + imgEl.title = "" + end + + end + + -- wrap decorated images in a link with appropriate attrs + local link = pandoc.Link({imgEl}, imgEl.src, title, linkAttributes) + return link + end + + local function processImg(imgEl, options) + local automatic = options.automatic + local caption = options.caption + local gallery = options.gallery + + local autolightbox = automatic and auto and not imgEl.classes:includes(kNoLightboxClass) + if autolightbox or imgEl.classes:includes('lightbox') then + return lightboxImage(imgEl, caption, gallery) + end + end + + local function processFigure(figEl) + return _quarto.ast.walk(figEl, { + Image = function(imgEl) + return processImg(imgEl, { automatic = true, caption = figEl.caption }) + end + }) + end + + local function processSubFloat(subFloatEl, gallery, parentFloat) + local subFloatModified = false + subFloatEl = _quarto.ast.walk(subFloatEl, { + traverse = 'topdown', + Image = function(imgEl) + local caption_content = subFloatEl.caption_long.content or subFloatEl.caption_long + local caption = full_caption_prefix(parentFloat, subFloatEl) + tappend(caption, caption_content) + local subImgModified = processImg(imgEl, { automatic = true, caption = caption, gallery = gallery }) + if subImgModified ~= nil then + subFloatModified = true + return subImgModified, false + else + return nil, false + end + end + }) + if subFloatModified then + return subFloatEl + else + return nil + end + end + + if quarto.doc.is_format("html:js") then + return {{ + traverse = "topdown", + + Meta = function(meta) + -- Set auto lightbox mode, if need be + auto = lightbox_module.automatic(meta) == true + end, + -- Find images that are already within links + -- we'll use this to filter out these images if + -- the most is auto + Link = function() + -- don't walk images, figures, etc... that are already within a link + -- since we rely on being able to Link the image in order to + -- lightbox it + return nil, false + end, + Div = function(div) + -- Walk code cells and forward any lightbox parameters through to + -- the image class that holds them + if div.classes:includes("cell") and div.attributes["lightbox"] ~= nil then + meta = quarto.json.decode(div.attributes["lightbox"]) + local codeImgCount = 0 + div = div:walk({ + Image = function(imgEl) + codeImgCount = codeImgCount + 1 + if (type(meta) == "table" and meta[kNoLightboxClass] == true) or meta == false then + imgEl.classes:insert(kNoLightboxClass) + else + if not auto and ((type(meta) == "table" and not meta[kNoLightboxClass]) or meta == true) then + imgEl.classes:insert(kLightboxClass) + end + if (type(meta) == "table") then + if meta.group then + imgEl.attr.attributes.group = meta.group or imgEl.attr.attributes.group + end + for _, v in next, kForwardedAttr do + if type(meta[v]) == "table" and #meta[v] > 1 then + -- if list attributes it should be one per plot + if codeImgCount > #meta[v] then + quarto.log.warning("More plots than '" .. v .. "' passed in YAML chunk options.") + else + attrLb = meta[v][codeImgCount] + end + else + -- Otherwise reuse the single attributes + attrLb = meta[v] + end + imgEl.attr.attributes[v] = attrLb or imgEl.attr.attributes[v] + end + end + end + return imgEl + end + }) + div.attributes["lightbox"] = nil + end + return div + end, + Image = function(imgEl) + -- look only for explicitly targeted images + return processImg(imgEl, { automatic = false } ), false + end, + Figure = function(figEl) + return processFigure(figEl), false + end, + FloatRefTarget = function(floatEl) + + if floatEl.parent_id == nil then + local floatmodified = false + floatEl = _quarto.ast.walk(floatEl, { + traverse = 'topdown', + Image = function(imgEl) + local caption_content = floatEl.caption_long.content or floatEl.caption_long + local caption = full_caption_prefix(floatEl) + tappend(caption, caption_content) + local modifiedImg = processImg(imgEl, { automatic = true, caption = caption }) + if modifiedImg ~= nil then + floatmodified = true + end + return modifiedImg, false + end, + FloatRefTarget = function(subFloatEl) + if subFloatEl.parent_id ~= nil then + local subFloat = processSubFloat(subFloatEl, subFloatEl.parent_id, floatEl) + if subFloat ~= nil then + floatmodified = true + end + return subFloat, false + end + end, + Figure = function(figEl) + local modifiedFig = processFigure(figEl) + if modifiedFig ~= nil then + floatmodified = true + end + return modifiedFig, false + end + }) + + if floatmodified then + return floatEl, false + else + return nil, false + end + end + + + end, + }, + { + Meta = function(meta) + -- If we discovered lightbox-able images + -- we need to include the dependencies + if needsLightbox then + -- add the dependency + quarto.doc.add_html_dependency({ + name = 'glightbox', + scripts = {'../formats/html/glightbox/glightbox.min.js'}, + stylesheets = {'../formats/html/glightbox/glightbox.min.css', '../formats/html/glightbox/lightbox.css'} + }) + + -- read lightbox options + local lbMeta = meta.lightbox + local readEffect = function(el) + local val = pandoc.utils.stringify(el) + if val == "fade" or val == "zoom" or val == "none" then + return val + else + error("Invalid effect " + val) + end + end + + -- permitted options include: + -- lightbox: + -- effect: zoom | fade | none + -- desc-position: top | bottom | left |right + -- loop: true | false + -- class: + local effect = "zoom" + local descPosition = "bottom" + local loop = true + local skin = nil + + -- The selector controls which elements are targeted. + -- currently, it always targets .lightbox elements + -- and there is no way for the user to change this + local selector = "." .. kLightboxClass + + if lbMeta ~= nil and type(lbMeta) == 'table' then + if lbMeta.effect ~= nil then + effect = readEffect(lbMeta.effect) + end + + if lbMeta['desc-position'] ~= nil then + descPosition = pandoc.utils.stringify(lbMeta['desc-position']) + end + + if lbMeta['css-class'] ~= nil then + skin = pandoc.utils.stringify(lbMeta['css-class']) + end + + if lbMeta.loop ~= nil then + loop = lbMeta.loop + end + end + + -- Generate the options to configure lightbox + local options = { + selector = selector, + closeEffect = effect, + openEffect = effect, + descPosition = descPosition, + loop = loop, + } + if skin ~= nil then + options.skin = skin + end + local optionsJson = quarto.json.encode(options) + + -- generate the initialization script with the correct options + local scriptTag = "" + + -- inject the rendering code + quarto.doc.include_text("after-body", scriptTag) + + end + end + }} + else + return {} + end + +end + + diff --git a/src/resources/filters/layout/pandoc3_figure.lua b/src/resources/filters/layout/pandoc3_figure.lua index be44061aec0..a611c9297bb 100644 --- a/src/resources/filters/layout/pandoc3_figure.lua +++ b/src/resources/filters/layout/pandoc3_figure.lua @@ -6,26 +6,63 @@ -- if they were. function render_pandoc3_figure() + local function html_handle_linked_image(figure) + local div = pandoc.Div({}) + div.identifier = "fig-yesiamafigure" -- this is a bad hack to make discoverLinkedFigureDiv work + local link = nil + if figure.content[1].t == "Plain" then + local plain = figure.content[1] + if plain.content[1].t == "Link" then + link = plain.content[1] + end + end + if link == nil then + return nil + end + div.content:insert(pandoc.Para({link})) + local pt = pandoc.utils.type(figure.caption.long) + if pt == "Blocks" or pt == "Inlines" then + div.content:insert(pandoc.Para(quarto.utils.as_inlines(figure.caption.long))) + elseif pt == "Inline" or pt == "Block" then + div.content:insert(pandoc.Para({figure.caption.long})) + else + internal_error() + end + local image = discoverLinkedFigureDiv(div) + if image == nil then + return nil + end + div.identifier = "" + return htmlDivFigure(div) + end + local function html_handle_image(figure) + local image + _quarto.ast.walk(figure, { + Image = function(img) + image = img + end + }) + if image == nil then + return figure + end + if figure.caption.long ~= nil then + image.caption = quarto.utils.as_inlines(figure.caption.long) + end + return htmlImageFigure(image) + end + if _quarto.format.isHtmlOutput() then return { traverse = "topdown", Figure = function(figure) - local image - _quarto.ast.walk(figure, { - Image = function(img) - image = img - end - }) - if image == nil then - return figure - end - if figure.caption.long ~= nil then - image.caption = quarto.utils.as_inlines(figure.caption.long) + local result = html_handle_linked_image(figure) + if result ~= nil then + return result end - return htmlImageFigure(image) + return html_handle_image(figure) end } - else + elseif _quarto.format.isLatexOutput() then return { traverse = "topdown", Figure = function(figure) @@ -49,4 +86,5 @@ function render_pandoc3_figure() end } end + return {} end diff --git a/src/resources/filters/main.lua b/src/resources/filters/main.lua index 2b330ce75d4..0abb53dedce 100644 --- a/src/resources/filters/main.lua +++ b/src/resources/filters/main.lua @@ -101,6 +101,7 @@ import("./layout/cites.lua") import("./layout/columns.lua") import("./layout/manuscript.lua") import("./layout/pandoc3_figure.lua") +import("./layout/lightbox.lua") import("./layout/columns-preprocess.lua") import("./layout/layout.lua") @@ -358,6 +359,7 @@ local quarto_finalize_filters = { local quarto_layout_filters = { { name = "manuscript filtering", filter = manuscript() }, { name = "manuscript filtering", filter = manuscriptUnroll() }, + { name = "layout-lightbox", filters = lightbox(), flags = { "has_lightbox" }}, { name = "layout-render-pandoc3-figure", filter = render_pandoc3_figure(), flags = { "has_pandoc3_figure" } }, { name = "layout-columns-preprocess", filter = columns_preprocess() }, diff --git a/src/resources/filters/modules/authors.lua b/src/resources/filters/modules/authors.lua index c3e5d855fc0..4392d3cec69 100644 --- a/src/resources/filters/modules/authors.lua +++ b/src/resources/filters/modules/authors.lua @@ -574,7 +574,7 @@ local function processFundingGroup(fundingGroup, authors, affiliations) elseif pandoc.utils.type(statement) == "Blocks" then result[kStatement] = pandoc.utils.blocks_to_inlines(statement) else - result[kStatement] = openAccess + result[kStatement] = statement end end diff --git a/src/resources/filters/modules/lightbox.lua b/src/resources/filters/modules/lightbox.lua new file mode 100644 index 00000000000..563047444f7 --- /dev/null +++ b/src/resources/filters/modules/lightbox.lua @@ -0,0 +1,46 @@ +-- lightbox.lua +-- Copyright (C) 2020-2022 Posit Software, PBC + + +local function lightbox_auto(meta) + -- If the mode is auto, we need go ahead and + -- run if there are any images (ideally we would) + -- filter to images in the body, but that can be + -- left for future me to deal with + -- supports: + -- lightbox: true + -- lightbox: auto + -- or + -- lightbox: + -- match: auto + local lbMeta = meta.lightbox + if lbMeta ~= nil and type(lbMeta) == 'table' then + if lbMeta[1] ~= nil then + if lbMeta[1]['text'] == "auto" then + return true + end + elseif lbMeta.match ~= nil and pandoc.utils.stringify(lbMeta.match) == 'auto' then + return true + end + elseif lbMeta == true then + return true + elseif lbMeta == false then + return false + end + -- return nil so caller can know the difference between + -- explicitly off and omitted + return nil +end + +local function el_has_lightbox(el) + + local has_lightbox = el.attributes["lightbox"] ~= nil or el.classes:includes('lightbox') + return has_lightbox +end + +return { + automatic = lightbox_auto, + el_has_lightbox = el_has_lightbox +} + + diff --git a/src/resources/filters/normalize/flags.lua b/src/resources/filters/normalize/flags.lua index 62ddbb4f36f..87381890672 100644 --- a/src/resources/filters/normalize/flags.lua +++ b/src/resources/filters/normalize/flags.lua @@ -7,6 +7,7 @@ local patterns = require("modules/patterns") local constants = require("modules/constants") +local lightbox_module = require("modules/lightbox") flags = {} @@ -18,6 +19,14 @@ function compute_flags() local latex_caption_pattern = "(\\caption{)(.*)" .. refLabelPattern("tbl") .. "([^}]*})" return { + Meta = function(el) + local lightbox_auto = lightbox_module.automatic(el) + if lightbox_auto then + flags.has_lightbox = true + elseif lightbox_auto == false then + flags.has_lightbox = false + end + end, Header = function(el) crossref.maxHeading = math.min(crossref.maxHeading, el.level) end, @@ -59,12 +68,16 @@ function compute_flags() end, Div = function(node) - local type = refType(node.attr.identifier) if theoremTypes[type] ~= nil or proofType(node) ~= nil then flags.has_theorem_refs = true end + local has_lightbox = lightbox_module.el_has_lightbox(node) + if has_lightbox then + flags.has_lightbox = true + end + if node.attr.classes:find("hidden") then flags.has_hidden = true end @@ -116,6 +129,11 @@ function compute_flags() if node.src:find("%{%{%<") then flags.has_shortcodes = true end + + local has_lightbox = lightbox_module.el_has_lightbox(node) + if has_lightbox then + flags.has_lightbox = true + end end, Shortcode = function(node) flags.has_shortcodes = true diff --git a/src/resources/formats/html/glightbox/glightbox.min.css b/src/resources/formats/html/glightbox/glightbox.min.css new file mode 100644 index 00000000000..3c9ff877576 --- /dev/null +++ b/src/resources/formats/html/glightbox/glightbox.min.css @@ -0,0 +1 @@ +.glightbox-container{width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999!important;overflow:hidden;-ms-touch-action:none;touch-action:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0}.glightbox-container.inactive{display:none}.glightbox-container .gcontainer{position:relative;width:100%;height:100%;z-index:9999;overflow:hidden}.glightbox-container .gslider{-webkit-transition:-webkit-transform .4s ease;transition:-webkit-transform .4s ease;transition:transform .4s ease;transition:transform .4s ease,-webkit-transform .4s ease;height:100%;left:0;top:0;width:100%;position:relative;overflow:hidden;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.glightbox-container .gslide{width:100%;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0}.glightbox-container .gslide.current{opacity:1;z-index:99999;position:relative}.glightbox-container .gslide.prev{opacity:1;z-index:9999}.glightbox-container .gslide-inner-content{width:100%}.glightbox-container .ginner-container{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;margin:auto;height:100vh}.glightbox-container .ginner-container.gvideo-container{width:100%}.glightbox-container .ginner-container.desc-bottom,.glightbox-container .ginner-container.desc-top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.glightbox-container .ginner-container.desc-left,.glightbox-container .ginner-container.desc-right{max-width:100%!important}.gslide iframe,.gslide video{outline:0!important;border:none;min-height:165px;-webkit-overflow-scrolling:touch;-ms-touch-action:auto;touch-action:auto}.gslide:not(.current){pointer-events:none}.gslide-image{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gslide-image img{max-height:100vh;display:block;padding:0;float:none;outline:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100vw;width:auto;height:auto;-o-object-fit:cover;object-fit:cover;-ms-touch-action:none;touch-action:none;margin:auto;min-width:200px}.desc-bottom .gslide-image img,.desc-top .gslide-image img{width:auto}.desc-left .gslide-image img,.desc-right .gslide-image img{width:auto;max-width:100%}.gslide-image img.zoomable{position:relative}.gslide-image img.dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.gslide-video{position:relative;max-width:100vh;width:100%!important}.gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster{display:none}.gslide-video .gvideo-wrapper{width:100%;margin:auto}.gslide-video::before{content:'';position:absolute;width:100%;height:100%;background:rgba(255,0,0,.34);display:none}.gslide-video.playing::before{display:none}.gslide-video.fullscreen{max-width:100%!important;min-width:100%;height:75vh}.gslide-video.fullscreen video{max-width:100%!important;width:100%!important}.gslide-inline{background:#fff;text-align:left;max-height:calc(100vh - 40px);overflow:auto;max-width:100%;margin:auto}.gslide-inline .ginlined-content{padding:20px;width:100%}.gslide-inline .dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.ginlined-content{overflow:auto;display:block!important;opacity:1}.gslide-external{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;min-width:100%;background:#fff;padding:0;overflow:auto;max-height:75vh;height:100%}.gslide-media{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.zoomed .gslide-media{-webkit-box-shadow:none!important;box-shadow:none!important}.desc-bottom .gslide-media,.desc-top .gslide-media{margin:0 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gslide-description{position:relative;-webkit-box-flex:1;-ms-flex:1 0 100%;flex:1 0 100%}.gslide-description.description-left,.gslide-description.description-right{max-width:100%}.gslide-description.description-bottom,.gslide-description.description-top{margin:0 auto;width:100%}.gslide-description p{margin-bottom:12px}.gslide-description p:last-child{margin-bottom:0}.zoomed .gslide-description{display:none}.glightbox-button-hidden{display:none}.glightbox-mobile .glightbox-container .gslide-description{height:auto!important;width:100%;position:absolute;bottom:0;padding:19px 11px;max-width:100vw!important;-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;max-height:78vh;overflow:auto!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.75)));background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.75) 100%);-webkit-transition:opacity .3s linear;transition:opacity .3s linear;padding-bottom:50px}.glightbox-mobile .glightbox-container .gslide-title{color:#fff;font-size:1em}.glightbox-mobile .glightbox-container .gslide-desc{color:#a1a1a1}.glightbox-mobile .glightbox-container .gslide-desc a{color:#fff;font-weight:700}.glightbox-mobile .glightbox-container .gslide-desc *{color:inherit}.glightbox-mobile .glightbox-container .gslide-desc .desc-more{color:#fff;opacity:.4}.gdesc-open .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:.4}.gdesc-open .gdesc-inner{padding-bottom:30px}.gdesc-closed .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:1}.greset{-webkit-transition:all .3s ease;transition:all .3s ease}.gabsolute{position:absolute}.grelative{position:relative}.glightbox-desc{display:none!important}.glightbox-open{overflow:hidden}.gloader{height:25px;width:25px;-webkit-animation:lightboxLoader .8s infinite linear;animation:lightboxLoader .8s infinite linear;border:2px solid #fff;border-right-color:transparent;border-radius:50%;position:absolute;display:block;z-index:9999;left:0;right:0;margin:0 auto;top:47%}.goverlay{width:100%;height:calc(100vh + 1px);position:fixed;top:-1px;left:0;background:#000;will-change:opacity}.glightbox-mobile .goverlay{background:#000}.gclose,.gnext,.gprev{z-index:99999;cursor:pointer;width:26px;height:44px;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gclose svg,.gnext svg,.gprev svg{display:block;width:25px;height:auto;margin:0;padding:0}.gclose.disabled,.gnext.disabled,.gprev.disabled{opacity:.1}.gclose .garrow,.gnext .garrow,.gprev .garrow{stroke:#fff}.gbtn.focused{outline:2px solid #0f3d81}iframe.wait-autoplay{opacity:0}.glightbox-closing .gclose,.glightbox-closing .gnext,.glightbox-closing .gprev{opacity:0!important}.glightbox-clean .gslide-description{background:#fff}.glightbox-clean .gdesc-inner{padding:22px 20px}.glightbox-clean .gslide-title{font-size:1em;font-weight:400;font-family:arial;color:#000;margin-bottom:19px;line-height:1.4em}.glightbox-clean .gslide-desc{font-size:.86em;margin-bottom:0;font-family:arial;line-height:1.4em}.glightbox-clean .gslide-video{background:#000}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.75);border-radius:4px}.glightbox-clean .gclose path,.glightbox-clean .gnext path,.glightbox-clean .gprev path{fill:#fff}.glightbox-clean .gprev{position:absolute;top:-100%;left:30px;width:40px;height:50px}.glightbox-clean .gnext{position:absolute;top:-100%;right:30px;width:40px;height:50px}.glightbox-clean .gclose{width:35px;height:35px;top:15px;right:10px;position:absolute}.glightbox-clean .gclose svg{width:18px;height:auto}.glightbox-clean .gclose:hover{opacity:1}.gfadeIn{-webkit-animation:gfadeIn .5s ease;animation:gfadeIn .5s ease}.gfadeOut{-webkit-animation:gfadeOut .5s ease;animation:gfadeOut .5s ease}.gslideOutLeft{-webkit-animation:gslideOutLeft .3s ease;animation:gslideOutLeft .3s ease}.gslideInLeft{-webkit-animation:gslideInLeft .3s ease;animation:gslideInLeft .3s ease}.gslideOutRight{-webkit-animation:gslideOutRight .3s ease;animation:gslideOutRight .3s ease}.gslideInRight{-webkit-animation:gslideInRight .3s ease;animation:gslideInRight .3s ease}.gzoomIn{-webkit-animation:gzoomIn .5s ease;animation:gzoomIn .5s ease}.gzoomOut{-webkit-animation:gzoomOut .5s ease;animation:gzoomOut .5s ease}@-webkit-keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes gfadeIn{from{opacity:0}to{opacity:1}}@keyframes gfadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes gfadeOut{from{opacity:1}to{opacity:0}}@keyframes gfadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@-webkit-keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@-webkit-keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@-webkit-keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@media (min-width:769px){.glightbox-container .ginner-container{width:auto;height:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.glightbox-container .ginner-container.desc-top .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-top .gslide-image,.glightbox-container .ginner-container.desc-top .gslide-image img{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.glightbox-container .ginner-container.desc-left .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-left .gslide-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.gslide-image img{max-height:97vh;max-width:100%}.gslide-image img.zoomable{cursor:-webkit-zoom-in;cursor:zoom-in}.zoomed .gslide-image img.zoomable{cursor:-webkit-grab;cursor:grab}.gslide-inline{max-height:95vh}.gslide-external{max-height:100vh}.gslide-description.description-left,.gslide-description.description-right{max-width:275px}.glightbox-open{height:auto}.goverlay{background:rgba(0,0,0,.92)}.glightbox-clean .gslide-media{-webkit-box-shadow:1px 2px 9px 0 rgba(0,0,0,.65);box-shadow:1px 2px 9px 0 rgba(0,0,0,.65)}.glightbox-clean .description-left .gdesc-inner,.glightbox-clean .description-right .gdesc-inner{position:absolute;height:100%;overflow-y:auto}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.32)}.glightbox-clean .gclose:hover,.glightbox-clean .gnext:hover,.glightbox-clean .gprev:hover{background-color:rgba(0,0,0,.7)}.glightbox-clean .gprev{top:45%}.glightbox-clean .gnext{top:45%}}@media (min-width:992px){.glightbox-clean .gclose{opacity:.7;right:20px}}@media screen and (max-height:420px){.goverlay{background:#000}} \ No newline at end of file diff --git a/src/resources/formats/html/glightbox/glightbox.min.js b/src/resources/formats/html/glightbox/glightbox.min.js new file mode 100644 index 00000000000..997908b5973 --- /dev/null +++ b/src/resources/formats/html/glightbox/glightbox.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).GLightbox=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[s]=e[s]||[],l={all:n,evt:null,found:null};return t&&i&&P(n)>0&&o(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return l.found=!0,l.evt=n,!1})),l}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,a=t.once,h=void 0!==a&&a,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){T(n)&&n.call(u,e,this),h&&v.destroy()}return C(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){o(g,(function(t){var i=r(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},o(g,(function(t){var i=r(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function h(e,t){o(t.split(" "),(function(t){return e.classList.add(t)}))}function d(e,t){o(t.split(" "),(function(t){return e.classList.remove(t)}))}function c(e,t){return e.classList.contains(t)}function u(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if("function"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||""===t)return!1;if("none"===t)return T(i)&&i(),!1;var n=x(),s=t.split(" ");o(s,(function(t){h(e,"g"+t)})),a(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){o(s,(function(e){d(t,"g"+e)})),T(i)&&i()}})}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e.style.webkitTransform="",e.style.MozTransform="",e.style.msTransform="",e.style.OTransform="",e.style.transform="",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function f(e){e.style.display="block"}function p(e){e.style.display="none"}function m(e){var t=document.createDocumentFragment(),i=document.createElement("div");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function y(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function x(){var e,t=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}function b(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function S(e,t,i){if(I(e))console.error("Inject assets error");else if(T(t)&&(i=t,t=!1),C(t)&&t in window)T(i)&&i();else{var n;if(-1!==e.indexOf(".css")){if((n=document.querySelectorAll('link[href="'+e+'"]'))&&n.length>0)return void(T(i)&&i());var s=document.getElementsByTagName("head")[0],l=s.querySelectorAll('link[rel="stylesheet"]'),o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.href=e,o.media="all",l?s.insertBefore(o,l[0]):s.appendChild(o),void(T(i)&&i())}if((n=document.querySelectorAll('script[src="'+e+'"]'))&&n.length>0){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement("script");r.type="text/javascript",r.src=e,r.onload=function(){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function w(){return"navigator"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function T(e){return"function"==typeof e}function C(e){return"string"==typeof e}function k(e){return!(!e||!e.nodeType||1!=e.nodeType)}function E(e){return Array.isArray(e)}function A(e){return e&&e.length&&isFinite(e.length)}function L(t){return"object"===e(t)&&null!=t&&!T(t)&&!E(t)}function I(e){return null==e}function O(e,t){return null!==e&&hasOwnProperty.call(e,t)}function P(e){if(L(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)O(e,i)&&t++;return t}return e.length}function M(e){return!isNaN(parseFloat(e))&&isFinite(e)}function z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");if(!t.length)return!1;if(1==t.length)return t[0];"string"==typeof e&&(e=parseInt(e));var i=[];o(t,(function(e){i.push(e.getAttribute("data-taborder"))}));var n=Math.max.apply(Math,i.map((function(e){return parseInt(e)}))),s=e<0?1:e+1;s>n&&(s="1");var l=i.filter((function(e){return e>=parseInt(s)})),r=l.sort()[0];return document.querySelector('.gbtn[data-taborder="'.concat(r,'"]'))}function X(e){if(e.events.hasOwnProperty("keyboard"))return!1;e.events.keyboard=a("keydown",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(".gbtn.focused");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if("input"==l||"textarea"==l||"button"==l)return}t.preventDefault();var o=document.querySelectorAll(".gbtn[data-taborder]");if(!o||o.length<=0)return;if(!s){var r=z();return void(r&&(r.focus(),h(r,"focused")))}var a=z(s.getAttribute("data-taborder"));d(s,"focused"),a&&(a.focus(),h(a,"focused"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}function Y(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function q(e,t){var i=function(e,t){var i=Y(e)*Y(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var N=function(){function e(i){t(this,e),this.handlers=[],this.el=i}return n(e,[{key:"add",value:function(e){this.handlers.push(e)}},{key:"del",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:"dispatch",value:function(){for(var e=0,t=this.handlers.length;e=0)console.log("ignore drag for this touched element",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=Y(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}}},{key:"move",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=Y(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=q(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:"end",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:"cancelAll",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:"cancel",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:"_cancelLongTap",value:function(){clearTimeout(this.longTapTimeout)}},{key:"_cancelSingleTap",value:function(){clearTimeout(this.singleTapTimeout)}},{key:"_swipeDirection",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?"Left":"Right":i-n>0?"Up":"Down"}},{key:"on",value:function(e,t){this[e]&&this[e].add(t)}},{key:"off",value:function(e,t){this[e]&&this[e].del(t)}},{key:"destroy",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener("touchstart",this.start),this.element.removeEventListener("touchmove",this.move),this.element.removeEventListener("touchend",this.end),this.element.removeEventListener("touchcancel",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener("scroll",this._cancelAllHandler),null}}]),e}();function W(e){var t=function(){var e,t=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=c(e,"gslide-media")?e:e.querySelector(".gslide-media"),s=u(n,".ginner-container"),l=e.querySelector(".gslide-description");i>769&&(n=s),h(n,"greset"),v(n,"translate3d(0, 0, 0)"),a(t,{onElement:n,once:!0,withCallback:function(e,t){d(n,"greset")}}),n.style.opacity="",l&&(l.style.opacity="")}function B(e){if(e.events.hasOwnProperty("touch"))return!1;var t,i,n,s=y(),l=s.width,o=s.height,r=!1,a=null,g=null,f=null,p=!1,m=1,x=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},M=0,z=0,X=document.getElementById("glightbox-slider"),Y=document.querySelector(".goverlay"),q=new _(X,{touchStart:function(t){if(r=!0,(c(t.targetTouches[0].target,"ginner-container")||u(t.targetTouches[0].target,".gslide-desc")||"a"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),u(t.targetTouches[0].target,".gslide-inline")&&!c(t.targetTouches[0].target.parentNode,"gslide-inline")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,z=t.targetTouches[0].clientY,a=e.activeSlide,g=a.querySelector(".gslide-media"),n=a.querySelector(".gslide-inline"),f=null,c(g,"gslide-image")&&(f=g.querySelector("img")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(g=a.querySelector(".ginner-container")),d(Y,"greset"),t.pageX>20&&t.pageXo){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var h,d=s.targetTouches[0].clientX,c=s.targetTouches[0].clientY,u=M-d,m=z-c;if(Math.abs(u)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&f&&(h=1-Math.abs(i)/o,Y.style.opacity=h,e.settings.touchFollowAxis&&(E=0)),I&&(h=1-Math.abs(t)/l,g.style.opacity=h,e.settings.touchFollowAxis&&(A=0)),!f)return v(g,"translate3d(".concat(E,"%, 0, 0)"));v(g,"translate3d(".concat(E,"%, ").concat(A,"%, 0)"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&f))return t<29&&i<25?(h(Y,"greset"),Y.style.opacity=1,W(g)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=x||1},pinch:function(e){if(!f||p)return!1;b=!0,f.scaleX=f.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void f.setAttribute("style","");t>4.5&&(t=4.5),f.style.transform="scale3d(".concat(t,", ").concat(t,", 1)"),x=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n="translate3d(".concat(t,"px, ").concat(i,"px, 0)");x&&(n+=" scale3d(".concat(x,", ").concat(x,", 1)")),v(f,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if("Left"==t.direction){if(e.index==e.elements.length-1)return W(g);e.nextSlide()}if("Right"==t.direction){if(0==e.index)return W(g);e.prevSlide()}}}});e.events.touch=q}var H=function(){function e(i,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(t(this,e),this.img=i,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener("mousedown",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener("mouseup",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener("mousemove",(function(e){return s.drag(e)}),!1),this.img.addEventListener("click",(function(e){return s.slide.classList.contains("dragging-nav")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}return n(e,[{key:"zoomIn",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute("data-style",t.getAttribute("style")),t.style.maxWidth=t.naturalWidth+"px",t.style.maxHeight=t.naturalHeight+"px",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add("zoomed"),this.zoomedIn=!0}}},{key:"zoomOut",value:function(){this.img.parentNode.setAttribute("style",""),this.img.setAttribute("style",this.img.getAttribute("data-style")),this.slide.classList.remove("zoomed"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&"function"==typeof this.onclose&&this.onclose()}},{key:"dragStart",value:function(e){e.preventDefault(),this.zoomedIn?("touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add("dragging"))):this.active=!1}},{key:"dragEnd",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove("dragging")}),100)}},{key:"drag",value:function(e){this.active&&(e.preventDefault(),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:"onMove",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:"setTranslate",value:function(e,t,i){e.style.transform="translate3d("+t+"px, "+i+"px, 0)"}},{key:"widowWidth",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),e}(),V=function(){function e(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener("mousedown",(function(e){return i.dragStart(e)}),!1),this.el.addEventListener("mouseup",(function(e){return i.dragEnd(e)}),!1),this.el.addEventListener("mousemove",(function(e){return i.drag(e)}),!1)}return n(e,[{key:"dragStart",value:function(e){if(this.slide.classList.contains("zoomed"))this.active=!1;else{"touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains("nodrag")||u(e.target,".nodrag")||-1!==["input","select","textarea","button","a"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||"img"!==t&&u(e.target,".gslide-inline"))&&(this.active=!0,this.el.classList.add("dragging"),this.dragContainer=u(e.target,".ginner-container")))}}},{key:"dragEnd",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,"right"==this.doSlideChange&&this.instance.prevSlide(),"left"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove("dragging"),t.slide.classList.remove("dragging-nav"),t.dragContainer.style.transform="",t.dragContainer.style.transition=""}),100)}},{key:"drag",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add("dragging-nav"),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||"x"==this.lastDirection)){this.yOffset=0,this.lastDirection="x",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),"right"==n&&this.instance.prevSlide(),void("left"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||"y"==this.lastDirection)){this.xOffset=0,this.lastDirection="y",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:"shouldChange",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?"right":"left";("left"==t&&this.slide!==this.slide.parentNode.lastChild||"right"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:"shouldClose",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:"setTranslate",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?"all .2s ease":"",e.style.transform="translate3d(".concat(t,"px, ").concat(i,"px, 0)")}}]),e}();function j(e,t,i,n){var s=e.querySelector(".gslide-media"),l=new Image,o="gSlideTitle_"+i,r="gSlideDesc_"+i;l.addEventListener("load",(function(){T(n)&&n()}),!1),l.src=t.href,""!=t.sizes&&""!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt="",I(t.alt)||""===t.alt||(l.alt=t.alt),""!==t.title&&l.setAttribute("aria-labelledby",o),""!==t.description&&l.setAttribute("aria-describedby",r),t.hasOwnProperty("_hasCustomWidth")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty("_hasCustomHeight")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function F(e,t,i,n){var s=this,l=e.querySelector(".ginner-container"),o="gvideo"+i,r=e.querySelector(".gslide-media"),a=this.getAllPlayers();h(l,"gvideo-container"),r.insertBefore(m('
'),r.firstChild);var d=e.querySelector(".gvideo-wrapper");S(this.settings.plyr.css,"Plyr");var c=t.href,u=null==t?void 0:t.videoProvider,g=!1;r.style.maxWidth=t.width,S(this.settings.plyr.js,"Plyr",(function(){if(!u&&c.match(/vimeo\.com\/([0-9]*)/)&&(u="vimeo"),!u&&(c.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||c.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||c.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/))&&(u="youtube"),"local"===u||!u){u="local";var l='")}var r=g||m('
'));h(d,"".concat(u,"-video gvideo")),d.appendChild(r),d.setAttribute("data-id",o),d.setAttribute("data-index",i);var v=O(s.settings.plyr,"config")?s.settings.plyr.config:{},f=new Plyr("#"+o,v);f.on("ready",(function(e){a[o]=e.detail.plyr,T(n)&&n()})),b((function(){return e.querySelector("iframe")&&"true"==e.querySelector("iframe").dataset.ready}),(function(){s.resize(e)})),f.on("enterfullscreen",R),f.on("exitfullscreen",R)}))}function R(e){var t=u(e.target,".gslide-media");"enterfullscreen"===e.type&&h(t,"fullscreen"),"exitfullscreen"===e.type&&d(t,"fullscreen")}function G(e,t,i,n){var s,l=this,o=e.querySelector(".gslide-media"),r=!(!O(t,"href")||!t.href)&&t.href.split("#").pop().trim(),d=!(!O(t,"content")||!t.content)&&t.content;if(d&&(C(d)&&(s=m('
'.concat(d,"
"))),k(d))){"none"==d.style.display&&(d.style.display="block");var c=document.createElement("div");c.className="ginlined-content",c.appendChild(d),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,h(g,"ginlined-content"),s=g}if(!s)return console.error("Unable to append inline slide content",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events["inlineclose"+r]=a("click",{onElement:o.querySelectorAll(".gtrigger-close"),withCallback:function(e){e.preventDefault(),l.close()}}),T(n)&&n()}function Z(e,t,i,n){var s=e.querySelector(".gslide-media"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement("iframe");return l.className="vimeo-video gvideo",l.src=t,l.style.width="100%",l.style.height="100%",i&&l.setAttribute("allow",i),l.onload=function(){l.onload=null,h(l,"node-ready"),T(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var U=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.defaults={href:"",sizes:"",srcset:"",title:"",type:"",videoProvider:"",description:"",alt:"",descPosition:"bottom",effect:"",width:"",height:"",content:!1,zoomable:!0,draggable:!0},L(i)&&(this.defaults=l(this.defaults,i))}return n(e,[{key:"sourceType",value:function(e){var t=e;if(null!==(e=e.toLowerCase()).match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/))return"image";if(e.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||e.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/))return"video";if(e.match(/vimeo\.com\/([0-9]*)/))return"video";if(null!==e.match(/\.(mp4|ogg|webm|mov)/))return"video";if(null!==e.match(/\.(mp3|wav|wma|aac|ogg)/))return"audio";if(e.indexOf("#")>-1&&""!==t.split("#").pop().trim())return"inline";return e.indexOf("goajax=true")>-1?"ajax":"external"}},{key:"parseConfig",value:function(e,t){var i=this,n=l({descPosition:t.descPosition},this.defaults);if(L(e)&&!k(e)){O(e,"type")||(O(e,"content")&&e.content?e.type="inline":O(e,"href")&&(e.type=this.sourceType(e.href)));var s=l(n,e);return this.setSize(s,t),s}var r="",a=e.getAttribute("data-glightbox"),h=e.nodeName.toLowerCase();if("a"===h&&(r=e.href),"img"===h&&(r=e.src,n.alt=e.alt),n.href=r,o(n,(function(s,l){O(t,l)&&"width"!==l&&(n[l]=t[l]);var o=e.dataset[l];I(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type="inline"),!n.type&&r&&(n.type=this.sourceType(r)),I(a)){if(!n.title&&"a"==h){var d=e.title;I(d)||""===d||(n.title=d)}if(!n.title&&"img"==h){var c=e.alt;I(c)||""===c||(n.title=c)}}else{var u=[];o(n,(function(e,t){u.push(";\\s?"+t)})),u=u.join("\\s?:|"),""!==a.trim()&&o(n,(function(e,t){var s=a,l=new RegExp("s?"+t+"s?:s?(.*?)("+u+"s?:|$)"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\s*$/,"");n[t]=i.sanitizeValue(r)}}))}if(n.description&&"."===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(".glightbox-desc");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:"setSize",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="video"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=O(e,"width")&&""!==e.width?this.checkSize(e.width):n,e.height=O(e,"height")&&""!==e.height?this.checkSize(e.height):s,i&&"image"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:"checkSize",value:function(e){return M(e)?"".concat(e,"px"):e}},{key:"sanitizeValue",value:function(e){return"true"!==e&&"false"!==e?e:"true"===e}}]),e}(),$=function(){function e(i,n,s){t(this,e),this.element=i,this.instance=n,this.index=s}return n(e,[{key:"setContent",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(c(t,"loaded"))return!1;var n=this.instance.settings,s=this.slideConfig,l=w();T(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(".gslide-media"),d=t.querySelector(".gslide-title"),u=t.querySelector(".gslide-desc"),g=t.querySelector(".gdesc-inner"),v=i,f="gSlideTitle_"+this.index,p="gSlideDesc_"+this.index;if(T(n.afterSlideLoad)&&(v=function(){T(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),""==s.title&&""==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(d&&""!==s.title?(d.id=f,d.innerHTML=s.title):d.parentNode.removeChild(d),u&&""!==s.description?(u.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),u.innerHTML=s.smallDescription,this.descriptionEvents(u,s)):u.innerHTML=s.description):u.parentNode.removeChild(u),h(a.parentNode,"desc-".concat(r)),h(g.parentNode,"description-".concat(r))),h(a,"gslide-".concat(o)),h(t,"loaded"),"video"!==o){if("external"!==o)return"inline"===o?(G.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new V({dragEl:t.querySelector(".gslide-inline"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void("image"!==o?T(v)&&v():j(t,s,this.index,(function(){var i=t.querySelector("img");s.draggable&&new V({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(h(i,"zoomable"),new H(i,t,(function(){e.instance.resize()}))),T(v)&&v()})));Z.apply(this,[t,s,this.index,v])}else F.apply(this.instance,[t,s,this.index,v])}},{key:"slideShortDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement("div");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... '+i+""):o}},{key:"descriptionEvents",value:function(e,t){var i=this,n=e.querySelector(".desc-more");if(!n)return!1;a("click",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=u(n,".gslide-desc");if(!l)return!1;l.innerHTML=t.description,h(s,"gdesc-open");var o=a("click",{onElement:[s,u(l,".gslide-description")],withCallback:function(e,n){"a"!==e.target.nodeName.toLowerCase()&&(d(s,"gdesc-open"),h(s,"gdesc-closed"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){d(s,"gdesc-closed")}),400),o.destroy())}})}})}},{key:"create",value:function(){return m(this.instance.settings.slideHTML)}},{key:"getConfig",value:function(){k(this.element)||this.element.hasOwnProperty("draggable")||(this.element.draggable=this.instance.settings.draggable);var e=new U(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]),e}(),J=w(),K=null!==w()||void 0!==document.createTouch||"ontouchstart"in window||"onmsgesturechange"in window||navigator.msMaxTouchPoints,Q=document.getElementsByTagName("html")[0],ee={selector:".glightbox",elements:null,skin:"clean",theme:"clean",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:"bottom",width:"900px",height:"506px",videosWidth:"960px",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:"https://cdn.plyr.io/3.6.12/plyr.css",js:"https://cdn.plyr.io/3.6.12/plyr.js",config:{ratio:"16:9",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:"zoom",closeEffect:"zoom",slideEffect:"slide",moreText:"See more",moreLength:60,cssEfects:{fade:{in:"fadeIn",out:"fadeOut"},zoom:{in:"zoomIn",out:"zoomOut"},slide:{in:"slideInRight",out:"slideOutLeft"},slideBack:{in:"slideInLeft",out:"slideOutRight"},none:{in:"none",out:"none"}},svg:{close:'',next:' ',prev:''},slideHTML:'
\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n
\n
',lightboxHTML:''},te=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.customOptions=i,this.settings=l(ee,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}return n(e,[{key:"init",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=a("click",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:"open",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=M(t)?t:this.settings.startAt;if(k(e)){var n=e.getAttribute("data-gallery");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),I(i)&&(i=this.getElementIndex(e))<0&&(i=0)}M(i)||(i=0),this.build(),g(this.overlay,"none"===this.settings.openEffect?"none":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement("style");o.type="text/css",o.className="gcss-styles",o.innerText=".gscrollbar-fixer {margin-right: ".concat(l,"px}"),document.head.appendChild(o),h(s,"gscrollbar-fixer")}h(s,"glightbox-open"),h(Q,"glightbox-open"),J&&(h(document.body,"glightbox-mobile"),this.settings.slideEffect="slide"),this.showSlide(i,!0),1===this.elements.length?(h(this.prevButton,"glightbox-button-hidden"),h(this.nextButton,"glightbox-button-hidden")):(d(this.prevButton,"glightbox-button-hidden"),d(this.nextButton,"glightbox-button-hidden")),this.lightboxOpen=!0,this.trigger("open"),T(this.settings.onOpen)&&this.settings.onOpen(),K&&this.settings.touchNavigation&&B(this),this.settings.keyboardNavigation&&X(this)}},{key:"openAt",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:"showSlide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];f(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(".current");n&&d(n,"current"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(".gslide")[t];if(c(s,"loaded"))this.slideAnimateIn(s,i),p(this.loader);else{f(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger("slide_before_load",o),l.instance.setContent(s,(function(){p(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger("slide_after_load",o)}))}this.slideDescription=s.querySelector(".gslide-description"),this.slideDescriptionContained=this.slideDescription&&c(this.slideDescription.parentNode,"gslide-media"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:"preloadSlide",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(I(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(".gslide")[e];if(c(i,"loaded"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger("slide_before_load",l),"video"===s||"external"===s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}),200):n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}},{key:"prevSlide",value:function(){this.goToSlide(this.index-1)}},{key:"nextSlide",value:function(){this.goToSlide(this.index+1)}},{key:"goToSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:"insertSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new $(e,this,t),n=i.getConfig(),s=l({},n),o=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(o);else{var d=this.slidesContainer.querySelectorAll(".gslide")[t];this.slidesContainer.insertBefore(o,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0===this.index&&0===t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(".gslide")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger("slide_inserted",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),T(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:"removeSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(".gslide")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger("slide_removed",e),T(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:"slideAnimateIn",value:function(e,t){var i=this,n=e.querySelector(".gslide-media"),s=e.querySelector(".gslide-description"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(p(s),s.style.display=""),d(e,this.effectsClasses),t)g(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a="none"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),g(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),h(e,"current")}},{key:"slideAnimateOut",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;d(e,this.effectsClasses),h(e,"prev");var t=this.settings.slideEffect,i="none"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger("slide_before_change",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),T(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),g(e,i,(function(){var t=e.querySelector(".ginner-container"),i=e.querySelector(".gslide-media"),n=e.querySelector(".gslide-description");t.style.transform="",i.style.transform="",d(i,"greset"),i.style.opacity="",n&&(n.style.opacity=""),d(e,"prev")}))}},{key:"getAllPlayers",value:function(){return this.videoPlayers}},{key:"getSlidePlayerInstance",value:function(e){var t="gvideo"+e,i=this.getAllPlayers();return!(!O(i,t)||!i[t])&&i[t]}},{key:"stopSlideVideo",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("stopSlideVideo is deprecated, use slidePlayerPause");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"slidePlayerPause",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"playSlideVideo",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("playSlideVideo is deprecated, use slidePlayerPlay");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:"slidePlayerPlay",value:function(e){var t;if(!J||null!==(t=this.settings.plyr.config)&&void 0!==t&&t.muted){if(k(e)){var i=e.querySelector(".gvideo-wrapper");i&&(e=i.getAttribute("data-index"))}var n=this.getSlidePlayerInstance(e);n&&!n.playing&&(n.play(),this.settings.autofocusVideos&&n.elements.container.focus())}}},{key:"setElements",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&o(e,(function(e,n){var s=new $(e,t,n),o=s.getConfig(),r=l({},o);r.slideConfig=o,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML="",this.elements.length&&(o(this.elements,(function(){var e=m(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:"getElementIndex",value:function(e){var t=!1;return o(this.elements,(function(i,n){if(O(i,"node")&&i.node==e)return t=n,!0})),t}},{key:"getElements",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!I(this.settings.elements)&&E(this.settings.elements)&&this.settings.elements.length&&o(this.settings.elements,(function(i,n){var s=new $(i,e,n),o=s.getConfig(),r=l({},o);r.node=!1,r.index=n,r.instance=s,r.slideConfig=o,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(o(i,(function(i,n){var s=new $(i,e,n),o=s.getConfig(),r=l({},o);r.node=i,r.index=n,r.instance=s,r.slideConfig=o,r.gallery=i.getAttribute("data-gallery"),t.push(r)})),t):t}},{key:"getGalleryElements",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:"getSelector",value:function(){return!this.settings.elements&&(this.settings.selector&&"data-"==this.settings.selector.substring(0,5)?"*[".concat(this.settings.selector,"]"):this.settings.selector)}},{key:"getActiveSlide",value:function(){return this.slidesContainer.querySelectorAll(".gslide")[this.index]}},{key:"getActiveSlideIndex",value:function(){return this.index}},{key:"getAnimationClasses",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push("g".concat(i.in)),e.push("g".concat(i.out))}return e.join(" ")}},{key:"build",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];o(t,(function(e){e.parentNode==document.body&&"#"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute("aria-hidden")&&(i.push(e),e.setAttribute("aria-hidden","true"))}));var n=O(this.settings.svg,"next")?this.settings.svg.next:"",s=O(this.settings.svg,"prev")?this.settings.svg.prev:"",l=O(this.settings.svg,"close")?this.settings.svg.close:"",r=this.settings.lightboxHTML;r=m(r=(r=(r=r.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(r);var d=document.getElementById("glightbox-body");this.modal=d;var g=d.querySelector(".gclose");this.prevButton=d.querySelector(".gprev"),this.nextButton=d.querySelector(".gnext"),this.overlay=d.querySelector(".goverlay"),this.loader=d.querySelector(".gloader"),this.slidesContainer=document.getElementById("glightbox-slider"),this.bodyHiddenChildElms=i,this.events={},h(this.modal,"glightbox-"+this.settings.skin),this.settings.closeButton&&g&&(this.events.close=a("click",{onElement:g,withCallback:function(t,i){t.preventDefault(),e.close()}})),g&&!this.settings.closeButton&&g.parentNode.removeChild(g),this.nextButton&&(this.events.next=a("click",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=a("click",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=a("click",{onElement:d,withCallback:function(t,i){e.preventOutsideClick||c(document.body,"glightbox-mobile")||u(t.target,".ginner-container")||u(t.target,".gbtn")||c(t.target,"gnext")||c(t.target,"gprev")||e.close()}})),o(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(".gslide")[i]})),K&&h(document.body,"glightbox-touch"),this.events.resize=a("resize",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:"resize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!c(e,"zoomed")){var t=y(),i=e.querySelector(".gvideo-wrapper"),n=e.querySelector(".gslide-image"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?h(document.body,"glightbox-mobile"):d(document.body,"glightbox-mobile"),i||n){var r=!1;if(s&&(c(s,"description-bottom")||c(s,"description-top"))&&!c(s,"gabsolute")&&(r=!0),n)if(l<=768)n.querySelector("img");else if(r){var a=s.offsetHeight,u=n.querySelector("img");u.setAttribute("style","max-height: calc(100vh - ".concat(a,"px)")),s.setAttribute("style","max-width: ".concat(u.offsetWidth,"px;"))}if(i){var g=O(this.settings.plyr.config,"ratio")?this.settings.plyr.config.ratio:"";if(!g){var v=i.clientWidth,f=i.clientHeight,p=v/f;g="".concat(v/p,":").concat(f/p)}var m=g.split(":"),x=this.settings.videosWidth,b=this.settings.videosWidth,S=(b=M(x)||-1!==x.indexOf("px")?parseInt(x):-1!==x.indexOf("vw")?l*parseInt(x)/100:-1!==x.indexOf("vh")?o*parseInt(x)/100:-1!==x.indexOf("%")?l*parseInt(x)/100:parseInt(i.clientWidth))/(parseInt(m[0])/parseInt(m[1]));if(S=Math.floor(S),r&&(o-=s.offsetHeight),b>l||S>o||ob){var w=i.offsetWidth,T=i.offsetHeight,C=o/T,k={width:w*C,height:T*C};i.parentNode.setAttribute("style","max-width: ".concat(k.width,"px")),r&&s.setAttribute("style","max-width: ".concat(k.width,"px;"))}else i.parentNode.style.maxWidth="".concat(x),r&&s.setAttribute("style","max-width: ".concat(x,";"))}}}}},{key:"reload",value:function(){this.init()}},{key:"updateNavigationClasses",value:function(){var e=this.loop();d(this.nextButton,"disabled"),d(this.prevButton,"disabled"),0==this.index&&this.elements.length-1==0?(h(this.prevButton,"disabled"),h(this.nextButton,"disabled")):0!==this.index||e?this.index!==this.elements.length-1||e||h(this.nextButton,"disabled"):h(this.prevButton,"disabled")}},{key:"loop",value:function(){var e=O(this.settings,"loopAtEnd")?this.settings.loopAtEnd:null;return e=O(this.settings,"loop")?this.settings.loop:e,e}},{key:"close",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&o(this.bodyHiddenChildElms,(function(e){e.removeAttribute("aria-hidden")})),h(this.modal,"glightbox-closing"),g(this.overlay,"none"==this.settings.openEffect?"none":this.settings.cssEfects.fade.out),g(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;d(Q,"glightbox-open"),d(i,"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"),e.modal.parentNode.removeChild(e.modal),e.trigger("close"),T(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(".gcss-styles");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:"destroy",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:"on",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!T(t))throw new TypeError("Event name and callback must be defined");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:"once",value:function(e,t){this.on(e,t,!0)}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];o(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&o(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:"clearAllEvents",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:"version",value:function(){return"3.1.0"}}]),e}();return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new te(e);return t.init(),t}})); \ No newline at end of file diff --git a/src/resources/formats/html/glightbox/lightbox.css b/src/resources/formats/html/glightbox/lightbox.css new file mode 100644 index 00000000000..2c29fe1bb93 --- /dev/null +++ b/src/resources/formats/html/glightbox/lightbox.css @@ -0,0 +1,22 @@ +body:not(.glightbox-mobile) div.gslide div.gslide-description, +body:not(.glightbox-mobile) div.gslide-description .gslide-title, +body:not(.glightbox-mobile) div.gslide-description .gslide-desc { + color: var(--quarto-body-color); + background-color: var(--quarto-body-bg); +} + +.goverlay { + background: rgba(0, 0, 0, 0.7); +} + +div.gslide-description .gslide-title { + margin-top: 0.25em; + margin-bottom: 0.25em; + font-weight: 500; + font-family: inherit; +} + +div.gslide-description .gslide-desc { + padding-bottom: 0.5em; + font-family: inherit; +} diff --git a/src/resources/formats/html/glightbox/plyr.min.css b/src/resources/formats/html/glightbox/plyr.min.css new file mode 100644 index 00000000000..4867c86bfd9 --- /dev/null +++ b/src/resources/formats/html/glightbox/plyr.min.css @@ -0,0 +1 @@ +@charset "UTF-8";@-webkit-keyframes plyr-progress{to{background-position:25px 0;background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-progress{to{background-position:25px 0;background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@-webkit-keyframes plyr-popup{0%{opacity:.5;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes plyr-popup{0%{opacity:.5;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}@keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-box-align:center;-ms-flex-align:center;align-items:center;direction:ltr;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-family:inherit;font-family:inherit;font-family:var(--plyr-font-family,inherit);-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:400;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);line-height:1.7;line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:200px;position:relative;text-shadow:none;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{-webkit-box-sizing:border-box;box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui :after,.plyr--full-ui :before{-webkit-box-sizing:inherit;box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__badge{background:#4a5464;background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:2px;border-radius:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{-webkit-animation:plyr-fade-in .3s ease;animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;padding:10px;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{-webkit-transform:translateY(-40px);transform:translateY(-40px);-webkit-transform:translateY(calc(10px * -4));transform:translateY(calc(10px * -4));-webkit-transform:translateY(calc(var(--plyr-control-spacing,10px) * -4));transform:translateY(calc(var(--plyr-control-spacing,10px) * -4))}.plyr__caption{background:rgba(0,0,0,.8);background:rgba(0,0,0,.8);background:var(--plyr-captions-background,rgba(0,0,0,.8));border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:0 0;border:0;border-radius:3px;border-radius:3px;border-radius:var(--plyr-control-radius,3px);color:inherit;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;overflow:visible;padding:7px;padding:calc(10px * .7);padding:calc(var(--plyr-control-spacing,10px) * .7);position:relative;-webkit-transition:all .3s ease;transition:all .3s ease}.plyr__control svg{fill:currentColor;display:block;height:18px;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{outline:3px dotted #00b3ff;outline:#00b3ff dotted 3px;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff))) dotted 3px;outline-offset:2px}a.plyr__control{text-decoration:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed,a.plyr__control:after,a.plyr__control:before{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px;margin-left:calc(10px / 4);margin-left:calc(var(--plyr-control-spacing,10px)/ 4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px;padding-left:calc(10px / 4);padding-left:calc(var(--plyr-control-spacing,10px)/ 4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;padding:0 calc(10px / 2);padding:0 calc(var(--plyr-control-spacing,10px)/ 2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip],.plyr__controls:empty{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.plyr__menu .plyr__control svg{-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{-webkit-animation:plyr-popup .2s ease;animation:plyr-popup .2s ease;background:hsla(0,0%,100%,.9);background:hsla(0,0%,100%,.9);background:var(--plyr-menu-background,hsla(0,0%,100%,.9));border-radius:4px;bottom:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15);-webkit-box-shadow:var(--plyr-menu-shadow,0 1px 2px rgba(0,0,0,.15));box-shadow:var(--plyr-menu-shadow,0 1px 2px rgba(0,0,0,.15));color:#4a5464;color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;-webkit-transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1);transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container:after{border:4px solid transparent;border-top-color:hsla(0,0%,100%,.9);border:4px solid transparent;border:var(--plyr-menu-arrow-size,4px) solid transparent;border-top-color:hsla(0,0%,100%,.9);border-top-color:var(--plyr-menu-background,hsla(0,0%,100%,.9));content:'';height:0;position:absolute;right:14px;right:calc(18px / 2 + 10px * .7 - 4px / 2);right:calc(var(--plyr-control-icon-size,18px)/ 2 + var(--plyr-control-spacing,10px) * .7 - var(--plyr-menu-arrow-size,4px)/ 2);top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px;padding:calc(10px * .7);padding:calc(var(--plyr-control-spacing,10px) * .7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#4a5464;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:-webkit-box;display:-ms-flexbox;display:flex;font-size:13px;font-size:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;padding:calc(10px * .7/1.5) calc(10px * .7 * 1.5);padding:calc(var(--plyr-control-spacing,10px) * .7/1.5) calc(var(--plyr-control-spacing,10px) * .7 * 1.5);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.plyr__menu__container .plyr__control:after{border:4px solid transparent;border:4px solid transparent;border:var(--plyr-menu-item-arrow-size,4px) solid transparent;content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;padding-right:calc(10px * .7 * 4);padding-right:calc(var(--plyr-control-spacing,10px) * .7 * 4)}.plyr__menu__container .plyr__control--forward:after{border-left-color:#728197;border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:6.5px;right:calc(10px * .7 * 1.5 - 4px);right:calc(var(--plyr-control-spacing,10px) * .7 * 1.5 - var(--plyr-menu-item-arrow-size,4px))}.plyr__menu__container .plyr__control--forward.plyr__tab-focus:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(10px * .7);margin:calc(var(--plyr-control-spacing,10px) * .7);margin-bottom:3.5px;margin-bottom:calc(10px * .7/2);margin-bottom:calc(var(--plyr-control-spacing,10px) * .7/2);padding-left:28px;padding-left:calc(10px * .7 * 4);padding-left:calc(var(--plyr-control-spacing,10px) * .7 * 4);position:relative;width:calc(100% - 14px);width:calc(100% - 10px * .7 * 2);width:calc(100% - var(--plyr-control-spacing,10px) * .7 * 2)}.plyr__menu__container .plyr__control--back:after{border-right-color:#728197;border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:6.5px;left:calc(10px * .7 * 1.5 - 4px);left:calc(var(--plyr-control-spacing,10px) * .7 * 1.5 - var(--plyr-menu-item-arrow-size,4px))}.plyr__menu__container .plyr__control--back:before{background:#dcdfe5;background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:'';height:1px;left:0;margin-top:3.5px;margin-top:calc(10px * .7/2);margin-top:calc(var(--plyr-control-spacing,10px) * .7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;padding-left:calc(10px * .7);padding-left:calc(var(--plyr-control-spacing,10px) * .7)}.plyr__menu__container .plyr__control[role=menuitemradio]:after,.plyr__menu__container .plyr__control[role=menuitemradio]:before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]:before{background:rgba(0,0,0,.1);content:'';display:block;-ms-flex-negative:0;flex-shrink:0;height:16px;margin-right:10px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);-webkit-transition:all .3s ease;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before{background:#00b3ff;background:#00b3ff;background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:after{opacity:1;-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:rgba(35,40,47,.1)}.plyr__menu__container .plyr__menu__value{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:auto;margin-right:calc(-7px - -2);margin-right:calc(10px * .7 * -1 - -2);margin-right:calc(var(--plyr-control-spacing,10px) * .7 * -1 - -2);overflow:hidden;padding-left:24.5px;padding-left:calc(10px * .7 * 3.5);padding-left:calc(var(--plyr-control-spacing,10px) * .7 * 3.5);pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:0;border-radius:26px;border-radius:calc(13px * 2);border-radius:calc(var(--plyr-range-thumb-height,13px) * 2);color:#00b3ff;color:#00b3ff;color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));display:block;height:19px;height:calc(3px * 2 + 13px);height:calc(var(--plyr-range-thumb-active-shadow-width,3px) * 2 + var(--plyr-range-thumb-height,13px));margin:0;min-width:0;padding:0;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;background-image:-webkit-gradient(linear,left top,right top,color-stop(0,currentColor),color-stop(0,transparent));background-image:linear-gradient(90deg,currentColor 0,transparent 0);background-image:linear-gradient(to right,currentColor 0,transparent 0);background-image:-webkit-gradient(linear,left top,right top,from(currentColor),to(transparent));background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0));border:0;border-radius:2.5px;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:5px;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease;-webkit-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;-webkit-box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2);box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2);-webkit-box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);-webkit-box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));height:13px;height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;margin-top:calc(13px / 2 * -1 - 5px / 2 * -1);margin-top:calc(var(--plyr-range-thumb-height,13px)/ 2 * -1 - var(--plyr-range-track-height,5px)/ 2 * -1);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:5px;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));height:13px;height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(5px / 2);border-radius:calc(var(--plyr-range-track-height,5px)/ 2);height:5px;height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2));height:13px;height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{outline:3px dotted #00b3ff;outline:#00b3ff dotted 3px;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff))) dotted 3px;outline-offset:2px}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{outline:3px dotted #00b3ff;outline:#00b3ff dotted 3px;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff))) dotted 3px;outline-offset:2px}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{outline:3px dotted #00b3ff;outline:#00b3ff dotted 3px;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b3ff))) dotted 3px;outline-offset:2px}.plyr__poster{background-color:#000;background-color:#000;background-color:var(--plyr-video-background,var(--plyr-video-background,#000));background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr--youtube.plyr--paused.plyr__poster-enabled:not(.plyr--stopped) .plyr__poster{display:none}.plyr__time{font-size:13px;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:'⁄';margin-right:10px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}.plyr__tooltip{background:hsla(0,0%,100%,.9);background:hsla(0,0%,100%,.9);background:var(--plyr-tooltip-background,hsla(0,0%,100%,.9));border-radius:3px;border-radius:3px;border-radius:var(--plyr-tooltip-radius,3px);bottom:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15);-webkit-box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));color:#4a5464;color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;font-size:13px;font-size:var(--plyr-font-size-small,13px);font-weight:400;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:10px;margin-bottom:calc(10px / 2 * 2);margin-bottom:calc(var(--plyr-control-spacing,10px)/ 2 * 2);opacity:0;padding:5px 7.5px;padding:calc(10px / 2) calc(10px / 2 * 1.5);padding:calc(var(--plyr-control-spacing,10px)/ 2) calc(var(--plyr-control-spacing,10px)/ 2 * 1.5);pointer-events:none;position:absolute;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition:opacity .2s ease .1s,-webkit-transform .2s ease .1s;transition:opacity .2s ease .1s,-webkit-transform .2s ease .1s;transition:transform .2s ease .1s,opacity .2s ease .1s;transition:transform .2s ease .1s,opacity .2s ease .1s,-webkit-transform .2s ease .1s;white-space:nowrap;z-index:2}.plyr__tooltip:before{border-left:4px solid transparent;border-left:4px solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:4px solid transparent;border-right:4px solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:4px solid hsla(0,0%,100%,.9);border-top:4px solid hsla(0,0%,100%,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,hsla(0,0%,100%,.9));bottom:-4px;bottom:calc(4px * -1);bottom:calc(var(--plyr-tooltip-arrow-size,4px) * -1);content:'';height:0;left:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;-webkit-transform:translate(-50%) scale(1);transform:translate(-50%) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;-webkit-transform:translateY(10px) scale(.8);transform:translateY(10px) scale(.8);-webkit-transform-origin:0 100%;transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip:before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip:before{left:16px;left:calc(18px / 2 + 10px * .7);left:calc(var(--plyr-control-icon-size,18px)/ 2 + var(--plyr-control-spacing,10px) * .7)}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;-webkit-transform:translateY(10px) scale(.8);transform:translateY(10px) scale(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(18px / 2 + 10px * .7);right:calc(var(--plyr-control-icon-size,18px)/ 2 + var(--plyr-control-spacing,10px) * .7);-webkit-transform:translateX(50%);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{-webkit-transform:translate(0) scale(1);transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(13px * .5);left:calc(var(--plyr-range-thumb-height,13px) * .5);margin-right:13px;margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(13px * -.5);margin-left:calc(var(--plyr-range-thumb-height,13px) * -.5);margin-right:-6.5px;margin-right:calc(13px * -.5);margin-right:calc(var(--plyr-range-thumb-height,13px) * -.5);width:calc(100% + 13px);width:calc(100% + 13px);width:calc(100% + var(--plyr-range-thumb-height,13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:13px;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px));left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc(5px / 2 * -1);margin-top:calc(var(--plyr-range-track-height,5px)/ 2 * -1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,40,47,.6) 25%,transparent 0,transparent 50%,rgba(35,40,47,.6) 0,rgba(35,40,47,.6) 75%,transparent 0,transparent);background-image:linear-gradient(-45deg,rgba(35,40,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,40,47,.6) 50%,rgba(35,40,47,.6) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 25%,transparent 25%,transparent 50%,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 50%,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:hsla(0,0%,100%,.25);background-color:hsla(0,0%,100%,.25);background-color:var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25))}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,200,209,.6);background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6))}.plyr__volume{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:110px;min-width:80px;position:relative;width:20%}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(10px / 2);margin-left:calc(var(--plyr-control-spacing,10px)/ 2);margin-right:5px;margin-right:calc(10px / 2);margin-right:calc(var(--plyr-control-spacing,10px)/ 2);position:relative;z-index:2}.plyr--is-ios .plyr__volume{min-width:0;width:auto}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:10px;padding:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b3ff;background:#00b3ff;background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));color:#fff;color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,200,209,.6);background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,200,209,.6);background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,200,209,.6);background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{-webkit-box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);-webkit-box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);-webkit-box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1));box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--audio .plyr__progress__buffer{color:rgba(193,200,209,.6);color:rgba(193,200,209,.6);color:var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6))}.plyr--video{background:#000;background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{aspect-ratio:16/9}@supports not (aspect-ratio:16/9){.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%;position:relative}}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;-webkit-transform:translateY(-38.28125%);transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.75)));background:linear-gradient(transparent,rgba(0,0,0,.75));background:linear-gradient(transparent,rgba(0,0,0,.75));background:var(--plyr-video-controls-background,linear-gradient(transparent,rgba(0,0,0,.75)));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(10px / 2);padding:calc(var(--plyr-control-spacing,10px)/ 2);padding-top:20px;padding-top:calc(10px * 2);padding-top:calc(var(--plyr-control-spacing,10px) * 2);position:absolute;right:0;-webkit-transition:opacity .4s ease-in-out,-webkit-transform .4s ease-in-out;transition:opacity .4s ease-in-out,-webkit-transform .4s ease-in-out;transition:opacity .4s ease-in-out,transform .4s ease-in-out;transition:opacity .4s ease-in-out,transform .4s ease-in-out,-webkit-transform .4s ease-in-out;z-index:3}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;-webkit-transform:translateY(100%);transform:translateY(100%)}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b3ff;background:#00b3ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));color:#fff;color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:#00b3ff;background:#00b3ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b3ff)));border:0;border-radius:100%;color:#fff;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:15px;padding:calc(10px * 1.5);padding:calc(var(--plyr-control-spacing,10px) * 1.5);position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:.3s;transition:.3s;z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:hsla(0,0%,100%,.25);background-color:hsla(0,0%,100%,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25)))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:hsla(0,0%,100%,.25);background-color:hsla(0,0%,100%,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25)))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:hsla(0,0%,100%,.25);background-color:hsla(0,0%,100%,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25)))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{-webkit-box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);-webkit-box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px hsla(0,0%,100%,.5);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px hsla(0,0%,100%,.5);-webkit-box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5));box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5))}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px hsla(0,0%,100%,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5))}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px 0 0 0 1px rgba(35,40,47,.15) rgba(35,40,47,.2),0 0 0 3px rgba(255,255,255,.5);box-shadow:0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2),0 0 0 3px hsla(0,0%,100%,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 1px rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5))}.plyr--video .plyr__progress__buffer{color:hsla(0,0%,100%,.25);color:hsla(0,0%,100%,.25);color:var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25))}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;bottom:0;display:block;height:100%;left:0;margin:0;position:fixed;right:0;top:0;width:100%;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:hsla(0,0%,100%,.9);background-color:hsla(0,0%,100%,.9);background-color:var(--plyr-tooltip-background,hsla(0,0%,100%,.9));border-radius:3px;bottom:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15);box-shadow:0 1px 2px rgba(0,0,0,.15);-webkit-box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));margin-bottom:10px;margin-bottom:calc(10px / 2 * 2);margin-bottom:calc(var(--plyr-control-spacing,10px)/ 2 * 2);opacity:0;padding:3px;padding:3px;padding:var(--plyr-tooltip-radius,3px);pointer-events:none;position:absolute;-webkit-transform:translateY(10px) scale(.8);transform:translateY(10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition:opacity .2s ease .1s,-webkit-transform .2s ease .1s;transition:opacity .2s ease .1s,-webkit-transform .2s ease .1s;transition:transform .2s ease .1s,opacity .2s ease .1s;transition:transform .2s ease .1s,opacity .2s ease .1s,-webkit-transform .2s ease .1s;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;-webkit-transform:translate(0) scale(1);transform:translate(0) scale(1)}.plyr__preview-thumb:before{border-left:4px solid transparent;border-left:4px solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:4px solid transparent;border-right:4px solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:4px solid hsla(0,0%,100%,.9);border-top:4px solid hsla(0,0%,100%,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,hsla(0,0%,100%,.9));bottom:-4px;bottom:calc(4px * -1);bottom:calc(var(--plyr-tooltip-arrow-size,4px) * -1);content:'';height:0;left:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:2px;border-radius:calc(3px - 1px);border-radius:calc(var(--plyr-tooltip-radius,3px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;border-radius:calc(3px - 1px);border-radius:calc(var(--plyr-tooltip-radius,3px) - 1px);color:#fff;font-size:13px;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px));padding:3px 6px}.plyr__preview-scrubbing{bottom:0;-webkit-filter:blur(1px);filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;-o-object-fit:contain;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{-webkit-transition:none!important;transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}@media (min-width:480px){.plyr__captions{font-size:15px;font-size:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(10px * 2);padding:calc(var(--plyr-control-spacing,10px) * 2)}.plyr--video .plyr__controls{padding:10px;padding:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;padding-top:calc(10px * 3.5);padding-top:calc(var(--plyr-control-spacing,10px) * 3.5)}}@media (min-width:768px){.plyr__captions{font-size:18px;font-size:18px;font-size:var(--plyr-font-size-large,18px)}}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px;font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}.plyr:-ms-fullscreen .plyr__captions{font-size:21px;font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}.plyr:fullscreen .plyr__captions{font-size:21px;font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}.plyr--fullscreen-fallback .plyr__captions{font-size:21px;font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}@media (max-width:767px){.plyr__time+.plyr__time{display:none}} \ No newline at end of file diff --git a/src/resources/pandoc/datadir/_utils.lua b/src/resources/pandoc/datadir/_utils.lua index d66218da5a0..18916d9d944 100644 --- a/src/resources/pandoc/datadir/_utils.lua +++ b/src/resources/pandoc/datadir/_utils.lua @@ -270,7 +270,7 @@ local function as_inlines(v) -- luacov: disable fatal("as_inlines: invalid type " .. t) - return nil + return pandoc.Inlines({}) -- luacov: enable end diff --git a/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/_extension.yml b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/_extension.yml new file mode 100644 index 00000000000..b9d9fd11d27 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/_extension.yml @@ -0,0 +1,8 @@ +title: Lipsum +author: Charles Teague +version: 1.0.0 +quarto-required: ">=99.9.0" +contributes: + shortcodes: + - lipsum.lua + diff --git a/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/lipsum.json b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/lipsum.json new file mode 100644 index 00000000000..22d6de3ee03 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/lipsum.json @@ -0,0 +1,24 @@ +[ + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sagittis posuere ligula sit amet lacinia. Duis dignissim pellentesque magna, rhoncus congue sapien finibus mollis. Ut eu sem laoreet, vehicula ipsum in, convallis erat. Vestibulum magna sem, blandit pulvinar augue sit amet, auctor malesuada sapien. Nullam faucibus leo eget eros hendrerit, non laoreet ipsum lacinia. Curabitur cursus diam elit, non tempus ante volutpat a. Quisque hendrerit blandit purus non fringilla. Integer sit amet elit viverra ante dapibus semper. Vestibulum viverra rutrum enim, at luctus enim posuere eu. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.", + "Nunc ac dignissim magna. Vestibulum vitae egestas elit. Proin feugiat leo quis ante condimentum, eu ornare mauris feugiat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris cursus laoreet ex, dignissim bibendum est posuere iaculis. Suspendisse et maximus elit. In fringilla gravida ornare. Aenean id lectus pulvinar, sagittis felis nec, rutrum risus. Nam vel neque eu arcu blandit fringilla et in quam. Aliquam luctus est sit amet vestibulum eleifend. Phasellus elementum sagittis molestie. Proin tempor lorem arcu, at condimentum purus volutpat eu. Fusce et pellentesque ligula. Pellentesque id tellus at erat luctus fringilla. Suspendisse potenti.", + "Etiam maximus accumsan gravida. Maecenas at nunc dignissim, euismod enim ac, bibendum ipsum. Maecenas vehicula velit in nisl aliquet ultricies. Nam eget massa interdum, maximus arcu vel, pretium erat. Maecenas sit amet tempor purus, vitae aliquet nunc. Vivamus cursus urna velit, eleifend dictum magna laoreet ut. Duis eu erat mollis, blandit magna id, tincidunt ipsum. Integer massa nibh, commodo eu ex vel, venenatis efficitur ligula. Integer convallis lacus elit, maximus eleifend lacus ornare ac. Vestibulum scelerisque viverra urna id lacinia. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean eget enim at diam bibendum tincidunt eu non purus. Nullam id magna ultrices, sodales metus viverra, tempus turpis.", + "Duis ornare ex ac iaculis pretium. Maecenas sagittis odio id erat pharetra, sit amet consectetur quam sollicitudin. Vivamus pharetra quam purus, nec sagittis risus pretium at. Nullam feugiat, turpis ac accumsan interdum, sem tellus blandit neque, id vulputate diam quam semper nisl. Donec sit amet enim at neque porttitor aliquet. Phasellus facilisis nulla eget placerat eleifend. Vestibulum non egestas eros, eget lobortis ipsum. Nulla rutrum massa eget enim aliquam, id porttitor erat luctus. Nunc sagittis quis eros eu sagittis. Pellentesque dictum, erat at pellentesque sollicitudin, justo augue pulvinar metus, quis rutrum est mi nec felis. Vestibulum efficitur mi lorem, at elementum purus tincidunt a. Aliquam finibus enim magna, vitae pellentesque erat faucibus at. Nulla mauris tellus, imperdiet id lobortis et, dignissim condimentum ipsum. Morbi nulla orci, varius at aliquet sed, facilisis id tortor. Donec ut urna nisi.", + "Aenean placerat luctus tortor vitae molestie. Nulla at aliquet nulla. Sed efficitur tellus orci, sed fringilla lectus laoreet eget. Vivamus maximus quam sit amet arcu dignissim, sed accumsan massa ullamcorper. Sed iaculis tincidunt feugiat. Nulla in est at nunc ultricies dictum ut vitae nunc. Aenean convallis vel diam at malesuada. Suspendisse arcu libero, vehicula tempus ultrices a, placerat sit amet tortor. Sed dictum id nulla commodo mattis. Aliquam mollis, nunc eu tristique faucibus, purus lacus tincidunt nulla, ac pretium lorem nunc ut enim. Curabitur eget mattis nisl, vitae sodales augue. Nam felis massa, bibendum sit amet nulla vel, vulputate rutrum lacus. Aenean convallis odio pharetra nulla mattis consequat.", + "Ut ut condimentum augue, nec eleifend nisl. Sed facilisis egestas odio ac pretium. Pellentesque consequat magna sed venenatis sagittis. Vivamus feugiat lobortis magna vitae accumsan. Pellentesque euismod malesuada hendrerit. Ut non mauris non arcu condimentum sodales vitae vitae dolor. Nullam dapibus, velit eget lacinia rutrum, ipsum justo malesuada odio, et lobortis sapien magna vel lacus. Nulla purus neque, hendrerit non malesuada eget, mattis vel erat. Suspendisse potenti.", + "Nullam dapibus cursus dolor sit amet consequat. Nulla facilisi. Curabitur vel nulla non magna lacinia tincidunt. Duis porttitor quam leo, et blandit velit efficitur ut. Etiam auctor tincidunt porttitor. Phasellus sed accumsan mi. Fusce ut erat dui. Suspendisse eu augue eget turpis condimentum finibus eu non lorem. Donec finibus eros eu ante condimentum, sed pharetra sapien sagittis. Phasellus non dolor ac ante mollis auctor nec et sapien. Pellentesque vulputate at nisi eu tincidunt. Vestibulum at dolor aliquam, hendrerit purus eu, eleifend massa. Morbi consectetur eros id tincidunt gravida. Fusce ut enim quis orci hendrerit lacinia sed vitae enim.", + "Nulla eget cursus ipsum. Vivamus porttitor leo diam, sed volutpat lectus facilisis sit amet. Maecenas et pulvinar metus. Ut at dignissim tellus. In in tincidunt elit. Etiam vulputate lobortis arcu, vel faucibus leo lobortis ac. Aliquam erat volutpat. In interdum orci ac est euismod euismod. Nunc eleifend tristique risus, at lacinia odio commodo in. Sed aliquet ligula odio, sed tempor neque ultricies sit amet.", + "Etiam quis tortor luctus, pellentesque ante a, finibus dolor. Phasellus in nibh et magna pulvinar malesuada. Ut nisl ex, sagittis at sollicitudin et, sollicitudin id nunc. In id porta urna. Proin porta dolor dolor, vel dapibus nisi lacinia in. Pellentesque ante mauris, ornare non euismod a, fermentum ut sapien. Proin sed vehicula enim. Aliquam tortor odio, vestibulum vitae odio in, tempor molestie justo. Praesent maximus lacus nec leo maximus blandit.", + "Maecenas turpis velit, ultricies non elementum vel, luctus nec nunc. Nulla a diam interdum, faucibus sapien viverra, finibus metus. Donec non tortor diam. In ut elit aliquet, bibendum sem et, aliquam tortor. Donec congue, sem at rhoncus ultrices, nunc augue cursus erat, quis porttitor mauris libero ut ex. Nullam quis leo urna. Donec faucibus ligula eget pellentesque interdum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean rhoncus interdum erat ut ultricies. Aenean tempus ex non elit suscipit, quis dignissim enim efficitur. Proin laoreet enim massa, vitae laoreet nulla mollis quis.", + "Vestibulum ultrices, tortor at mattis porta, odio nisi rutrum nulla, sit amet tincidunt eros quam facilisis tellus. Fusce eleifend lectus in elementum lacinia. Nam auctor nunc in massa ullamcorper, sit amet auctor ante accumsan. Nam ut varius metus. Curabitur eget tristique leo. Cras finibus euismod erat eget elementum. Integer vel placerat ex. Ut id eros quis lectus lacinia venenatis hendrerit vel ante.", + "Etiam congue quam eget velit convallis, eu sagittis orci vestibulum. Vestibulum at massa turpis. Curabitur ornare ex sed purus vulputate, vitae porta augue rhoncus. Phasellus auctor suscipit purus, vel ultricies nunc. Nunc eleifend nulla ac purus volutpat, id fringilla felis aliquet. Duis vitae porttitor nibh, in rhoncus risus. Vestibulum a est vitae est tristique vehicula. Proin mollis justo id est tempus hendrerit. Praesent suscipit placerat congue. Aliquam eu elit gravida, consequat augue non, ultricies sapien. Nunc ultricies viverra ante, sit amet vehicula ante volutpat id. Etiam tempus purus vitae tellus mollis viverra. Donec at ornare mauris. Aliquam sodales hendrerit ornare. Suspendisse accumsan lacinia sapien, sit amet imperdiet dui molestie ut.", + "Etiam non efficitur urna, quis elementum nisi. Mauris posuere a augue vel gravida. Praesent luctus erat et ex iaculis interdum. Nulla vestibulum quam ac nunc consequat vulputate. Nullam iaculis lobortis sem sit amet fringilla. Aliquam semper, metus ut blandit semper, nulla velit fermentum sapien, fermentum ultrices dolor sapien sed leo. Vestibulum molestie faucibus magna, at feugiat nulla ullamcorper a. Aliquam erat volutpat. Praesent scelerisque magna a justo maximus, sit amet suscipit mauris tempor. Nulla nec dolor eget ipsum pellentesque lobortis a in ipsum. Morbi turpis turpis, fringilla a eleifend maximus, viverra nec neque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.", + "Duis urna urna, pellentesque eu urna ut, malesuada bibendum dolor. Suspendisse potenti. Vivamus ornare, arcu quis molestie ultrices, magna est accumsan augue, auctor vulputate erat quam quis neque. Nullam scelerisque odio vel ultricies facilisis. Ut porta arcu non magna sagittis lacinia. Cras ornare vulputate lectus a tristique. Pellentesque ac arcu congue, rhoncus mi id, dignissim ligula.", + "Praesent ornare dolor turpis, sed tincidunt nisl pretium eget. Curabitur sed iaculis ex, vitae tristique sapien. Quisque nec ex dolor. Quisque ut nisl a libero egestas molestie. Nulla vel porta nulla. Phasellus id pretium arcu. Etiam sed mi pellentesque nibh scelerisque elementum sed at urna. Ut congue molestie nibh, sit amet pretium ligula consectetur eu. Integer consectetur augue justo, at placerat erat posuere at. Ut elementum urna lectus, vitae bibendum neque pulvinar quis. Suspendisse vulputate cursus eros id maximus. Duis pulvinar facilisis massa, et condimentum est viverra congue. Curabitur ornare convallis nisl. Morbi dictum scelerisque turpis quis pellentesque. Etiam lectus risus, luctus lobortis risus ut, rutrum vulputate justo. Nulla facilisi.", + "Proin sodales neque erat, varius cursus diam tincidunt sit amet. Etiam scelerisque fringilla nisl eu venenatis. Donec sem ipsum, scelerisque ac venenatis quis, hendrerit vel mauris. Praesent semper erat sit amet purus condimentum, sit amet auctor mi feugiat. In hac habitasse platea dictumst. Nunc ac mauris in massa feugiat bibendum id in dui. Praesent accumsan urna at lacinia aliquet. Proin ultricies eu est quis pellentesque. In vel lorem at nisl rhoncus cursus eu quis mi. In eu rutrum ante, quis placerat justo. Etiam euismod nibh nibh, sed elementum nunc imperdiet in. Praesent gravida nunc vel odio lacinia, at tempus nisl placerat. Aenean id ipsum sed est sagittis hendrerit non in tortor.", + "In vehicula magna vel scelerisque eleifend. Nunc euismod luctus nisi, ut convallis nisl placerat eget. Etiam ornare, leo faucibus mollis fermentum, lacus diam eleifend augue, non ullamcorper lacus nunc vel dui. Vestibulum porttitor quam elit, fermentum bibendum quam tempor non. Nullam feugiat, mi sit amet mattis placerat, lectus ipsum volutpat lectus, vitae eleifend est augue ac nunc. Quisque ullamcorper neque eu luctus pulvinar. Morbi dictum dignissim turpis, ut aliquet enim rutrum nec. Nulla facilisi. Nullam aliquam malesuada purus in auctor. Nam ac suscipit enim. Integer nec volutpat tellus, quis lobortis felis. Fusce rutrum, sem sed dictum lobortis, mauris magna pellentesque augue, vitae facilisis sem tellus ut mi." +] + + + + + diff --git a/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/lipsum.lua b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/lipsum.lua new file mode 100644 index 00000000000..4e1a729012a --- /dev/null +++ b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/lipsum/lipsum.lua @@ -0,0 +1,85 @@ + + +local lipsum + +-- reads a file +local function read_file(path) + local file = io.open(path, "rb") + if not file then return nil end + local content = file:read "*a" + file:close() + return content +end + +-- read lipsum data +function readLipsum() + if lipsum == nil then + local file = quarto.utils.resolve_path("lipsum.json") + local fileContents = read_file(file) + if fileContents ~= nil then + local json = quarto.json.decode(fileContents) + lipsum = json + else + quarto.log.error("Unable to read lipsum data file.") + lipsum = {} + end + end + return lipsum +end + +local rangePattern = '(%d+)%-(%d+)' +local barePattern = '^(%d+)$' + +return { + ['lipsum'] = function(args, kwargs, meta) + + local paraStart = 1 + local paraEnd = 5 + + if args[1] ~= nil then + -- a range is specified, like 1-5, 2-3, 5-1 + local range = pandoc.utils.stringify(args[1]) + local _,_,startRange,endRange = range:find(rangePattern) + if startRange and endRange then + + local startNumber = tonumber(startRange) + if startNumber ~= nil then + paraStart = startNumber + end + + local endNumber = tonumber(endRange) + if endNumber ~= nil then + paraEnd = endNumber + end + else + -- a number of paragraphs is specified, like 10 + local _,_,bareVal = range:find(barePattern) + if bareVal then + local endNumber = tonumber(bareVal) + if endNumber ~= nil then + paraEnd = endNumber + end + end + end + end + + local paras = readLipsum(); + local outputParas = {} + + local count = paraEnd - paraStart + 1 + if paraStart > paraEnd then + count = paraStart - paraEnd + 1 + end + + for i=1,count do + local paraIdx = i + (paraStart - 1) + if paraStart > paraEnd then + paraIdx = (paraStart + 1) - i + end + local outIdx = ((paraIdx-1)%(#paras-1))+1 + outputParas[i] = pandoc.Para(paras[outIdx]) + end + + return outputParas + end +} diff --git a/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/_extension.yml b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/_extension.yml new file mode 100644 index 00000000000..f22a6d23208 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/_extension.yml @@ -0,0 +1,8 @@ +title: Unsplash +author: Charles Teague +version: 1.0.3 +quarto-required: ">=1.3.0" +contributes: + shortcodes: + - unsplash.lua + diff --git a/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/style.css b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/style.css new file mode 100644 index 00000000000..42f96206447 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/style.css @@ -0,0 +1,25 @@ +.unsplash-container { + overflow: hidden; + margin-bottom: 1em; +} + +.unsplash-container img { + object-fit: cover; + width: 100%; +} + +.unsplash-container.float-right { + float: right; + padding-left: 0.75em; +} + +.unsplash-container.float-left { + float: left; + padding-right: 0.75em; +} + +.unsplash-container.float-center { + float: center; + padding-left: 0.75em; + padding-right: 0.75em; +} \ No newline at end of file diff --git a/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/unsplash.lua b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/unsplash.lua new file mode 100644 index 00000000000..fd87ab22bb4 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/_extensions/dragonstyle/unsplash/unsplash.lua @@ -0,0 +1,193 @@ + +local mimeImgExts = { + ["image/jpeg"]="jpg", + ["image/gif"]="gif", + ["image/vnd.microsoft.icon"]="ico", + ["image/avif"]="avif", + ["image/bmp"]="bmp", + ["image/png"]="png", + ["image/svg+xml"]="svg", + ["image/tiff"]="tif", + ["image/webp"]="webp", +} + +local function file_exists(name) + local f = io.open(name, 'r') + if f ~= nil then + io.close(f) + return true + else + return false + end +end + +local function write_file(path, contents, mode) + pandoc.system.make_directory(pandoc.path.directory(path), true) + mode = mode or "a" + local file = io.open(path, mode) + if file then + file:write(contents) + file:close() + return true + else + return false + end +end + + + + +return { + ['unsplash'] = function(args, kwargs, meta) + + + -- positional == keywords + -- {{< unsplash cat >}} + -- {{< unsplash keywords="cats" height="300" width="300"}} + + -- TODO: use the real api to download a copy of the image using rest + -- TODO: ping the download url + -- TODO: Generate a stable name for the image + -- TODO: Make this a format resource instead of media bag, so images become stable + -- TODO: generate more complete information from REST endpoint to credit author + + local height = nil + local width = nil + local keywords = nil + local classes = nil + local float = nil + + -- the filename + local filename + if args[1] ~= nil then + filename = pandoc.utils.stringify(args[1]) + local stem = pandoc.path.split_extension(pandoc.path.filename(filename)) + keywords = stem + end + + -- height + if kwargs['height'] ~= nil and #kwargs['height'] > 0 then + height = pandoc.utils.stringify(kwargs['height']) + end + + -- width + if kwargs['width'] ~= nil and #kwargs['width'] > 0 then + width = pandoc.utils.stringify(kwargs['width']) + end + + -- keywords + if kwargs['keywords'] ~= nil and #kwargs['keywords'] > 0 then + keywords = pandoc.utils.stringify(kwargs['keywords']) + end + + -- classes + if kwargs['class'] ~= nil and #kwargs['class'] > 0 then + classes = pandoc.utils.stringify(kwargs['class']) + end + + -- classes + if kwargs['float'] ~= nil and #kwargs['float'] > 0 then + float = pandoc.utils.stringify(kwargs['float']) + end + + + -- form the unsplash URL that will be used + local url = "https://source.unsplash.com/random" + if width and height then + url = url .. "/" .. tostring(width) .. '×' .. tostring(height) + end + if keywords ~= nil then + url = url .. '/?' .. keywords + end + + -- deal with the height and width + + local imgContainer = function (imgEl) + + -- HTML formats use a container to implement sizing, so + -- apply classes and so on to that container + if quarto.doc.is_format("html") then + + + quarto.doc.add_html_dependency({ + name = "unsplash-styles", + version = "1.0.0", + stylesheets = {"style.css"} + }) + + local style = "" + if height then + style = style .. 'height: ' .. height .. '; ' + end + if width then + style = style .. 'width: ' .. width .. '; ' + end + + local divAttrRaw = {} + if style ~= "" then + divAttrRaw['style'] = style + end + + local clz = pandoc.List({'unsplash-container'}) + if float then + clz:insert('float-' .. float) + end + + if classes ~= nil then + for token in string.gmatch(classes, "[^%s]+") do + clz:insert(token) + end + end + + local divAttr = pandoc.Attr("", clz, divAttrRaw) + local div = pandoc.Div(imgEl, divAttr) + + return div + + else + + -- Non-HTML formats just return the raw image with + -- any options set on that + + if height then + imgEl.attr.attributes['height'] = height + end + if width then + imgEl.attr.attributes['width'] = width + end + + if classes ~= nil then + for clz in string.gmatch(classes, "[^%s]+") do + imgEl.attr.classes:insert(clz) + end + end + + return imgEl + + end + end + + if filename ~= nil and file_exists(filename) then + return imgContainer(pandoc.Image("", filename)) + elseif filename ~= nil then + -- read the image + local _imgMt, imgContents = pandoc.mediabag.fetch(url) + write_file(filename, imgContents, "wb") + return imgContainer(pandoc.Image("", filename)) + else + -- read the image + local imgMt, imgContents = pandoc.mediabag.fetch(url) + + -- place it in media bag and link to it + if imgContents ~= nil then + local tmpFileName = pandoc.path.filename(os.tmpname()) ..'.' .. mimeImgExts[imgMt] + pandoc.mediabag.insert(tmpFileName, imgMt, imgContents) + return imgContainer(pandoc.Image("", tmpFileName)) + end + end + + + end +} + + diff --git a/tests/docs/smoke-all/lightbox/example.qmd b/tests/docs/smoke-all/lightbox/example.qmd new file mode 100644 index 00000000000..c7b5f553666 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/example.qmd @@ -0,0 +1,128 @@ +--- +title: Example Lightbox Document +lightbox: auto +_quarto: + tests: + html: + ensureHtmlElements: + - + - 'script[src="example_files/libs/quarto-contrib/glightbox/glightbox.min.js' # make sure that lightbox is enabled + - 'a.lightbox' # make sure there is a lightbox image +--- + +## Chilmark + +Here is a simple image with a description. This also overrides the +description position and places it to the left of the image. + +![Beach in Chilmark](images/mv-0.jpg){#foobar description="Chilmark has a reputation as having some of the best beaches on Martha's Vineyard. Chilmark beaches are resident only in the summer, so be sure to have your proof of residency ready if you'd like to visit one of these special places. _credit:_ [Chilmark Beach](https://unsplash.com/photos/VBDJGOMCwps)" desc-position="left"} + +## Elsewhere + +The below demonstrates placing more than one image in a gallery. Note +the usage of the `layout-ncol` which arranges the images on the page +side by date. Adding the `group` attribute to the markdown images places +the images in a gallery grouped together based upon the group name +provided. + +::: {layout="[[1, 1], [1]]"} +![Aquinnah](images/mv-1.jpg){group="elsewhere" +description="The waves break off the coast of Aquinnah on a beautiful summer day."} + +![Oak Bluffs](images/mv-3.jpg){group="elsewhere" +description="Oak Bluffs is famous for its Gingerbread cottages, busy town center, and party like atmosphere."} + +![Vineyard lighthouse](images/mv-2.jpg){group="elsewhere" +description="The Edgartown Lighthouse is a short walk from downtown and has beautiful views over the entrance to Edgartown Harbor."} +::: + +## West Tisbury + +[![More about the ferry.](images/ferry.png)](https://www.steamshipauthority.com) + + +## With computation code chunks + +Options for lightbox can be passed using chunk options. + +```{r} +#| fig-cap: Simple demo R plot +#| lightbox: +#| group: r-graph +#| description: This is 1 to 10 plot +plot(1:10, rnorm(10)) +``` + +```{r} +#| fig-cap: Plot about cars data +#| lightbox: +#| group: r-graph +#| description: We see our cars data above +plot(cars) +``` + +It is possible to create several plots, and group them in a lightbox gallery. Use list in YAML for options when you have several plots, on per plot. +```{r} +#| fig-cap: +#| - Caption for first plot +#| - Caption for second plot +#| lightbox: +#| group: cars +#| description: +#| - This is the decription for first graph +#| - This is the decription for second graph +plot(mtcars) +plot(cars) +``` + +When `lightbox: auto` in main YAML config, you can opt-out lightbox on a plot by setting `lightbox: false` + +```{r} +#| fig-cap: mtcars +#| lightbox: false +plot(mtcars) +``` + +## Cross Referenceable Elements + +```{r} +#| label: fig-iris +#| fig-cap: This is a figure related to the iris data set which is so cool. +plot(iris) +``` + + +```{r} +#| label: fig-plots +#| fig-cap: | +#| The below demonstrates placing more than one image in a gallery. Note +#| the usage of the `layout-ncol` which arranges the images on the page +#| side by date. Adding the `group` attribute to the markdown images places +#| the images in a gallery grouped together based upon the group name +#| provided. +#| fig-subcap: +#| - "Clowning Fools Up In Here: This chart shows me clowning on fools up in this piece. It's embarrassing!" +#| - "A Graph of Cool Stuff: This chart shows some cool things, most frequently in the form of a visualization which makes a pretty strong point." +#| layout-ncol: 2 +plot(ToothGrowth) +plot(PlantGrowth) +``` + +See @fig-plots for examples. In particular, @fig-plots-2. + +## Inline Images Are Ignored + +In the case of automatic lightboxing, inline images are ignored. For example this image ![So cool](images/cool.png){width=30} will not be lightboxed since this document uses automatic lightbox mode. + +You can still explicitly call for lightboxing by using the explicit class, like ![That's a chunky!](images/chunky.jpg){.lightbox width=30} since it includes an `explicit` lightbox class. + +## Credits + +The images in this example were used under the [Unsplash +license](https://unsplash.com/license), view originals below: + +- [Chilmark Beach](https://unsplash.com/photos/VBDJGOMCwps) +- [Aquinnah](https://unsplash.com/photos/2iQnDPLIXwU) +- [Gingerbread House](https://unsplash.com/photos/HQEtvlNzUyA) +- [Edgartown Light](https://unsplash.com/photos/f59MyOfLpi8) +- [Edgartown Sailboat](https://unsplash.com/photos/IiLiz7XpQpI) \ No newline at end of file diff --git a/tests/docs/smoke-all/lightbox/images/chunky.jpg b/tests/docs/smoke-all/lightbox/images/chunky.jpg new file mode 100644 index 00000000000..5ac376160ee Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/chunky.jpg differ diff --git a/tests/docs/smoke-all/lightbox/images/cool.png b/tests/docs/smoke-all/lightbox/images/cool.png new file mode 100644 index 00000000000..d2e75c00299 Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/cool.png differ diff --git a/tests/docs/smoke-all/lightbox/images/ferry.png b/tests/docs/smoke-all/lightbox/images/ferry.png new file mode 100644 index 00000000000..850b1d8eb52 Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/ferry.png differ diff --git a/tests/docs/smoke-all/lightbox/images/mv-0.jpg b/tests/docs/smoke-all/lightbox/images/mv-0.jpg new file mode 100644 index 00000000000..17e98b0ecd1 Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/mv-0.jpg differ diff --git a/tests/docs/smoke-all/lightbox/images/mv-1.jpg b/tests/docs/smoke-all/lightbox/images/mv-1.jpg new file mode 100644 index 00000000000..00fa62fce46 Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/mv-1.jpg differ diff --git a/tests/docs/smoke-all/lightbox/images/mv-2.jpg b/tests/docs/smoke-all/lightbox/images/mv-2.jpg new file mode 100644 index 00000000000..91ec8b0d8e0 Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/mv-2.jpg differ diff --git a/tests/docs/smoke-all/lightbox/images/mv-3.jpg b/tests/docs/smoke-all/lightbox/images/mv-3.jpg new file mode 100644 index 00000000000..aab5b91a680 Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/mv-3.jpg differ diff --git a/tests/docs/smoke-all/lightbox/images/mv-4.jpg b/tests/docs/smoke-all/lightbox/images/mv-4.jpg new file mode 100644 index 00000000000..ffbc5de5cbc Binary files /dev/null and b/tests/docs/smoke-all/lightbox/images/mv-4.jpg differ diff --git a/tests/docs/smoke-all/lightbox/lightbox-explicit.qmd b/tests/docs/smoke-all/lightbox/lightbox-explicit.qmd new file mode 100644 index 00000000000..b6c04dad5f1 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/lightbox-explicit.qmd @@ -0,0 +1,130 @@ +--- +title: Example Lightbox Document +format: + html: + theme: darkly +_quarto: + tests: + html: + ensureHtmlElements: + - + - 'script[src="lightbox-explicit_files/libs/quarto-contrib/glightbox/glightbox.min.js' # make sure that lightbox is enabled + - 'a.lightbox' # make sure there is a lightbox image +--- + +## Chilmark + +Here is a simple image with a description. This also overrides the +description position and places it to the left of the image. + +![Beach in Chilmark](images/mv-0.jpg){#foobar description="Chilmark has a reputation as having some of the best beaches on Martha's Vineyard. Chilmark beaches are resident only in the summer, so be sure to have your proof of residency ready if you'd like to visit one of these special places. _credit:_ [Chilmark Beach](https://unsplash.com/photos/VBDJGOMCwps)" desc-position="left"} + +## Elsewhere + +The below demonstrates placing more than one image in a gallery. Note +the usage of the `layout-ncol` which arranges the images on the page +side by date. Adding the `group` attribute to the markdown images places +the images in a gallery grouped together based upon the group name +provided. + +::: {layout="[[1, 1], [1]]"} +![Aquinnah](images/mv-1.jpg){group="elsewhere" +description="The waves break off the coast of Aquinnah on a beautiful summer day."} + +![Oak Bluffs](images/mv-3.jpg){group="elsewhere" +description="Oak Bluffs is famous for its Gingerbread cottages, busy town center, and party like atmosphere."} + +![Vineyard lighthouse](images/mv-2.jpg){group="elsewhere" +description="The Edgartown Lighthouse is a short walk from downtown and has beautiful views over the entrance to Edgartown Harbor."} +::: + +## West Tisbury + +[![More about the ferry.](images/ferry.png)](https://www.steamshipauthority.com) + + +## With computation code chunks + +Options for lightbox can be passed using chunk options. + +```{r} +#| fig-cap: Simple demo R plot +#| lightbox: +#| group: r-graph +#| description: This is 1 to 10 plot +plot(1:10, rnorm(10)) +``` + +```{r} +#| fig-cap: Plot about cars data +#| lightbox: +#| group: r-graph +#| description: We see our cars data above +plot(cars) +``` + +It is possible to create several plots, and group them in a lightbox gallery. Use list in YAML for options when you have several plots, on per plot. +```{r} +#| fig-cap: +#| - Caption for first plot +#| - Caption for second plot +#| lightbox: +#| group: cars +#| description: +#| - This is the decription for first graph +#| - This is the decription for second graph +plot(mtcars) +plot(cars) +``` + +When `lightbox: auto` in main YAML config, you can opt-out lightbox on a plot by setting `lightbox: false` + +```{r} +#| fig-cap: mtcars +#| lightbox: false +plot(mtcars) +``` + +## Cross Referenceable Elements + +```{r} +#| label: fig-iris +#| fig-cap: This is a figure related to the iris data set which is so cool. +plot(iris) +``` + + +```{r} +#| label: fig-plots +#| fig-cap: | +#| The below demonstrates placing more than one image in a gallery. Note +#| the usage of the `layout-ncol` which arranges the images on the page +#| side by date. Adding the `group` attribute to the markdown images places +#| the images in a gallery grouped together based upon the group name +#| provided. +#| fig-subcap: +#| - "Clowning Fools Up In Here: This chart shows me clowning on fools up in this piece. It's embarrassing!" +#| - "A Graph of Cool Stuff: This chart shows some cool things, most frequently in the form of a visualization which makes a pretty strong point." +#| layout-ncol: 2 +plot(ToothGrowth) +plot(PlantGrowth) +``` + +See @fig-plots for examples. In particular, @fig-plots-2. + +## Inline Images Are Ignored + +In the case of automatic lightboxing, inline images are ignored. For example this image ![So cool](images/cool.png){width=30} will not be lightboxed since this document uses automatic lightbox mode. + +You can still explicitly call for lightboxing by using the explicit class, like ![That's a chunky!](images/chunky.jpg){.lightbox width=30} since it includes an `explicit` lightbox class. + +## Credits + +The images in this example were used under the [Unsplash +license](https://unsplash.com/license), view originals below: + +- [Chilmark Beach](https://unsplash.com/photos/VBDJGOMCwps) +- [Aquinnah](https://unsplash.com/photos/2iQnDPLIXwU) +- [Gingerbread House](https://unsplash.com/photos/HQEtvlNzUyA) +- [Edgartown Light](https://unsplash.com/photos/f59MyOfLpi8) +- [Edgartown Sailboat](https://unsplash.com/photos/IiLiz7XpQpI) \ No newline at end of file diff --git a/tests/docs/smoke-all/lightbox/lightbox-off.qmd b/tests/docs/smoke-all/lightbox/lightbox-off.qmd new file mode 100644 index 00000000000..6d73d54d87a --- /dev/null +++ b/tests/docs/smoke-all/lightbox/lightbox-off.qmd @@ -0,0 +1,129 @@ +--- +title: Example Lightbox Document +lightbox: false +_quarto: + tests: + html: + ensureHtmlElements: + - [] + - + - 'script[src="lightbox-off_files/libs/quarto-contrib/glightbox/glightbox.min.js' # make sure that lightbox is enabled + - 'a.lightbox' # make sure there is no lightbox image +--- + +## Chilmark + +Here is a simple image with a description. This also overrides the +description position and places it to the left of the image. + +![Beach in Chilmark](images/mv-0.jpg){#foobar description="Chilmark has a reputation as having some of the best beaches on Martha's Vineyard. Chilmark beaches are resident only in the summer, so be sure to have your proof of residency ready if you'd like to visit one of these special places. _credit:_ [Chilmark Beach](https://unsplash.com/photos/VBDJGOMCwps)" desc-position="left"} + +## Elsewhere + +The below demonstrates placing more than one image in a gallery. Note +the usage of the `layout-ncol` which arranges the images on the page +side by date. Adding the `group` attribute to the markdown images places +the images in a gallery grouped together based upon the group name +provided. + +::: {layout="[[1, 1], [1]]"} +![Aquinnah](images/mv-1.jpg){group="elsewhere" +description="The waves break off the coast of Aquinnah on a beautiful summer day."} + +![Oak Bluffs](images/mv-3.jpg){group="elsewhere" +description="Oak Bluffs is famous for its Gingerbread cottages, busy town center, and party like atmosphere."} + +![Vineyard lighthouse](images/mv-2.jpg){group="elsewhere" +description="The Edgartown Lighthouse is a short walk from downtown and has beautiful views over the entrance to Edgartown Harbor."} +::: + +## West Tisbury + +[![More about the ferry.](images/ferry.png)](https://www.steamshipauthority.com) + + +## With computation code chunks + +Options for lightbox can be passed using chunk options. + +```{r} +#| fig-cap: Simple demo R plot +#| lightbox: +#| group: r-graph +#| description: This is 1 to 10 plot +plot(1:10, rnorm(10)) +``` + +```{r} +#| fig-cap: Plot about cars data +#| lightbox: +#| group: r-graph +#| description: We see our cars data above +plot(cars) +``` + +It is possible to create several plots, and group them in a lightbox gallery. Use list in YAML for options when you have several plots, on per plot. +```{r} +#| fig-cap: +#| - Caption for first plot +#| - Caption for second plot +#| lightbox: +#| group: cars +#| description: +#| - This is the decription for first graph +#| - This is the decription for second graph +plot(mtcars) +plot(cars) +``` + +When `lightbox: auto` in main YAML config, you can opt-out lightbox on a plot by setting `lightbox: false` + +```{r} +#| fig-cap: mtcars +#| lightbox: false +plot(mtcars) +``` + +## Cross Referenceable Elements + +```{r} +#| label: fig-iris +#| fig-cap: This is a figure related to the iris data set which is so cool. +plot(iris) +``` + + +```{r} +#| label: fig-plots +#| fig-cap: | +#| The below demonstrates placing more than one image in a gallery. Note +#| the usage of the `layout-ncol` which arranges the images on the page +#| side by date. Adding the `group` attribute to the markdown images places +#| the images in a gallery grouped together based upon the group name +#| provided. +#| fig-subcap: +#| - "Clowning Fools Up In Here: This chart shows me clowning on fools up in this piece. It's embarrassing!" +#| - "A Graph of Cool Stuff: This chart shows some cool things, most frequently in the form of a visualization which makes a pretty strong point." +#| layout-ncol: 2 +plot(ToothGrowth) +plot(PlantGrowth) +``` + +See @fig-plots for examples. In particular, @fig-plots-2. + +## Inline Images Are Ignored + +In the case of automatic lightboxing, inline images are ignored. For example this image ![So cool](images/cool.png){width=30} will not be lightboxed since this document uses automatic lightbox mode. + +You can still explicitly call for lightboxing by using the explicit class, like ![That's a chunky!](images/chunky.jpg){.lightbox width=30} since it includes an `explicit` lightbox class. + +## Credits + +The images in this example were used under the [Unsplash +license](https://unsplash.com/license), view originals below: + +- [Chilmark Beach](https://unsplash.com/photos/VBDJGOMCwps) +- [Aquinnah](https://unsplash.com/photos/2iQnDPLIXwU) +- [Gingerbread House](https://unsplash.com/photos/HQEtvlNzUyA) +- [Edgartown Light](https://unsplash.com/photos/f59MyOfLpi8) +- [Edgartown Sailboat](https://unsplash.com/photos/IiLiz7XpQpI) \ No newline at end of file diff --git a/tests/docs/smoke-all/lightbox/pandoc-figure.qmd b/tests/docs/smoke-all/lightbox/pandoc-figure.qmd new file mode 100644 index 00000000000..15823c8cebf --- /dev/null +++ b/tests/docs/smoke-all/lightbox/pandoc-figure.qmd @@ -0,0 +1,13 @@ +--- +title: Simple Lightbox Example +lightbox: true +_quarto: + tests: + html: + ensureHtmlElements: + - + - 'script[src="pandoc-figure_files/libs/quarto-contrib/glightbox/glightbox.min.js' # make sure that lightbox is enabled + - 'a.lightbox' # make sure there is a lightbox image +--- + +![A Lovely Image](images/mv-0.jpg) diff --git a/tests/docs/smoke-all/lightbox/plot-layout.qmd b/tests/docs/smoke-all/lightbox/plot-layout.qmd new file mode 100644 index 00000000000..bd4d8902463 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/plot-layout.qmd @@ -0,0 +1,39 @@ +--- +title: Example Lightbox Document +format: + html: + theme: litera +lightbox: true +echo: false +_quarto: + tests: + html: + ensureHtmlElements: + - + - 'script[src="plot-layout_files/libs/quarto-contrib/glightbox/glightbox.min.js' # make sure that lightbox is enabled + - 'a.lightbox' # make sure there is a lightbox image + ensureFileRegexMatches: + - ['data-description="Figure 1 \(a\)', 'data-description="Figure 1 \(b\)'] # make sure the caption contains the sub figure prefix +--- + +## Sample Plot Layout + +{{< lipsum 1 >}} + +```{r} +#| label: fig-plots +#| fig-cap: | +#| The below demonstrates placing more than one image in a gallery. Note +#| the usage of the `layout-ncol` which arranges the images on the page +#| side by date. Adding the `group` attribute to the markdown images places +#| the images in a gallery grouped together based upon the group name +#| provided. +#| fig-subcap: +#| - "Clowning Fools Up In Here: This chart shows me clowning on fools up in this piece. It's embarrassing!" +#| - "A Graph of Cool Stuff: This chart shows some cool things, most frequently in the form of a visualization which makes a pretty strong point." +#| layout-ncol: 2 +plot(ToothGrowth) +plot(PlantGrowth) +``` + +See @fig-plots-1 \ No newline at end of file diff --git a/tests/docs/smoke-all/lightbox/plot.qmd b/tests/docs/smoke-all/lightbox/plot.qmd new file mode 100644 index 00000000000..503889d6803 --- /dev/null +++ b/tests/docs/smoke-all/lightbox/plot.qmd @@ -0,0 +1,32 @@ +--- +title: Example Lightbox Document +format: + html: + theme: lux +lightbox: true +echo: false +_quarto: + tests: + html: + ensureHtmlElements: + - + - 'script[src="plot_files/libs/quarto-contrib/glightbox/glightbox.min.js' # make sure that lightbox is enabled + - 'a.lightbox' # make sure there is a lightbox image + ensureFileRegexMatches: + - ['data-description="Figure 1'] # make sure the caption contains the figure prefix +--- + +## Sample Single Plot + +{{< lipsum 1 >}} + +```{r} +#| label: fig-single +#| fig-cap: | +#| What is going on? This is a single chart that shows some stuff about +#| eye color and a variety of other things that are very cool and useful +#| especially for learning things. +plot(iris) +``` + +See @fig-single.