@itwin/core-markup 4.10.0-dev.9 → 4.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/lib/cjs/Markup.d.ts +0 -1
  3. package/lib/cjs/Markup.d.ts.map +1 -1
  4. package/lib/cjs/Markup.js.map +1 -1
  5. package/lib/cjs/MarkupTool.d.ts +0 -1
  6. package/lib/cjs/MarkupTool.d.ts.map +1 -1
  7. package/lib/cjs/MarkupTool.js.map +1 -1
  8. package/lib/cjs/RedlineTool.d.ts +0 -1
  9. package/lib/cjs/RedlineTool.d.ts.map +1 -1
  10. package/lib/cjs/RedlineTool.js.map +1 -1
  11. package/lib/cjs/SelectTool.d.ts +0 -1
  12. package/lib/cjs/SelectTool.d.ts.map +1 -1
  13. package/lib/cjs/SelectTool.js +1 -1
  14. package/lib/cjs/SelectTool.js.map +1 -1
  15. package/lib/cjs/SvgJsExt.d.ts.map +1 -1
  16. package/lib/cjs/SvgJsExt.js +2 -2
  17. package/lib/cjs/SvgJsExt.js.map +1 -1
  18. package/lib/cjs/TextEdit.d.ts +2 -3
  19. package/lib/cjs/TextEdit.d.ts.map +1 -1
  20. package/lib/cjs/TextEdit.js.map +1 -1
  21. package/lib/cjs/Undo.d.ts +0 -1
  22. package/lib/cjs/Undo.d.ts.map +1 -1
  23. package/lib/cjs/Undo.js.map +1 -1
  24. package/lib/cjs/core-markup.js.map +1 -1
  25. package/lib/esm/Markup.d.ts +0 -1
  26. package/lib/esm/Markup.d.ts.map +1 -1
  27. package/lib/esm/Markup.js.map +1 -1
  28. package/lib/esm/MarkupTool.d.ts +0 -1
  29. package/lib/esm/MarkupTool.d.ts.map +1 -1
  30. package/lib/esm/MarkupTool.js.map +1 -1
  31. package/lib/esm/RedlineTool.d.ts +0 -1
  32. package/lib/esm/RedlineTool.d.ts.map +1 -1
  33. package/lib/esm/RedlineTool.js.map +1 -1
  34. package/lib/esm/SelectTool.d.ts +0 -1
  35. package/lib/esm/SelectTool.d.ts.map +1 -1
  36. package/lib/esm/SelectTool.js +1 -1
  37. package/lib/esm/SelectTool.js.map +1 -1
  38. package/lib/esm/SvgJsExt.d.ts.map +1 -1
  39. package/lib/esm/SvgJsExt.js.map +1 -1
  40. package/lib/esm/TextEdit.d.ts +2 -3
  41. package/lib/esm/TextEdit.d.ts.map +1 -1
  42. package/lib/esm/TextEdit.js.map +1 -1
  43. package/lib/esm/Undo.d.ts +0 -1
  44. package/lib/esm/Undo.d.ts.map +1 -1
  45. package/lib/esm/Undo.js.map +1 -1
  46. package/lib/esm/core-markup.js.map +1 -1
  47. package/lib/public/locales/en/MarkupTools.json +98 -98
  48. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"SvgJsExt.d.ts","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAa,OAAO,IAAI,aAAa,EAAE,MAAM,EAAwC,MAAM,kBAAkB,CAAC;AAO1H,cAAc;AACd,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvE,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAEjD,UAAU,GAAG;QACX,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB;IACD,cAAc;IACd,UAAU,OAAO;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB,mGAAmG;QACnG,WAAW,IAAI,IAAI,CAAC;QACpB,mFAAmF;QACnF,UAAU,IAAI,IAAI,CAAC;QACnB,yEAAyE;QACzE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,wDAAwD;QACxD,MAAM,IAAI,IAAI,CAAC;QACf,mDAAmD;QACnD,QAAQ,IAAI,IAAI,CAAC;QACjB,0CAA0C;QAC1C,KAAK,IAAI,IAAI,CAAC;QACd,2BAA2B;QAC3B,OAAO,IAAI,IAAI,CAAC;QAChB,yCAAyC;QACzC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7E,kEAAkE;QAClE,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;QAC7B,oHAAoH;QACpH,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;QAErD,gBAAgB;QAChB,kBAAkB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;QAC7D,gBAAgB;QAChB,UAAU,IAAI,MAAM,CAAC;QACrB,gBAAgB;QAChB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC;IACD,cAAc;IACd,UAAU,IAAI;QACZ,SAAS,IAAI,MAAM,CAAC;QACpB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,WAAW,IAAI,MAAM,CAAC;KACvB;IAED,cAAc;IACd,UAAU,MAAM;QACd,uDAAuD;QACvD,iBAAiB,IAAI,SAAS,CAAC;QAC/B,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;KACzC;IAED,gBAAgB;IAChB,UAAU,SAAS;QACjB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;KAC7D;IACD,MAAM,aAAc,SAAQ,SAAS;KACpC;CACF;AAoJD;;GAEG;AACH,qBAAa,KAAM,SAAQ,aAAa;gBAC1B,IAAI,EAAE,GAAG;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CAE1B;AAGD;;GAEG;AACH,wBAAgB,UAAU,SAAM"}
