function createDrawableProxy($el, start, end) {
  const strokeLineCap = getComputedStyle($el).strokeLinecap;
  const pathLength = 100000;
  let currentCap = strokeLineCap;
  const proxy = new Proxy($el, {
    get(target, property) {
      const value = target[property];
      if (property === proxyTargetSymbol) return target;
      if (property === 'setAttribute') {
        /** @param {any[]} args */
        return (...args) => {
          if (args[0] === 'draw') {
            const value = args[1];
            const precision = globals.precision;
            const values = value.split(' ');
            const v1 = round(+values[0], precision);
            const v2 = round(+values[1], precision);

            // TOTO: Benchmark if performing two slices is more performant than one split

            // const spaceIndex = value.indexOf(' ');
            // const v1 = round(+value.slice(0, spaceIndex), precision);
            // const v2 = round(+value.slice(spaceIndex + 1), precision);

            const os = round((v1 * -pathLength), 0);
            const d1 = round((v2 * pathLength) + os, 0);
            const d2 = round(pathLength - d1, 0);
            // Handle cases where the cap is still visible when the line is completly hidden
            if (strokeLineCap !== 'butt') {
              const newCap = v1 === v2 ? 'butt' : strokeLineCap;
              if (currentCap !== newCap) {
                target.setAttribute('stroke-linecap', `${newCap}`);
                currentCap = newCap;
              }
            }
            target.setAttribute('stroke-dashoffset', `${os}`);
            target.setAttribute('stroke-dasharray', `${d1} ${d2}`);
          }
          return Reflect.apply(value, target, args);
        };
      }
      if (isFnc(value)) {
        /** @param {any[]} args */
        return (...args) => Reflect.apply(value, target, args);
      } else {
        return value;
      }
    }
  });
  if ($el.getAttribute('pathLength') !== `${pathLength}`) {
    $el.setAttribute('pathLength', `${pathLength}`);
    proxy.setAttribute('draw', `${start} ${end}`);
  }
  return /** @type {typeof Proxy} */(/** @type {unknown} */(proxy));
}
@param {SVGGeometryElement} $el
@param {Number} start
@param {Number} end
@return {Proxy}