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/utils.js
/**
 * Check if a DOM Element is content editable
 *
 * @param {Element} element  The DOM element
 *
 * @return {bool} If it is content editable
 */
export const isContentEditable = (element) => !!(
  element.contentEditable ?
    element.contentEditable === 'true' :
    element.getAttribute('contenteditable') === 'true'
);

/**
 * Get the context from settings passed in
 *
 * @param {object} settings The settings object
 *
 * @return {object} window and document
 */
export const getContext = (settings = {}) => {
  const { customPos, iframe, noShadowCaret } = settings;
  if (iframe) {
    return {
      iframe,
      window: iframe.contentWindow,
      document: iframe.contentDocument || iframe.contentWindow.document,
      noShadowCaret,
      customPos,
    };
  }

  return {
    window,
    document,
    noShadowCaret,
    customPos,
  };
};

/**
 * Get the offset of an element
 *
 * @param {Element} element The DOM element
 * @param {object} ctx The context
 *
 * @return {object} top and left
 */
export const getOffset = (element, ctx) => {
  const win = ctx && ctx.window || window;
  const doc = ctx && ctx.document || document;
  const rect = element.getBoundingClientRect();
  const docEl = doc.documentElement;
  const scrollLeft = win.pageXOffset || docEl.scrollLeft;
  const scrollTop = win.pageYOffset || docEl.scrollTop;

  return {
    top: rect.top + scrollTop,
    left: rect.left + scrollLeft
  };
};

/**
 * Check if a value is an object
 *
 * @param {any} value The value to check
 *
 * @return {bool} If it is an object
 */
export const isObject = (value) => typeof value === 'object' && value !== null;