1
+ {"version":3,"file":"SvgJsExt.d.ts","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAa,OAAO,IAAI,aAAa,EAAE,MAAM,EAAwC,MAAM,kBAAkB,CAAC;AAK1H,cAAc;AACd,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvE,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAEjD,UAAU,GAAG;QACX,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB;IACD,cAAc;IACd,UAAU,OAAO;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB,mGAAmG;QACnG,WAAW,IAAI,IAAI,CAAC;QACpB,mFAAmF;QACnF,UAAU,IAAI,IAAI,CAAC;QACnB,yEAAyE;QACzE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,wDAAwD;QACxD,MAAM,IAAI,IAAI,CAAC;QACf,mDAAmD;QACnD,QAAQ,IAAI,IAAI,CAAC;QACjB,0CAA0C;QAC1C,KAAK,IAAI,IAAI,CAAC;QACd,2BAA2B;QAC3B,OAAO,IAAI,IAAI,CAAC;QAChB,yCAAyC;QACzC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7E,kEAAkE;QAClE,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;QAC7B,oHAAoH;QACpH,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;QAErD,gBAAgB;QAChB,kBAAkB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;QAC7D,gBAAgB;QAChB,UAAU,IAAI,MAAM,CAAC;QACrB,gBAAgB;QAChB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC;IACD,cAAc;IACd,UAAU,IAAI;QACZ,SAAS,IAAI,MAAM,CAAC;QACpB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,WAAW,IAAI,MAAM,CAAC;KACvB;IAED,cAAc;IACd,UAAU,MAAM;QACd,uDAAuD;QACvD,iBAAiB,IAAI,SAAS,CAAC;QAC/B,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;KACzC;IAED,gBAAgB;IAChB,UAAU,SAAS;QACjB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;KAC7D;IACD,MAAM,aAAc,SAAQ,SAAS;KACpC;CACF;AAoJD;;GAEG;AACH,qBAAa,KAAM,SAAQ,aAAa;gBAC1B,IAAI,EAAE,GAAG;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CAE1B;AAGD;;GAEG;AACH,wBAAgB,UAAU,SAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"SvgJsExt.js","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupApp\r\n */\r\n\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { Box, extend, G, Element as MarkupElement, Matrix, nodeOrNew, Rect, register, Svg, Text } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\n\r\n// cspell:ignore lmultiply matrixify dmove\r\n/* eslint-disable nonblock-statement-body-position */\r\n/* eslint-disable max-statements-per-line */\r\n\r\n/** @public */\r\nexport interface MarkupColor {\r\n fill: any;\r\n stroke: any;\r\n}\r\n\r\n/** Add methods and classes to svg.js library for Markup.\r\n * @public\r\n */\r\ndeclare module \"@svgdotjs/svg.js\" {\r\n function register(subclass: typeof MarkupElement, name?: string): void; // eslint-disable-line @typescript-eslint/no-shadow\r\n function nodeOrNew(name: string, node: any): any; // eslint-disable-line @typescript-eslint/no-shadow\r\n\r\n interface Dom {\r\n css(val: object): this;\r\n }\r\n /** @public */\r\n interface Element {\r\n inSelection?: boolean;\r\n originalEl?: Element;\r\n\r\n /** make a copy of this Element, set its `isMarkup` flag, and reset its color if it was hilited. */\r\n cloneMarkup(): this;\r\n /** if this element is currently hilited or flashed, reset to its original color */\r\n resetColor(): void;\r\n /** override the color of this element to a new color, saving original */\r\n overrideColor(color: string): void;\r\n /** turn on `inSelection` and set its color to hilite */\r\n hilite(): void;\r\n /** turn off hilite, turn off `inSelection` flag */\r\n unHilite(): void;\r\n /** set this element to the flash color */\r\n flash(): void;\r\n /** turn off flash color */\r\n unFlash(): void;\r\n /** reposition and resize this element */\r\n markupStretch(x: number, y: number, w: number, h: number, mtx: Matrix): void;\r\n /** return true if this element is a child of the supplied Svg. */\r\n isChildOf(svg: Svg): boolean;\r\n /** return selectable element or the outermost group containing this element if it's a child of the supplied Svg. */\r\n getChildOrGroupOf(svg: G): MarkupElement | undefined;\r\n\r\n /** @internal */\r\n forElementsOfGroup(fn: (child: MarkupElement) => void): void;\r\n /** @internal */\r\n getNpcToVp(): Matrix;\r\n /** @internal */\r\n getOutline(expand?: number): Rect;\r\n }\r\n /** @public */\r\n interface Text {\r\n getMarkup(): string;\r\n createMarkup(val: string, spacing: number): void;\r\n getFontSize(): number;\r\n }\r\n\r\n /** @public */\r\n interface Matrix {\r\n /** convert this SVG.Matrix into an iModel Transform */\r\n toIModelTransform(): Transform;\r\n fromIModelTransform(t: Transform): this;\r\n }\r\n\r\n /** @internal */\r\n interface Container {\r\n foreignObject(width: number, height: number): ForeignObject;\r\n }\r\n class ForeignObject extends Container {\r\n }\r\n}\r\n\r\nconst OLDCOLOR = \"Color\";\r\n\r\n/** this is the SVG.js way of adding methods to classes */\r\nextend(MarkupElement, {\r\n forElementsOfGroup(fn: (child: MarkupElement) => void): void {\r\n const me = this as MarkupElement;\r\n if (me instanceof G)\r\n me.each((i, children) => { const child = children[i]; if (child instanceof MarkupElement) fn(child); }, false);\r\n },\r\n cloneMarkup(): MarkupElement {\r\n const me = this as MarkupElement;\r\n const cloned = me.clone();\r\n cloned.node.removeAttribute(\"id\");\r\n cloned.resetColor();\r\n return cloned;\r\n },\r\n overrideColor(color: string) {\r\n const me = this as MarkupElement;\r\n me.forElementsOfGroup((child) => child.overrideColor(color)); // Do children first, getComputedStyle will inherit from group for unspecified values...\r\n let oldColor = me.data(OLDCOLOR) as MarkupColor | undefined;\r\n if (undefined === oldColor) {\r\n const css = window.getComputedStyle(me.node);\r\n const colorOrNone = (c: string | null) => (c && c !== \"none\") ? c : \"none\";\r\n oldColor = { fill: colorOrNone(css.fill), stroke: colorOrNone(css.stroke) };\r\n me.data(OLDCOLOR, oldColor);\r\n }\r\n const toColor = (val: string | null) => (!val || val === \"none\") ? \"none\" : color;\r\n me.css({ fill: toColor(oldColor.fill), stroke: toColor(oldColor.stroke) });\r\n },\r\n resetColor() {\r\n const me = this as MarkupElement;\r\n const oldColor = me.data(OLDCOLOR) as MarkupColor;\r\n if (undefined !== oldColor)\r\n me.css(oldColor).data(OLDCOLOR, null); // change to old color and remove data object\r\n me.forElementsOfGroup((child) => child.resetColor());\r\n },\r\n hilite() { const me = this as MarkupElement; if (!me.inSelection) { me.overrideColor(MarkupApp.props.hilite.color); me.inSelection = true; } },\r\n unHilite() { const me = this as MarkupElement; if (me.inSelection) { me.resetColor(); me.inSelection = undefined; } },\r\n flash() { const me = this as MarkupElement; if (!me.inSelection) me.overrideColor(MarkupApp.props.hilite.flash); },\r\n unFlash() { const me = this as MarkupElement; if (!me.inSelection) me.resetColor(); },\r\n markupStretch(w: number, h: number, x: number, y: number, _mtx: Matrix) { const me = this as MarkupElement; me.size(w, h).move(x, y); },\r\n isChildOf(svg: Svg) {\r\n const parent = (this as MarkupElement).parent();\r\n return (parent === svg) ? true : (parent instanceof MarkupElement) ? parent.isChildOf(svg) : false;\r\n },\r\n getChildOrGroupOf(svg: G): MarkupElement | undefined {\r\n const me = this as MarkupElement;\r\n const parents = me.parents(svg.parent());\r\n if (0 === parents.length || parents[parents.length - 1].node !== svg.node)\r\n return undefined;\r\n if (parents.length > 1) {\r\n for (let index = parents.length - 2; index >= 0; --index)\r\n if (parents[index] instanceof G || parents[index] instanceof Text)\r\n return parents[index];\r\n }\r\n return me;\r\n },\r\n getNpcToVp(): Matrix {\r\n const me = this as MarkupElement;\r\n const bb = me.bbox();\r\n return new Matrix().scaleO(bb.w, bb.h).translateO(bb.x, bb.y).lmultiplyO(me.matrixify());\r\n },\r\n getOutline(expand?: number): Rect {\r\n const me = this as MarkupElement;\r\n const box = me.bbox();\r\n if (expand === undefined) expand = 0;\r\n return new Rect().move(box.x - expand, box.y - expand).size(box.w + (expand * 2), box.h + (expand * 2)).transform(me.matrixify());\r\n },\r\n});\r\n\r\nextend(G, {\r\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as G).attr(\"transform\", mtx); },\r\n});\r\nextend(Text, {\r\n getFontSize(): number { const me = this as Text; return parseFloat(window.getComputedStyle(me.node).fontSize); },\r\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as Text).attr(\"transform\", mtx); },\r\n getMarkup() {\r\n const node = (this as Text).node;\r\n let text = \"\";\r\n node.childNodes.forEach((child) => {\r\n if (child.nodeName === \"tspan\" || child.nodeName === \"#text\") {\r\n if (text.length !== 0) text += \"\\n\";\r\n text += child.textContent;\r\n }\r\n });\r\n return text;\r\n },\r\n createMarkup(val: string, spacing: number) {\r\n spacing = spacing ? spacing : 1;\r\n const me = this as Text;\r\n me.clear();\r\n if (val === \"\")\r\n return;\r\n const lines = val.split(\"\\n\");\r\n me.plain(lines[0]);\r\n const x = me.attr(\"x\");\r\n me.build(true);\r\n for (let i = 1; i < lines.length; ++i) {\r\n const tspan = me.tspan(lines[i]);\r\n tspan.dy(spacing);\r\n tspan.x(x);\r\n }\r\n me.build(false);\r\n me.dom = {};\r\n },\r\n // override for Text so that empty text will return a size\r\n getOutline(expand?: number): Rect {\r\n const me = this as Text;\r\n const node = me.node;\r\n const content = node.textContent;\r\n if (content !== null && content.length > 0)\r\n return MarkupElement.prototype.getOutline.call(me, expand);\r\n node.textContent = \"M\";\r\n const outline = MarkupElement.prototype.getOutline.call(me, expand);\r\n node.textContent = content;\r\n return outline;\r\n },\r\n writeDataToDom() {\r\n const me = this as Text;\r\n const dom = me.dom; // strip off useless \"leading\" data\r\n me.dom = {};\r\n MarkupElement.prototype.writeDataToDom.call(me);\r\n me.dom = dom;\r\n return me;\r\n },\r\n});\r\n\r\nextend(Matrix, {\r\n toIModelTransform() {\r\n const m = this as Matrix;\r\n return Transform.createRowValues(m.a, m.c, 0, m.e, m.b, m.d, 0, m.f, 0, 0, 1, 0);\r\n },\r\n fromIModelTransform(t: Transform) {\r\n const m = this as Matrix;\r\n const o = t.origin;\r\n const mtx = t.matrix;\r\n m.a = mtx.coffs[0];\r\n m.b = mtx.coffs[3];\r\n m.c = mtx.coffs[1];\r\n m.d = mtx.coffs[4];\r\n m.e = o.x;\r\n m.f = o.y;\r\n return this;\r\n },\r\n});\r\n\r\n/** Dummy class so a <title> inside a <g> will work.\r\n * @internal\r\n */\r\nexport class Title extends MarkupElement {\r\n constructor(node: any) { super(nodeOrNew(\"title\", node)); }\r\n public override scale() { return this; }\r\n public override size() { return this; }\r\n public override move() { return this; }\r\n public override dmove() { return this; }\r\n public override bbox() { return new Box(); }\r\n public override screenCTM() { return new Matrix(); }\r\n\r\n}\r\nregister(Title, \"Title\");\r\n\r\n/** only for tests\r\n * @internal\r\n */\r\nexport function initSvgExt() { }\r\n"]}
1
+ {"version":3,"file":"SvgJsExt.js","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MarkupApp\n */\n\nimport { Transform } from \"@itwin/core-geometry\";\nimport { Box, extend, G, Element as MarkupElement, Matrix, nodeOrNew, Rect, register, Svg, Text } from \"@svgdotjs/svg.js\";\nimport { MarkupApp } from \"./Markup\";\n\n// cspell:ignore lmultiply matrixify dmove\n\n/** @public */\nexport interface MarkupColor {\n fill: any;\n stroke: any;\n}\n\n/** Add methods and classes to svg.js library for Markup.\n * @public\n */\ndeclare module \"@svgdotjs/svg.js\" {\n function register(subclass: typeof MarkupElement, name?: string): void; // eslint-disable-line @typescript-eslint/no-shadow\n function nodeOrNew(name: string, node: any): any; // eslint-disable-line @typescript-eslint/no-shadow\n\n interface Dom {\n css(val: object): this;\n }\n /** @public */\n interface Element {\n inSelection?: boolean;\n originalEl?: Element;\n\n /** make a copy of this Element, set its `isMarkup` flag, and reset its color if it was hilited. */\n cloneMarkup(): this;\n /** if this element is currently hilited or flashed, reset to its original color */\n resetColor(): void;\n /** override the color of this element to a new color, saving original */\n overrideColor(color: string): void;\n /** turn on `inSelection` and set its color to hilite */\n hilite(): void;\n /** turn off hilite, turn off `inSelection` flag */\n unHilite(): void;\n /** set this element to the flash color */\n flash(): void;\n /** turn off flash color */\n unFlash(): void;\n /** reposition and resize this element */\n markupStretch(x: number, y: number, w: number, h: number, mtx: Matrix): void;\n /** return true if this element is a child of the supplied Svg. */\n isChildOf(svg: Svg): boolean;\n /** return selectable element or the outermost group containing this element if it's a child of the supplied Svg. */\n getChildOrGroupOf(svg: G): MarkupElement | undefined;\n\n /** @internal */\n forElementsOfGroup(fn: (child: MarkupElement) => void): void;\n /** @internal */\n getNpcToVp(): Matrix;\n /** @internal */\n getOutline(expand?: number): Rect;\n }\n /** @public */\n interface Text {\n getMarkup(): string;\n createMarkup(val: string, spacing: number): void;\n getFontSize(): number;\n }\n\n /** @public */\n interface Matrix {\n /** convert this SVG.Matrix into an iModel Transform */\n toIModelTransform(): Transform;\n fromIModelTransform(t: Transform): this;\n }\n\n /** @internal */\n interface Container {\n foreignObject(width: number, height: number): ForeignObject;\n }\n class ForeignObject extends Container {\n }\n}\n\nconst OLDCOLOR = \"Color\";\n\n/** this is the SVG.js way of adding methods to classes */\nextend(MarkupElement, {\n forElementsOfGroup(fn: (child: MarkupElement) => void): void {\n const me = this as MarkupElement;\n if (me instanceof G)\n me.each((i, children) => { const child = children[i]; if (child instanceof MarkupElement) fn(child); }, false);\n },\n cloneMarkup(): MarkupElement {\n const me = this as MarkupElement;\n const cloned = me.clone();\n cloned.node.removeAttribute(\"id\");\n cloned.resetColor();\n return cloned;\n },\n overrideColor(color: string) {\n const me = this as MarkupElement;\n me.forElementsOfGroup((child) => child.overrideColor(color)); // Do children first, getComputedStyle will inherit from group for unspecified values...\n let oldColor = me.data(OLDCOLOR) as MarkupColor | undefined;\n if (undefined === oldColor) {\n const css = window.getComputedStyle(me.node);\n const colorOrNone = (c: string | null) => (c && c !== \"none\") ? c : \"none\";\n oldColor = { fill: colorOrNone(css.fill), stroke: colorOrNone(css.stroke) };\n me.data(OLDCOLOR, oldColor);\n }\n const toColor = (val: string | null) => (!val || val === \"none\") ? \"none\" : color;\n me.css({ fill: toColor(oldColor.fill), stroke: toColor(oldColor.stroke) });\n },\n resetColor() {\n const me = this as MarkupElement;\n const oldColor = me.data(OLDCOLOR) as MarkupColor;\n if (undefined !== oldColor)\n me.css(oldColor).data(OLDCOLOR, null); // change to old color and remove data object\n me.forElementsOfGroup((child) => child.resetColor());\n },\n hilite() { const me = this as MarkupElement; if (!me.inSelection) { me.overrideColor(MarkupApp.props.hilite.color); me.inSelection = true; } },\n unHilite() { const me = this as MarkupElement; if (me.inSelection) { me.resetColor(); me.inSelection = undefined; } },\n flash() { const me = this as MarkupElement; if (!me.inSelection) me.overrideColor(MarkupApp.props.hilite.flash); },\n unFlash() { const me = this as MarkupElement; if (!me.inSelection) me.resetColor(); },\n markupStretch(w: number, h: number, x: number, y: number, _mtx: Matrix) { const me = this as MarkupElement; me.size(w, h).move(x, y); },\n isChildOf(svg: Svg) {\n const parent = (this as MarkupElement).parent();\n return (parent === svg) ? true : (parent instanceof MarkupElement) ? parent.isChildOf(svg) : false;\n },\n getChildOrGroupOf(svg: G): MarkupElement | undefined {\n const me = this as MarkupElement;\n const parents = me.parents(svg.parent());\n if (0 === parents.length || parents[parents.length - 1].node !== svg.node)\n return undefined;\n if (parents.length > 1) {\n for (let index = parents.length - 2; index >= 0; --index)\n if (parents[index] instanceof G || parents[index] instanceof Text)\n return parents[index];\n }\n return me;\n },\n getNpcToVp(): Matrix {\n const me = this as MarkupElement;\n const bb = me.bbox();\n return new Matrix().scaleO(bb.w, bb.h).translateO(bb.x, bb.y).lmultiplyO(me.matrixify());\n },\n getOutline(expand?: number): Rect {\n const me = this as MarkupElement;\n const box = me.bbox();\n if (expand === undefined) expand = 0;\n return new Rect().move(box.x - expand, box.y - expand).size(box.w + (expand * 2), box.h + (expand * 2)).transform(me.matrixify());\n },\n});\n\nextend(G, {\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as G).attr(\"transform\", mtx); },\n});\nextend(Text, {\n getFontSize(): number { const me = this as Text; return parseFloat(window.getComputedStyle(me.node).fontSize); },\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as Text).attr(\"transform\", mtx); },\n getMarkup() {\n const node = (this as Text).node;\n let text = \"\";\n node.childNodes.forEach((child) => {\n if (child.nodeName === \"tspan\" || child.nodeName === \"#text\") {\n if (text.length !== 0) text += \"\\n\";\n text += child.textContent;\n }\n });\n return text;\n },\n createMarkup(val: string, spacing: number) {\n spacing = spacing ? spacing : 1;\n const me = this as Text;\n me.clear();\n if (val === \"\")\n return;\n const lines = val.split(\"\\n\");\n me.plain(lines[0]);\n const x = me.attr(\"x\");\n me.build(true);\n for (let i = 1; i < lines.length; ++i) {\n const tspan = me.tspan(lines[i]);\n tspan.dy(spacing);\n tspan.x(x);\n }\n me.build(false);\n me.dom = {};\n },\n // override for Text so that empty text will return a size\n getOutline(expand?: number): Rect {\n const me = this as Text;\n const node = me.node;\n const content = node.textContent;\n if (content !== null && content.length > 0)\n return MarkupElement.prototype.getOutline.call(me, expand);\n node.textContent = \"M\";\n const outline = MarkupElement.prototype.getOutline.call(me, expand);\n node.textContent = content;\n return outline;\n },\n writeDataToDom() {\n const me = this as Text;\n const dom = me.dom; // strip off useless \"leading\" data\n me.dom = {};\n MarkupElement.prototype.writeDataToDom.call(me);\n me.dom = dom;\n return me;\n },\n});\n\nextend(Matrix, {\n toIModelTransform() {\n const m = this as Matrix;\n return Transform.createRowValues(m.a, m.c, 0, m.e, m.b, m.d, 0, m.f, 0, 0, 1, 0);\n },\n fromIModelTransform(t: Transform) {\n const m = this as Matrix;\n const o = t.origin;\n const mtx = t.matrix;\n m.a = mtx.coffs[0];\n m.b = mtx.coffs[3];\n m.c = mtx.coffs[1];\n m.d = mtx.coffs[4];\n m.e = o.x;\n m.f = o.y;\n return this;\n },\n});\n\n/** Dummy class so a <title> inside a <g> will work.\n * @internal\n */\nexport class Title extends MarkupElement {\n constructor(node: any) { super(nodeOrNew(\"title\", node)); }\n public override scale() { return this; }\n public override size() { return this; }\n public override move() { return this; }\n public override dmove() { return this; }\n public override bbox() { return new Box(); }\n public override screenCTM() { return new Matrix(); }\n\n}\nregister(Title, \"Title\");\n\n/** only for tests\n * @internal\n */\nexport function initSvgExt() { }\n"]}
@@ -1,7 +1,6 @@
1
1
  /** @packageDocumentation
2
2
  * @module MarkupTools
3
3
  */
