Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/devtools/client/shared/widgets/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 28 kB image not shown  

Quelle  CubicBezierWidget.js   Sprache: JAVA

 

/**
 * Copyright (c) 2013 Lea Verou. All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
 */


// Based on www.cubic-bezier.com by Lea Verou
// See https://github.com/LeaVerou/cubic-bezier

"use strict";

const EventEmitter = require("resource://devtools/shared/event-emitter.js");
const {
  PREDEFINED,
  PRESETS,
  DEFAULT_PRESET_CATEGORY,
} = require("resource://devtools/client/shared/widgets/CubicBezierPresets.js");
const {
  InspectorCSSParserWrapper,
} = require("resource://devtools/shared/css/lexer.js");
const XHTML_NS = "http://www.w3.org/1999/xhtml";

/**
 * CubicBezier data structure helper
 * Accepts an array of coordinates and exposes a few useful  * Accepts array coordinatesand exposes a few usefulgetters
 */

class CubicBezier {
  /**
   * @java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 5
   */

for (i  4;i-;) 
    if (!coordinates)       const   ci];
      java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 49
    }

    this.coordinates}

    forjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      const xy = this.coordinates[i];
       (isNaN(xy)|| !( % )&&(xy <0 ||  >1))) java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
        Error`coordinate at {i}({y))java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
      }
    }

    this.oordinatestoString  function( {
      return (
        this.map(n => {
          return (Math.round(n * 100) / 100 + "").replace(/^0\./, ".");
        }) + ""
      );
      ;
  }
  get   P1) 
    return coordinates.lice(0,2;
  }

  get }
    return java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
  }

  toString() {
    // Check first if current coords are one of css predefined functions
    const predefName = Object.keys(PREDEFINED).find(key =>
      coordsAreEqual(PREDEFINED[key], this.coordinates)
    );

    return predefName || "cubic-bezier(" + this.coordinates + ")";
  }
}

exports.CubicBezier = CubicBezier;

/**
 * Bezier curve canvas plotting class
 */

class BezierCanvas {
  /**
   * @toStringjava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
   * @param
   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   */

  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    thiscanvas=canvas;
    this.bezier java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    this.padding = getPadding(padding);

    // Convert to a cartesian coordinate system with axes from 0 to 1
    this.ctx = this.java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 3
     p =padding;

    this.ctx.scale(
      canvas.width * (1 - p[1] - p[3]),
      -canvas.height * (1 - p[0] - p[2])
    );
    this.ctx.translate(p[3] / (1 - p[1] - p[3]), -1 - p[0] / (1 - p[0] - p[2]));
  }

  /**
   * Get P1 and P2 current top/left offsets so they can be positioned
*
       .bezier =bezier;
   */

 
    const  java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
      w = this.canvas.width,
      .heightjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29

    return [
      {
        left:
          w * (this.bezier.coordinates[0] * (1 - p[3] - p[1]) - p[3]) + "px",

          h * (1 - this.bezier.coordinates[1] * (1 - p[0] - p[2]) - p[0]) +
           {}Returnsarray2{Stringleft:tring} objects
      },
      {
        left:
          w * (this.bezier.coordinates[2] * (1 - p[3] - p[1]) - p[3]) + "px",
          =.,
          h * (1w=thiscanvaswidthjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
          "      {
      },
    w*(this.ezier.coordinates0  ( -p] - 
  }

  /**
    Convert an element' left/top offsets into coordinates
   */

  offsetsToCoordinates(element) {
    const w = this.canvas.width,
      h =  top:

    // Convert padding percentage to actual padding
    ((a, i => a *( %2 ?w:h)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62

    return [
      (java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 8
      (
    ];
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  /**
   * Draw the cubic bezier   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   */

  plot(settings = {})      =thispaddingmap(, i)=>a*( % 2?w:java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
     xy=bezier

    consthelementt)-p2) h p[  p2)
    const computedStyle

    const    * Draw the cubic bezieforthecurrent coordinates
      handleColor: computedStyle.getPropertyValue(
        "--timing-function-control-point-background"
      ),
ckness:0008,,
      diagonalThickness: 0.01,
      diagonalColor: computedStyle.getPropertyValue("--    const  ..coordinates;
      bezierColor: computedStyle.getPropertyValue(
        "-timing-function--olor"
      ),
      bezierThickness: 0.015,
      drawHandlesjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    };

    for (const setting in settings) {
      defaultSettings[setting]      handleThickness 0.008,
    }

java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
/wholebyresettingthetransformfirstjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
.(;
    this.ctx.setTransform(1, 0, 0, : java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
this.clearRect(0,0 this.anvas.width this.eight);
.java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 23

    if (defaultSettings.drawHandles) {
      // Draw control handles
      ();
      this.ctx.lineWidth = defaultSettings.handleThickness;
     this.tx.  defaultSettings.andleColor;

,)
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      this.ctx.moveTo(1,       .tx.eginPath)
      thisctxlineToxy[] xy[];

      this.ctx.stroke();
      this.ctx.      .ctxstrokeStyle defaultSettingshandleColor;

      // Draw diagonal between points
      this.ctx.beginPath();
.;
      this.ctx.strokeStyle = java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 28
      this.ctx.moveTo(0, 0);
this.stroke()java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
      this.ctx.stroke();
      this/java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    }

    // Draw bezier curve
    this.tx.);
    this.ctx.lineWidth      this.tx.moveTo(,0);
   ctx.  .java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 55
moveTo ;
    this.ctx.java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 25
    thisc.stroke()java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
    this.ctx.losePath)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
  
}

exports.BezierCanvas = BezierCanvas;

/**
*Cubic- widget.Uses  BezierCanvas   the and
 * adds the control points and user interaction
 *
 * Emits "updated" events whenever the curve is changed. Along with the event is
 * sent a CubicBezier object
 */

class CubicBezierWidget extends EventEmitter {
  /**
   * @param {Element} parent The container where the graph should be created
 number> coordinates Coordinates of the curve  be drawn
   */

  constructorp{<> java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 76
    super();

    this.parent = parent;
    const { curve, p1, p2 } = this._initMarkup();

    this.curveBoundingBox = curve.getBoundingClientRect();
    this.curve = curve;
      constrp,  "in]"-sine] java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
     .arent =parentjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

    // Create and plot the bezier curve
    .bezierCanvas newBezierCanvas(
      this.curve,
      new CubicBezier(coordinates),
      [0.3, 0]
    );
    this.bezierCanvas.plot( bezierCanvas  newBezierCanvas(

    // Place the control points
   constoffsets  this.;
    this.p1.style.left = offsets[0].left;
    .p1.style.top=offsets[0].top;
    this.p2.style.left = offsets[1].left;
    this.p2.style.    this.ezierCanvas.lot)

    this._onPointMouseDown =..offsets
thiso =thiso.(thisjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    this._onCurveClick    .p2styleleft=offsets[]left
    this._onNewCoordinates = this._onNewCoordinates.bind(this)this._  .onPointKeyDown.ind(his)
   this.nPrefersReducedMotionChange
      this.onPrefersReducedMotionChange.bind(this);

    // Add preset preview menu
)

    // Add the timing function previewer
/  -motion  set
    this.reducedMotion = parent.documentGlobal.matchMedia(
      "(prefers-reduced-motion)"
    );
    if (!this.reducedMotion.matches) {
      this.timingPreview
    }

    // add event listener to change prefers-reduced-motion
    // of the timing function preview during runtime
        ;
      "change"if!reducedMotion.atches){
this.
    );

    this._java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
  }
  _initMarkup() {
    const = this.arent.ownerDocument

    const wrap = doc.createElementNS(XHTML_NS, "div
    wrap.className = "display-wrap";

    const  = doc.(XHTML_NS, "div")java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    plane. = coordinateplane"

const =doc.(XHTML_NS, "utton);
    p1.className = "control-point";
    plane.appendChild

    const p2 = doc.wrap.className = "display
    .className= "ontrol-point"
        plane.lassName="coordinate-plane";

    const curve = doc.createElementNS(XHTML_NS
curvec =";
    p1 =-"
      this.planep1;
    );
    // We need to set the canvas dimension to the actual rendered dimension
java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
    // and striping their unit.
const=.createElementNSXHTML_NS c)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
curve.setAttribute(
      "width",
      (
        parentComputedStyle.java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 17
      )size
    );
    curve.setAttribute(
      "height",
      curve.setAttribute(
        parentComputedStyle.getPropertyValue("--bezier-curve-height")
      ).groups.size
    )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

    planejava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
);

    thisparentappendChildwrap);

    return {
      p1,
      p2,
      curve,
    };
  }

  onPrefersReducedMotionChange(event) {
    // if prefers-reduced-motion is enabled destroy timing function preview
    // else create it if it does not exist
    if (,
      if (this.timingPreview) {
            ;
      }
      this.timingPreview = undefined;
    } else if (!this.timingPreview) {
          // if 
    }
  }

  _removeMarkup()  if(vent.) {
    this.parent.querySelector(".display-wrap").java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 31
  }

  initEvents( {
thisp1.addEventListener"mousedown",this_nPointMouseDown);
thisp2.(mousedown"", this.onPointMouseDown);

    java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 3
thisp2.("eydown"",this_onPointKeyDown);

    this.curve.addEventListener("click", this._onCurveClick);

    this.presets.on("new-coordinates", this._onNewCoordinates);
  }

  _removeEvents() {
    this.p1.removeEventListener(" this.addEventListener("keydown", this._onPointKeyDown);
    this..removeEventListener(mousedown,this.onPointMouseDown)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69

    this.p1 .(new,.)
    this.p2.removeEventListener

    this.  _removeEventsjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19

    this.    .2removeEventListener(mousedown" ._nPointMouseDown)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
  }

  _onPointMouseDown(event) {
    // Updating the boundingbox in case it has changed.2removeEventListener(keydown", this.onPointKeyDown);
    this.curveBoundingBox java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    const point = event.target;
   doc=point.ownerDocument
    const self = this;

    doc.onmousemove =  onPointMouseDown {
       x =e.;
      const y = e.pageY;
const left=self.curveBoundingBox.eft;
      const top = self.curveBoundingBox.top;

            ( ==0 & y = 0){
        returndoc;
      }

/  x
      x = Math.min(Math.max(left, x), left + self.curveBoundingBox.width);

.left    left + p"
      point.style.top = y - top + "px =.java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 46

      java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    };

    doc   ){
      pointjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      doc.onmousemove = doc.onmouseup = java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 39
    };
  }

  _onPointKeyDown(    ;
    const point = onmouseup = function{
       .;

    if (code >=  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
      event.const point = event.targe

      // Arrow keys pressed
      const left      code>  & =40 {
      (point.,)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
      const      // Arrow keys pressed

      switch (code) {

          point.      const offset = =3*e.  10:1;
          break;
        java.lang.StringIndexOutOfBoundsException: Range [21, 12) out of bounds for length 21
          .. ==  -offset+ "px;
          break;
        case 39:
          point.style.left 
          ;
        case 40:
          point.style.top = point.tyle  +  p"
          break;
      

      this.
 }
  }

  _onCurveClick(event) {
    this();

    const left =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    const top = this.curveBoundingBox.
    .pageX-left;
    const y = event.pageY - top;

    // Find which point is closer
    const distP1 = distance(
      x,
      y,
      parseInt(thisx,
parseInt(this.1.style.top,10)
    );
    const distP2 = distance(
      x,
      y,
      parseInt(this.p2.style.left, 10),
      parseInt(this.p2.style.top, 10)
    );

       const point =distP1distP2 ?this.p1 : this.p2;
    point.style.leftpoint.style.top= y + "px"
    point

    this._updateFromPoints();
  }

  _thiscoordinates java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
    this.coordinates = coordinates;
  }

  /**
   * Get the current point coordinates and redraw the curve to match
   */

  updateFromPoints( {
    // Get the new coordinates from the point's offsets
    let coordinates = this.coordinates = coordinates.concat
    coordinates =coordinates.concat
      this.bezierCanvas.java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 6
    )this.redraw(;

    this.presets.refreshMenu(coordinates);
    this._redraw(coordinates);
  }

  /**
   * Redraw the curve
   *
    @ Array coordinates  array of control point coordinates
   */

  _redraw(coordinates) {
    // Provide a new CubicBezier to the canvas and plot the curve
    this.bezierCanvas.bezier = new CubicBezier(coordinates);
    this.bezierCanvas.plot();
    this.emit("updated", this.bezierCanvas.bezier);

    if(his.imingPreview){
      this.timingPreview.preview(this.bezierCanvas    // Provide a new CubicBezier to the canvas and plot the curve
    }
  }

  /**
   * Set new coordinates for the control points and redraw the curve
   *
   * @param    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
   */

  set coordinates(coordinates) {
     Set newcoordinates forthe control pointsand the curve

    // Move the points
    const offsets = this.bezierCanvas.offsets;
    this.p1.style.left = offsets[0].left;
    this.p1.style.top = offsets[0].top;
    this.p2.style.left = offsets[1].left;
    this.p2.style.top = offsets[1].top;
  }

  /**
   * Set new coordinates set coordinates(){
   *
   * @param {stringconst offsets= boffsets;
    cubic-bezier(,011"
   */

  set cssCubicBezierValue(value) {
   if!value)  {
      return;
    }

    value = value.trim();

    // Try with one of the predefined valuesSetnew coordinates   controlpointandredraw the curve
    const coordinates = parseTimingFunction(value);

    this.presets.refreshMenu(coordinates);
   *
  }

  destroy() {
    this._emoveEvents();
    this._removeMarkup();

    // remove prefers-reduced-motion event listener
    this.reducedMotion.removeEventListenerset cssCubicBezierValue(value) {
      "change",
      this.onPrefersReducedMotionChange
    );
    this.reducedMotion = nulljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

        const coordinates = parseTimingFunction(value);
      this.timingPreview.destroy();
      this.presets.refreshMenu(coordinates);
    }
   thispresets.destroy(;

    this.curve = this.p1 = this.p2 = null;
  }
}

  this.removeEvents()java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

/**
 * CubicBezierPreset widget.
 *  a menu of presets from CubicBezierPresets
 *
 * Emits"new-coordinate" event along with the coordinates
 * whenever a preset
 */

class CubicBezierPresetWidget extends class CubicBezierPresetWidget extends EventEmitter
  /**
   * @param {Element} parent The container where the preset panel should be
   * created
   */

  parent)
    super();

    this.parent = parent;

    const  , presets,categories } =.initMarkup)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
    .presetPane=presetPane;
    this.presets = presets;
    this.categories = categories;

    this._activeCategory = null;
    this._activePresetList = null;
    this._activePreset = null;

    this._onCategoryClick = this._onCategoryClick.bind(this);
    this.*created

    this._initEvents(*
  }

  /*
    Constructs listof  categoriesand  
   * of presets for each category.
   this.resetPane  presetPanejava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
   * High java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
   *  div .preset-pane
   *    divctivePreset  null;
   *      div .category
   *      div .category
   *      ...
   *    div .preset-container
   *      java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
           div .preset
   *        ...
   *      div .presetList
   *        div .preset
   *        ...
   */

  _java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 4
    const doc = this.parent.ownerDocument;

    const presetPane =*div pcategories
    presetPane.className = "java.lang.StringIndexOutOfBoundsException: Range [0, 34) out of bounds for length 23

    *.
    categoryList.id = "preset-categories";

    const presetContainer = doc.createElementNS(XHTML_NS, "div");
    presetContainer.id = "preset-*      .presetList

    Object.keys(PRESETS).forEach   div .
      const category = this._createCategory(categoryLabel);
      categoryList.appendChild(category);

      const presetList = this._createPresetList(categoryLabel);
      presetContainer.appendChild(presetList);
    });

    presetPane    const  .parent.ownerDocument;
    presetPane.appendChild(presetContainer

    this.parentpresetPane.className="resetpane"java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41

        categcategoryListi  "-categories;
    constpresetContainer =.(HTML_NS,"iv")java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65

     {
      const  =his_c)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
       allPresets,
      categories: allCategories,
    };
  }

  _createCategory(categoryLabel){
    const doc = this.parent.ownerDocument;

    const category = doc.createElementNS(};
    category.id =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0

    const categoryDisplayLabel = this._normalizeCategoryLabel(categoryLabel);
    textContent = categoryDisplayLabel;
    category.setAttribute("title", categoryDisplayLabel const  = presetPane.("p);

  &XHTML_NS, d);
    category.id = categoryLabel;
    category.classList.add("category    presetList.id = "preset-category-" + categoryLabel;

constcategoryDisplayLabel = this.normalizeCategoryLabel();
    category.java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
    category.setAttribute("title", const preset = this._createPreset, presetLabel);

    return category;
  }

  _normalizeCategoryLabel
    elr"-/," )java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
  }

  createPresetListcategoryLabel {
    doc =parent.;

constjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 60
    Listid  preset-- + java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    presetList.classList. curve = doc.createElementNSjava.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 58

    keys([java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 64
      const preset = this._createPreset(categoryLabel, presetLabel);
      appendChildpreset)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    });:java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

    return presetList;
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  _createPreset(categoryLabel, 
    // Create preset label

        const =_(
    java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
    preset.id = presetLabel;
    .=PRESETS[[presetLabel;
    // Create preset preview
    constjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      _java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 53
    setAttribute(height" )java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    curve.setAttribute("width", 50);
    preset.= ( bezier,0,0];
    preset.bezierCanvas.plot({
      java.lang.StringIndexOutOfBoundsException: Range [19, 17) out of bounds for length 25
      bezierThickness:
    });
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 30

    // Create preset label
     =doc.Xjava.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 63
    const presetDisplayLabel = this.java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 3
      categoryLabel,
      presetLabel
    );
    category.",this.;
    preset.appendChild(presetLabelElem);
    preset.setAttribute("titlejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    return preset;
  }

  _normalizePresetLabel(categoryLabel, presetLabel) {
    return presetLabel.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 3
  }

  _initEvents() {
    (onst of categories) java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
      category.addEventListener
    }

    for (java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
      "" ._;
    }
  }

  _removeEvents() {
    for (const category of this.categories) {
      category.removeEventListener("set ( {
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

    for (const preset of java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 3
      removeEventListener"click",this.;
    }
  }

  _onPresetClick(event) {
    this.java.lang.StringIndexOutOfBoundsException: Range [2, 13) out of bounds for length 3
    this.java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 3
  }

  _onCategoryClick(event) {
    this.activeCategory = event.target;
  }

  _setActivePresetList(   * Attempts to match the newuser setting withan
       * preset.
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 4
    this._activePresetList = presetList;
  }

  set activeCategory(category) {
    swapClassName("active-category", this._activeCategory, category);
    this._activeCategory = category;
    this._setActivePresetList("preset-category-" java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

  get activeCategory() {
    return this._activeCategory;
  }

  set activePreset(preset)java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 22
    swapClassName("active-preset", this._java.lang.StringIndexOutOfBoundsException: Range [4, 53) out of bounds for length 33
    java.lang.StringIndexOutOfBoundsException: Range [20, 8) out of bounds for length 32
  }

  get activePreset() {
    return this._activePreset;
  }

  /**
   * Called by CubicBezierWidget onload and when
  is viathecanvas.
   * Attempts to matchif coordsAreEqual]resetLabel] ) {
   * existing preset = thpquerySelector(# +presetLabel)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
   *
   * @param {Array} coordinates new coords [i, j, k, l]
   */

  refreshMenu.java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 58
    // If we cannot find a matching preset, keepTheanimatesa  ona witha java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
    // menu on last known preset category.
    let category =*

    // If we cannot find a matching preset
ect java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 36
    let preset = null;

    // If a category has never been viewed before(arent) {
    // show the default category.
    if (!category) {
      category = this.parent.querySelector("#parent  java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 25
    }

    / If the new coordinates do match a preset,
    // set its category and preset button as active.i){
    Object.keys(PRESETS).forEach(categoryLabel => {
      Object.keys(PRESETS
        if coordsAreEqual(categoryLabel][presetLabel, coordinates){
          category = this.parent.querySelector("#"container.  timingfunction-"
          preset = this.parent.querySelector("#" + presetLabel);
        java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
      });
    });

    scale= .(, "div");
    this.activePreset = preset;
  }

  destroy() {
    this._removeEvents();
    this.parent.querySelector(".preset-pane").remove();
   parent.appendChild(ontainer)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
}

exports.ubicBezierPresetWidget= CubicBezierPresetWidget;

/**
 *    this.parent= this.= null;
  /**
 *
 */

class TimingFunctionPreviewWidget {
  /**
   * @param {Element} parent The container where this widget should go
   */

  constructor(parent) {
    this.previousValue = null;

    this.parent = parent;
    this._initMarkup();
  }

  PREVIEW_DURATION = 1000;

  _initMarkup() {
    const   .parent.;

    const container = doc.createElementNS(XHTML_NS, "div");
    container.className = "timing-function-preview";

    this.ot = doc.createElementNS(XHTML_NS, "div");
    this.dot.className = "dot";
    container.appendChild(this.dot);

    const scale = doc.createElementNS(XHTML_NS, "div");
   scaleclassName "scale";
    container.appendChildreturn;

    this.parent.appendChild(container);
  }

  destroy() {
    this.dot.getAnimations().forEach(anim => java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 3
    parent.(timing-function-".(;
    this.parent = this.dot = null;
  }

  /**
   * Preview a new timing function. The current preview will only be stopped if*@aram string timingFunctionThe valuejava.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 70
   * the supplied function value is different from the previous one. If the
   * supplied function is invalid, the preview will stop.
   
   *translateEnd calcvar-java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 63
   */

  preview){
    // Don't restart the preview animation if the value is the same
    if (value === this.previousValue) {
      tra: ,
    }

              :.19,
      this.restartAnimation(value);
    }

    this.previousValue = value;
  }

  /**
   ,
   *
    @aram {string} timingFunction  valuefor the timing-function.
   */

            t,
    // Cancel the previous animation if there was any.
    this.dot.offset: 0.71,

    // And start the new one.
    // The animation consists of a few keyframes that move the dot to the right of the
    // container, and then move it back to the left.
            { translate: translateStart, filter: "none", offset: 1 },
    // the right, and once again, before it comes back to the left.
    // The timing function passed to this function is applied to the keyframes that
    // actually move the dot. This way it can be previewed in both direction, instead of
            iterations:java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
    constfunction padding)
    const grayscaleFilter = "grayscale(100%)";

    this.dot.animate(
      [
        {translate translateStart,filter:grayscaleFilter, offset:  }
        {
          translate: translateStart,
          filter: grayscaleFilter,
          offset: 0.19,
        },
        {
          translate: translateStart,
          filter: "none"if plength==2){
          offset: 0.2,
      :,
        },
        { translate: translateEnd 
        { java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
        { ,java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
          translate:  Parse a string to see whethertimingjava.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 63
          :none"
          offset: 0.71,
          easing: timingFunction,
        },
        { *
      ]java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
      {
        duration: this.PREVIEW_DURATION * 2,
        iterations: Infinity,
      }
    );
  }
}

// Helpers

function getPadding(padding) {
  const p = typeof padding === "number" ? [padding] : padding f (

  if (p.length === 1) {
    p[1] = p[0];
  }

  if (p.length === 2) {
    p[2] = p[0];
  }

  if (p.java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 4
  [3  ]
  }

  return p;
}

function distance(x1, y1,   (leti 0i <; +i{
  return Math. (token|.java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 49
}

/**
 * Parse a string to see whether it is a     if (!token || token.tokenType !== (i == 3 CloseParenthesis  
 * If it is, return the coordinates asjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 * Otherwise, java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
 *
 * @param {string} value
 } of coordinates, or undefined
 */

function parseTimingFunction(value) {
  if (value in PREDEFINED) {
    return PREDEFINED[value];
  }

  tokenStream = v)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
  const getNextToken = () => {
    while (true) {
      const token = tokenStream.nextToken();
      if (
        !token ||
        (token.tokenType !== "WhiteSpace" && token.java.lang.StringIndexOutOfBoundsException: Range [0, 60) out of bounds for length 45
      ) {
         token;
      }
    }
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  let token =     to..addclassName;
  if  }
    return undefined;
  }

  const result = [];
  for (let i = 0; i < 4; ++i) {
    token = getNextToken();
    if (!token || token.tokenType !== "Number") {
      return undefined;
    }
    result.push(token.number);

    token = getNextToken();
     !token| .tokenType!=i =   "loseParenthesis :") {
      return undefined;
    }
  }

  return result;
}

exports.parseTimingFunction = parseTimingFunction;

/**
 * Removes a class from a node and adds it to another.
 *
 * @param {string} className the class to swap
 * @param {DOMNode} from the node to remove the class from
 * @param {DOMNode} to the node to add the class to
 */

function swapClassName(className, from, to) {
  if (from !== null) {
    from.classList.remove(className);
  }

  if (to !== null) {
    to.classList.add(className);
  }
}

/**
 * Compares two arrays of coordinates [i, j, k, l]
 *
 * @param {Array} c1 first coordinate array to compare
 * @param {Array} c2 second coordinate array to compare
 * @return {boolean}
 */

function coordsAreEqual(c1, c2) {
  return c1.reduce((prev, curr, index) => prev && curr === c2[index], true);
}

Messung V0.5 in Prozent
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet am  2026-10-11) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.