UNPKG

bootstrap-vue-next

Version:

BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.

13 lines (12 loc) 19.3 kB
"use strict";const e=require("vue"),t=require("./index-DiURjA3G.js"),n=require("./index-BjjsoN-a.js"); /*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */ var o=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],r=o.join(","),a="undefined"==typeof Element,i=a?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,u=!a&&Element.prototype.getRootNode?function(e){var t;return null==e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}:function(e){return null==e?void 0:e.ownerDocument},c=function e(t,n){var o;void 0===n&&(n=!0);var r=null==t||null===(o=t.getAttribute)||void 0===o?void 0:o.call(t,"inert");return""===r||"true"===r||n&&t&&e(t.parentNode)},l=function(e,t,n){if(c(e))return[];var o=Array.prototype.slice.apply(e.querySelectorAll(r));return t&&i.call(e,r)&&o.unshift(e),o=o.filter(n)},s=function e(t,n,o){for(var a=[],u=Array.from(t);u.length;){var l=u.shift();if(!c(l,!1))if("SLOT"===l.tagName){var s=l.assignedElements(),d=e(s.length?s:l.children,!0,o);o.flatten?a.push.apply(a,d):a.push({scopeParent:l,candidates:d})}else{i.call(l,r)&&o.filter(l)&&(n||!t.includes(l))&&a.push(l);var f=l.shadowRoot||"function"==typeof o.getShadowRoot&&o.getShadowRoot(l),v=!c(f,!1)&&(!o.shadowRootFilter||o.shadowRootFilter(l));if(f&&v){var p=e(!0===f?l.children:f.children,!0,o);o.flatten?a.push.apply(a,p):a.push({scopeParent:l,candidates:p})}else u.unshift.apply(u,l.children)}}return a},d=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},f=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||function(e){var t,n=null==e||null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"contenteditable");return""===n||"true"===n}(e))&&!d(e)?0:e.tabIndex},v=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},p=function(e){return"INPUT"===e.tagName},b=function(e){return function(e){return p(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||u(e),o=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=o(window.CSS.escape(e.name));else try{t=o(e.name)}catch(a){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",a.message),!1}var r=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!r||r===e}(e)},m=function(e){var t=e.getBoundingClientRect(),n=t.width,o=t.height;return 0===n&&0===o},h=function(e,t){var n=t.displayCheck,o=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var r=i.call(e,"details>summary:first-of-type")?e.parentElement:e;if(i.call(r,"details:not([open]) *"))return!0;if(n&&"full"!==n&&"legacy-full"!==n){if("non-zero-area"===n)return m(e)}else{if("function"==typeof o){for(var a=e;e;){var c=e.parentElement,l=u(e);if(c&&!c.shadowRoot&&!0===o(c))return m(e);e=e.assignedSlot?e.assignedSlot:c||l===e.ownerDocument?c:l.host}e=a}if(function(e){var t,n,o,r,a=e&&u(e),i=null===(t=a)||void 0===t?void 0:t.host,c=!1;if(a&&a!==e)for(c=!!(null!==(n=i)&&void 0!==n&&null!==(o=n.ownerDocument)&&void 0!==o&&o.contains(i)||null!=e&&null!==(r=e.ownerDocument)&&void 0!==r&&r.contains(e));!c&&i;){var l,s,d;c=!(null===(s=i=null===(l=a=u(i))||void 0===l?void 0:l.host)||void 0===s||null===(d=s.ownerDocument)||void 0===d||!d.contains(i))}return c}(e))return!e.getClientRects().length;if("legacy-full"!==n)return!0}return!1},y=function(e,t){return!(t.disabled||c(t)||function(e){return p(e)&&"hidden"===e.type}(t)||h(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var o=t.children.item(n);if("LEGEND"===o.tagName)return!!i.call(t,"fieldset[disabled] *")||!o.contains(e)}return!0}t=t.parentElement}return!1}(t))},w=function(e,t){return!(b(t)||f(t)<0||!y(e,t))},g=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},N=function e(t){var n=[],o=[];return t.forEach((function(t,r){var a=!!t.scopeParent,i=a?t.scopeParent:t,u=function(e,t){var n=f(e);return n<0&&t&&!d(e)?0:n}(i,a),c=a?e(t.candidates):i;0===u?a?n.push.apply(n,c):n.push(i):o.push({documentOrder:r,tabIndex:u,item:t,isScope:a,content:c})})),o.sort(v).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)},E=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==i.call(e,r)&&w(t,e)},S=o.concat("iframe").join(","),F=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==i.call(e,S)&&y(t,e)}; /*! * focus-trap 7.6.4 * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE */ function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function k(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?R(Object(n),!0).forEach((function(t){k(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function D(e){return function(e){if(Array.isArray(e))return O(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?O(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var T=function(e,t){if(e.length>0){var n=e[e.length-1];n!==t&&n._setPausedState(!0)}var o=e.indexOf(t);-1===o||e.splice(o,1),e.push(t)},A=function(e,t){var n=e.indexOf(t);-1!==n&&e.splice(n,1),e.length>0&&!e[e.length-1]._isManuallyPaused()&&e[e.length-1]._setPausedState(!1)},x=function(e){return"Tab"===(null==e?void 0:e.key)||9===(null==e?void 0:e.keyCode)},I=function(e){return x(e)&&!e.shiftKey},C=function(e){return x(e)&&e.shiftKey},G=function(e){return setTimeout(e,0)},L=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return"function"==typeof e?e.apply(void 0,n):e},j=function(e){return e.target.shadowRoot&&"function"==typeof e.composedPath?e.composedPath()[0]:e.target},B=[],M=function(e,t){var n,o=(null==t?void 0:t.document)||document,r=(null==t?void 0:t.trapStack)||B,a=P({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0,isKeyForward:I,isKeyBackward:C},t),i={containers:[],containerGroups:[],tabbableGroups:[],nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1,manuallyPaused:!1,delayInitialFocusTimer:void 0,recentNavEvent:void 0},u=function(e,t,n){return e&&void 0!==e[t]?e[t]:a[n||t]},c=function(e,t){var n="function"==typeof(null==t?void 0:t.composedPath)?t.composedPath():void 0;return i.containerGroups.findIndex((function(t){var o=t.container,r=t.tabbableNodes;return o.contains(e)||(null==n?void 0:n.includes(o))||r.find((function(t){return t===e}))}))},d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.hasFallback,r=void 0!==n&&n,i=t.params,u=void 0===i?[]:i,c=a[e];if("function"==typeof c&&(c=c.apply(void 0,D(u))),!0===c&&(c=void 0),!c){if(void 0===c||!1===c)return c;throw new Error("`".concat(e,"` was specified but was not a node, or did not return a node"))}var l=c;if("string"==typeof c){try{l=o.querySelector(c)}catch(s){throw new Error("`".concat(e,'` appears to be an invalid selector; error="').concat(s.message,'"'))}if(!l&&!r)throw new Error("`".concat(e,"` as selector refers to no known node"))}return l},v=function(){var e=d("initialFocus",{hasFallback:!0});if(!1===e)return!1;if(void 0===e||e&&!F(e,a.tabbableOptions))if(c(o.activeElement)>=0)e=o.activeElement;else{var t=i.tabbableGroups[0];e=t&&t.firstTabbableNode||d("fallbackFocus")}else null===e&&(e=d("fallbackFocus"));if(!e)throw new Error("Your focus-trap needs to have at least one focusable element");return e},p=function(){if(i.containerGroups=i.containers.map((function(e){var t=function(e,t){var n;return n=(t=t||{}).getShadowRoot?s([e],t.includeContainer,{filter:w.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:g}):l(e,t.includeContainer,w.bind(null,t)),N(n)}(e,a.tabbableOptions),n=function(e,t){return(t=t||{}).getShadowRoot?s([e],t.includeContainer,{filter:y.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):l(e,t.includeContainer,y.bind(null,t))}(e,a.tabbableOptions),o=t.length>0?t[0]:void 0,r=t.length>0?t[t.length-1]:void 0,i=n.find((function(e){return E(e)})),u=n.slice().reverse().find((function(e){return E(e)})),c=!!t.find((function(e){return f(e)>0}));return{container:e,tabbableNodes:t,focusableNodes:n,posTabIndexesFound:c,firstTabbableNode:o,lastTabbableNode:r,firstDomTabbableNode:i,lastDomTabbableNode:u,nextTabbableNode:function(e){var o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=t.indexOf(e);return r<0?o?n.slice(n.indexOf(e)+1).find((function(e){return E(e)})):n.slice(0,n.indexOf(e)).reverse().find((function(e){return E(e)})):t[r+(o?1:-1)]}}})),i.tabbableGroups=i.containerGroups.filter((function(e){return e.tabbableNodes.length>0})),i.tabbableGroups.length<=0&&!d("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find((function(e){return e.posTabIndexesFound}))&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(e){var t=e.activeElement;if(t)return t.shadowRoot&&null!==t.shadowRoot.activeElement?b(t.shadowRoot):t},m=function(e){!1!==e&&e!==b(document)&&(e&&e.focus?(e.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=e,function(e){return e.tagName&&"input"===e.tagName.toLowerCase()&&"function"==typeof e.select}(e)&&e.select()):m(v()))},h=function(e){var t=d("setReturnFocus",{params:[e]});return t||!1!==t&&e},S=function(e){var t=e.target,n=e.event,o=e.isBackward,r=void 0!==o&&o;t=t||j(n),p();var u=null;if(i.tabbableGroups.length>0){var l=c(t,n),s=l>=0?i.containerGroups[l]:void 0;if(l<0)u=r?i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:i.tabbableGroups[0].firstTabbableNode;else if(r){var v=i.tabbableGroups.findIndex((function(e){var n=e.firstTabbableNode;return t===n}));if(v<0&&(s.container===t||F(t,a.tabbableOptions)&&!E(t,a.tabbableOptions)&&!s.nextTabbableNode(t,!1))&&(v=l),v>=0){var b=0===v?i.tabbableGroups.length-1:v-1,m=i.tabbableGroups[b];u=f(t)>=0?m.lastTabbableNode:m.lastDomTabbableNode}else x(n)||(u=s.nextTabbableNode(t,!1))}else{var h=i.tabbableGroups.findIndex((function(e){var n=e.lastTabbableNode;return t===n}));if(h<0&&(s.container===t||F(t,a.tabbableOptions)&&!E(t,a.tabbableOptions)&&!s.nextTabbableNode(t))&&(h=l),h>=0){var y=h===i.tabbableGroups.length-1?0:h+1,w=i.tabbableGroups[y];u=f(t)>=0?w.firstTabbableNode:w.firstDomTabbableNode}else x(n)||(u=s.nextTabbableNode(t))}}else u=d("fallbackFocus");return u},O=function(e){var t=j(e);c(t,e)>=0||(L(a.clickOutsideDeactivates,e)?n.deactivate({returnFocus:a.returnFocusOnDeactivate}):L(a.allowOutsideClick,e)||e.preventDefault())},k=function(e){var t=j(e),n=c(t,e)>=0;if(n||t instanceof Document)n&&(i.mostRecentlyFocusedNode=t);else{var o;e.stopImmediatePropagation();var r=!0;if(i.mostRecentlyFocusedNode)if(f(i.mostRecentlyFocusedNode)>0){var u=c(i.mostRecentlyFocusedNode),l=i.containerGroups[u].tabbableNodes;if(l.length>0){var s=l.findIndex((function(e){return e===i.mostRecentlyFocusedNode}));s>=0&&(a.isKeyForward(i.recentNavEvent)?s+1<l.length&&(o=l[s+1],r=!1):s-1>=0&&(o=l[s-1],r=!1))}}else i.containerGroups.some((function(e){return e.tabbableNodes.some((function(e){return f(e)>0}))}))||(r=!1);else r=!1;r&&(o=S({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),m(o||(i.mostRecentlyFocusedNode||v()))}i.recentNavEvent=void 0},R=function(e){(a.isKeyForward(e)||a.isKeyBackward(e))&&function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];i.recentNavEvent=e;var n=S({event:e,isBackward:t});n&&(x(e)&&e.preventDefault(),m(n))}(e,a.isKeyBackward(e))},M=function(e){var t;"Escape"!==(null==(t=e)?void 0:t.key)&&"Esc"!==(null==t?void 0:t.key)&&27!==(null==t?void 0:t.keyCode)||!1===L(a.escapeDeactivates,e)||(e.preventDefault(),n.deactivate())},K=function(e){var t=j(e);c(t,e)>=0||L(a.clickOutsideDeactivates,e)||L(a.allowOutsideClick,e)||(e.preventDefault(),e.stopImmediatePropagation())},U=function(){if(i.active)return T(r,n),i.delayInitialFocusTimer=a.delayInitialFocus?G((function(){m(v())})):m(v()),o.addEventListener("focusin",k,!0),o.addEventListener("mousedown",O,{capture:!0,passive:!1}),o.addEventListener("touchstart",O,{capture:!0,passive:!1}),o.addEventListener("click",K,{capture:!0,passive:!1}),o.addEventListener("keydown",R,{capture:!0,passive:!1}),o.addEventListener("keydown",M),n},q=function(){if(i.active)return o.removeEventListener("focusin",k,!0),o.removeEventListener("mousedown",O,!0),o.removeEventListener("touchstart",O,!0),o.removeEventListener("click",K,!0),o.removeEventListener("keydown",R,!0),o.removeEventListener("keydown",M),n},_="undefined"!=typeof window&&"MutationObserver"in window?new MutationObserver((function(e){e.some((function(e){return Array.from(e.removedNodes).some((function(e){return e===i.mostRecentlyFocusedNode}))}))&&m(v())})):void 0,$=function(){_&&(_.disconnect(),i.active&&!i.paused&&i.containers.map((function(e){_.observe(e,{subtree:!0,childList:!0})})))};return n={get active(){return i.active},get paused(){return i.paused},activate:function(e){if(i.active)return this;var t=u(e,"onActivate"),n=u(e,"onPostActivate"),r=u(e,"checkCanFocusTrap");r||p(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=o.activeElement,null==t||t();var a=function(){r&&p(),U(),$(),null==n||n()};return r?(r(i.containers.concat()).then(a,a),this):(a(),this)},deactivate:function(e){if(!i.active)return this;var t=P({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},e);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,q(),i.active=!1,i.paused=!1,$(),A(r,n);var o=u(t,"onDeactivate"),c=u(t,"onPostDeactivate"),l=u(t,"checkCanReturnFocus"),s=u(t,"returnFocus","returnFocusOnDeactivate");null==o||o();var d=function(){G((function(){s&&m(h(i.nodeFocusedBeforeActivation)),null==c||c()}))};return s&&l?(l(h(i.nodeFocusedBeforeActivation)).then(d,d),this):(d(),this)},pause:function(e){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,e)):this},unpause:function(e){return i.active?(i.manuallyPaused=!1,r[r.length-1]!==this?this:this._setPausedState(!1,e)):this},updateContainerElements:function(e){var t=[].concat(e).filter(Boolean);return i.containers=t.map((function(e){return"string"==typeof e?o.querySelector(e):e})),i.active&&p(),$(),this}},Object.defineProperties(n,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(e,t){if(i.paused===e)return this;if(i.paused=e,e){var n=u(t,"onPause"),o=u(t,"onPostPause");null==n||n(),q(),$(),null==o||o()}else{var r=u(t,"onUnpause"),a=u(t,"onPostUnpause");null==r||r(),p(),U(),$(),null==a||a()}return this}}}),n.updateContainerElements(e),n};const K=n.createSharedComposable(t.useScrollLock);let U="";const q=new Map;exports.useActivatedFocusTrap=({element:o,isActive:r,noTrap:a,fallbackFocus:i,focus:u},c={allowOutsideClick:!0,fallbackFocus:i.ref.value??void 0,escapeDeactivates:!1,clickOutsideDeactivates:!1,initialFocus:u})=>{const l=e.readonly(e.toRef(r)),s=e.readonly(e.toRef(a)),d=()=>{var e;const t=null==(e=o.value)?void 0:e.querySelectorAll(`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"]):not(.${i.classSelector})`);return!(null==t?void 0:t.length)},f=e.ref(!1);e.onMounted((()=>{f.value=d(),t.useMutationObserver(o,(()=>{f.value=d()}),{childList:!0,subtree:!0})}));const v=function(o,r={}){let a;const{immediate:i,...u}=r,c=e.shallowRef(!1),l=e.shallowRef(!1),s=e=>a&&a.activate(e),d=e=>a&&a.deactivate(e),f=e.computed((()=>{const r=e.toValue(o);return n.toArray(r).map((n=>{const o=e.toValue(n);return"string"==typeof o?o:t.unrefElement(o)})).filter(n.notNullish)}));return e.watch(f,(e=>{e.length&&(a=M(e,{...u,onActivate(){c.value=!0,r.onActivate&&r.onActivate()},onDeactivate(){c.value=!1,r.onDeactivate&&r.onDeactivate()}}),i&&s())}),{flush:"post"}),n.tryOnScopeDispose((()=>d())),{hasFocus:c,isPaused:l,activate:s,deactivate:d,pause:()=>{a&&(a.pause(),l.value=!0)},unpause:()=>{a&&(a.unpause(),l.value=!1)}}}(o,c);return e.watch(l,(async e=>{e&&!1===s.value?v.activate():v.deactivate()})),e.watch(s,(e=>{!0===e&&v.deactivate()})),{needsFallback:e.readonly(f)}},exports.useSafeScrollLock=(t,n)=>{const o=e.readonly(e.toRef(t)),r=e.useId(),a=e.computed((()=>!e.toValue(n))),i=K("undefined"!=typeof document?document.body:null,o.value&&a.value);e.onMounted((()=>{"undefined"!=typeof document&&(q.set(r,!1),e.watch([o,a],(([e,t])=>{const n=window.innerWidth-document.documentElement.clientWidth,o=Array.from(q.values()).some((e=>!0===e)),a=e&&t;q.set(r,a),!a||o||i.value||(i.value=!0,n>0&&(U=document.body.style.paddingRight,document.body.style.paddingRight=`${n+U}px`));const u=Array.from(q.values()).some((e=>!0===e));o&&!u&&(q.set(r,!1),i.value=!1,document.body.style.paddingRight=U)}),{immediate:!0}))})),e.onUnmounted((()=>{q.delete(r);Array.from(q.values()).some((e=>!0===e))||(document.body.style.paddingRight=U,i.value=!1)}))}; //# sourceMappingURL=useSafeScrollLock-Xjl1NHrG.js.map