UNPKG

@visitscotland/component-library

Version:
1,753 lines 1.39 MB
var gm = Object.defineProperty; var _m = (e, n, t) => n in e ? gm(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t; var sn = (e, n, t) => _m(e, typeof n != "symbol" ? n + "" : n, t); import { openBlock, createElementBlock, renderSlot, mergeProps, ref as ref$1, resolveComponent, createBlock, withKeys, withCtx, normalizeClass, createCommentVNode, createElementVNode, resolveDynamicComponent, inject, createVNode, normalizeStyle, withDirectives, vShow, normalizeProps, guardReactiveProps, toDisplayString, onMounted, onUnmounted, createTextVNode, unref, Fragment, renderList, resolveDirective, withModifiers, createSlots, getCurrentInstance, defineComponent, computed as computed$1, watch, reactive, provide, onBeforeMount, isRef, onBeforeUnmount, isReactive, isReadonly, nextTick, isVNode, toRef, markRaw, createStaticVNode, h, mergeModels, useModel, toHandlers, vModelText } from "vue"; import { BButton, BCard, BCardHeader, BCardBody, BCol, BContainer, BBadge, BBreadcrumb, BBreadcrumbItem, BFormGroup, BFormRadioGroup, BFormRadio, BImg, vBTooltip, BProgress, BProgressBar, BFormInput, BFormCheckbox, BDropdown, BDropdownItem, BFormSelect, BFormTextarea, BModal, BTableSimple, BThead, BTh, BTbody, BTr, BTd, BTfoot, BPopover, BTabs, BTab } from "bootstrap-vue-next"; import { defineStore, mapState } from "pinia"; const _export_sfc = (e, n) => { const t = e.__vccOpts || e; for (const [a, r] of n) t[a] = r; return t; }, _sfc_main$2t = { name: "VsAccordion", status: "prototype", release: "0.0.1", /** * Provides breakPoint prop to be injected to child component AccordionItem */ provide() { return { breakPoint: this.breakPoint }; }, props: { /** * If this is provided, the accordion expands above * the specified viewport `xs, sm, md, lg, xl, xxl` */ breakPoint: { type: String, default: null, validator: (e) => e.match(/(xs|sm|md|lg|xl|xxl)/) } } }, _hoisted_1$1Q = { class: "vs-accordion", "data-test": "vs-accordion" }; function _sfc_render$2f(e, n, t, a, r, o) { return openBlock(), createElementBlock("div", _hoisted_1$1Q, [ renderSlot(e.$slots, "default") ]); } const VsAccordion = /* @__PURE__ */ _export_sfc(_sfc_main$2t, [["render", _sfc_render$2f]]), _sfc_main$2s = { name: "VsIcon", status: "prototype", release: "0.1.0", props: { /** * The name of the icon to display, which will be the name of the icon file */ name: { type: String, required: !0, default: "search" }, /** * The color of the icon. * `default|primary|secondary|inverse|disabled|tertiary|danger|warning` */ variant: { type: String, default: "default", validator: (e) => e.match( /(default|primary|secondary|inverse|disabled|tertiary|danger|warning)/ ) }, /** * Accepts a colour (hex code or colour name) for the icon, if this is * set it will override the given variant. This should be used for individual * exceptions but if one is being used regularly it should likely be a variant * instead. */ customColour: { type: String, default: null }, /** * The orientation of the icon * `up|down|left|right` * @deprecated use the correct icon from FA instead */ orientation: { type: String, default: null, validator: (e) => e.match( /(up|down|left|right)/ ) }, /** * Size of icon * `xxs|xs|sm|md|lg|xl` */ size: { type: String, default: "md", validator: (e) => e.match(/(xxs|xs|sm|md|lg|xl)/) }, /** * Changes the size of the icon at sm and xs viewports * `xxs|xs|sm|md|lg|xl` */ smallSize: { type: String, default: null, validator: (e) => e.match(/(xxs|xs|sm|md|lg|xl)/) }, /** * Uses FontAwesome Duotone */ duotone: { type: Boolean, default: !1 } }, data() { return { /* * Some DMS feed categories are different from the name of the icon file. This lookup marries up discrepencies */ iconLookup: [ { key: "accesstoliet", value: "accessible-toilet" }, { key: "accessparkdrop", value: "facility-accessparkdrop" }, { key: "acco", value: "product-accommodation" }, { key: "acti", value: "product-activities" }, { key: "attr", value: "product-attractions" }, { key: "audioloop", value: "facility-audioloop" }, { key: "cafereston", value: "cafe" }, { key: "cate", value: "product-food-and-drink" }, { key: "cities", value: "city" }, { key: "cycling", value: "cycle" }, { key: "dsblaccess", value: "facility-dsblaccess" }, { key: "wheelchairaccess", value: "facility-dsblaccess" }, { key: "even", value: "product-events" }, { key: "familyev", value: "family" }, { key: "filmev", value: "film-tv" }, { key: "hottub", value: "hot-tub" }, { key: "parking", value: "facility-parking" }, { key: "petswelcom", value: "facility-petswelcom" }, { key: "wifi", value: "facility-wifi" }, { key: "public", value: "public-transport" }, { key: "pubtranrte", value: "public-transport" }, { key: "reta", value: "product-shopping" }, { key: "spahealth", value: "wellness" }, { key: "vege", value: "vegan-vegetarian" }, { key: "walking", value: "walk" }, { key: "boat", value: "boat" }, { key: "transport", value: "transport" }, { key: "brekavail", value: "breakfast-available" }, { key: "wetroom", value: "level-entry-shower" } ] }; }, computed: { icon() { return this.formattedName; }, formattedName() { const e = this.iconLookup.find(({ key: n }) => n === this.name); return e !== void 0 ? e.value : this.name; } } }; function _sfc_render$2e(e, n, t, a, r, o) { return openBlock(), createElementBlock("i", mergeProps({ class: { fak: !0, [`fa-${o.icon}`]: !0, "vs-icon": !0, [`vs-icon--size-${t.size}`]: !0, [`vs-icon--sm-size-${t.smallSize}`]: t.smallSize, [`vs-icon--${o.formattedName}`]: !0, ["icon--" + t.orientation]: t.orientation, [`vs-icon--variant-${t.variant}`]: t.variant, "fa-duotone": t.duotone }, style: [t.customColour ? { color: t.customColour } : {}] }, e.$attrs, { "data-test": "vs-icon" }), null, 16); } const VsIcon = /* @__PURE__ */ _export_sfc(_sfc_main$2s, [["render", _sfc_render$2e]]), useDataLayerStore = defineStore("datalayer", () => { const e = ref$1(""), n = ref$1(!1), t = ref$1({}); function a(c) { n.value = c; } function r(c) { e.value = c; } function o(c) { t.value[c.key] = c.value; } function l(c) { return t.value[c]; } return { pageUrl: e, tagsTestRun: n, GTMData: t, getValueFromKey: l, setTestRun: a, setPageUrl: r, processPayload: o }; }), checkVendorLibrary = (e, n, t = 0) => { window.setTimeout(() => { window[e] ? n(window[e]) : checkVendorLibrary(e, n, 500); }, t); }, products = [ { key: "accommodation", text: "Accommodation", value: "acco" }, { key: "eventsAndFestivals", text: "Events & Festivals", value: "even" }, { key: "foodAndDrink", text: "Food & Drink", value: "cate" }, { key: "thingsToDo", text: "Things to do", value: "acti,attr,reta" }, { key: "tours", text: "Tours", value: "tour" } ], paths = { acco: "accommodation", "acti,attr,reta": "see-do", cate: "food-drink", even: "events", tour: "tours" }, monthsEnglish = [ { label: "January", value: "january" }, { label: "February", value: "february" }, { label: "March", value: "march" }, { label: "April", value: "april" }, { label: "May", value: "may" }, { label: "June", value: "june" }, { label: "July", value: "july" }, { label: "August", value: "august" }, { label: "September", value: "september" }, { label: "October", value: "october" }, { label: "November", value: "november" }, { label: "December", value: "december" } ], dmoUrls = [ "visitabdn.com", "wildaboutargyll.co.uk", "ayrshireandarran.com", "visitarran.com", "dundee.com/visit", "visitangus.com", "edinburgh.org", "visiteastlothian.org", "visitwestlothian.co.uk", "visitmidlothian.co.uk", "welcometofife.com", "visitglasgow.com", "visitlanarkshire.com", "discoverinverclyde.com", "paisley.is", "west-dunbarton.gov.uk/leisure-parks-events/tourism-and-visitor-attractions", "eastdunbarton.gov.uk/residents/tourism-visited-exploreed/places-visit-east-dunbartonshire", "visitinvernesslochness.com", "nairnscotland.co.uk", "outdoorcapital.co.uk", "westhighlandpeninsulas.com/uk", "roadtotheisles.com", "discoverglencoe.scot", "visitcairngorms.com", "badenochstorylands.com", "grantownonline.com", "northcoast500.com", "venture-north.co.uk", "discoverassynt.co.uk", "nwhgeopark.com", "visitwester-ross.com", "wrb.scot", "visitdornoch.com", "easterrosspeninsula.com", "black-isle.info", "myskyetime.com", "morayspeyside.com", "yourstirling.com", "visitfalkirk.com", "discoverclackmannanshire.com", "lochlomond-trossachs.org", "accessforthvalley.com", "orkney.com", "visitouterhebrides.co.uk", "highlandperthshire.org", "perthcityandtowns.co.uk", "scotlandstartshere.com", "shetland.org/visit", "peoplemakeglasgow.com" ], signpostedPartners = [ "findbusinesssupport.gov.scot", "www.bgateway.com", "www.creativescotland.com", "www.hie.co.uk", "www.scottish-enterprise.com", "www.southofscotlandenterprise.com", "www.skillsdevelopmentscotland.co.uk", "www.slaed.org.uk" ], pageViewTemplate = [ "event", "site_language", "content_language", "content_category", "content_page_type", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "content_region", "content_city", "provider_search_region", "provider_search_category", "provider_search_facilities", "provider_search_grading", "provider_search_awards", "provider_search_rooms", "provider_search_min_price", "provider_search_max_price", "provider_category", "provider_category_level_1", "provider_category_level_2", "provider_name", "provider_ID", "star_grading", "provider_region", "provider_city", "provider_has_website", "page_with_booking_link", "provider_has_availability", "availability_search_start_date", "availability_search_end_date", "availability_search_no_of_nights", "availability_search_no_of_adults", "availability_search_no_of_children", "availability_search_no_of_rooms", "availability_search_price_range", "hit_timestamp", "tag_name", "meta_data" ], productSearchTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "psr_search_type", "psr_search_location", "page_path" ], menuNavigationTemplate = [ "event", "site_language", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "click_text", "click_URL" ], shareTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "click_text", "click_URL" ], socialMediaExternalLinkTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "click_URL", "location_on_page" ], homePageLogoClickTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "click_URL" ], videoTrackingTemplate = [ "event", "language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "video_status", "video_title", "video_percent" ], externalLinkTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "click_text", "click_URL", "dmo_referral", "partner_referral", "event_listing" ], internalLinkTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "click_text", "click_URL" ], errorTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "error_type", "error_details", "page_path" ], formsTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "page_path", "form_status" ], carbonQuestionTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "question_number", "answer" ], carbonCompleteTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "total_emissions", "total_per_day", "travel_percent", "accommodation_percent", "food_percent" ], cmsReferralTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "tag_name", "meta_data", "referral_location", "attraction_name", "dmo_referral" ], accordionOpenTemplate = [ "event", "site_language", "page_category_1", "page_category_2", "page_category_3", "page_category_4", "page_category_5", "page_category_6", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "accordion_text" ], tabClickTemplate = [ "event", "event_tab", "site_language", "user_country_setting", "hit_timestamp", "tag_name", "meta_data", "event_listing" ], dataLayerMixin = { computed: { // Retrieving page url from the page store created by: // dataLayer.store.js (Central Store) // TagManagerWrapper.vue (Global component that reads and updates the store) ...mapState(useDataLayerStore, { pageUrl(e) { return e.pageUrl; } }) }, data() { return { dataLayerLoadConfirmed: !1, dataLayerStore: null }; }, mounted() { this.dataLayerStore = useDataLayerStore(); }, methods: { // This function matches values passed as an object // To the template listed on data-layer-template.js // And return any value not matched as undefined templateFiller(e, n) { const t = {}; return e.forEach((a) => { t[a] = "", t[a] = n[a] || void 0, a === "language" && t[a] === void 0 && (t[a] = n.site_language || void 0); }), t; }, createDataLayerObject(e, n, t) { let a, r, o, l, c, d, p = "", f = "False"; switch (n && n.target && (n.target.text ? d = n.target.text.trim() : d = n.target.innerText, n.target.closest('[data-event-listing="True"]') && (f = "True")), e) { case "productSearchDataEvent": a = "psr_search", r = "VS - GA4 - Event - PSR Search", o = { event: a, psr_search_type: n.searchType, psr_search_location: n.searchLocation, page_path: t, tag_name: r }, l = this.compileFullTemplate(o), c = this.templateFiller(productSearchTemplate, l); break; case "pageViewTemplateDataEvent": a = "page_view", o = { event: a }, l = this.compileFullTemplate(o), c = this.templateFiller(pageViewTemplate, l); break; case "menuNavigationDataEvent": a = "menu_navigation", o = { event: a, click_text: n.target.text.trim(), click_URL: t }, l = this.compileFullTemplate(o), c = this.templateFiller(menuNavigationTemplate, l); break; case "socialMediaExternalLinkDataEvent": a = "social_media_footer", r = "VS - GA - Social Media External Link", o = { event: a, tag_name: r, click_URL: t }, l = this.compileFullTemplate(o), c = this.templateFiller(socialMediaExternalLinkTemplate, l); break; case "homePageLogoClickDataEvent": a = "homepage_logo_click", r = "VS - GA - Homepage Logo Click", o = { event: a, tag_name: r }, l = this.compileFullTemplate(o), c = this.templateFiller(homePageLogoClickTemplate, l); break; case "externalLinkDataEvent": a = "external_link", r = "VS - GA - External Link", o = { event: a, tag_name: r, click_text: d, click_URL: t, partner_referral: "False", event_listing: f }; for (let m = 0; m < signpostedPartners.length; m++) t.includes(signpostedPartners[m]) && (o.partner_referral = "True"); l = this.compileFullTemplate(o), c = this.templateFiller(externalLinkTemplate, l); break; case "internalLinkDataEvent": a = "internal_link", r = "VS - GA - Internal Link", o = { event: a, tag_name: r, click_text: d, click_URL: t }, l = this.compileFullTemplate(o), c = this.templateFiller(internalLinkTemplate, l); break; case "formsDataEvent": a = "forms", r = "VS - GA - Forms", o = { event: a, tag_name: r, form_status: "form_submitted" }, l = this.compileFullTemplate(o), c = this.templateFiller(formsTemplate, l); break; case "errorDataEvent": a = "errors", r = "VS - GA - Errors", o = { event: a, tag_name: r, error_type: n.error_type, error_details: n.error_details }, l = this.compileFullTemplate(o), c = this.templateFiller(errorTemplate, l); break; case "videoTrackingDataEvent": a = "video_tracking", r = "VS - GA - Video Tracking", o = { event: a, tag_name: r, video_status: n.status, video_title: n.title || "", video_percent: n.percent || 0 }, l = this.compileFullTemplate(o), c = this.templateFiller(videoTrackingTemplate, l); break; case "socialShareDataEvent": a = "share", r = "VS - GA - Share", typeof n.target.text < "u" && (p = n.target.text.trim()), o = { event: a, tag_name: r, click_text: p, click_URL: t }, l = this.compileFullTemplate(o), c = this.templateFiller(shareTemplate, l); break; case "carbonQuestionEvent": a = "carbonCalculatorQuestion", r = "VS - GA - Carbon Calculator Question Answered", o = { event: a, tag_name: r, question_number: n.questionNumber, answer: n.answer }, l = this.compileFullTemplate(o), c = this.templateFiller(carbonQuestionTemplate, l); break; case "carbonCompleteEvent": a = "carbonCalculatorComplete", r = "VS - GA - Carbon Calculator Complete", o = { event: a, tag_name: r, total_emissions: n.totalEmissions, total_per_day: n.totalPerDay, travel_percent: n.travelPercent, accommodation_percent: n.accommodationPercent, food_percent: n.foodPercent }, l = this.compileFullTemplate(o), c = this.templateFiller(carbonCompleteTemplate, l); break; case "cmsReferral": a = "cms_referral", r = "VS - GA4 - Event - CMS Link Click Referral", o = { event: a, tag_name: r, referral_location: n.referral_location, dmo_referral: n.dmo_referral }, l = this.compileFullTemplate(o), c = this.templateFiller(cmsReferralTemplate, l); break; case "accordionOpenEvent": a = "accordion_opened", r = "GA4 - Event - Accordion Opened", o = { event: a, tag_name: r, accordion_text: n.accordion_text }, l = this.compileFullTemplate(o), c = this.templateFiller(accordionOpenTemplate, l); break; case "tabClickEvent": a = "tab_click", r = "GA4 - Event - Tab Click", o = { event: a, tag_name: r, event_tab: d, event_listing: f }, l = this.compileFullTemplate(o), c = this.templateFiller(tabClickTemplate, l); break; } this.pushToDataLayer(c); }, returnIsoDate() { return new Date(Date.now()).toISOString(); }, pushToDataLayer(e) { this.dataLayerLoadConfirmed ? window.dataLayer.push(e) : checkVendorLibrary("dataLayer", () => { this.dataLayerLoadConfirmed = !0, window.dataLayer.push(e); }); }, compileFullTemplate(e) { const t = { ...this.dataLayerStore.GTMData, ...e }; return t.hit_timestamp = this.returnIsoDate(), t; }, targetText(e) { let n; return e.target.text ? n = e.target.text.trim() : n = "", n; } } }, _sfc_main$2r = { name: "VsButton", status: "prototype", release: "0.0.1", components: { BButton, VsIcon }, mixins: [ dataLayerMixin ], props: { /** * Use this option to render the button as an anchor element with the given href. */ href: { type: String, default: null }, /** * Tab index value - this is needed as tabindex attribute is sometimes stripped * from the button on first update with nested components. */ tabindex: { type: String, default: null }, /** * Style variation to give additional meaning * `primary|secondary|transparent`. */ variant: { type: String, default: "primary", validator: (e) => e.match( /(primary|secondary|transparent)/ ) }, /** * Size of the button * `sm|md|lg`. */ size: { type: String, default: "md", validator: (e) => e.match(/(sm|md|lg)/) }, /** * By default, buttons have an animation behaviour on click. * Pass `false` to disable. */ animate: { type: Boolean, default: !0 }, /** * Pass the name of the icon to add it to the button. */ rounded: { type: Boolean, default: !0 }, /** * Pass the name of the icon to add it to the button. */ icon: { type: String, default: "" }, /** * If the button contains an icon only with no text. */ iconOnly: { type: Boolean, default: !1 }, /** * The position of the icon * `left|right` */ iconPosition: { type: String, default: "left", validator: (e) => e.match(/(left|right)/) } }, emits: ["btnFocus"], data() { return { isAnimating: !1 }; }, computed: { buttonClasses() { return [ { "vs-button--animated": this.animate && !this.iconOnly, "vs-button--is-animating": this.isAnimating, "vs-button--rounded": this.rounded, "vs-button--icon-only": this.iconOnly, "button-flex": this.icon && !this.iconOnly, "vs-button--flex-reverse": this.iconPosition === "right" } ]; }, iconClasses() { return [ { "vs-icon--right": this.iconPosition === "right", "vs-icon--left": this.iconPosition === "left" } ]; } }, methods: { animateHandler(e) { this.isAnimating = !0, setTimeout(() => { this.isAnimating = !1; }, 1e3), this.href !== null && (e.preventDefault(), this.trackLink(e)); }, tabbedIn(e) { this.$emit("btnFocus", e); }, trackLink(e) { let n; this.href.includes("http") ? n = "externalLinkDataEvent" : n = "internalLinkDataEvent", this.createDataLayerObject(n, e, this.href), this.href !== "#" && this.href !== null && (window.location.href = this.href); } } }; function _sfc_render$2d(e, n, t, a, r, o) { const l = resolveComponent("VsIcon"), c = resolveComponent("BButton"); return openBlock(), createBlock(c, mergeProps({ variant: t.variant, href: t.href || void 0, tabindex: t.tabindex || void 0, class: ["vs-button justify-content-center", o.buttonClasses], size: t.size }, e.$attrs, { "aria-disabled": !!e.$attrs.disabled, onClick: n[0] || (n[0] = (d) => o.animateHandler(d)), onKeyup: withKeys(o.tabbedIn, ["tab"]) }), { default: withCtx(() => [ t.icon ? (openBlock(), createBlock(l, { key: 0, class: normalizeClass(["align-self-center", o.iconClasses]), name: t.icon, size: "xs", padding: 0 }, null, 8, ["name", "class"])) : createCommentVNode("", !0), createElementVNode("span", { class: normalizeClass(["vs-button__text", { "visually-hidden": t.iconOnly }]) }, [ renderSlot(e.$slots, "default") ], 2) ]), _: 3 }, 16, ["variant", "href", "tabindex", "class", "size", "aria-disabled", "onKeyup"]); } const VsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2r, [["render", _sfc_render$2d]]), _sfc_main$2q = { name: "VsAccordionToggle", status: "prototype", release: "0.0.1", components: { VsButton }, props: { /** * Variant for which button to show in headers */ variant: { type: String, default: "primary" }, /** * Choose to show accordion open or closed by default */ visible: { type: Boolean, default: !0 } }, emits: ["toggle-panel"], methods: { triggerToggle() { this.$emit("toggle-panel"); } } }, _hoisted_1$1P = { class: "vs-accordion-toggle__text" }, _hoisted_2$1g = { class: "vs-accordion-toggle__icon" }; function _sfc_render$2c(e, n, t, a, r, o) { const l = resolveComponent("VsButton"); return openBlock(), createBlock(l, { animate: !1, "aria-expanded": t.visible ? "true" : "false", "aria-haspopup": "true", onClick: o.triggerToggle, class: normalizeClass(["vs-accordion-toggle clearfix", t.visible ? "vs-accordion-toggle--open" : ""]), variant: t.variant, rounded: !1 }, { default: withCtx(() => [ createElementVNode("span", _hoisted_1$1P, [ renderSlot(e.$slots, "default") ]), createElementVNode("span", _hoisted_2$1g, [ t.visible ? renderSlot(e.$slots, "icon-open", { key: 0 }) : renderSlot(e.$slots, "icon-closed", { key: 1 }) ]) ]), _: 3 }, 8, ["aria-expanded", "onClick", "class", "variant"]); } const VsAccordionToggle = /* @__PURE__ */ _export_sfc(_sfc_main$2q, [["render", _sfc_render$2c]]); var commonjsGlobal = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; function getDefaultExportFromCjs$1(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; } function getAugmentedNamespace(e) { if (e.__esModule) return e; var n = e.default; if (typeof n == "function") { var t = function a() { return this instanceof a ? Reflect.construct(n, arguments, this.constructor) : n.apply(this, arguments); }; t.prototype = n.prototype; } else t = {}; return Object.defineProperty(t, "__esModule", { value: !0 }), Object.keys(e).forEach(function(a) { var r = Object.getOwnPropertyDescriptor(e, a); Object.defineProperty(t, a, r.get ? r : { enumerable: !0, get: function() { return e[a]; } }); }), t; } var lodash = { exports: {} }; /** * @license * Lodash <https://lodash.com/> * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> * Released under MIT license <https://lodash.com/license> * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ lodash.exports; (function(e, n) { (function() { var t, a = "4.17.21", r = 200, o = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", l = "Expected a function", c = "Invalid `variable` option passed into `_.template`", d = "__lodash_hash_undefined__", p = 500, f = "__lodash_placeholder__", m = 1, _ = 2, v = 4, k = 1, C = 2, V = 1, E = 2, T = 4, L = 8, O = 16, R = 32, M = 64, q = 128, F = 256, se = 512, fe = 30, ae = "...", he = 800, ie = 16, ue = 1, Ae = 2, xe = 3, we = 1 / 0, X = 9007199254740991, de = 17976931348623157e292, pe = NaN, be = 4294967295, Be = be - 1, U = be >>> 1, W = [ ["ary", q], ["bind", V], ["bindKey", E], ["curry", L], ["curryRight", O], ["flip", se], ["partial", R], ["partialRight", M], ["rearg", F] ], G = "[object Arguments]", ve = "[object Array]", ce = "[object AsyncFunction]", _e = "[object Boolean]", me = "[object Date]", le = "[object DOMException]", ge = "[object Error]", Ce = "[object Function]", Ve = "[object GeneratorFunction]", $e = "[object Map]", Fe = "[object Number]", De = "[object Null]", We = "[object Object]", st = "[object Promise]", Q = "[object Proxy]", at = "[object RegExp]", He = "[object Set]", dt = "[object String]", ot = "[object Symbol]", _t = "[object Undefined]", lt = "[object WeakMap]", jt = "[object WeakSet]", Kt = "[object ArrayBuffer]", bt = "[object DataView]", Fn = "[object Float32Array]", B = "[object Float64Array]", w = "[object Int8Array]", S = "[object Int16Array]", I = "[object Int32Array]", j = "[object Uint8Array]", Y = "[object Uint8ClampedArray]", ee = "[object Uint16Array]", Oe = "[object Uint32Array]", et = /\b__p \+= '';/g, Qe = /\b(__p \+=) '' \+/g, tt = /(__e\(.*?\)|\b__t\)) \+\n'';/g, Ke = /&(?:amp|lt|gt|quot|#39);/g, oo = /[&<>"']/g, Ds = RegExp(Ke.source), Fs = RegExp(oo.source), qs = /<%-([\s\S]+?)%>/g, js = /<%([\s\S]+?)%>/g, io = /<%=([\s\S]+?)%>/g, Us = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Hs = /^\w*$/, zs = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, Kr = /[\\^$.*+?()[\]{}|]/g, Ws = RegExp(Kr.source), Gr = /^\s+/, Ks = /\s/, Gs = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Ys = /\{\n\/\* \[wrapped with (.+)\] \*/, Js = /,? & /, Qs = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Zs = /[()=,{}\[\]\/\s]/, Xs = /\\(\\)?/g, el = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, so = /\w*$/, tl = /^[-+]0x[0-9a-f]+$/i, nl = /^0b[01]+$/i, rl = /^\[object .+?Constructor\]$/, al = /^0o[0-7]+$/i, ol = /^(?:0|[1-9]\d*)$/, il = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, or = /($^)/, sl = /['\n\r\u2028\u2029\\]/g, ir = "\\ud800-\\udfff", ll = "\\u0300-\\u036f", cl = "\\ufe20-\\ufe2f", ul = "\\u20d0-\\u20ff", lo = ll + cl + ul, co = "\\u2700-\\u27bf", uo = "a-z\\xdf-\\xf6\\xf8-\\xff", dl = "\\xac\\xb1\\xd7\\xf7", fl = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", hl = "\\u2000-\\u206f", pl = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", fo = "A-Z\\xc0-\\xd6\\xd8-\\xde", ho = "\\ufe0e\\ufe0f", po = dl + fl + hl + pl, Yr = "['’]", ml = "[" + ir + "]", mo = "[" + po + "]", sr = "[" + lo + "]", go = "\\d+", gl = "[" + co + "]", _o = "[" + uo + "]", yo = "[^" + ir + po + go + co + uo + fo + "]", Jr = "\\ud83c[\\udffb-\\udfff]", _l = "(?:" + sr + "|" + Jr + ")", vo = "[^" + ir + "]", Qr = "(?:\\ud83c[\\udde6-\\uddff]){2}", Zr = "[\\ud800-\\udbff][\\udc00-\\udfff]", $n = "[" + fo + "]", bo = "\\u200d", wo = "(?:" + _o + "|" + yo + ")", yl = "(?:" + $n + "|" + yo + ")", ko = "(?:" + Yr + "(?:d|ll|m|re|s|t|ve))?", So = "(?:" + Yr + "(?:D|LL|M|RE|S|T|VE))?", Co = _l + "?", xo = "[" + ho + "]?", vl = "(?:" + bo + "(?:" + [vo, Qr, Zr].join("|") + ")" + xo + Co + ")*", bl = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", wl = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", $o = xo + Co + vl, kl = "(?:" + [gl, Qr, Zr].join("|") + ")" + $o, Sl = "(?:" + [vo + sr + "?", sr, Qr, Zr, ml].join("|") + ")", Cl = RegExp(Yr, "g"), xl = RegExp(sr, "g"), Xr = RegExp(Jr + "(?=" + Jr + ")|" + Sl + $o, "g"), $l = RegExp([ $n + "?" + _o + "+" + ko + "(?=" + [mo, $n, "$"].join("|") + ")", yl + "+" + So + "(?=" + [mo, $n + wo, "$"].join("|") + ")", $n + "?" + wo + "+" + ko, $n + "+" + So, wl, bl, go, kl ].join("|"), "g"), Vl = RegExp("[" + bo + ir + lo + ho + "]"), El = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, Bl = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ], Nl = -1, Xe = {}; Xe[Fn] = Xe[B] = Xe[w] = Xe[S] = Xe[I] = Xe[j] = Xe[Y] = Xe[ee] = Xe[Oe] = !0, Xe[G] = Xe[ve] = Xe[Kt] = Xe[_e] = Xe[bt] = Xe[me] = Xe[ge] = Xe[Ce] = Xe[$e] = Xe[Fe] = Xe[We] = Xe[at] = Xe[He] = Xe[dt] = Xe[lt] = !1; var Ze = {}; Ze[G] = Ze[ve] = Ze[Kt] = Ze[bt] = Ze[_e] = Ze[me] = Ze[Fn] = Ze[B] = Ze[w] = Ze[S] = Ze[I] = Ze[$e] = Ze[Fe] = Ze[We] = Ze[at] = Ze[He] = Ze[dt] = Ze[ot] = Ze[j] = Ze[Y] = Ze[ee] = Ze[Oe] = !0, Ze[ge] = Ze[Ce] = Ze[lt] = !1; var Tl = { // Latin-1 Supplement block. À: "A", Á: "A", Â: "A", Ã: "A", Ä: "A", Å: "A", à: "a", á: "a", â: "a", ã: "a", ä: "a", å: "a", Ç: "C", ç: "c", Ð: "D", ð: "d", È: "E", É: "E", Ê: "E", Ë: "E", è: "e", é: "e", ê: "e", ë: "e", Ì: "I", Í: "I", Î: "I", Ï: "I", ì: "i", í: "i", î: "i", ï: "i", Ñ: "N", ñ: "n", Ò: "O", Ó: "O", Ô: "O", Õ: "O", Ö: "O", Ø: "O", ò: "o", ó: "o", ô: "o", õ: "o", ö: "o", ø: "o", Ù: "U", Ú: "U", Û: "U", Ü: "U", ù: "u", ú: "u", û: "u", ü: "u", Ý: "Y", ý: "y", ÿ: "y", Æ: "Ae", æ: "ae", Þ: "Th", þ: "th", ß: "ss", // Latin Extended-A block. Ā: "A", Ă: "A", Ą: "A", ā: "a", ă: "a", ą: "a", Ć: "C", Ĉ: "C", Ċ: "C", Č: "C", ć: "c", ĉ: "c", ċ: "c", č: "c", Ď: "D", Đ: "D", ď: "d", đ: "d", Ē: "E", Ĕ: "E", Ė: "E", Ę: "E", Ě: "E", ē: "e", ĕ: "e", ė: "e", ę: "e", ě: "e", Ĝ: "G", Ğ: "G", Ġ: "G", Ģ: "G", ĝ: "g", ğ: "g", ġ: "g", ģ: "g", Ĥ: "H", Ħ: "H", ĥ: "h", ħ: "h", Ĩ: "I", Ī: "I", Ĭ: "I", Į: "I", İ: "I", ĩ: "i", ī: "i", ĭ: "i", į: "i", ı: "i", Ĵ: "J", ĵ: "j", Ķ: "K", ķ: "k", ĸ: "k", Ĺ: "L", Ļ: "L", Ľ: "L", Ŀ: "L", Ł: "L", ĺ: "l", ļ: "l", ľ: "l", ŀ: "l", ł: "l", Ń: "N", Ņ: "N", Ň: "N", Ŋ: "N", ń: "n", ņ: "n", ň: "n", ŋ: "n", Ō: "O", Ŏ: "O", Ő: "O", ō: "o", ŏ: "o", ő: "o", Ŕ: "R", Ŗ: "R", Ř: "R", ŕ: "r", ŗ: "r", ř: "r", Ś: "S", Ŝ: "S", Ş: "S", Š: "S", ś: "s", ŝ: "s", ş: "s", š: "s", Ţ: "T", Ť: "T", Ŧ: "T", ţ: "t", ť: "t", ŧ: "t", Ũ: "U", Ū: "U", Ŭ: "U", Ů: "U", Ű: "U", Ų: "U", ũ: "u", ū: "u", ŭ: "u", ů: "u", ű: "u", ų: "u", Ŵ: "W", ŵ: "w", Ŷ: "Y", ŷ: "y", Ÿ: "Y", Ź: "Z", Ż: "Z", Ž: "Z", ź: "z", ż: "z", ž: "z", IJ: "IJ", ij: "ij", Œ: "Oe", œ: "oe", ʼn: "'n", ſ: "s" }, Al = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }, Ll = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }, Il = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, Ol = parseFloat, Rl = parseInt, Vo = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal, Pl = typeof self == "object" && self && self.Object === Object && self, mt = Vo || Pl || Function("return this")(), ea = n && !n.nodeType && n, _n = ea && !0 && e && !e.nodeType && e, Eo = _n && _n.exports === ea, ta = Eo && Vo.process, It = function() { try { var H = _n && _n.require && _n.require("util").types; return H || ta && ta.binding && ta.binding("util"); } catch { } }(), Bo = It && It.isArrayBuffer, No = It && It.isDate, To = It && It.isMap, Ao = It && It.isRegExp, Lo = It && It.isSet, Io = It && It.isTypedArray; function Et(H, Z, J) { switch (J.length) { case 0: return H.call(Z); case 1: return H.call(Z, J[0]); case 2: return H.call(Z, J[0], J[1]); case 3: return H.call(Z, J[0], J[1], J[2]); } return H.apply(Z, J); } function Ml(H, Z, J, ke) { for (var Le = -1, ze = H == null ? 0 : H.length; ++Le < ze; ) { var ft = H[Le]; Z(ke, ft, J(ft), H); } return ke; } function Ot(H, Z) { for (var J = -1, ke = H == null ? 0 : H.length; ++J < ke && Z(H[J], J, H) !== !1; ) ; return H; } function Dl(H, Z) { for (var J = H == null ? 0 : H.length; J-- && Z(H[J], J, H) !== !1; ) ; return H; } function Oo(H, Z) { for (var J = -1, ke = H == null ? 0 : H.length; ++J < ke; ) if (!Z(H[J], J, H)) return !1; return !0; } function ln(H, Z) { for (var J = -1, ke = H == null ? 0 : H.length, Le = 0, ze = []; ++J < ke; ) { var ft = H[J]; Z(ft, J, H) && (ze[Le++] = ft); } return ze; } function lr(H, Z) { var J = H == null ? 0 : H.length; return !!J && Vn(H, Z, 0) > -1; } function na(H, Z, J) { for (var ke = -1, Le = H == null ? 0 : H.length; ++ke < Le; ) if (J(Z, H[ke])) return !0; return !1; } function nt(H, Z) { for (var J = -1, ke = H == null ? 0 : H.length, Le = Array(ke); ++J < ke; ) Le[J] = Z(H[J], J, H); return Le; } function cn(H, Z) { for (var J = -1, ke = Z.length, Le = H.length; ++J < ke; ) H[Le + J] = Z[J]; return H; } function ra(H, Z, J, ke) { var Le = -1, ze = H == null ? 0 : H.length; for (ke && ze && (J = H[++Le]); ++Le < ze; ) J = Z(J, H[Le], Le, H); return J; } function Fl(H, Z, J, ke) { var Le = H == null ? 0 : H.length; for (ke && Le && (J = H[--Le]); Le--; ) J = Z(J, H[Le], Le, H); return J; } function aa(H, Z) { for (var J = -1, ke = H == null ? 0 : H.length; ++J < ke; ) if (Z(H[J], J, H)) return !0; return !1; } var ql = oa("length"); function jl(H) { return H.split(""); } function Ul(H) { return H.match(Qs) || []; } function Ro(H, Z, J) { var ke; return J(H, function(Le, ze, ft) { if (Z(Le, ze, ft)) return ke = ze, !1; }), ke; } function cr(H, Z, J, ke) { for (var Le = H.length, ze = J + (ke ? 1 : -1); ke ? ze-- : ++ze < Le; ) if (Z(H[ze], ze, H)) return ze; return -1; } function Vn(H, Z, J) { return Z === Z ? tc(H, Z, J) : cr(H, Po, J); } function Hl(H, Z, J, ke) { for (var Le = J - 1, ze = H.length; ++Le < ze; ) if (ke(H[Le], Z)) return Le; return -1; } function Po(H) { return H !== H; } function Mo(H, Z) { var J = H == null ? 0 : H.length; return J ? sa(H, Z) / J : pe; } function oa(H) { return function(Z) { return Z == null ? t : Z[H]; }; } function ia(H) { return function(Z) { return H == null ? t : H[Z]; }; } function Do(H, Z, J, ke, Le) { return Le(H, function(ze, ft, Je) { J = ke ? (ke = !1, ze) : Z(J, ze, ft, Je); }), J; } function zl(H, Z) { var J = H.length; for (H.sort(Z); J--; ) H[J] = H[J].value; return H; } function sa(H, Z) { for (var J, ke = -1, Le = H.length; ++ke < Le; ) { var ze = Z(H[ke]); ze !== t && (J = J === t ? ze : J + ze); } return J; } function la(H, Z) { for (var J = -1, ke = Array(H); ++J < H; ) ke[J] = Z(J); return ke; } function Wl(H, Z) { return nt(Z, function(J) { return [J, H[J]]; }); } function Fo(H) { return H && H.slice(0, Ho(H) + 1).replace(Gr, ""); } function Bt(H) { return function(Z) { return H(Z); }; } function ca(H, Z) { return nt(Z, function(J) { return H[J]; }); } function qn(H, Z) { return H.has(Z); } function qo(H, Z) { for (var J = -1, ke = H.length; ++J < ke && Vn(Z, H[J], 0) > -1; ) ; return J; } function jo(H, Z) { for (var J = H.length; J-- && Vn(Z, H[J], 0) > -1; ) ; return J; } function Kl(H, Z) { for (var J = H.length, ke = 0; J--; ) H[J] === Z && ++ke; return ke; } var Gl = ia(Tl), Yl = ia(Al); function Jl(H) { return "\\" + Il[H]; } function Ql(H, Z) { return H == null ? t : H[Z]; } function En(H) { return Vl.test(H); } function Zl(H) { return El.test(H); } function Xl(H) { for (var Z, J = []; !(Z = H.next()).done; ) J.push(Z.value); return J; } function ua(H) { var Z = -1, J = Array(H.size); return H.forEach(function(ke, Le) { J[++Z] = [Le, ke]; }), J; } function Uo(H, Z) { return function(J) { return H(Z(J)); }; } function un(H, Z) { for (var J = -1, ke = H.length, Le = 0, ze = []; ++J < ke; ) { var ft = H[J]; (ft === Z || ft === f) && (H[J] = f, ze[Le++] = J); } return ze; } function ur(H) { var Z = -1, J = Array(H.size); return H.forEach(function(ke) { J[++Z] = ke; }), J; } function ec(H) { var Z = -1, J = Array(H.size); return H.forEach(function(ke) { J[++Z] = [ke, ke]; }), J; } function tc(H, Z, J) { for (var ke = J - 1, Le = H.length; ++ke < Le; ) if (H[ke] === Z) return ke; return -1; } function nc(H, Z, J) { for (var ke = J + 1; ke--; ) if (H[ke] === Z) return ke; return ke; } function Bn(H) { return En(H) ? ac(H) : ql(H); } function Ut(H) { return En(H) ? oc(H) : jl(H); } function Ho(H) { for (var Z = H.length; Z-- && Ks.test(H.charAt(Z)); ) ; return Z; } var rc = ia(Ll); function ac(H) { for (var Z = Xr.lastIndex = 0; Xr.test(H); ) ++Z; return Z; } function oc(H) { return H.match(Xr) || []; } function ic(H) { return H.match($l) || []; } var sc = function H(Z) { Z = Z == null ? mt : Nn.defaults(mt.Object(), Z, Nn.pick(mt, Bl)); var J = Z.Array, ke = Z.Date, Le = Z.Error, ze = Z.Function, ft = Z.Math, Je = Z.Object, da = Z.RegExp, lc = Z.String, Rt = Z.TypeError, dr = J.prototype, cc = ze.prototype, Tn = Je.prototype, fr = Z["__core-js_shared__"], hr = cc.toString, Ye = Tn.hasOwnProperty, uc = 0, zo = function() { var s = /[^.]+$/.exec(fr && fr.keys && fr.keys.IE_PROTO || ""); return s ? "Symbol(src)_1." + s : ""; }(), pr = Tn.toString, dc = hr.call(Je), fc = mt._, hc = da( "^" + hr.call(Ye).replace(Kr, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ), mr = Eo ? Z.Buffer : t, dn = Z.Symbol, gr = Z.Uint8Array, Wo = mr ? mr.allocUnsafe : t, _r = Uo(Je.getPrototypeOf, Je), Ko = Je.create, Go = Tn.propertyIsEnumerable, yr = dr.splice, Yo = dn ? dn.isConcatSpreadable : t, jn = dn ? dn.iterator : t, yn = dn ? dn.toStringTag : t, vr = function() { try { var s = Sn(Je, "defineProperty"); return s({}, "", {}), s; } catch { } }(), pc = Z.clearTimeout !== mt.clearTimeout && Z.clearTimeout, mc = ke && ke.now !== mt.Date.now && ke.now, gc = Z.setTimeout !== mt.setTimeout && Z.setTimeout, br = ft.ceil, wr = ft.floor, fa = Je.getOwnPropertySymbols, _c = mr ? mr.isBuffer : t, Jo = Z.isFinite, yc = dr.join, vc = Uo(Je.keys, Je), ht = ft.max, yt = ft.min, bc = ke.now, wc = Z.parseInt, Qo = ft.random, kc = dr.reverse, ha = Sn(Z, "DataView"), Un = Sn(Z, "Map"), pa = Sn(Z, "Promise"), An = Sn(Z, "Set"), Hn = Sn(Z, "WeakMap"), zn = Sn(Je, "create"), kr = Hn && new Hn(), Ln = {}, Sc = Cn(ha), Cc = Cn(Un), xc = Cn(pa), $c = Cn(An), Vc = Cn(Hn), Sr = dn ? dn.prototype : t, Wn = Sr ? Sr.valueOf : t, Zo = Sr ? Sr.toString : t; function N(s) { if (it(s) && !Ie(s) && !(s instanceof je)) { if (s instanceof Pt) return s; if (Ye.call(s, "__wrapped__")) return es(s); } return new Pt(s); } var In = /* @__PURE__ */ function() { function s() { } return function(u) { if (!rt(u)) return {}; if (Ko) return Ko(u); s.prototype = u; var g = new s(); return s.prototype = t, g; }; }(); function Cr() { } function Pt(s, u) { this.__wrapped__ = s, this.__actions__ = [], this.__chain__ = !!u, this.__index__ = 0, this.__values__ = t; } N.templateSettings = { /** * Used to detect `data` property values to be HTML-escaped. * * @memberOf _.templateSettings * @type {RegExp} */ escape: qs, /** * Used to detect code to be evaluated. * * @memberOf _.templateSettings * @type {RegExp} */ evaluate: js, /** * Used to detect `data` property values to inject. * * @memberOf _.templateSettings * @type {RegExp} */ interpolate: io, /** * Used to reference the data object in the template text. * * @memberOf _.templateSettings * @type {string} */ variable: "", /** * Used to import variables into the compiled template. * * @memberOf _.templateSettings * @type {Object} */ imports: { /** * A reference to the `lodash` function. * * @memberOf _.templateSettings.imports *