@mlightcad/graphic-interface 1.0.0
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.
- package/LICENSE +21 -0
- package/dist/graphic-interface.js +133 -0
- package/dist/graphic-interface.umd.cjs +1 -0
- package/lib/AcGiArrowType.d.ts +86 -0
- package/lib/AcGiArrowType.d.ts.map +1 -0
- package/lib/AcGiArrowType.js +87 -0
- package/lib/AcGiArrowType.js.map +1 -0
- package/lib/AcGiEntity.d.ts +56 -0
- package/lib/AcGiEntity.d.ts.map +1 -0
- package/lib/AcGiEntity.js +2 -0
- package/lib/AcGiEntity.js.map +1 -0
- package/lib/AcGiHatchStyle.d.ts +22 -0
- package/lib/AcGiHatchStyle.d.ts.map +1 -0
- package/lib/AcGiHatchStyle.js +2 -0
- package/lib/AcGiHatchStyle.js.map +1 -0
- package/lib/AcGiImageStyle.d.ts +9 -0
- package/lib/AcGiImageStyle.d.ts.map +1 -0
- package/lib/AcGiImageStyle.js +2 -0
- package/lib/AcGiImageStyle.js.map +1 -0
- package/lib/AcGiLineStyle.d.ts +102 -0
- package/lib/AcGiLineStyle.d.ts.map +1 -0
- package/lib/AcGiLineStyle.js +2 -0
- package/lib/AcGiLineStyle.js.map +1 -0
- package/lib/AcGiPointStyle.d.ts +21 -0
- package/lib/AcGiPointStyle.d.ts.map +1 -0
- package/lib/AcGiPointStyle.js +2 -0
- package/lib/AcGiPointStyle.js.map +1 -0
- package/lib/AcGiRenderer.d.ts +88 -0
- package/lib/AcGiRenderer.d.ts.map +1 -0
- package/lib/AcGiRenderer.js +2 -0
- package/lib/AcGiRenderer.js.map +1 -0
- package/lib/AcGiTextStyle.d.ts +52 -0
- package/lib/AcGiTextStyle.d.ts.map +1 -0
- package/lib/AcGiTextStyle.js +21 -0
- package/lib/AcGiTextStyle.js.map +1 -0
- package/lib/AcGiView.d.ts +51 -0
- package/lib/AcGiView.d.ts.map +1 -0
- package/lib/AcGiView.js +26 -0
- package/lib/AcGiView.js.map +1 -0
- package/lib/AcGiViewport.d.ts +83 -0
- package/lib/AcGiViewport.d.ts.map +1 -0
- package/lib/AcGiViewport.js +199 -0
- package/lib/AcGiViewport.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +11 -0
- package/lib/index.js.map +1 -0
- package/package.json +38 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 mlight-lee
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { AcGePoint3d as s, AcGeBox2d as h } from "@mlightcad/geometry-engine";
|
|
2
|
+
var e = /* @__PURE__ */ ((_) => (_.ClosedFilled = "", _.Dot = "_DOT", _.DotSmall = "_DOTSMALL", _.DotBlank = "_DOTBLANK", _.Origin = "_ORIGIN", _.Origin2 = "_ORIGIN2", _.Open = "_OPEN", _.Open90 = "_OPEN90", _.Open30 = "_OPEN30", _.Closed = "_CLOSED", _.Small = "_SMALL", _.None = "_NONE", _.Oblique = "_OBLIQUE", _.BoxFilled = "_BOXFILLED", _.Box = "_BOXBLANK", _.ClosedBlank = "_CLOSEDBLANK", _.DatumBlank = "_DATUMBLANK", _.DatumFilled = "_DATUMFILLED", _.Integral = "_INTEGRAL", _.ArchTick = "_ARCHTICK", _))(e || {}), O = /* @__PURE__ */ ((_) => (_[_.LEFT_TO_RIGHT = 1] = "LEFT_TO_RIGHT", _[_.RIGHT_TO_LEFT = 2] = "RIGHT_TO_LEFT", _[_.TOP_TO_BOTTOM = 3] = "TOP_TO_BOTTOM", _[_.BOTTOM_TO_TOP = 4] = "BOTTOM_TO_TOP", _[_.BY_STYLE = 5] = "BY_STYLE", _))(O || {}), E = /* @__PURE__ */ ((_) => (_[_.TopLeft = 1] = "TopLeft", _[_.TopCenter = 2] = "TopCenter", _[_.TopRight = 3] = "TopRight", _[_.MiddleLeft = 4] = "MiddleLeft", _[_.MiddleCenter = 5] = "MiddleCenter", _[_.MiddleRight = 6] = "MiddleRight", _[_.BottomLeft = 7] = "BottomLeft", _[_.BottomCenter = 8] = "BottomCenter", _[_.BottomRight = 9] = "BottomRight", _))(E || {}), H = /* @__PURE__ */ ((_) => (_[_.OPTIMIZED_2D = 0] = "OPTIMIZED_2D", _[_.WIREFRAME = 1] = "WIREFRAME", _[_.HIDDEN_LINE = 2] = "HIDDEN_LINE", _[_.FLAT_SHADED = 3] = "FLAT_SHADED", _[_.GOURAUD_SHADED = 4] = "GOURAUD_SHADED", _[_.FLAT_SHADED_WITH_WIREFRAME = 5] = "FLAT_SHADED_WITH_WIREFRAME", _[_.GOURAUD_SHADED_WITH_WIREFRAME = 6] = "GOURAUD_SHADED_WITH_WIREFRAME", _))(H || {}), u = /* @__PURE__ */ ((_) => (_[_.NON_ORTHOGRAPHIC = 0] = "NON_ORTHOGRAPHIC", _[_.TOP = 1] = "TOP", _[_.BOTTOM = 2] = "BOTTOM", _[_.FRONT = 3] = "FRONT", _[_.BACK = 4] = "BACK", _[_.LEFT = 5] = "LEFT", _[_.RIGHT = 6] = "RIGHT", _))(u || {}), L = /* @__PURE__ */ ((_) => (_[_.ONE_DISTANT_LIGHT = 0] = "ONE_DISTANT_LIGHT", _[_.TWO_DISTANT_LIGHTS = 1] = "TWO_DISTANT_LIGHTS", _))(L || {});
|
|
3
|
+
class I {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._number = -1, this._id = "", this._groupId = "", this._centerPoint = new s(), this._height = 0, this._width = 0, this._viewCenter = new s(), this._viewHeight = 0;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The viewport ID number. If the viewport is inactive, -1 is returned.
|
|
9
|
+
*/
|
|
10
|
+
get number() {
|
|
11
|
+
return this._number;
|
|
12
|
+
}
|
|
13
|
+
set number(t) {
|
|
14
|
+
this._number = t;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The id of the viewport.
|
|
18
|
+
*/
|
|
19
|
+
get id() {
|
|
20
|
+
return this._id;
|
|
21
|
+
}
|
|
22
|
+
set id(t) {
|
|
23
|
+
this._id = t;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The id of the group which this viewport belongs to.
|
|
27
|
+
*/
|
|
28
|
+
get groupId() {
|
|
29
|
+
return this._groupId;
|
|
30
|
+
}
|
|
31
|
+
set groupId(t) {
|
|
32
|
+
this._groupId = t;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The center point of the viewport entity in WCS coordinates (within Paper Space).
|
|
36
|
+
*/
|
|
37
|
+
get centerPoint() {
|
|
38
|
+
return this._centerPoint;
|
|
39
|
+
}
|
|
40
|
+
set centerPoint(t) {
|
|
41
|
+
this._centerPoint.copy(t);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The height of the viewport entity's window in drawing units.
|
|
45
|
+
*/
|
|
46
|
+
get height() {
|
|
47
|
+
return this._height;
|
|
48
|
+
}
|
|
49
|
+
set height(t) {
|
|
50
|
+
this._height = t;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The width of the viewport entity's window in drawing units. This is the width in Paper Space
|
|
54
|
+
* of the viewport itself, not the width of the Model Space view within the viewport.
|
|
55
|
+
*/
|
|
56
|
+
get width() {
|
|
57
|
+
return this._width;
|
|
58
|
+
}
|
|
59
|
+
set width(t) {
|
|
60
|
+
this._width = t;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The bounding box (in world coordinate system coordinates) of the viewport.
|
|
64
|
+
*/
|
|
65
|
+
get box() {
|
|
66
|
+
const t = new h();
|
|
67
|
+
return t.setFromCenterAndSize(this.centerPoint, {
|
|
68
|
+
x: this.width,
|
|
69
|
+
y: this.height
|
|
70
|
+
}), t;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The view center (in display coordinate system coordinates) of the view in the viewport.
|
|
74
|
+
*/
|
|
75
|
+
get viewCenter() {
|
|
76
|
+
return this._viewCenter;
|
|
77
|
+
}
|
|
78
|
+
set viewCenter(t) {
|
|
79
|
+
this._viewCenter.copy(t);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The height (in display coordinate system coordinates) of the Model Space view within the viewport.
|
|
83
|
+
* Zooming the view out within the viewport increases this value and zooming in decreases this value.
|
|
84
|
+
*/
|
|
85
|
+
get viewHeight() {
|
|
86
|
+
return this._viewHeight;
|
|
87
|
+
}
|
|
88
|
+
set viewHeight(t) {
|
|
89
|
+
this._viewHeight = t;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The width (in display coordinate system coordinates) of the Model Space view within the viewport.
|
|
93
|
+
* This is one computed property based on 'viewHeight' and viewport ratio of width and height.
|
|
94
|
+
*/
|
|
95
|
+
get viewWidth() {
|
|
96
|
+
return this.viewHeight * (this.width / this.height);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The bounding box (in display coordinate system coordinates) of the Model Space view within the viewport.
|
|
100
|
+
*/
|
|
101
|
+
get viewBox() {
|
|
102
|
+
const t = new h();
|
|
103
|
+
return t.setFromCenterAndSize(this.viewCenter, {
|
|
104
|
+
x: this.viewWidth,
|
|
105
|
+
y: this.viewHeight
|
|
106
|
+
}), t;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Clone this viewport
|
|
110
|
+
* @returns Return the cloned instance of this viewport
|
|
111
|
+
*/
|
|
112
|
+
clone() {
|
|
113
|
+
const t = new I();
|
|
114
|
+
return t.id = this.id, t.groupId = this.groupId, t.number = this.number, t.centerPoint.copy(this.centerPoint), t.height = this.height, t.width = this.width, t.viewCenter.copy(this.viewCenter), t.viewHeight = this.viewHeight, t;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Copy the property values of the passed viewport to this viewport.
|
|
118
|
+
* @param viewport Input one viewport instance
|
|
119
|
+
* @returns Return this viewport
|
|
120
|
+
*/
|
|
121
|
+
copy(t) {
|
|
122
|
+
return this.id = t.id, this.groupId = t.groupId, this.number = t.number, this.centerPoint.copy(t.centerPoint), this.height = t.height, this.width = t.width, this.viewCenter.copy(t.viewCenter), this.viewHeight = t.viewHeight, this;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
e as AcGiArrowType,
|
|
127
|
+
L as AcGiDefaultLightingType,
|
|
128
|
+
E as AcGiMTextAttachmentPoint,
|
|
129
|
+
O as AcGiMTextFlowDirection,
|
|
130
|
+
u as AcGiOrthographicType,
|
|
131
|
+
H as AcGiRenderMode,
|
|
132
|
+
I as AcGiViewport
|
|
133
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("@mlightcad/geometry-engine")):typeof define=="function"&&define.amd?define(["exports","@mlightcad/geometry-engine"],s):(_=typeof globalThis<"u"?globalThis:_||self,s(_["graphic-interface"]={},_.geometryEngine))})(this,function(_,s){"use strict";var I=(t=>(t.ClosedFilled="",t.Dot="_DOT",t.DotSmall="_DOTSMALL",t.DotBlank="_DOTBLANK",t.Origin="_ORIGIN",t.Origin2="_ORIGIN2",t.Open="_OPEN",t.Open90="_OPEN90",t.Open30="_OPEN30",t.Closed="_CLOSED",t.Small="_SMALL",t.None="_NONE",t.Oblique="_OBLIQUE",t.BoxFilled="_BOXFILLED",t.Box="_BOXBLANK",t.ClosedBlank="_CLOSEDBLANK",t.DatumBlank="_DATUMBLANK",t.DatumFilled="_DATUMFILLED",t.Integral="_INTEGRAL",t.ArchTick="_ARCHTICK",t))(I||{}),O=(t=>(t[t.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",t[t.RIGHT_TO_LEFT=2]="RIGHT_TO_LEFT",t[t.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",t[t.BOTTOM_TO_TOP=4]="BOTTOM_TO_TOP",t[t.BY_STYLE=5]="BY_STYLE",t))(O||{}),i=(t=>(t[t.TopLeft=1]="TopLeft",t[t.TopCenter=2]="TopCenter",t[t.TopRight=3]="TopRight",t[t.MiddleLeft=4]="MiddleLeft",t[t.MiddleCenter=5]="MiddleCenter",t[t.MiddleRight=6]="MiddleRight",t[t.BottomLeft=7]="BottomLeft",t[t.BottomCenter=8]="BottomCenter",t[t.BottomRight=9]="BottomRight",t))(i||{}),n=(t=>(t[t.OPTIMIZED_2D=0]="OPTIMIZED_2D",t[t.WIREFRAME=1]="WIREFRAME",t[t.HIDDEN_LINE=2]="HIDDEN_LINE",t[t.FLAT_SHADED=3]="FLAT_SHADED",t[t.GOURAUD_SHADED=4]="GOURAUD_SHADED",t[t.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",t[t.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME",t))(n||{}),u=(t=>(t[t.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",t[t.TOP=1]="TOP",t[t.BOTTOM=2]="BOTTOM",t[t.FRONT=3]="FRONT",t[t.BACK=4]="BACK",t[t.LEFT=5]="LEFT",t[t.RIGHT=6]="RIGHT",t))(u||{}),d=(t=>(t[t.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",t[t.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS",t))(d||{});class h{constructor(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new s.AcGePoint3d,this._height=0,this._width=0,this._viewCenter=new s.AcGePoint3d,this._viewHeight=0}get number(){return this._number}set number(e){this._number=e}get id(){return this._id}set id(e){this._id=e}get groupId(){return this._groupId}set groupId(e){this._groupId=e}get centerPoint(){return this._centerPoint}set centerPoint(e){this._centerPoint.copy(e)}get height(){return this._height}set height(e){this._height=e}get width(){return this._width}set width(e){this._width=e}get box(){const e=new s.AcGeBox2d;return e.setFromCenterAndSize(this.centerPoint,{x:this.width,y:this.height}),e}get viewCenter(){return this._viewCenter}set viewCenter(e){this._viewCenter.copy(e)}get viewHeight(){return this._viewHeight}set viewHeight(e){this._viewHeight=e}get viewWidth(){return this.viewHeight*(this.width/this.height)}get viewBox(){const e=new s.AcGeBox2d;return e.setFromCenterAndSize(this.viewCenter,{x:this.viewWidth,y:this.viewHeight}),e}clone(){const e=new h;return e.id=this.id,e.groupId=this.groupId,e.number=this.number,e.centerPoint.copy(this.centerPoint),e.height=this.height,e.width=this.width,e.viewCenter.copy(this.viewCenter),e.viewHeight=this.viewHeight,e}copy(e){return this.id=e.id,this.groupId=e.groupId,this.number=e.number,this.centerPoint.copy(e.centerPoint),this.height=e.height,this.width=e.width,this.viewCenter.copy(e.viewCenter),this.viewHeight=e.viewHeight,this}}_.AcGiArrowType=I,_.AcGiDefaultLightingType=d,_.AcGiMTextAttachmentPoint=i,_.AcGiMTextFlowDirection=O,_.AcGiOrthographicType=u,_.AcGiRenderMode=n,_.AcGiViewport=h,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type to define the arrowhead displayed at the ends of one line.
|
|
3
|
+
*/
|
|
4
|
+
export declare enum AcGiArrowType {
|
|
5
|
+
/**
|
|
6
|
+
* Closed filled
|
|
7
|
+
*/
|
|
8
|
+
ClosedFilled = "",
|
|
9
|
+
/**
|
|
10
|
+
* Dot
|
|
11
|
+
*/
|
|
12
|
+
Dot = "_DOT",
|
|
13
|
+
/**
|
|
14
|
+
* Dot small
|
|
15
|
+
*/
|
|
16
|
+
DotSmall = "_DOTSMALL",
|
|
17
|
+
/**
|
|
18
|
+
* Dot blank
|
|
19
|
+
*/
|
|
20
|
+
DotBlank = "_DOTBLANK",
|
|
21
|
+
/**
|
|
22
|
+
* Origin indicator
|
|
23
|
+
*/
|
|
24
|
+
Origin = "_ORIGIN",
|
|
25
|
+
/**
|
|
26
|
+
* Origin indicator 2
|
|
27
|
+
*/
|
|
28
|
+
Origin2 = "_ORIGIN2",
|
|
29
|
+
/**
|
|
30
|
+
* Open
|
|
31
|
+
*/
|
|
32
|
+
Open = "_OPEN",
|
|
33
|
+
/**
|
|
34
|
+
* Right angle
|
|
35
|
+
*/
|
|
36
|
+
Open90 = "_OPEN90",
|
|
37
|
+
/**
|
|
38
|
+
* Open 30
|
|
39
|
+
*/
|
|
40
|
+
Open30 = "_OPEN30",
|
|
41
|
+
/**
|
|
42
|
+
* Closed
|
|
43
|
+
*/
|
|
44
|
+
Closed = "_CLOSED",
|
|
45
|
+
/**
|
|
46
|
+
* Dot small blank
|
|
47
|
+
*/
|
|
48
|
+
Small = "_SMALL",
|
|
49
|
+
/**
|
|
50
|
+
* None
|
|
51
|
+
*/
|
|
52
|
+
None = "_NONE",
|
|
53
|
+
/**
|
|
54
|
+
* Oblique
|
|
55
|
+
*/
|
|
56
|
+
Oblique = "_OBLIQUE",
|
|
57
|
+
/**
|
|
58
|
+
* Box filled
|
|
59
|
+
*/
|
|
60
|
+
BoxFilled = "_BOXFILLED",
|
|
61
|
+
/**
|
|
62
|
+
* Box blank
|
|
63
|
+
*/
|
|
64
|
+
Box = "_BOXBLANK",
|
|
65
|
+
/**
|
|
66
|
+
* Closed blank
|
|
67
|
+
*/
|
|
68
|
+
ClosedBlank = "_CLOSEDBLANK",
|
|
69
|
+
/**
|
|
70
|
+
* Datum triangle
|
|
71
|
+
*/
|
|
72
|
+
DatumBlank = "_DATUMBLANK",
|
|
73
|
+
/**
|
|
74
|
+
* Datum triangle filled
|
|
75
|
+
*/
|
|
76
|
+
DatumFilled = "_DATUMFILLED",
|
|
77
|
+
/**
|
|
78
|
+
* Integral
|
|
79
|
+
*/
|
|
80
|
+
Integral = "_INTEGRAL",
|
|
81
|
+
/**
|
|
82
|
+
* Architectural tick
|
|
83
|
+
*/
|
|
84
|
+
ArchTick = "_ARCHTICK"
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=AcGiArrowType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiArrowType.d.ts","sourceRoot":"","sources":["../src/AcGiArrowType.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB;;OAEG;IACH,YAAY,KAAK;IACjB;;OAEG;IACH,GAAG,SAAS;IACZ;;OAEG;IACH,QAAQ,cAAc;IACtB;;OAEG;IACH,QAAQ,cAAc;IACtB;;OAEG;IACH,MAAM,YAAY;IAClB;;OAEG;IACH,OAAO,aAAa;IACpB;;OAEG;IACH,IAAI,UAAU;IACd;;OAEG;IACH,MAAM,YAAY;IAClB;;OAEG;IACH,MAAM,YAAY;IAClB;;OAEG;IACH,MAAM,YAAY;IAClB;;OAEG;IACH,KAAK,WAAW;IAChB;;OAEG;IACH,IAAI,UAAU;IACd;;OAEG;IACH,OAAO,aAAa;IACpB;;OAEG;IACH,SAAS,eAAe;IACxB;;OAEG;IACH,GAAG,cAAc;IACjB;;OAEG;IACH,WAAW,iBAAiB;IAC5B;;OAEG;IACH,UAAU,gBAAgB;IAC1B;;OAEG;IACH,WAAW,iBAAiB;IAC5B;;OAEG;IACH,QAAQ,cAAc;IACtB;;OAEG;IACH,QAAQ,cAAc;CACvB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type to define the arrowhead displayed at the ends of one line.
|
|
3
|
+
*/
|
|
4
|
+
export var AcGiArrowType;
|
|
5
|
+
(function (AcGiArrowType) {
|
|
6
|
+
/**
|
|
7
|
+
* Closed filled
|
|
8
|
+
*/
|
|
9
|
+
AcGiArrowType["ClosedFilled"] = "";
|
|
10
|
+
/**
|
|
11
|
+
* Dot
|
|
12
|
+
*/
|
|
13
|
+
AcGiArrowType["Dot"] = "_DOT";
|
|
14
|
+
/**
|
|
15
|
+
* Dot small
|
|
16
|
+
*/
|
|
17
|
+
AcGiArrowType["DotSmall"] = "_DOTSMALL";
|
|
18
|
+
/**
|
|
19
|
+
* Dot blank
|
|
20
|
+
*/
|
|
21
|
+
AcGiArrowType["DotBlank"] = "_DOTBLANK";
|
|
22
|
+
/**
|
|
23
|
+
* Origin indicator
|
|
24
|
+
*/
|
|
25
|
+
AcGiArrowType["Origin"] = "_ORIGIN";
|
|
26
|
+
/**
|
|
27
|
+
* Origin indicator 2
|
|
28
|
+
*/
|
|
29
|
+
AcGiArrowType["Origin2"] = "_ORIGIN2";
|
|
30
|
+
/**
|
|
31
|
+
* Open
|
|
32
|
+
*/
|
|
33
|
+
AcGiArrowType["Open"] = "_OPEN";
|
|
34
|
+
/**
|
|
35
|
+
* Right angle
|
|
36
|
+
*/
|
|
37
|
+
AcGiArrowType["Open90"] = "_OPEN90";
|
|
38
|
+
/**
|
|
39
|
+
* Open 30
|
|
40
|
+
*/
|
|
41
|
+
AcGiArrowType["Open30"] = "_OPEN30";
|
|
42
|
+
/**
|
|
43
|
+
* Closed
|
|
44
|
+
*/
|
|
45
|
+
AcGiArrowType["Closed"] = "_CLOSED";
|
|
46
|
+
/**
|
|
47
|
+
* Dot small blank
|
|
48
|
+
*/
|
|
49
|
+
AcGiArrowType["Small"] = "_SMALL";
|
|
50
|
+
/**
|
|
51
|
+
* None
|
|
52
|
+
*/
|
|
53
|
+
AcGiArrowType["None"] = "_NONE";
|
|
54
|
+
/**
|
|
55
|
+
* Oblique
|
|
56
|
+
*/
|
|
57
|
+
AcGiArrowType["Oblique"] = "_OBLIQUE";
|
|
58
|
+
/**
|
|
59
|
+
* Box filled
|
|
60
|
+
*/
|
|
61
|
+
AcGiArrowType["BoxFilled"] = "_BOXFILLED";
|
|
62
|
+
/**
|
|
63
|
+
* Box blank
|
|
64
|
+
*/
|
|
65
|
+
AcGiArrowType["Box"] = "_BOXBLANK";
|
|
66
|
+
/**
|
|
67
|
+
* Closed blank
|
|
68
|
+
*/
|
|
69
|
+
AcGiArrowType["ClosedBlank"] = "_CLOSEDBLANK";
|
|
70
|
+
/**
|
|
71
|
+
* Datum triangle
|
|
72
|
+
*/
|
|
73
|
+
AcGiArrowType["DatumBlank"] = "_DATUMBLANK";
|
|
74
|
+
/**
|
|
75
|
+
* Datum triangle filled
|
|
76
|
+
*/
|
|
77
|
+
AcGiArrowType["DatumFilled"] = "_DATUMFILLED";
|
|
78
|
+
/**
|
|
79
|
+
* Integral
|
|
80
|
+
*/
|
|
81
|
+
AcGiArrowType["Integral"] = "_INTEGRAL";
|
|
82
|
+
/**
|
|
83
|
+
* Architectural tick
|
|
84
|
+
*/
|
|
85
|
+
AcGiArrowType["ArchTick"] = "_ARCHTICK";
|
|
86
|
+
})(AcGiArrowType || (AcGiArrowType = {}));
|
|
87
|
+
//# sourceMappingURL=AcGiArrowType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiArrowType.js","sourceRoot":"","sources":["../src/AcGiArrowType.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,aAiFX;AAjFD,WAAY,aAAa;IACvB;;OAEG;IACH,kCAAiB,CAAA;IACjB;;OAEG;IACH,6BAAY,CAAA;IACZ;;OAEG;IACH,uCAAsB,CAAA;IACtB;;OAEG;IACH,uCAAsB,CAAA;IACtB;;OAEG;IACH,mCAAkB,CAAA;IAClB;;OAEG;IACH,qCAAoB,CAAA;IACpB;;OAEG;IACH,+BAAc,CAAA;IACd;;OAEG;IACH,mCAAkB,CAAA;IAClB;;OAEG;IACH,mCAAkB,CAAA;IAClB;;OAEG;IACH,mCAAkB,CAAA;IAClB;;OAEG;IACH,iCAAgB,CAAA;IAChB;;OAEG;IACH,+BAAc,CAAA;IACd;;OAEG;IACH,qCAAoB,CAAA;IACpB;;OAEG;IACH,yCAAwB,CAAA;IACxB;;OAEG;IACH,kCAAiB,CAAA;IACjB;;OAEG;IACH,6CAA4B,CAAA;IAC5B;;OAEG;IACH,2CAA0B,CAAA;IAC1B;;OAEG;IACH,6CAA4B,CAAA;IAC5B;;OAEG;IACH,uCAAsB,CAAA;IACtB;;OAEG;IACH,uCAAsB,CAAA;AACxB,CAAC,EAjFW,aAAa,KAAb,aAAa,QAiFxB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AcGeMatrix3d } from '@mlightcad/geometry-engine';
|
|
2
|
+
/**
|
|
3
|
+
* Interface that all of display objects need to implement.
|
|
4
|
+
*/
|
|
5
|
+
export interface AcGiEntity {
|
|
6
|
+
/**
|
|
7
|
+
* Object id of the associated entity in drawing database. When adding this entity into scene,
|
|
8
|
+
* do remember setting the value of this property.
|
|
9
|
+
*/
|
|
10
|
+
get objectId(): string;
|
|
11
|
+
set objectId(value: string);
|
|
12
|
+
/**
|
|
13
|
+
* The object Id of the owner of the object. When adding this entity into scene, do remember
|
|
14
|
+
* setting the value of this property.
|
|
15
|
+
*/
|
|
16
|
+
get ownerId(): string;
|
|
17
|
+
set ownerId(value: string);
|
|
18
|
+
/**
|
|
19
|
+
* The name of the layer referenced by this entity
|
|
20
|
+
*/
|
|
21
|
+
get layerName(): string;
|
|
22
|
+
set layerName(value: string);
|
|
23
|
+
/**
|
|
24
|
+
* Object's visibility
|
|
25
|
+
*/
|
|
26
|
+
get visible(): boolean;
|
|
27
|
+
set visible(value: boolean);
|
|
28
|
+
/**
|
|
29
|
+
* An object that can be used to store custom data about the entity.
|
|
30
|
+
*/
|
|
31
|
+
get userData(): object;
|
|
32
|
+
set userData(value: object);
|
|
33
|
+
/**
|
|
34
|
+
* Apply the matrix transform to the object and updates the object's position, rotation and scale.
|
|
35
|
+
* @param matrix Input the matrix to apply
|
|
36
|
+
*/
|
|
37
|
+
applyMatrix(matrix: AcGeMatrix3d): void;
|
|
38
|
+
/**
|
|
39
|
+
* Highlight this entity.
|
|
40
|
+
*/
|
|
41
|
+
highlight(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Unhighlight this entity
|
|
44
|
+
*/
|
|
45
|
+
unhighlight(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Return a clone of this object and its direct children (not all descendants).
|
|
48
|
+
* So it means that you need to gurantee the object is flatten by call method
|
|
49
|
+
* 'flatten' before calling this function.
|
|
50
|
+
* This function will deeply clone geometry in this object. But materials are
|
|
51
|
+
* reused directly and not deeply cloned.
|
|
52
|
+
* @returns Return a clone of this object and optionally all descendants.
|
|
53
|
+
*/
|
|
54
|
+
fastDeepClone(): AcGiEntity;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=AcGiEntity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiEntity.d.ts","sourceRoot":"","sources":["../src/AcGiEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAAA;IACtB,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAC;IAE3B;;;OAGG;IACH,IAAI,OAAO,IAAI,MAAM,CAAA;IACrB,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAC;IAE1B;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAAA;IACvB,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAC;IAE5B;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAAA;IACtB,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAC;IAE3B;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAAA;IACtB,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAC;IAE3B;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAEvC;;OAEG;IACH,SAAS,IAAI,IAAI,CAAA;IAEjB;;OAEG;IACH,WAAW,IAAI,IAAI,CAAA;IAEnB;;;;;;;OAOG;IACH,aAAa,IAAI,UAAU,CAAA;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiEntity.js","sourceRoot":"","sources":["../src/AcGiEntity.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AcGePoint2dLike } from '@mlightcad/geometry-engine';
|
|
2
|
+
export interface AcGiHatchPatternLine {
|
|
3
|
+
angle: number;
|
|
4
|
+
origin: AcGePoint2dLike;
|
|
5
|
+
delta: AcGePoint2dLike;
|
|
6
|
+
dashPattern: number[];
|
|
7
|
+
}
|
|
8
|
+
export interface AcGiHatchType {
|
|
9
|
+
solidFill: boolean;
|
|
10
|
+
patternAngle: number;
|
|
11
|
+
patternLines: AcGiHatchPatternLine[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Hatch style
|
|
15
|
+
*/
|
|
16
|
+
export interface AcGiHatchStyle extends AcGiHatchType {
|
|
17
|
+
/**
|
|
18
|
+
* Line color
|
|
19
|
+
*/
|
|
20
|
+
color: number;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=AcGiHatchStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiHatchStyle.d.ts","sourceRoot":"","sources":["../src/AcGiHatchStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,eAAe,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,oBAAoB,EAAE,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiHatchStyle.js","sourceRoot":"","sources":["../src/AcGiHatchStyle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiImageStyle.d.ts","sourceRoot":"","sources":["../src/AcGiImageStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiImageStyle.js","sourceRoot":"","sources":["../src/AcGiImageStyle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { AcGiArrowType } from './AcGiArrowType';
|
|
2
|
+
/**
|
|
3
|
+
* Line type pattern element
|
|
4
|
+
*/
|
|
5
|
+
export interface AcGiLineTypePatternElement {
|
|
6
|
+
elementLength: number;
|
|
7
|
+
elementTypeFlag: number;
|
|
8
|
+
shapeNumber?: number;
|
|
9
|
+
styleObjectId?: string;
|
|
10
|
+
scale?: number;
|
|
11
|
+
rotation?: number;
|
|
12
|
+
offsetX?: number;
|
|
13
|
+
offsetY?: number;
|
|
14
|
+
text?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Arrow style
|
|
18
|
+
*/
|
|
19
|
+
export interface AcGiArrowStyle {
|
|
20
|
+
/**
|
|
21
|
+
* Arrow type.
|
|
22
|
+
*/
|
|
23
|
+
type: AcGiArrowType;
|
|
24
|
+
/**
|
|
25
|
+
* The flag to determinate whether the arrow direction is inversed. Default value is false.
|
|
26
|
+
* - true: arrow direction is from the external part of the line to the start or end point of the
|
|
27
|
+
* line like '>------<'.
|
|
28
|
+
* - fase: arrow direction is from the internal part of the line to the start or end point of the
|
|
29
|
+
* line like '<------>'.
|
|
30
|
+
*/
|
|
31
|
+
inversed?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* The flag to determinate how to attach arrow to endpoint of the line.
|
|
34
|
+
* - true: append arrow to endpoint of the line
|
|
35
|
+
* - false: overlap arrow with endpoint of the line
|
|
36
|
+
*/
|
|
37
|
+
appended?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Scale factor. Default value is 1.
|
|
40
|
+
*/
|
|
41
|
+
scale?: number;
|
|
42
|
+
/**
|
|
43
|
+
* The flag whether this arrow is visible.
|
|
44
|
+
*/
|
|
45
|
+
visible: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Interface to define arrow style of arrows at the start point and end point of one line
|
|
49
|
+
*/
|
|
50
|
+
export interface AcGiLineArrowStyle {
|
|
51
|
+
/**
|
|
52
|
+
* Arrow style at the first point of the line. If it is undefined, no arrow style applied for this point.
|
|
53
|
+
*/
|
|
54
|
+
firstArrow?: AcGiArrowStyle;
|
|
55
|
+
/**
|
|
56
|
+
* Arrow style at the second point of the line. If it is undefined, no arrow style applied for this point.
|
|
57
|
+
*/
|
|
58
|
+
secondArrow?: AcGiArrowStyle;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Line type
|
|
62
|
+
*/
|
|
63
|
+
export interface AcGiBaseLineStyle {
|
|
64
|
+
/**
|
|
65
|
+
* Line type name
|
|
66
|
+
*/
|
|
67
|
+
name: string;
|
|
68
|
+
/**
|
|
69
|
+
* Standard flag values (bit-coded values):
|
|
70
|
+
* - 16 = If set, table entry is externally dependent on an xref
|
|
71
|
+
* - 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved
|
|
72
|
+
* - 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files)
|
|
73
|
+
*/
|
|
74
|
+
standardFlag: number;
|
|
75
|
+
/**
|
|
76
|
+
* Line type description
|
|
77
|
+
*/
|
|
78
|
+
description: string;
|
|
79
|
+
/**
|
|
80
|
+
* Total pattern length
|
|
81
|
+
*/
|
|
82
|
+
totalPatternLength: number;
|
|
83
|
+
/**
|
|
84
|
+
* Line type pattern
|
|
85
|
+
*/
|
|
86
|
+
pattern?: AcGiLineTypePatternElement[];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Line style
|
|
90
|
+
*/
|
|
91
|
+
export interface AcGiLineStyle extends AcGiBaseLineStyle {
|
|
92
|
+
/**
|
|
93
|
+
* Line color
|
|
94
|
+
*/
|
|
95
|
+
color: number;
|
|
96
|
+
/**
|
|
97
|
+
* Arrow style of arrows at the start point and end point of one line.
|
|
98
|
+
* If it is undefined, no arrow style applied at the start and end points.
|
|
99
|
+
*/
|
|
100
|
+
arrows?: AcGiLineArrowStyle;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=AcGiLineStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiLineStyle.d.ts","sourceRoot":"","sources":["../src/AcGiLineStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,aAAa,CAAA;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,cAAc,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiLineStyle.js","sourceRoot":"","sources":["../src/AcGiLineStyle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Point style
|
|
3
|
+
*/
|
|
4
|
+
export interface AcGiPointStyle {
|
|
5
|
+
/**
|
|
6
|
+
* Point display mode. Please get more details on value of this property from [this page](https://help.autodesk.com/view/ACDLT/2022/ENU/?guid=GUID-82F9BB52-D026-4D6A-ABA6-BF29641F459B).
|
|
7
|
+
*/
|
|
8
|
+
displayMode: number;
|
|
9
|
+
/**
|
|
10
|
+
* Point display size.
|
|
11
|
+
* - 0: Create a point at 5 percent of the drawing area height
|
|
12
|
+
* - > 0: Specifie an absolute size
|
|
13
|
+
* - < 0: Specifie a percentage of the viewport size
|
|
14
|
+
*/
|
|
15
|
+
displaySize: number;
|
|
16
|
+
/**
|
|
17
|
+
* Point color
|
|
18
|
+
*/
|
|
19
|
+
color: number;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=AcGiPointStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiPointStyle.d.ts","sourceRoot":"","sources":["../src/AcGiPointStyle.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcGiPointStyle.js","sourceRoot":"","sources":["../src/AcGiPointStyle.ts"],"names":[],"mappings":""}
|