File: //home/cafsindia/snap.cafsinfotech.in/node_modules/caret-pos/lib/bundle/main.js.map
{"version":3,"file":"main.js","sources":["../../src/mirror.js","../../src/utils.js","../../src/input.js","../../src/editable.js","../../src/main.js"],"sourcesContent":["const attributes = [\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopStyle',\n 'borderRightStyle',\n 'borderBottomStyle',\n 'borderLeftStyle',\n 'borderTopWidth',\n 'boxSizing',\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'height',\n 'letterSpacing',\n 'lineHeight',\n 'marginBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'outlineWidth',\n 'overflow',\n 'overflowX',\n 'overflowY',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'textAlign',\n 'textOverflow',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n 'wordWrap',\n];\n\n/**\n * Create a mirror\n *\n * @param {Element} element The element\n * @param {string} html The html\n *\n * @return {object} The mirror object\n */\nconst createMirror = (element, html) => {\n\n /**\n * The mirror element\n */\n const mirror = document.createElement('div');\n\n /**\n * Create the CSS for the mirror object\n *\n * @return {object} The style object\n */\n const mirrorCss = () => {\n const css = {\n position: 'absolute',\n left: -9999,\n top: 0,\n zIndex: -2000\n };\n\n if (element.tagName === 'TEXTAREA') {\n attributes.push('width');\n }\n\n attributes.forEach((attr) => {\n css[attr] = getComputedStyle(element)[attr];\n });\n\n return css;\n };\n\n /**\n * Initialize the mirror\n *\n * @param {string} html The html\n *\n * @return {void}\n */\n const initialize = (html) => {\n const styles = mirrorCss();\n Object.keys(styles).forEach(key => {\n mirror.style[key] = styles[key];\n });\n mirror.innerHTML = html;\n element.parentNode.insertBefore(mirror, element.nextSibling);\n };\n\n /**\n * Get the rect\n *\n * @return {Rect} The bounding rect\n */\n const rect = () => {\n const marker = mirror.ownerDocument.getElementById('caret-position-marker');\n const boundingRect = {\n left: marker.offsetLeft,\n top: marker.offsetTop,\n height: marker.offsetHeight\n };\n mirror.parentNode.removeChild(mirror);\n\n return boundingRect;\n };\n\n initialize(html);\n\n return {\n rect,\n };\n};\n\nexport default createMirror;\n","/**\n * Check if a DOM Element is content editable\n *\n * @param {Element} element The DOM element\n *\n * @return {bool} If it is content editable\n */\nexport const isContentEditable = (element) => !!(\n element.contentEditable ?\n element.contentEditable === 'true' :\n element.getAttribute('contenteditable') === 'true'\n);\n\n/**\n * Get the context from settings passed in\n *\n * @param {object} settings The settings object\n *\n * @return {object} window and document\n */\nexport const getContext = (settings = {}) => {\n const { customPos, iframe, noShadowCaret } = settings;\n if (iframe) {\n return {\n iframe,\n window: iframe.contentWindow,\n document: iframe.contentDocument || iframe.contentWindow.document,\n noShadowCaret,\n customPos,\n };\n }\n\n return {\n window,\n document,\n noShadowCaret,\n customPos,\n };\n};\n\n/**\n * Get the offset of an element\n *\n * @param {Element} element The DOM element\n * @param {object} ctx The context\n *\n * @return {object} top and left\n */\nexport const getOffset = (element, ctx) => {\n const win = ctx && ctx.window || window;\n const doc = ctx && ctx.document || document;\n const rect = element.getBoundingClientRect();\n const docEl = doc.documentElement;\n const scrollLeft = win.pageXOffset || docEl.scrollLeft;\n const scrollTop = win.pageYOffset || docEl.scrollTop;\n\n return {\n top: rect.top + scrollTop,\n left: rect.left + scrollLeft\n };\n};\n\n/**\n * Check if a value is an object\n *\n * @param {any} value The value to check\n *\n * @return {bool} If it is an object\n */\nexport const isObject = (value) => typeof value === 'object' && value !== null;\n","import createMirror from './mirror';\nimport { getOffset as elementOffset } from './utils';\n\n/**\n * Create a Input caret object.\n *\n * @param {Element} element The element\n * @param {Object} ctx The context\n */\nconst createInputCaret = (element, ctx) => {\n\n /**\n * Get the current position\n *\n * @returns {int} The caret position\n */\n const getPos = () => {\n return element.selectionStart;\n };\n\n /**\n * Set the position\n *\n * @param {int} pos The position\n *\n * @return {Element} The element\n */\n const setPos = (pos) => {\n element.setSelectionRange(pos, pos);\n\n return element;\n };\n\n /**\n * The offset\n *\n * @param {int} pos The position\n *\n * @return {object} The offset\n */\n const getOffset = (pos) => {\n const rect = elementOffset(element);\n const position = getPosition(pos);\n\n return {\n top: rect.top + position.top + ctx.document.body.scrollTop,\n left: rect.left + position.left + ctx.document.body.scrollLeft,\n height: position.height,\n };\n };\n\n /**\n * Get the current position\n *\n * @param {int} pos The position\n *\n * @return {object} The position\n */\n const getPosition = (pos) => {\n const format = (val) => {\n let value = val.replace(/<|>|`|\"|&/g, '?')\n .replace(/\\r\\n|\\r|\\n/g,'<br/>');\n return value;\n };\n\n if (ctx.customPos || ctx.customPos === 0) {\n pos = ctx.customPos;\n }\n\n const position = pos === undefined ? getPos() : pos;\n const startRange = element.value.slice(0, position);\n const endRange = element.value.slice(position);\n let html = `<span style=\"position: relative; display: inline;\">${format(startRange)}</span>`;\n html += '<span id=\"caret-position-marker\" style=\"position: relative; display: inline;\">|</span>';\n html += `<span style=\"position: relative; display: inline;\">${format(endRange)}</span>`;\n\n const mirror = createMirror(element, html);\n const rect = mirror.rect();\n rect.pos = getPos();\n\n return rect;\n };\n\n return {\n getPos,\n setPos,\n getOffset,\n getPosition,\n };\n};\n\nexport default createInputCaret;\n","/**\n * Create an Editable Caret\n * @param {Element} element The editable element\n * @param {object|null} ctx The context\n *\n * @return {EditableCaret}\n */\nconst createEditableCaret = (element, ctx) => {\n\n /**\n * Set the caret position\n *\n * @param {int} pos The position to se\n *\n * @return {Element} The element\n */\n const setPos = (pos) => {\n const sel = ctx.window.getSelection();\n if (sel) {\n let offset = 0;\n let found = false;\n const find = (position, parent) => {\n for (let i = 0; i < parent.childNodes.length; i++) {\n const node = parent.childNodes[i];\n if (found) {\n break;\n }\n if (node.nodeType === 3) {\n if (offset + node.length >= position) {\n found = true;\n const range = ctx.document.createRange();\n range.setStart(node, position - offset);\n sel.removeAllRanges();\n sel.addRange(range);\n break;\n } else {\n offset += node.length;\n }\n } else {\n find(pos, node);\n }\n }\n };\n find(pos, element);\n }\n\n return element;\n };\n\n /**\n * Get the offset\n *\n * @return {object} The offset\n */\n const getOffset = () => {\n const range = getRange();\n let offset = {\n height: 0,\n left: 0,\n right: 0,\n };\n\n if (!range) {\n return offset;\n }\n\n const hasCustomPos = ctx.customPos || ctx.customPos === 0;\n\n // endContainer in Firefox would be the element at the start of\n // the line\n if ((range.endOffset - 1 > 0 && range.endContainer !== element) || hasCustomPos) {\n const clonedRange = range.cloneRange();\n const fixedPosition = hasCustomPos ? ctx.customPos : range.endOffset;\n clonedRange.setStart(range.endContainer, fixedPosition - 1 < 0 ? 0 : fixedPosition - 1);\n clonedRange.setEnd(range.endContainer, fixedPosition);\n const rect = clonedRange.getBoundingClientRect();\n offset = {\n height: rect.height,\n left: rect.left + rect.width,\n top: rect.top,\n };\n clonedRange.detach();\n }\n\n if ((!offset || (offset && offset.height === 0)) && !ctx.noShadowCaret) {\n const clonedRange = range.cloneRange();\n const shadowCaret = ctx.document.createTextNode('|');\n clonedRange.insertNode(shadowCaret);\n clonedRange.selectNode(shadowCaret);\n const rect = clonedRange.getBoundingClientRect();\n offset = {\n height: rect.height,\n left: rect.left,\n top: rect.top,\n };\n shadowCaret.parentNode.removeChild(shadowCaret);\n clonedRange.detach();\n }\n\n if (offset) {\n const doc = ctx.document.documentElement;\n offset.top += ctx.window.pageYOffset - (doc.clientTop || 0);\n offset.left += ctx.window.pageXOffset - (doc.clientLeft || 0);\n }\n\n return offset;\n };\n\n /**\n * Get the position\n *\n * @return {object} The position\n */\n const getPosition = () => {\n const offset = getOffset();\n const pos = getPos();\n const rect = element.getBoundingClientRect();\n const inputOffset = {\n top: rect.top + ctx.document.body.scrollTop,\n left: rect.left + ctx.document.body.scrollLeft\n };\n offset.left -= inputOffset.left;\n offset.top -= inputOffset.top;\n offset.pos = pos;\n\n return offset;\n };\n\n /**\n * Get the range\n *\n * @return {Range|null}\n */\n const getRange = () => {\n if (!ctx.window.getSelection) {\n return;\n }\n const sel = ctx.window.getSelection();\n\n return sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n };\n\n /**\n * Get the caret position\n *\n * @return {int} The position\n */\n const getPos = () => {\n const range = getRange();\n const clonedRange = range.cloneRange();\n clonedRange.selectNodeContents(element);\n clonedRange.setEnd(range.endContainer, range.endOffset);\n const pos = clonedRange.toString().length;\n clonedRange.detach();\n\n return pos;\n };\n\n return {\n getPos,\n setPos,\n getPosition,\n getOffset,\n getRange,\n };\n};\n\nexport default createEditableCaret;\n","import createInputCaret from './input';\nimport createEditableCaret from './editable';\nimport {\n isContentEditable,\n getContext,\n isObject,\n} from './utils';\n\nexport { getOffset } from './utils';\n\nconst createCaret = (element, ctx) => {\n if (isContentEditable(element)) {\n return createEditableCaret(element, ctx);\n }\n\n return createInputCaret(element, ctx);\n};\n\nexport const position = (element, value, settings = {}) => {\n let options = settings;\n if (isObject(value)) {\n options = value;\n value = null;\n }\n const ctx = getContext(options);\n const caret = createCaret(element, ctx);\n\n if (value || value === 0) {\n return caret.setPos(value);\n }\n\n return caret.getPosition();\n};\n\n/**\n *\n * @param {Element} element The DOM element\n * @param {number|undefined} value The value to set\n * @param {object} settings Any settings for context\n */\nexport const offset = (element, value, settings = {}) => {\n let options = settings;\n if (isObject(value)) {\n options = value;\n value = null;\n }\n\n const ctx = getContext(options);\n const caret = createCaret(element, ctx);\n return caret.getOffset(value);\n};\n"],"names":["attributes","createMirror","element","html","mirror","document","createElement","mirrorCss","css","position","left","top","zIndex","tagName","push","forEach","attr","getComputedStyle","initialize","styles","Object","keys","key","style","innerHTML","parentNode","insertBefore","nextSibling","rect","marker","ownerDocument","getElementById","boundingRect","offsetLeft","offsetTop","height","offsetHeight","removeChild","isContentEditable","contentEditable","getAttribute","getContext","settings","customPos","iframe","noShadowCaret","window","contentWindow","contentDocument","getOffset","ctx","win","doc","getBoundingClientRect","docEl","documentElement","scrollLeft","pageXOffset","scrollTop","pageYOffset","isObject","value","createInputCaret","getPos","selectionStart","setPos","pos","setSelectionRange","elementOffset","getPosition","body","format","val","replace","undefined","startRange","slice","endRange","createEditableCaret","sel","getSelection","offset","found","find","parent","i","childNodes","length","node","nodeType","range","createRange","setStart","removeAllRanges","addRange","getRange","right","hasCustomPos","endOffset","endContainer","clonedRange","cloneRange","fixedPosition","setEnd","width","detach","shadowCaret","createTextNode","insertNode","selectNode","clientTop","clientLeft","inputOffset","rangeCount","getRangeAt","selectNodeContents","toString","createCaret","options","caret"],"mappings":"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"}