4
- /// <reference path="SvgJsExt.d.ts" />
5
4
  import { BeButtonEvent, EventHandled } from "@itwin/core-frontend";
6
5
  import { G, Text as MarkupText } from "@svgdotjs/svg.js";
7
6
  import { MarkupTool } from "./MarkupTool";
@@ -24,14 +23,14 @@ export declare class PlaceTextTool extends RedlineTool {
24
23
  * @public
25
24
  */
26
25
  export declare class EditTextTool extends MarkupTool {
27
- text?: G | MarkupText | undefined;
26
+ text?: (MarkupText | G) | undefined;
28
27
  private _fromPlaceTool;
29
28
  static toolId: string;
30
29
  static iconSpec: string;
31
30
  editor?: HTMLTextAreaElement;
32
31
  editDiv?: HTMLDivElement;
33
32
  boxed?: G;
34
- constructor(text?: G | MarkupText | undefined, _fromPlaceTool?: boolean);
33
+ constructor(text?: (MarkupText | G) | undefined, _fromPlaceTool?: boolean);
35
34
  protected showPrompt(): void;
36
35
  /** Open the text editor */
37
36
  startEditor(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TextEdit.d.ts","sourceRoot":"","sources":["../../src/TextEdit.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,EACL,aAAa,EAAa,YAAY,EAEvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAuB,MAAM,SAAuB;IACpD,OAAuB,QAAQ,SAAsB;IACrD,UAAmB,gBAAgB,SAAK;IACxC,UAAmB,UAAU,SAAK;IAClC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAEJ,aAAa;cAKhB,UAAU,IAAI,IAAI;cAEZ,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAIjF;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAMvB,IAAI,CAAC;IAAkB,OAAO,CAAC,cAAc;IALhE,OAAuB,MAAM,SAAsB;IACnD,OAAuB,QAAQ,SAAsB;IAC9C,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,CAAC;gBACE,IAAI,CAAC,4BAAgB,EAAU,cAAc,UAAQ;cAErD,UAAU,IAAI,IAAI;IAoBrC,4BAA4B;IACrB,WAAW;IAqElB,+EAA+E;IACzD,SAAS;IAuCT,SAAS;IAOT,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAK1D,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAKzD,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAIlF"}
1
+ {"version":3,"file":"TextEdit.d.ts","sourceRoot":"","sources":["../../src/TextEdit.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,aAAa,EAAa,YAAY,EAEvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAuB,MAAM,SAAuB;IACpD,OAAuB,QAAQ,SAAsB;IACrD,UAAmB,gBAAgB,SAAK;IACxC,UAAmB,UAAU,SAAK;IAClC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAEJ,aAAa;cAKhB,UAAU,IAAI,IAAI;cAEZ,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAIjF;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAMvB,IAAI,CAAC,GAAE,UAAU,GAAG,CAAC;IAAE,OAAO,CAAC,cAAc;IALhE,OAAuB,MAAM,SAAsB;IACnD,OAAuB,QAAQ,SAAsB;IAC9C,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,CAAC;gBACE,IAAI,CAAC,GAAE,UAAU,GAAG,CAAC,aAAA,EAAU,cAAc,UAAQ;cAErD,UAAU,IAAI,IAAI;IAoBrC,4BAA4B;IACrB,WAAW;IAqElB,+EAA+E;IACzD,SAAS;IAuCT,SAAS;IAOT,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAK1D,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAKzD,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAIlF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextEdit.js","sourceRoot":"","sources":["../../src/TextEdit.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EACU,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,yBAAyB,GAE/H,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAqB;AAErB;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,WAAW;IAA9C;;QAGqB,qBAAgB,GAAG,CAAC,CAAC;QACrB,eAAU,GAAG,CAAC,CAAC;IA4BpC,CAAC;IAzBiB,KAAK,CAAC,aAAa;QACjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,4FAA4F;QAC3I,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAEkB,UAAU,KAAW,IAAI,CAAC,qBAAqB,CAAC,GAAG,UAAU,CAAC,OAAO,+BAA+B,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9G,KAAK,CAAC,YAAY,CAAC,GAAM,EAAE,EAAiB,EAAE,UAAmB;QAClF,IAAI,UAAU,IAAI,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW;YACpD,OAAO;QACT,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC;QAC7F,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,8BAA8B;QAChF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;QAClD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B;QAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC;QAC3E,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,4CAA4C;QACvJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,2CAA2C;QACvF,CAAC;IACH,CAAC;IACe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;;AA9BsB,oBAAM,GAAG,mBAAmB,AAAtB,CAAuB;AAC7B,sBAAQ,GAAG,kBAAkB,AAArB,CAAsB;AAgCvD;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAM1C,YAAmB,IAAqB,EAAU,iBAAiB,KAAK;QAAI,KAAK,EAAE,CAAC;QAAjE,SAAI,GAAJ,IAAI,CAAiB;QAAU,mBAAc,GAAd,cAAc,CAAQ;IAAa,CAAC;IAEnE,UAAU;QAC3B,MAAM,eAAe,GAAG,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC;QACxK,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAChE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5I,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,cAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,4BAA4B;IACrB,WAAW;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,KAAK,SAAS;YACpB,OAAO;QAET,IAAI,IAAI,YAAY,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAe,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC;gBAC/B,OAAO;YACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C;QACzG,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC1B,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC;QAC7C,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAEpC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC;QAEnE,MAAM,OAAO,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,2DAA2D;QAC9F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8DAA8D;QACnF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,qBAAqB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;QAC7C,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC;QAChC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,qGAAqG;QACrG,MAAM,aAAa,GAAG,CAAC,EAAS,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;QACjE,MAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,2CAA2C;QAEzJ,6DAA6D;QAC7D,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,EAAiB,EAAE,EAAE;YAC7C,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;gBAChG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,8DAA8D;YACjF,EAAE,CAAC,eAAe,EAAE,CAAC;QAEvB,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,qDAAqD;QAChH,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC;QAC5D,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QACrC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,iEAAiE;QAC5G,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,iBAAiB;QAEtD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/E,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE1C,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,2BAA2B;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,wBAAwB;QAE7C,qHAAqH;QACrH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpG,CAAC;IAED,+EAA+E;IAC/D,KAAK,CAAC,SAAS;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,OAAO;QAET,MAAM,IAAI,GAAG,IAAI,CAAC,IAAmB,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC;YAClC,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,sEAAsE;gBAChG,IAAI,CAAC,IAAI,CAAC,cAAc;oBACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,6CAA6C;gBAChE,OAAO;YACT,CAAC;YAED,IAAI,OAAO,GAAmB,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,IAAI,CAAC,eAAe,CAAE,QAAc,CAAC,MAAM,EAAO,EAAE,OAAO,CAAC,CAAC;gBACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACpC,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,cAAc;gBACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;gBAEtB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC;QACjC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,SAAS;QAC7B,IAAI,CAAC,MAAM,KAAK,CAAC,SAAS,EAAE;YAC1B,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,cAAc,CAAC,GAAkB;QACrD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,GAAkB;QACvD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;;AA7JsB,mBAAM,GAAG,kBAAkB,CAAC;AAC5B,qBAAQ,GAAG,kBAAkB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupTools\r\n */\r\n\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, IModelApp, InputSource, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod,\r\n ToolAssistanceInstruction, ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { G, Text as MarkupText } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\nimport { MarkupTool } from \"./MarkupTool\";\r\nimport { RedlineTool } from \"./RedlineTool\";\r\n\r\n// cspell:ignore rbox\r\n\r\n/** Tool to place new text notes on a Markup.\r\n * @public\r\n */\r\nexport class PlaceTextTool extends RedlineTool {\r\n public static override toolId = \"Markup.Text.Place\";\r\n public static override iconSpec = \"icon-text-medium\";\r\n protected override _nRequiredPoints = 1;\r\n protected override _minPoints = 0;\r\n protected _value!: string;\r\n\r\n public override async onPostInstall() {\r\n this._value = MarkupApp.props.text.startValue; // so applications can put a default string (e.g. user's initials) in the note. Can be empty\r\n return super.onPostInstall();\r\n }\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(`${MarkupTool.toolKey}Text.Place.Prompts.FirstPoint`, true); }\r\n\r\n protected override async createMarkup(svg: G, ev: BeButtonEvent, isDynamics: boolean): Promise<void> {\r\n if (isDynamics && InputSource.Touch === ev.inputSource)\r\n return;\r\n const start = MarkupApp.convertVpToVb(ev.viewPoint); // starting point in viewbox coordinates\r\n const text = new MarkupText().plain(this._value); // create a plain text element\r\n svg.put(text); // add it to the supplied container\r\n this.setCurrentTextStyle(text); // apply active text style\r\n text.translate(start.x, start.y); // and position it relative to the cursor\r\n if (isDynamics) {\r\n svg.add(text.getOutline().attr(MarkupApp.props.text.edit.textBox).addClass(MarkupApp.textOutlineClass)); // in dynamics, draw the box around the text\r\n } else {\r\n await new EditTextTool(text, true).run(); // text is now positioned, open text editor\r\n }\r\n }\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.exitTool();\r\n return EventHandled.Yes;\r\n }\r\n}\r\n\r\n/** Tool for editing text. Started automatically by the place text tool and by clicking on text from the SelectTool\r\n * @public\r\n */\r\nexport class EditTextTool extends MarkupTool {\r\n public static override toolId = \"Markup.Text.Edit\";\r\n public static override iconSpec = \"icon-text-medium\";\r\n public editor?: HTMLTextAreaElement;\r\n public editDiv?: HTMLDivElement;\r\n public boxed?: G;\r\n constructor(public text?: MarkupText | G, private _fromPlaceTool = false) { super(); }\r\n\r\n protected override showPrompt(): void {\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, IModelApp.localization.getLocalizedString(`${MarkupTool.toolKey}Text.Edit.Prompts.FirstPoint`));\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n\r\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.Accept\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n\r\n const sections: ToolAssistanceSection[] = [];\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\r\n\r\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\r\n IModelApp.notifications.setToolAssistance(instructions);\r\n }\r\n\r\n /** Open the text editor */\r\n public startEditor() {\r\n let text = this.text;\r\n if (text === undefined)\r\n return;\r\n\r\n if (text instanceof G) {\r\n this.boxed = text;\r\n text = text.children()[1] as MarkupText;\r\n if (!(text instanceof MarkupText))\r\n return;\r\n this.text = text;\r\n }\r\n const markupDiv = this.markup.markupDiv;\r\n const editDiv = this.editDiv = document.createElement(\"div\"); // create a new DIV to hold the text editor\r\n const editProps = MarkupApp.props.text.edit;\r\n let style = editDiv.style;\r\n style.backgroundColor = editProps.background;\r\n style.top = style.left = \"0\";\r\n style.right = style.bottom = \"100%\";\r\n\r\n markupDiv.appendChild(editDiv); // add textEditor div to markup div\r\n\r\n const divRect = markupDiv.getBoundingClientRect();\r\n const outline = text.getOutline(); // use the outline rather than the text in case it's blank.\r\n text.after(outline); // we have to add it to the DOM or the rbox call doesn't work.\r\n const rbox = outline.rbox();\r\n const bbox = outline.bbox();\r\n outline.remove(); // take it out again.\r\n const editor = this.editor = document.createElement(\"textarea\");\r\n editDiv.appendChild(editor);\r\n editor.className = MarkupApp.textEditorClass;\r\n editor.contentEditable = \"true\";\r\n editor.spellcheck = true;\r\n editor.wrap = \"off\";\r\n // so we don't send these events to the ToolAdmin and process them by tools. We want default handling\r\n const mouseListener = (ev: Event) => (ev.stopPropagation(), true);\r\n (editor as any).onselectstart = editor.oncontextmenu = editor.onmousedown = editor.onmouseup = mouseListener; // enable default handling for these events\r\n\r\n // Tab, Escape, ctrl-enter, or shift-enter all end the editor\r\n editor.onkeydown = async (ev: KeyboardEvent) => {\r\n if (ev.key === \"Tab\" || ev.key === \"Escape\" || (ev.key === \"Enter\" && (ev.shiftKey || ev.ctrlKey)))\r\n this.exitTool(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n ev.stopPropagation();\r\n\r\n };\r\n const textElStyle = window.getComputedStyle(text.node);\r\n\r\n style = editor.style;\r\n style.pointerEvents = \"auto\";\r\n style.position = \"absolute\";\r\n style.top = `${(rbox.cy - (bbox.h / 2)) - divRect.top}px`; // put the editor over the middle of the text element\r\n style.left = `${(rbox.cx - (bbox.w / 2)) - divRect.left}px`;\r\n style.height = editProps.size.height;\r\n style.width = editProps.size.width;\r\n style.resize = \"both\";\r\n style.fontFamily = textElStyle.fontFamily; // set the font family and anchor to the same as the text element\r\n style.textAnchor = textElStyle.textAnchor;\r\n style.fontSize = editProps.fontSize; // from app.props\r\n\r\n const parentZ = parseInt(window.getComputedStyle(markupDiv).zIndex || \"0\", 10);\r\n style.zIndex = (parentZ + 200).toString();\r\n\r\n editor.innerHTML = text.getMarkup(); // start with existing text\r\n this.editor.focus(); // give the editor focus\r\n\r\n // if we're started from the place text tool, select the entire current value, otherwise place the cursor at the end.\r\n this.editor.setSelectionRange(this._fromPlaceTool ? 0 : editor.value.length, editor.value.length);\r\n }\r\n\r\n /** Called when EditText exits, saves the edited value into the text element */\r\n public override async onCleanup() {\r\n if (!this.editDiv)\r\n return;\r\n\r\n const text = this.text! as MarkupText;\r\n const original = this.boxed ? this.boxed : text;\r\n const undo = this.markup.undo;\r\n undo.performOperation(this.keyin, () => {\r\n const newVal = this.editor!.value;\r\n if (newVal.trim() === \"\") { // if the result of the editing is blank, just delete the text element\r\n if (!this._fromPlaceTool)\r\n undo.onDelete(original);\r\n original.remove(); // must do this *after* we call undo.onDelete\r\n return;\r\n }\r\n\r\n let newText: G | MarkupText = text.clone();\r\n const fontSize = text.getFontSize();\r\n newText.createMarkup(newVal, fontSize);\r\n if (this.boxed) {\r\n newText = this.createBoxedText((original as G).parent() as G, newText);\r\n newText.matrix(original.matrix());\r\n }\r\n original.replace(newText);\r\n if (this._fromPlaceTool)\r\n undo.onAdded(newText);\r\n else\r\n undo.onModified(newText, original);\r\n });\r\n\r\n const editSize = MarkupApp.props.text.edit.size;\r\n const style = this.editor!.style;\r\n editSize.height = style.height;\r\n editSize.width = style.width;\r\n this.editDiv.remove();\r\n this.editDiv = undefined;\r\n this.editor = undefined;\r\n }\r\n\r\n public override async onInstall() {\r\n if (!await super.onInstall())\r\n return false;\r\n this.startEditor();\r\n return true;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.exitTool();\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override async onDataButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.exitTool();\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override async onMouseStartDrag(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.exitTool();\r\n return EventHandled.Yes;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TextEdit.js","sourceRoot":"","sources":["../../src/TextEdit.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MarkupTools\n */\n\nimport {\n BeButtonEvent, CoreTools, EventHandled, IModelApp, InputSource, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod,\n ToolAssistanceInstruction, ToolAssistanceSection,\n} from \"@itwin/core-frontend\";\nimport { G, Text as MarkupText } from \"@svgdotjs/svg.js\";\nimport { MarkupApp } from \"./Markup\";\nimport { MarkupTool } from \"./MarkupTool\";\nimport { RedlineTool } from \"./RedlineTool\";\n\n// cspell:ignore rbox\n\n/** Tool to place new text notes on a Markup.\n * @public\n */\nexport class PlaceTextTool extends RedlineTool {\n public static override toolId = \"Markup.Text.Place\";\n public static override iconSpec = \"icon-text-medium\";\n protected override _nRequiredPoints = 1;\n protected override _minPoints = 0;\n protected _value!: string;\n\n public override async onPostInstall() {\n this._value = MarkupApp.props.text.startValue; // so applications can put a default string (e.g. user's initials) in the note. Can be empty\n return super.onPostInstall();\n }\n\n protected override showPrompt(): void { this.provideToolAssistance(`${MarkupTool.toolKey}Text.Place.Prompts.FirstPoint`, true); }\n\n protected override async createMarkup(svg: G, ev: BeButtonEvent, isDynamics: boolean): Promise<void> {\n if (isDynamics && InputSource.Touch === ev.inputSource)\n return;\n const start = MarkupApp.convertVpToVb(ev.viewPoint); // starting point in viewbox coordinates\n const text = new MarkupText().plain(this._value); // create a plain text element\n svg.put(text); // add it to the supplied container\n this.setCurrentTextStyle(text); // apply active text style\n text.translate(start.x, start.y); // and position it relative to the cursor\n if (isDynamics) {\n svg.add(text.getOutline().attr(MarkupApp.props.text.edit.textBox).addClass(MarkupApp.textOutlineClass)); // in dynamics, draw the box around the text\n } else {\n await new EditTextTool(text, true).run(); // text is now positioned, open text editor\n }\n }\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.exitTool();\n return EventHandled.Yes;\n }\n}\n\n/** Tool for editing text. Started automatically by the place text tool and by clicking on text from the SelectTool\n * @public\n */\nexport class EditTextTool extends MarkupTool {\n public static override toolId = \"Markup.Text.Edit\";\n public static override iconSpec = \"icon-text-medium\";\n public editor?: HTMLTextAreaElement;\n public editDiv?: HTMLDivElement;\n public boxed?: G;\n constructor(public text?: MarkupText | G, private _fromPlaceTool = false) { super(); }\n\n protected override showPrompt(): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, IModelApp.localization.getLocalizedString(`${MarkupTool.toolKey}Text.Edit.Prompts.FirstPoint`));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.Accept\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n /** Open the text editor */\n public startEditor() {\n let text = this.text;\n if (text === undefined)\n return;\n\n if (text instanceof G) {\n this.boxed = text;\n text = text.children()[1] as MarkupText;\n if (!(text instanceof MarkupText))\n return;\n this.text = text;\n }\n const markupDiv = this.markup.markupDiv;\n const editDiv = this.editDiv = document.createElement(\"div\"); // create a new DIV to hold the text editor\n const editProps = MarkupApp.props.text.edit;\n let style = editDiv.style;\n style.backgroundColor = editProps.background;\n style.top = style.left = \"0\";\n style.right = style.bottom = \"100%\";\n\n markupDiv.appendChild(editDiv); // add textEditor div to markup div\n\n const divRect = markupDiv.getBoundingClientRect();\n const outline = text.getOutline(); // use the outline rather than the text in case it's blank.\n text.after(outline); // we have to add it to the DOM or the rbox call doesn't work.\n const rbox = outline.rbox();\n const bbox = outline.bbox();\n outline.remove(); // take it out again.\n const editor = this.editor = document.createElement(\"textarea\");\n editDiv.appendChild(editor);\n editor.className = MarkupApp.textEditorClass;\n editor.contentEditable = \"true\";\n editor.spellcheck = true;\n editor.wrap = \"off\";\n // so we don't send these events to the ToolAdmin and process them by tools. We want default handling\n const mouseListener = (ev: Event) => (ev.stopPropagation(), true);\n (editor as any).onselectstart = editor.oncontextmenu = editor.onmousedown = editor.onmouseup = mouseListener; // enable default handling for these events\n\n // Tab, Escape, ctrl-enter, or shift-enter all end the editor\n editor.onkeydown = async (ev: KeyboardEvent) => {\n if (ev.key === \"Tab\" || ev.key === \"Escape\" || (ev.key === \"Enter\" && (ev.shiftKey || ev.ctrlKey)))\n this.exitTool(); // eslint-disable-line @typescript-eslint/no-floating-promises\n ev.stopPropagation();\n\n };\n const textElStyle = window.getComputedStyle(text.node);\n\n style = editor.style;\n style.pointerEvents = \"auto\";\n style.position = \"absolute\";\n style.top = `${(rbox.cy - (bbox.h / 2)) - divRect.top}px`; // put the editor over the middle of the text element\n style.left = `${(rbox.cx - (bbox.w / 2)) - divRect.left}px`;\n style.height = editProps.size.height;\n style.width = editProps.size.width;\n style.resize = \"both\";\n style.fontFamily = textElStyle.fontFamily; // set the font family and anchor to the same as the text element\n style.textAnchor = textElStyle.textAnchor;\n style.fontSize = editProps.fontSize; // from app.props\n\n const parentZ = parseInt(window.getComputedStyle(markupDiv).zIndex || \"0\", 10);\n style.zIndex = (parentZ + 200).toString();\n\n editor.innerHTML = text.getMarkup(); // start with existing text\n this.editor.focus(); // give the editor focus\n\n // if we're started from the place text tool, select the entire current value, otherwise place the cursor at the end.\n this.editor.setSelectionRange(this._fromPlaceTool ? 0 : editor.value.length, editor.value.length);\n }\n\n /** Called when EditText exits, saves the edited value into the text element */\n public override async onCleanup() {\n if (!this.editDiv)\n return;\n\n const text = this.text! as MarkupText;\n const original = this.boxed ? this.boxed : text;\n const undo = this.markup.undo;\n undo.performOperation(this.keyin, () => {\n const newVal = this.editor!.value;\n if (newVal.trim() === \"\") { // if the result of the editing is blank, just delete the text element\n if (!this._fromPlaceTool)\n undo.onDelete(original);\n original.remove(); // must do this *after* we call undo.onDelete\n return;\n }\n\n let newText: G | MarkupText = text.clone();\n const fontSize = text.getFontSize();\n newText.createMarkup(newVal, fontSize);\n if (this.boxed) {\n newText = this.createBoxedText((original as G).parent() as G, newText);\n newText.matrix(original.matrix());\n }\n original.replace(newText);\n if (this._fromPlaceTool)\n undo.onAdded(newText);\n else\n undo.onModified(newText, original);\n });\n\n const editSize = MarkupApp.props.text.edit.size;\n const style = this.editor!.style;\n editSize.height = style.height;\n editSize.width = style.width;\n this.editDiv.remove();\n this.editDiv = undefined;\n this.editor = undefined;\n }\n\n public override async onInstall() {\n if (!await super.onInstall())\n return false;\n this.startEditor();\n return true;\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.exitTool();\n return EventHandled.Yes;\n }\n\n public override async onDataButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.exitTool();\n return EventHandled.Yes;\n }\n\n public override async onMouseStartDrag(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.exitTool();\n return EventHandled.Yes;\n }\n}\n"]}
package/lib/esm/Undo.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  /** @packageDocumentation
2
2
  * @module MarkupTools
3
3
  */
4
- /// <reference path="SvgJsExt.d.ts" />
5
4
  import { Element as MarkupElement } from "@svgdotjs/svg.js";
6
5
  /** Stores the sequence of operations performed on a Markup. Facilitates undo/redo of the operations.
7
6
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"Undo.d.ts","sourceRoot":"","sources":["../../src/Undo.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6F5D;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,SAAS;IAOjB,gBAAgB;IAChB,IAAW,IAAI,WAAiC;IAChD,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IAEhB;;;;OAIG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY;IAOzD,0GAA0G;IACnG,OAAO,CAAC,IAAI,EAAE,aAAa;IAClC,qHAAqH;IAC9G,QAAQ,CAAC,IAAI,EAAE,aAAa;IACnC,2HAA2H;IACpH,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa;IACrF,6GAA6G;IACtG,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;IAEhE,6DAA6D;IAC7D,IAAW,YAAY,YAAmC;IAC1D,0DAA0D;IAC1D,IAAW,YAAY,YAA2C;IAClE,kEAAkE;IAClE,IAAW,UAAU,uBAAwF;IAC7G,kEAAkE;IAClE,IAAW,UAAU,uBAAoF;IAEzG,gDAAgD;IACzC,MAAM;IAQb,6DAA6D;IACtD,MAAM;CAQd"}
1
+ {"version":3,"file":"Undo.d.ts","sourceRoot":"","sources":["../../src/Undo.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6F5D;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,SAAS;IAOjB,gBAAgB;IAChB,IAAW,IAAI,WAAiC;IAChD,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IAEhB;;;;OAIG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY;IAOzD,0GAA0G;IACnG,OAAO,CAAC,IAAI,EAAE,aAAa;IAClC,qHAAqH;IAC9G,QAAQ,CAAC,IAAI,EAAE,aAAa;IACnC,2HAA2H;IACpH,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa;IACrF,6GAA6G;IACtG,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa;IAEhE,6DAA6D;IAC7D,IAAW,YAAY,YAAmC;IAC1D,0DAA0D;IAC1D,IAAW,YAAY,YAA2C;IAClE,kEAAkE;IAClE,IAAW,UAAU,uBAAwF;IAC7G,kEAAkE;IAClE,IAAW,UAAU,uBAAoF;IAEzG,gDAAgD;IACzC,MAAM;IAQb,6DAA6D;IACtD,MAAM;CAQd"}
@@ -1 +1 @@
1
- {"version":3,"file":"Undo.js","sourceRoot":"","sources":["../../src/Undo.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupTools\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Element as MarkupElement } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\n\r\n/* @internal */\r\nabstract class UndoAction {\r\n public cmdId: number = 0;\r\n public abstract reverse(): void;\r\n public abstract reinstate(): void;\r\n constructor(public cmdName: string) { }\r\n}\r\n\r\n/** created when a new element is added to the markup\r\n * @internal\r\n */\r\nclass AddAction extends UndoAction {\r\n private _parent: MarkupElement;\r\n private _index: number;\r\n constructor(cmdName: string, private _elem: MarkupElement) {\r\n super(cmdName);\r\n this._parent = _elem.parent() as MarkupElement;\r\n assert(this._parent !== undefined);\r\n this._index = _elem.position();\r\n }\r\n public reinstate() { this._parent.add(this._elem, this._index); }\r\n public reverse() {\r\n MarkupApp.markup!.selected.drop(this._elem);\r\n this._elem.remove();\r\n }\r\n}\r\n\r\n/** created when an existing element is deleted from the markup\r\n * @internal\r\n */\r\nclass DeleteAction extends UndoAction {\r\n private _parent: MarkupElement;\r\n private _index: number;\r\n constructor(cmdName: string, private _elem: MarkupElement) {\r\n super(cmdName);\r\n this._parent = _elem.parent() as MarkupElement;\r\n assert(this._parent !== undefined);\r\n this._index = _elem.position();\r\n }\r\n public reverse() { this._parent.add(this._elem, this._index); }\r\n public reinstate() {\r\n MarkupApp.markup!.selected.drop(this._elem);\r\n this._elem.remove();\r\n }\r\n}\r\n\r\n/** created when an existing element's position is moved in the display order. This can also include re-parenting\r\n * @internal\r\n */\r\nclass RepositionAction extends UndoAction {\r\n private _newParent: MarkupElement;\r\n private _newIndex: number;\r\n\r\n constructor(cmdName: string, private _elem: MarkupElement, private _oldIndex: number, private _oldParent: MarkupElement) {\r\n super(cmdName);\r\n this._newParent = _elem.parent() as MarkupElement;\r\n assert(this._newParent !== undefined);\r\n this._newIndex = _elem.position();\r\n }\r\n public reinstate() {\r\n this._newParent.add(this._elem, this._newIndex);\r\n }\r\n\r\n public reverse() {\r\n this._oldParent.add(this._elem, this._oldIndex);\r\n if (this._elem.inSelection)\r\n MarkupApp.markup!.selected.drop(this._elem);\r\n }\r\n}\r\n\r\n/** created when an existing element's properties are modified.\r\n * @internal\r\n */\r\nclass ModifyAction extends UndoAction {\r\n constructor(cmdName: string, private _newElem: MarkupElement, private _oldElement: MarkupElement) {\r\n super(cmdName);\r\n assert(_newElem !== undefined && _oldElement !== undefined);\r\n MarkupApp.markup!.selected.replace(_oldElement, _newElem);\r\n }\r\n public reinstate() {\r\n this._oldElement.replace(this._newElem);\r\n MarkupApp.markup!.selected.replace(this._oldElement, this._newElem);\r\n }\r\n\r\n public reverse() {\r\n this._newElem.replace(this._oldElement);\r\n MarkupApp.markup!.selected.replace(this._newElem, this._oldElement);\r\n }\r\n}\r\n\r\n/** Stores the sequence of operations performed on a Markup. Facilitates undo/redo of the operations.\r\n * @public\r\n */\r\nexport class UndoManager {\r\n private _currentCmd = 0;\r\n private _grouped = 0;\r\n private _stack: UndoAction[] = [];\r\n private _currentPos = 0;\r\n private _cmdName = \"\";\r\n\r\n private addAction(action: UndoAction) {\r\n this._stack.length = this._currentPos;\r\n action.cmdId = this._currentCmd;\r\n this._stack.push(action);\r\n this._currentPos = this.size;\r\n }\r\n\r\n /** @internal */\r\n public get size() { return this._stack.length; }\r\n private startCommand() {\r\n if (0 === this._grouped)\r\n ++this._currentCmd;\r\n }\r\n\r\n private startGroup() {\r\n this.startCommand();\r\n ++this._grouped;\r\n }\r\n\r\n private endGroup() { --this._grouped; }\r\n\r\n /** Perform a series of changes to markup elements that should all be reversed as a single operation.\r\n * @param fn the function that performs the changes to the elements. It must call the onXXX methods of this class to store\r\n * the operations in the undo buffer.\r\n * @note all of the onXXX methods of this class should *only* be called from within the callback function of this method.\r\n */\r\n public performOperation(cmdName: string, fn: VoidFunction) {\r\n this._cmdName = cmdName;\r\n this.startGroup();\r\n fn();\r\n this.endGroup();\r\n }\r\n\r\n /** call this from within a [[performOperation]] function *after* an element has been added to a markup */\r\n public onAdded(elem: MarkupElement) { this.addAction(new AddAction(this._cmdName, elem)); }\r\n /** call this from within a [[performOperation]] function *before* an element is about to be deleted from a markup */\r\n public onDelete(elem: MarkupElement) { this.addAction(new DeleteAction(this._cmdName, elem)); }\r\n /** call this from within a [[performOperation]] function *after* an element has been moved in display order in a markup */\r\n public onRepositioned(elem: MarkupElement, oldIndex: number, oldParent: MarkupElement) { this.addAction(new RepositionAction(this._cmdName, elem, oldIndex, oldParent)); }\r\n /** call this from within a [[performOperation]] function *after* an element has been modified in a markup */\r\n public onModified(newElem: MarkupElement, oldElem: MarkupElement) { this.addAction(new ModifyAction(this._cmdName, newElem, oldElem)); }\r\n\r\n /** determine whether there are any un-reversed operations */\r\n public get undoPossible() { return this._currentPos > 0; }\r\n /** determine whether there are any reversed operations */\r\n public get redoPossible() { return this._currentPos < this.size; }\r\n /** the name of the operation that can be undone (or undefined) */\r\n public get undoString() { return this.undoPossible ? this._stack[this._currentPos - 1].cmdName : undefined; }\r\n /** the name of the operation that can be redone (or undefined) */\r\n public get redoString() { return this.redoPossible ? this._stack[this._currentPos].cmdName : undefined; }\r\n\r\n /** reverse the most recent operation, if any */\r\n public doUndo() {\r\n if (this._currentPos === 0)\r\n return; // no operations have been performed\r\n\r\n const cmdId = this._stack[this._currentPos - 1].cmdId;\r\n while (this._currentPos > 0 && cmdId === this._stack[this._currentPos - 1].cmdId)\r\n this._stack[--this._currentPos].reverse();\r\n }\r\n /** reinstate the most recently reversed operation, if any */\r\n public doRedo() {\r\n if (this._currentPos === this.size)\r\n return; // no operations have been reversed.\r\n\r\n const cmdId = this._stack[this._currentPos].cmdId;\r\n while (this._currentPos < this.size && cmdId === this._stack[this._currentPos].cmdId)\r\n this._stack[this._currentPos++].reinstate();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Undo.js","sourceRoot":"","sources":["../../src/Undo.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MarkupTools\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Element as MarkupElement } from \"@svgdotjs/svg.js\";\nimport { MarkupApp } from \"./Markup\";\n\n/* @internal */\nabstract class UndoAction {\n public cmdId: number = 0;\n public abstract reverse(): void;\n public abstract reinstate(): void;\n constructor(public cmdName: string) { }\n}\n\n/** created when a new element is added to the markup\n * @internal\n */\nclass AddAction extends UndoAction {\n private _parent: MarkupElement;\n private _index: number;\n constructor(cmdName: string, private _elem: MarkupElement) {\n super(cmdName);\n this._parent = _elem.parent() as MarkupElement;\n assert(this._parent !== undefined);\n this._index = _elem.position();\n }\n public reinstate() { this._parent.add(this._elem, this._index); }\n public reverse() {\n MarkupApp.markup!.selected.drop(this._elem);\n this._elem.remove();\n }\n}\n\n/** created when an existing element is deleted from the markup\n * @internal\n */\nclass DeleteAction extends UndoAction {\n private _parent: MarkupElement;\n private _index: number;\n constructor(cmdName: string, private _elem: MarkupElement) {\n super(cmdName);\n this._parent = _elem.parent() as MarkupElement;\n assert(this._parent !== undefined);\n this._index = _elem.position();\n }\n public reverse() { this._parent.add(this._elem, this._index); }\n public reinstate() {\n MarkupApp.markup!.selected.drop(this._elem);\n this._elem.remove();\n }\n}\n\n/** created when an existing element's position is moved in the display order. This can also include re-parenting\n * @internal\n */\nclass RepositionAction extends UndoAction {\n private _newParent: MarkupElement;\n private _newIndex: number;\n\n constructor(cmdName: string, private _elem: MarkupElement, private _oldIndex: number, private _oldParent: MarkupElement) {\n super(cmdName);\n this._newParent = _elem.parent() as MarkupElement;\n assert(this._newParent !== undefined);\n this._newIndex = _elem.position();\n }\n public reinstate() {\n this._newParent.add(this._elem, this._newIndex);\n }\n\n public reverse() {\n this._oldParent.add(this._elem, this._oldIndex);\n if (this._elem.inSelection)\n MarkupApp.markup!.selected.drop(this._elem);\n }\n}\n\n/** created when an existing element's properties are modified.\n * @internal\n */\nclass ModifyAction extends UndoAction {\n constructor(cmdName: string, private _newElem: MarkupElement, private _oldElement: MarkupElement) {\n super(cmdName);\n assert(_newElem !== undefined && _oldElement !== undefined);\n MarkupApp.markup!.selected.replace(_oldElement, _newElem);\n }\n public reinstate() {\n this._oldElement.replace(this._newElem);\n MarkupApp.markup!.selected.replace(this._oldElement, this._newElem);\n }\n\n public reverse() {\n this._newElem.replace(this._oldElement);\n MarkupApp.markup!.selected.replace(this._newElem, this._oldElement);\n }\n}\n\n/** Stores the sequence of operations performed on a Markup. Facilitates undo/redo of the operations.\n * @public\n */\nexport class UndoManager {\n private _currentCmd = 0;\n private _grouped = 0;\n private _stack: UndoAction[] = [];\n private _currentPos = 0;\n private _cmdName = \"\";\n\n private addAction(action: UndoAction) {\n this._stack.length = this._currentPos;\n action.cmdId = this._currentCmd;\n this._stack.push(action);\n this._currentPos = this.size;\n }\n\n /** @internal */\n public get size() { return this._stack.length; }\n private startCommand() {\n if (0 === this._grouped)\n ++this._currentCmd;\n }\n\n private startGroup() {\n this.startCommand();\n ++this._grouped;\n }\n\n private endGroup() { --this._grouped; }\n\n /** Perform a series of changes to markup elements that should all be reversed as a single operation.\n * @param fn the function that performs the changes to the elements. It must call the onXXX methods of this class to store\n * the operations in the undo buffer.\n * @note all of the onXXX methods of this class should *only* be called from within the callback function of this method.\n */\n public performOperation(cmdName: string, fn: VoidFunction) {\n this._cmdName = cmdName;\n this.startGroup();\n fn();\n this.endGroup();\n }\n\n /** call this from within a [[performOperation]] function *after* an element has been added to a markup */\n public onAdded(elem: MarkupElement) { this.addAction(new AddAction(this._cmdName, elem)); }\n /** call this from within a [[performOperation]] function *before* an element is about to be deleted from a markup */\n public onDelete(elem: MarkupElement) { this.addAction(new DeleteAction(this._cmdName, elem)); }\n /** call this from within a [[performOperation]] function *after* an element has been moved in display order in a markup */\n public onRepositioned(elem: MarkupElement, oldIndex: number, oldParent: MarkupElement) { this.addAction(new RepositionAction(this._cmdName, elem, oldIndex, oldParent)); }\n /** call this from within a [[performOperation]] function *after* an element has been modified in a markup */\n public onModified(newElem: MarkupElement, oldElem: MarkupElement) { this.addAction(new ModifyAction(this._cmdName, newElem, oldElem)); }\n\n /** determine whether there are any un-reversed operations */\n public get undoPossible() { return this._currentPos > 0; }\n /** determine whether there are any reversed operations */\n public get redoPossible() { return this._currentPos < this.size; }\n /** the name of the operation that can be undone (or undefined) */\n public get undoString() { return this.undoPossible ? this._stack[this._currentPos - 1].cmdName : undefined; }\n /** the name of the operation that can be redone (or undefined) */\n public get redoString() { return this.redoPossible ? this._stack[this._currentPos].cmdName : undefined; }\n\n /** reverse the most recent operation, if any */\n public doUndo() {\n if (this._currentPos === 0)\n return; // no operations have been performed\n\n const cmdId = this._stack[this._currentPos - 1].cmdId;\n while (this._currentPos > 0 && cmdId === this._stack[this._currentPos - 1].cmdId)\n this._stack[--this._currentPos].reverse();\n }\n /** reinstate the most recently reversed operation, if any */\n public doRedo() {\n if (this._currentPos === this.size)\n return; // no operations have been reversed.\n\n const cmdId = this._stack[this._currentPos].cmdId;\n while (this._currentPos < this.size && cmdId === this._stack[this._currentPos].cmdId)\n this._stack[this._currentPos++].reinstate();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"core-markup.js","sourceRoot":"","sources":["../../src/core-markup.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAE3B;;GAEG;AACH;;;GAGG;AACH;;;GAGG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nexport * from \"./Markup\";\r\nexport * from \"./MarkupTool\";\r\nexport * from \"./RedlineTool\";\r\nexport * from \"./SelectTool\";\r\nexport * from \"./TextEdit\";\r\nexport * from \"./Undo\";\r\nexport * from \"./SvgJsExt\";\r\n\r\n/** @docs-package-description\r\n * The core-markup package supplies tools for creating, editing, and saving SVG-based markups of Viewports.\r\n */\r\n/**\r\n * @docs-group-description MarkupApp\r\n * Classes for configuring and administering the markup system.\r\n */\r\n/**\r\n * @docs-group-description MarkupTools\r\n * Classes for supplying interactive tools for creating and editing markup elements.\r\n */\r\n"]}
1
+ {"version":3,"file":"core-markup.js","sourceRoot":"","sources":["../../src/core-markup.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAE3B;;GAEG;AACH;;;GAGG;AACH;;;GAGG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nexport * from \"./Markup\";\nexport * from \"./MarkupTool\";\nexport * from \"./RedlineTool\";\nexport * from \"./SelectTool\";\nexport * from \"./TextEdit\";\nexport * from \"./Undo\";\nexport * from \"./SvgJsExt\";\n\n/** @docs-package-description\n * The core-markup package supplies tools for creating, editing, and saving SVG-based markups of Viewports.\n */\n/**\n * @docs-group-description MarkupApp\n * Classes for configuring and administering the markup system.\n */\n/**\n * @docs-group-description MarkupTools\n * Classes for supplying interactive tools for creating and editing markup elements.\n */\n"]}
@@ -1,98 +1,98 @@
1
- {
2
- "actions": {
3
- "modify": "Modify markup",
4
- "group": "Group markups",
5
- "ungroup": "Ungroup markup",
6
- "delete": "Delete markup",
7
- "copy": "Copy markup",
8
- "toFront": "Bring to front",
9
- "toBack": "Send To back"
10
- },
11
- "tools": {
12
- "Markup": {
13
- "Select": {
14
- "keyin": "Markup Select",
15
- "description": "Markup selection tool",
16
- "Prompts": {
17
- "IdentifyMarkup": "Identify markup element",
18
- "AcceptMarkup": "Accept markup element"
19
- }
20
- },
21
- "Line": {
22
- "keyin": "Markup Line",
23
- "description": "Draw line",
24
- "flyover": "Line"
25
- },
26
- "Rectangle": {
27
- "keyin": "Markup Rectangle",
28
- "description": "Draw rectangle",
29
- "flyover": "Rectangle"
30
- },
31
- "Polygon": {
32
- "keyin": "Markup Polygon",
33
- "description": "Draw polygon",
34
- "flyover": "Polygon",
35
- "Prompts": {
36
- "FirstPoint": "Identify center",
37
- "NextPoint": "Define point on edge"
38
- }
39
- },
40
- "Circle": {
41
- "keyin": "Markup Circle",
42
- "description": "Draw circle",
43
- "flyover": "Circle",
44
- "Prompts": {
45
- "FirstPoint": "Identify center",
46
- "NextPoint": "Define radius"
47
- }
48
- },
49
- "Ellipse": {
50
- "keyin": "Markup Ellipse",
51
- "description": "Draw ellipse",
52
- "flyover": "Ellipse"
53
- },
54
- "Arrow": {
55
- "keyin": "Markup Arrow",
56
- "description": "Draw arrow",
57
- "flyover": "Arrow"
58
- },
59
- "Distance": {
60
- "keyin": "Markup Distance",
61
- "description": "Markup distance between points"
62
- },
63
- "Cloud": {
64
- "keyin": "Markup Cloud",
65
- "description": "Draw cloud",
66
- "flyover": "Cloud"
67
- },
68
- "Sketch": {
69
- "keyin": "Markup Sketch",
70
- "description": "Draw freehand sketch",
71
- "flyover": "Sketch"
72
- },
73
- "Symbol": {
74
- "keyin": "Markup Symbol",
75
- "description": "Place symbol",
76
- "Prompts": {
77
- "FirstPoint": "Define center or drag to define corners"
78
- }
79
- },
80
- "Text": {
81
- "Place": {
82
- "keyin": "Place Markup Text",
83
- "description": "Add text box",
84
- "Prompts": {
85
- "FirstPoint": "Identify text location"
86
- }
87
- },
88
- "Edit": {
89
- "keyin": "Edit Markup Text",
90
- "description": "Edit text",
91
- "Prompts": {
92
- "FirstPoint": "Enter text"
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
1
+ {
2
+ "actions": {
3
+ "modify": "Modify markup",
4
+ "group": "Group markups",
5
+ "ungroup": "Ungroup markup",
6
+ "delete": "Delete markup",
7
+ "copy": "Copy markup",
8
+ "toFront": "Bring to front",
9
+ "toBack": "Send To back"
10
+ },
11
+ "tools": {
12
+ "Markup": {
13
+ "Select": {
14
+ "keyin": "Markup Select",
15
+ "description": "Markup selection tool",
16
+ "Prompts": {
17
+ "IdentifyMarkup": "Identify markup element",
18
+ "AcceptMarkup": "Accept markup element"
19
+ }
20
+ },
21
+ "Line": {
22
+ "keyin": "Markup Line",
23
+ "description": "Draw line",
24
+ "flyover": "Line"
25
+ },
26
+ "Rectangle": {
27
+ "keyin": "Markup Rectangle",
28
+ "description": "Draw rectangle",
29
+ "flyover": "Rectangle"
30
+ },
31
+ "Polygon": {
32
+ "keyin": "Markup Polygon",
33
+ "description": "Draw polygon",
34
+ "flyover": "Polygon",
35
+ "Prompts": {
36
+ "FirstPoint": "Identify center",
37
+ "NextPoint": "Define point on edge"
38
+ }
39
+ },
40
+ "Circle": {
41
+ "keyin": "Markup Circle",
42
+ "description": "Draw circle",
43
+ "flyover": "Circle",
44
+ "Prompts": {
45
+ "FirstPoint": "Identify center",
46
+ "NextPoint": "Define radius"
47
+ }
48
+ },
49
+ "Ellipse": {
50
+ "keyin": "Markup Ellipse",
51
+ "description": "Draw ellipse",
52
+ "flyover": "Ellipse"
53
+ },
54
+ "Arrow": {
55
+ "keyin": "Markup Arrow",
56
+ "description": "Draw arrow",
57
+ "flyover": "Arrow"
58
+ },
59
+ "Distance": {
60
+ "keyin": "Markup Distance",
61
+ "description": "Markup distance between points"
62
+ },
63
+ "Cloud": {
64
+ "keyin": "Markup Cloud",
65
+ "description": "Draw cloud",
66
+ "flyover": "Cloud"
67
+ },
68
+ "Sketch": {
69
+ "keyin": "Markup Sketch",
70
+ "description": "Draw freehand sketch",
71
+ "flyover": "Sketch"
72
+ },
73
+ "Symbol": {
74
+ "keyin": "Markup Symbol",
75
+ "description": "Place symbol",
76
+ "Prompts": {
77
+ "FirstPoint": "Define center or drag to define corners"
78
+ }
79
+ },
80
+ "Text": {
81
+ "Place": {
82
+ "keyin": "Place Markup Text",
83
+ "description": "Add text box",
84
+ "Prompts": {
85
+ "FirstPoint": "Identify text location"
86
+ }
87
+ },
88
+ "Edit": {
89
+ "keyin": "Edit Markup Text",
90
+ "description": "Edit text",
91
+ "Prompts": {
92
+ "FirstPoint": "Enter text"
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-markup",
3
- "version": "4.10.0-dev.9",
3
+ "version": "4.10.1",
4
4
  "description": "iTwin.js markup package",
5
5
  "main": "lib/cjs/core-markup.js",
6
6
  "module": "lib/esm/core-markup.js",
@@ -27,33 +27,33 @@
27
27
  "@svgdotjs/svg.js": "3.0.16"
28
28
  },
29
29
  "peerDependencies": {
30
- "@itwin/core-bentley": "^4.10.0-dev.9",
31
- "@itwin/core-common": "^4.10.0-dev.9",
32
- "@itwin/core-frontend": "^4.10.0-dev.9",
33
- "@itwin/core-geometry": "^4.10.0-dev.9"
30
+ "@itwin/core-bentley": "^4.10.1",
31
+ "@itwin/core-common": "^4.10.1",
32
+ "@itwin/core-frontend": "^4.10.1",
33
+ "@itwin/core-geometry": "^4.10.1"
34
34
  },
35
35
  "devDependencies": {
36
- "@itwin/eslint-plugin": "^4.0.2",
36
+ "@itwin/eslint-plugin": "5.0.0-dev.1",
37
37
  "@types/chai": "4.3.1",
38
38
  "@types/mocha": "^10.0.6",
39
39
  "babel-loader": "~8.2.5",
40
40
  "babel-plugin-istanbul": "~6.1.1",
41
41
  "chai": "^4.3.10",
42
42
  "cpx2": "^3.0.0",
43
- "eslint": "^8.56.0",
43
+ "eslint": "^9.13.0",
44
44
  "glob": "^10.3.12",
45
45
  "mocha": "^10.2.0",
46
46
  "nyc": "^15.1.0",
47
47
  "rimraf": "^3.0.2",
48
48
  "source-map-loader": "^4.0.0",
49
- "typescript": "~5.3.3",
49
+ "typescript": "~5.6.2",
50
50
  "webpack": "^5.76.0",
51
- "@itwin/build-tools": "4.10.0-dev.9",
52
- "@itwin/core-bentley": "4.10.0-dev.9",
53
- "@itwin/core-common": "4.10.0-dev.9",
54
- "@itwin/core-geometry": "4.10.0-dev.9",
55
- "@itwin/core-frontend": "4.10.0-dev.9",
56
- "@itwin/certa": "4.10.0-dev.9"
51
+ "@itwin/build-tools": "4.10.1",
52
+ "@itwin/core-bentley": "4.10.1",
53
+ "@itwin/core-geometry": "4.10.1",
54
+ "@itwin/core-common": "4.10.1",
55
+ "@itwin/core-frontend": "4.10.1",
56
+ "@itwin/certa": "4.10.1"
57
57
  },
58
58
  "nyc": {
59
59
  "extends": "./node_modules/@itwin/build-tools/.nycrc"
@@ -65,9 +65,9 @@
65
65
  "clean": "rimraf lib .rush/temp/package-deps*.json",
66
66
  "copy:public": "cpx \"./src/public/**/*\" ./lib/public",
67
67
  "cover": "npm -s test",
68
- "docs": "betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-markup/file.json --tsIndexFile=./core-markup.ts --onlyJson",
68
+ "docs": "betools docs --json=../../generated-docs/core/core-markup/file.json --tsIndexFile=./core-markup.ts --onlyJson",
69
69
  "extract-api": "betools extract-api --entry=core-markup",
70
- "lint": "eslint -f visualstudio \"./src/**/*.ts\" 1>&2",
70
+ "lint": "eslint \"./src/**/*.ts\" 1>&2",
71
71
  "pseudolocalize": "betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO",
72
72
  "test": "npm run -s webpackTests && certa -r chrome",
73
73
  "test:debug": "certa -r chrome --debug",