MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/snap.cafsinfotech.in/node_modules/caret-pos/src/main.js
import createInputCaret from './input';
import createEditableCaret from './editable';
import {
  isContentEditable,
  getContext,
  isObject,
} from './utils';

export { getOffset } from './utils';

const createCaret = (element, ctx) => {
  if (isContentEditable(element)) {
    return createEditableCaret(element, ctx);
  }

  return createInputCaret(element, ctx);
};

export const position = (element, value, settings = {}) => {
  let options = settings;
  if (isObject(value)) {
    options = value;
    value = null;
  }
  const ctx = getContext(options);
  const caret = createCaret(element, ctx);

  if (value || value === 0) {
    return caret.setPos(value);
  }

  return caret.getPosition();
};

/**
 *
 * @param {Element} element The DOM element
 * @param {number|undefined} value The value to set
 * @param {object} settings Any settings for context
 */
export const offset = (element, value, settings = {}) => {
  let options = settings;
  if (isObject(value)) {
    options = value;
    value = null;
  }

  const ctx = getContext(options);
  const caret = createCaret(element, ctx);
  return caret.getOffset(value);
};