@flyfish-dev/cad-viewer 0.6.5 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"mappings":"ynCAWO,SAASA,GAAkBC,EAAuE,CACvG,MAAO,CACL,OAAQA,EAAK,OACb,WAAYA,EAAK,WACjB,MAAOA,EAAK,MACZ,OAAQA,EAAK,QAAU,GACvB,OAAQA,EAAK,QAAU,GACvB,UAAWA,EAAK,WAAa,GAC7B,OAAQA,EAAK,QAAU,GACvB,SAAUA,EAAK,UAAY,GAC3B,MAAOA,EAAK,MACZ,UAAWA,EAAK,UAChB,SAAUA,EAAK,UAAY,GAC3B,SAAUA,EAAK,UAAY,GAC3B,IAAKA,EAAK,IAEd,CAEO,SAASC,GAAgBC,EAA8B,CAE5D,OADc,OAAOA,GAAQ,EAAE,EAAE,cACzB,CACN,IAAK,OAAQ,MAAO,OACpB,IAAK,SAAU,MAAO,SACtB,IAAK,MAAO,MAAO,MACnB,IAAK,aACL,IAAK,WACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,aACL,IAAK,SACL,IAAK,cAAe,MAAO,WAC3B,IAAK,UAAW,MAAO,UACvB,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,YAAa,MAAO,OACzB,IAAK,QAAS,MAAO,QACrB,IAAK,SAAU,MAAO,SACtB,IAAK,QACL,IAAK,QACL,IAAK,SAAU,MAAO,QACtB,IAAK,QAAS,MAAO,QACrB,IAAK,SAAU,MAAO,SACtB,IAAK,OACL,IAAK,WACL,IAAK,WAAY,MAAO,OACxB,IAAK,QACL,IAAK,eACL,IAAK,YAAa,MAAO,QACzB,IAAK,WAAY,MAAO,WACxB,QAAS,MAAO,cAEpB,CAEO,SAASC,GAAmBC,EAA8BC,EAAqBC,EAAqC,GAAe,CACxI,MAAMJ,EAAOG,GAAc,OAAOD,EAAI,MAAQA,EAAI,YAAcA,EAAI,YAAc,SAAS,EAAE,cACvFG,EAAoBD,EAAQ,2BAA6B,GAC3D,CAAE,KAAAJ,EAAM,KAAMD,GAAgBC,CAAI,GAClC,CAAE,GAAGE,EAAK,KAAAF,EAAM,KAAMD,GAAgBC,CAAI,GAC1CI,EAAQ,UAASC,EAAO,IAAMH,GAClCG,EAAO,OAASC,EAAkBJ,EAAI,QAAUA,EAAI,EAAE,EACtDG,EAAO,MAAQC,EAAkBJ,EAAI,OAASA,EAAI,SAAS,EAC3DG,EAAO,SAAWC,EAAkBJ,EAAI,UAAYA,EAAI,QAAQ,EAChEG,EAAO,cAAgBE,EAAkBL,EAAI,eAAiBA,EAAI,eAAiBA,EAAI,OAAO,GAAKG,EAAO,cAC1GA,EAAO,KAAOE,EAAkBL,EAAI,MAAQA,EAAI,KAAK,GAAKG,EAAO,KACjE,MAAMG,EAAiBN,EAAI,WAAa,IAAQA,EAAI,SAAW,IAAQA,EAAI,QAAU,GAC/EO,EAA8B,oEAAoE,KAAKT,CAAI,EAC3GU,EAAyBV,IAAS,cACpCQ,GACEC,IAAgC,OAAOJ,EAAO,MAAQ,CAAC,EAAI,KAAO,GAClEK,IAA2B,OAAOL,EAAO,MAAQ,CAAC,EAAI,OAAW,OACrEA,EAAO,SAAW,IAGpB,MAAMM,EAAmBP,EAAQ,kBAAoB,OAC/CQ,EAAiBL,EAAkBL,EAAI,KAAK,EAC5CW,EAAcN,EAAkBL,EAAI,YAAcA,EAAI,aAAeA,EAAI,KAAOA,EAAI,UAAYA,EAAI,WAAW,EACrHG,EAAO,WAAaQ,IAAgBF,IAAqB,OAASC,IAAmB,QAAa,KAAK,IAAIA,CAAc,GAAK,IAAMA,EAAiB,QAErJ,MAAME,EAAoBZ,EAAI,WAAaA,EAAI,YAAcA,EAAI,WAAaA,EAAI,UAAYA,EAAI,UAAYA,EAAI,UAAYA,EAAI,IAC5Ha,EAAmBH,IAAmB,QAAaA,GAAkB,GAAKA,GAAkB,WAAaD,IAAqB,OAAUA,IAAqB,QAAU,KAAK,IAAIC,CAAc,EAAI,KACxMP,EAAO,UAAaS,IAAsBC,EAAmBH,EAAiB,SAC1E,OAAOV,EAAI,OAAU,UAAY,OAAOA,EAAI,OAAU,YAAUG,EAAO,MAAQH,EAAI,OACvFG,EAAO,YAAcE,EAAkBL,EAAI,WAAW,GAAKG,EAAO,YAClEA,EAAO,UAAYC,EAAkBJ,EAAI,WAAaA,EAAI,UAAU,GAAKG,EAAO,UAChFA,EAAO,UAAaH,EAAI,WAAaA,EAAI,WACzCG,EAAO,eAAiBE,EAAkBL,EAAI,gBAAkBA,EAAI,kBAAoBA,EAAI,eAAe,GAAKG,EAAO,eACvHA,EAAO,QAAUE,EAAkBL,EAAI,SAAWA,EAAI,KAAK,GAAKG,EAAO,QACvEA,EAAO,WAAaE,EAAkBL,EAAI,YAAcA,EAAI,UAAU,EACtEG,EAAO,UAAY,EAAAH,EAAI,YAAc,IAASA,EAAI,UAAY,IAC9DG,EAAO,WAAaW,EAAiBd,EAAI,YAAcA,EAAI,OAASA,EAAI,IAAMA,EAAI,IAAI,GAAKG,EAAO,WAClGA,EAAO,SAAWW,EAAiBd,EAAI,UAAYA,EAAI,KAAOA,EAAI,IAAMA,EAAI,EAAE,GAAKG,EAAO,SAC1FA,EAAO,OAASW,EAAiBd,EAAI,QAAUA,EAAI,WAAW,GAAKG,EAAO,OAC1EA,EAAO,eAAiBW,EAAiBd,EAAI,gBAAkBA,EAAI,UAAYA,EAAI,UAAYA,EAAI,OAASA,EAAI,SAAS,GAAKG,EAAO,eACrIA,EAAO,OAASE,EAAkBL,EAAI,MAAM,GAAKG,EAAO,OACxDA,EAAO,WAAaE,EAAkBL,EAAI,YAAcA,EAAI,WAAW,GAAKG,EAAO,WACnFA,EAAO,SAAWE,EAAkBL,EAAI,UAAYA,EAAI,SAAS,GAAKG,EAAO,SAC7EA,EAAO,kBAAoBW,EAAiBd,EAAI,mBAAqBA,EAAI,WAAaA,EAAI,KAAK,GAAKG,EAAO,kBAC3GA,EAAO,UAAYE,EAAkBL,EAAI,WAAaA,EAAI,KAAK,GAAKG,EAAO,UAC3EA,EAAO,OAASE,EAAkBL,EAAI,QAAUA,EAAI,UAAU,GAAKG,EAAO,OAC1EA,EAAO,WAAaE,EAAkBL,EAAI,YAAcA,EAAI,MAAM,GAAKG,EAAO,WAC9EA,EAAO,SAAWE,EAAkBL,EAAI,UAAYA,EAAI,KAAK,GAAKG,EAAO,SACzEA,EAAO,KAAOC,EAAkBJ,EAAI,MAAQA,EAAI,OAASA,EAAI,QAAUA,EAAI,QAAQ,GAAKG,EAAO,KAC/FA,EAAO,KAAOC,EAAkBJ,EAAI,MAAQA,EAAI,SAAS,GAAKG,EAAO,KACrEA,EAAO,UAAYC,EAAkBJ,EAAI,WAAaA,EAAI,IAAI,GAAKG,EAAO,UAE1E,MAAMY,EAAWC,GAAgBhB,EAAI,UAAYA,EAAI,MAAM,EACvDe,EAAS,OAAS,IAAGZ,EAAO,SAAWY,GAC3C,MAAME,EAAgBD,GAAgBhB,EAAI,eAAiBA,EAAI,cAAc,EACzEiB,EAAc,OAAS,IAAGd,EAAO,cAAgBc,GACrD,MAAMC,EAAYF,GAAgBhB,EAAI,WAAaA,EAAI,UAAU,EAC7DkB,EAAU,OAAS,IAAGf,EAAO,UAAYe,GAC7C,MAAMC,EAAanB,EAAI,SAAWA,EAAI,WACtC,OAAI,MAAM,QAAQmB,CAAU,IAC1BhB,EAAO,QAAUgB,EACd,OAAQC,GAAoD,CAAC,CAACA,GAAa,OAAOA,GAAc,QAAQ,EACxG,IAAKA,GAAcrB,GAAmBqB,EAAW,OAAWlB,CAAO,CAAC,GAElEC,CACT,CAEO,SAASW,EAAiBO,EAAwC,CACvE,GAAI,CAACA,GAAS,OAAOA,GAAU,SAAU,OACzC,MAAMC,EAASD,EACTE,EAAI,OAAOD,EAAO,GAAKA,EAAO,GAAKA,EAAO,CAAC,CAAC,EAC5CE,EAAI,OAAOF,EAAO,GAAKA,EAAO,GAAKA,EAAO,CAAC,CAAC,EAC5CG,EAAaH,EAAO,GAAKA,EAAO,GAAKA,EAAO,CAAC,EAC7CI,EAAID,IAAe,OAAY,OAAY,OAAOA,CAAU,EAClE,GAAI,GAAC,OAAO,SAASF,CAAC,GAAK,CAAC,OAAO,SAASC,CAAC,GAC7C,OAAO,OAAO,SAASE,CAAC,EAAI,CAAE,EAAAH,EAAG,EAAAC,EAAG,EAAAE,CAAA,EAAM,CAAE,EAAAH,EAAG,EAAAC,CAAA,CACjD,CAEO,SAASR,GAAgBK,EAAgG,CAC9H,GAAI,CAAC,MAAM,QAAQA,CAAK,QAAU,GAClC,MAAMM,EAAsF,GAC5F,UAAWC,KAAQP,EAAO,CACxB,MAAMQ,EAAIf,EAAiBc,CAAI,EAC/B,GAAI,CAACC,EAAG,SACR,MAAMC,EAAMF,EACNG,EAASF,EACTG,EAAQ3B,EAAkByB,EAAI,KAAK,EACrCE,IAAU,SAAWD,EAAO,MAAQC,GACxC,MAAMC,EAAa5B,EAAkByB,EAAI,YAAcA,EAAI,WAAW,EAClEG,IAAe,SAAWF,EAAO,WAAaE,GAClD,MAAMC,EAAW7B,EAAkByB,EAAI,UAAYA,EAAI,SAAS,EAC5DI,IAAa,SAAWH,EAAO,SAAWG,GAC9CP,EAAI,KAAKI,CAAM,CACjB,CACA,OAAOJ,CACT,CA6BO,SAASQ,GAASC,EAAkCC,EAAuB,CAC3EA,EAAM,OACXD,EAAOC,EAAM,IAAI,EAAIA,EACrBD,EAAOC,EAAM,KAAK,aAAa,EAAIA,EACrC,CAEO,SAASC,GAASF,EAAkCG,EAAuB,CAC3EA,EAAM,OACXH,EAAOG,EAAM,IAAI,EAAIA,EACrBH,EAAOG,EAAM,KAAK,aAAa,EAAIA,EACrC,CAEO,SAASC,GAAYJ,EAAqCK,EAA6B,CACvFA,EAAS,OACdL,EAAOK,EAAS,IAAI,EAAIA,EACxBL,EAAOK,EAAS,KAAK,aAAa,EAAIA,EAClCA,EAAS,SACXL,EAAOK,EAAS,MAAM,EAAIA,EAC1BL,EAAOK,EAAS,OAAO,aAAa,EAAIA,GAE5C,CAOO,SAASpC,EAAkBgB,EAAoC,CACpE,MAAM,EAAI,OAAOA,CAAK,EACtB,OAAO,OAAO,SAAS,CAAC,EAAI,EAAI,MAClC,CAEO,SAASjB,EAAkBiB,EAAoC,CACpE,GAAI,OAAOA,GAAU,UAAY,OAAOA,GAAU,SAAU,OAC5D,MAAMM,EAAM,OAAON,CAAK,EACxB,OAAOM,EAAI,OAAS,EAAIA,EAAM,MAChC,CC1NO,SAASe,GAAiBC,EAAgC,CAC/D,OAAIA,EAAM,aAAe,GAAKA,EAAM,aAAeA,EAAM,OAAO,WAAmBA,EAAM,OAClFA,EAAM,QAAQ,MACvB,CCCO,SAASC,GAAeC,EAAgBC,EAA2B,CACxE,MAAO,CACL,EAAGD,EAAK,EAAIC,EAAM,EAAID,EAAK,EAAIC,EAAM,EACrC,EAAGD,EAAK,EAAIC,EAAM,EAAID,EAAK,EAAIC,EAAM,EACrC,EAAGD,EAAK,EAAIC,EAAM,EAAID,EAAK,EAAIC,EAAM,EACrC,EAAGD,EAAK,EAAIC,EAAM,EAAID,EAAK,EAAIC,EAAM,EACrC,EAAGD,EAAK,EAAIC,EAAM,EAAID,EAAK,EAAIC,EAAM,EAAID,EAAK,EAC9C,EAAGA,EAAK,EAAIC,EAAM,EAAID,EAAK,EAAIC,EAAM,EAAID,EAAK,EAElD,CAMO,SAASE,GAAeC,EAAyB,CACtD,MAAMC,EAAI,KAAK,IAAID,CAAK,EAClBE,EAAI,KAAK,IAAIF,CAAK,EACxB,MAAO,CAAE,EAAGC,EAAG,EAAGC,EAAG,EAAG,CAACA,EAAG,EAAGD,EAAG,EAAG,EAAG,EAAG,EAC7C,CCvBA,MAAME,GAAuC,CAC3C,OAAQ,MACR,OAAQ,MACR,OAAQ,MACR,OAAQ,QACR,OAAQ,QACR,OAAQ,QACR,OAAQ,QACR,OAAQ,QACR,OAAQ,OACV,EAEO,SAASC,GAAeT,EAAmC,CAChE,MAAMU,EAAY,MAAM,KAAKV,EAAM,MAAM,EAAG,CAAC,EAAIW,GAAM,OAAO,aAAaA,CAAC,CAAC,EAAE,KAAK,EAAE,EAChFC,EAAUJ,GAASE,CAAS,GAAK,UACvC,MAAO,CACL,UAAAA,EACA,QAAAE,EACA,0BAA2BA,IAAY,UACvC,MAAOA,IAAY,UAAY,wCAA0C,OAE7E,CCVA,MAAMC,OAAgB,IAEtB,eAAsBC,GAAcd,EAAmBzC,EAAgC,GAA4B,CACjH,MAAMwD,EAAU,YAAY,MACtBC,EAAazD,EAAQ,WAC3BA,EAAQ,aAAa,CAAE,MAAO,SAAU,OAAQ,MAAO,QAAS,yBAA0B,MAAOyC,EAAM,WAAY,EAEnH,MAAMiB,EAAUR,GAAeT,CAAK,EACpC,GAAI,CAACiB,EAAQ,UAAU,WAAW,IAAI,EACpC,MAAM,IAAI,MAAM,uBAAuB,KAAK,UAAUA,EAAQ,SAAS,CAAC,GAAG,EAG7E1D,EAAQ,aAAa,CAAE,MAAO,YAAa,OAAQ,MAAO,QAAS,qCAAsC,MAAOyC,EAAM,WAAY,EAClI,MAAMkB,EAAM,MAAMC,GAAe5D,EAAQ,UAAY,QAAQ,EAE7DA,EAAQ,aAAa,CAAE,MAAO,QAAS,OAAQ,MAAO,QAAS,YAAY0D,EAAQ,SAAS,QAAS,MAAOjB,EAAM,WAAY,QAAS,GAAI,EAC3I,MAAMoB,EAAcrB,GAAiBC,CAAK,EACpCqB,EAAWH,EAAI,eAAe,KAAO,EACrCI,EAAMJ,EAAI,SAAS,cAAcE,EAAaC,CAAQ,EAC5D,GAAI,CAACC,EAAK,MAAM,IAAI,MAAM,wCAAwC,EAClE,GAAI,OAAOA,EAAI,OAAU,UAAYA,EAAI,QAAU,EAAG,MAAM,IAAI,MAAM,8BAA8BA,EAAI,KAAK,GAAG,EAEhH/D,EAAQ,aAAa,CAAE,MAAO,YAAa,OAAQ,MAAO,QAAS,4BAA6B,MAAOyC,EAAM,WAAY,QAAS,GAAI,EACtI,MAAMuB,EAAQ,OAAOL,EAAI,SAAS,SAAY,WAAaA,EAAI,SAAS,QAAQI,CAAG,EAAIA,EACvF,GAAI,CACE,OAAOJ,EAAI,SAAS,UAAa,YAAYA,EAAI,SAAS,SAASI,CAAG,CAC5E,MAAQ,CAER,CAEA,MAAME,EAAWC,GAAqBF,EAAOP,EAAYC,EAAS,CAAE,QAAS,EAAQ1D,EAAQ,OAAO,CAAG,EACjGmE,EAAY,YAAY,MAAQX,EACtC,OAAAxD,EAAQ,aAAa,CAAE,MAAO,OAAQ,OAAQ,MAAO,QAAS,cAAe,MAAOyC,EAAM,WAAY,QAAS,IAAK,UAAA0B,EAAW,EACxH,CACL,SAAAF,EACA,IAAKjE,EAAQ,QAAUgE,EAAQ,OAC/B,MAAOvB,EAAM,WACb,UAAA0B,EACA,OAAQ,MACR,SAAUF,EAAS,SAEvB,CAEA,eAAsBL,GAAeQ,EAAW,SAAsG,CACpJ,MAAMC,EAAiBC,GAAkBF,CAAQ,EACjD,IAAIG,EAAUjB,GAAU,IAAIe,CAAc,EACrCE,IACHA,EAAAC,GAAA,IAAU,2BAAAC,EAAA,EAAgC,IAAE,KAAK,MAAOC,GAAW,CACjE,MAAMC,EAAQD,EACRE,EAAWD,EAAM,SACvB,GAAI,CAACC,GAAY,OAAOA,EAAS,QAAW,WAC1C,MAAM,IAAI,MAAM,2DAA2D,EAG7E,GAAI,CAMF,GAAI,OAAOD,EAAM,cAAiB,YAAc,OAAOC,EAAS,sBAAyB,WAAY,CACnG,MAAMC,EAAUC,GAAmBT,CAAc,EAC3CU,EAAa,MAAMC,GAAgBH,CAAO,EAC1CI,EAAe,MAAMN,EAAM,aAAa,CAC5C,WAAAI,EACA,WAAaG,GAAqB,IAAI,IAAIA,EAAUC,GAAoBd,CAAc,CAAC,EAAE,KAC1F,EACD,OAAOO,EAAS,qBAAqBK,CAAY,CACnD,CAMA,OAAO,MAAML,EAAS,OAAOP,CAAc,CAC7C,OAASe,EAAO,CACd,MAAMC,EAAUD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACrE,MAAM,IAAI,MAAM,kDAAkDf,CAAc,6CAA6CS,GAAmBT,CAAc,CAAC,kIAAkIgB,CAAO,EAAE,CAC5S,CACF,CAAC,EACD/B,GAAU,IAAIe,EAAgBE,CAAO,GAEvC,MAAMe,EAAW,MAAMf,EACjBG,EAAS,MAAAF,GAAA,IAAM,2BAAAC,EAAA,UACrB,MAAO,CAAE,OAAAC,EAAQ,SAAAY,EAAU,cAAeZ,EAAO,cACnD,CAEO,SAASR,GAAqBF,EAAgBP,EAAqBC,EAAmB1D,EAAiC,GAAiB,CAC7I,MAAMoB,EAAS4C,GAAS,OAAOA,GAAU,SAAWA,EAAmC,GACjFuB,EAASC,GAAcpE,EAAQpB,CAAO,EACtCyF,EAAYC,GAAiBtE,EAAQpB,CAAO,EAC5C2F,EAASC,GAAcxE,EAAQpB,CAAO,EACtC6F,EAASC,GAAgB1E,EAAO,OAAQsC,CAAO,EAC/CqC,EAAkBC,GAAiB5E,EAAQyE,CAAM,EACjDI,EAAYF,EAAgB,KAC5BG,EAAc,MAAM,QAAQ9E,EAAO,QAAQ,EAAIA,EAAO,SAAW,GACjE+E,EAAmB,CAAE,QAAS,EAAQnG,EAAQ,QAAU,yBAA0B,EAAQA,EAAQ,OAAO,EACzGoG,EAAWF,EACd,OAAQxE,GAA0C,CAAC,CAACA,GAAQ,OAAOA,GAAS,QAAQ,EACpF,IAAKA,GAAS2E,GAAmB3E,EAAMyE,CAAgB,CAAC,EAErDlC,EAAWxE,GAAkB,CACjC,OAAQ,MACR,WAAAgE,EACA,OAAAoC,EACA,OAAAN,EACA,UAAAE,EACA,OAAAE,EACA,SAAAS,EACA,UAAAH,EACA,SAAU,CACR,OAAQ,0BACR,WAAY,OACZ,QAAAvC,EACA,UAAAuC,CAAA,EAEF,SAAUF,EAAgB,QAAU,CAACA,EAAgB,OAAO,EAAI,GAChE,IAAK/F,EAAQ,QAAUgE,EAAQ,OAChC,EAED,OAAIoC,EAAS,SAAW,GACtBnC,EAAS,SAAS,KAAK,mJAAmJ,EAGxK,CAAC,GADmB,IAAI,IAAI,OAAO,OAAOwB,CAAS,CAAC,CACjC,EAAE,KAAMlD,GAAaA,EAAS,QAAQ,KAAM+D,GAAY,OAAOA,EAAQ,iBAAmB,CAAC,IAAM,CAAC,CAAC,GACxHrC,EAAS,SAAS,KAAK,4KAA4K,EAE9LA,CACT,CAGA,SAASoC,GAAmBjF,EAAiCpB,EAA+E,CAC1I,MAAMC,EAASJ,GAAmBuB,EAAQ,OAAW,CAAE,GAAGpB,EAAS,iBAAkB,MAAO,EACtFuG,EAAMpG,EAAkBiB,EAAO,KAAK,EAMtCmF,IAAQ,QAAaA,GAAO,GAAKA,GAAO,WAC1CtG,EAAO,MAAQsG,EACftG,EAAO,UAAYsG,GAErBtG,EAAO,WAAaE,EAAkBiB,EAAO,YAAcA,EAAO,aAAeA,EAAO,GAAG,GAAKnB,EAAO,WACvGA,EAAO,UAAYC,EAAkBkB,EAAO,WAAaA,EAAO,UAAU,GAAKnB,EAAO,UACtF,MAAMuG,EAAOrG,EAAkBiB,EAAO,MAAQA,EAAO,KAAK,EACtDoF,IAAS,SAAWvG,EAAO,KAAOuG,GACtC,MAAM5G,EAAO,OAAOwB,EAAO,MAAQA,EAAO,YAAc,EAAE,EAAE,cACtDqF,EAAkB,6DAA6D,KAAK7G,CAAI,EAC9F,OAAIwB,EAAO,WAAa,IAAQA,EAAO,SAAW,IAASqF,IAAoB,OAAOD,GAAQ,CAAC,EAAI,KAAO,GACpG5G,IAAS,eAAiB,OAAO4G,GAAQ,CAAC,EAAI,OAAW,OAC7DvG,EAAO,SAAW,IAEbA,CACT,CAEA,SAASyG,GAAgBvF,EAAiC,CACxD,OAAO,OAAOA,GAAU,UAAY,OAAO,SAASA,CAAK,GAAK,KAAK,IAAI,KAAK,MAAMA,CAAK,CAAC,GAAK,GAAK,KAAK,IAAI,KAAK,MAAMA,CAAK,CAAC,GAAK,GACnI,CAEA,SAAS2E,GAAgBD,EAAiBnC,EAA2C,CACnF,MAAMiD,EAASd,GAAU,OAAOA,GAAW,SAAW,CAAE,GAAIA,CAAA,EAAuC,GACnG,OAAInC,MAAgB,WAAaA,GAC1BiD,CACT,CAEA,SAASnB,GAAcxB,EAAgChE,EAA0D,CAC/G,MAAM2G,EAAmC,GACnCC,EAAwB,GACxBC,EAAS7C,EAAM,OACrB,UAAW8C,IAAO,CAAC,QAAS,QAAS,QAAQ,EAAG,CAC9C,MAAM3F,EAAQ6C,EAAM8C,CAAG,GAAKD,IAASC,CAAG,EACpC3F,GAAOyF,EAAW,KAAKzF,CAAK,CAClC,CACA,UAAW4F,KAAaH,EACtB,UAAWlF,KAAQsF,GAAgBD,CAAS,EAAG,CAC7C,MAAM3F,EAASM,EACTuF,EAAO/G,EAAkBkB,EAAO,MAAQA,EAAO,WAAaA,EAAO,SAAS,EAClF,GAAI,CAAC6F,EAAM,SACX,MAAMC,EAAa/G,EAAkBiB,EAAO,YAAcA,EAAO,WAAW,EACtE+F,EAAShH,EAAkBiB,EAAO,WAAaA,EAAO,YAAcA,EAAO,WAAaA,EAAO,UAAYA,EAAO,UAAYA,EAAO,UAAYA,EAAO,GAAG,EAC3JgG,EAAejH,EAAkBiB,EAAO,KAAK,EAC7CiG,EAAkBX,GAAgBQ,CAAU,EAC5CI,EAAYH,IAAW,CAACE,GAAmBD,IAAiB,QAAaA,GAAgB,GAAKA,GAAgB,SAAWA,EAAe,QACxIjF,EAAkB,CACtB,KAAA8E,EACA,MAAOI,EAAkB,OAAajG,EAAO,OAASA,EAAO,UAC7D,WAAY8F,IAAeE,IAAiB,QAAa,KAAK,IAAIA,CAAY,GAAK,IAAMA,EAAe,QACxG,UAAAE,EACA,SAAUpH,EAAkBkB,EAAO,UAAYA,EAAO,QAAQ,EAC9D,WAAYjB,EAAkBiB,EAAO,YAAcA,EAAO,UAAU,EACpE,UAAW,EAAAA,EAAO,YAAc,IAASA,EAAO,MAAQ,IAAQ,OAAO8F,GAAc9F,EAAO,OAAS,CAAC,EAAI,GAC1G,SAAU,GAAQA,EAAO,UAAYA,EAAO,QAC5C,SAAU,GAAQA,EAAO,UAAYA,EAAO,QAC5C,IAAKpB,EAAQ,QAAUoB,EAAS,QAElCa,GAAS0E,EAAQxE,CAAK,CACxB,CAEF,OAAOwE,CACT,CAEA,SAASjB,GAAiB1B,EAAgChE,EAA6D,CACrH,MAAM2G,EAAsC,GACtCE,EAAS7C,EAAM,OACf4C,EAAa,CAAC5C,EAAM,MAAOA,EAAM,MAAOA,EAAM,UAAW6C,GAAQ,MAAOA,GAAQ,MAAOA,GAAQ,SAAS,EAC9G,UAAWE,KAAaH,EACtB,UAAWlF,KAAQsF,GAAgBD,CAAS,EAAG,CAC7C,MAAM3F,EAASM,EACTuF,EAAO/G,EAAkBkB,EAAO,MAAQA,EAAO,cAAgBA,EAAO,SAAS,EACrF,GAAI,CAAC6F,EAAM,SAMX,MAAMM,GALa,MAAM,QAAQnG,EAAO,OAAO,EAC3CA,EAAO,QACP,MAAM,QAAQA,EAAO,MAAM,EACzBA,EAAO,OACP,IACqB,QAASoG,GAAU,CAC5C,GAAI,OAAOA,GAAU,SAAU,MAAO,CAAC,CAAE,OAAQA,EAAO,EACxD,GAAI,CAACA,GAAS,OAAOA,GAAU,eAAiB,GAChD,MAAMC,EAAOD,EACPE,EAASvH,EAAkBsH,EAAK,eAAiBA,EAAK,QAAUA,EAAK,UAAU,EACrF,GAAIC,IAAW,OAAW,MAAO,GACjC,MAAMC,EAAqBxH,EAAkBsH,EAAK,eAAe,EAC3DG,EAAoBzH,EAAkBsH,EAAK,WAAW,EAKtDI,EAAkBF,IAAuB,QAAaC,IAAsB,OAClF,MAAO,CAAC,CACN,OAAAF,EACA,gBAAiBG,EAAkBD,EAAoBzH,EAAkBsH,EAAK,UAAYA,EAAK,eAAe,EAC9G,YAAaI,EAAkBF,EAAqBxH,EAAkBsH,EAAK,WAAaA,EAAK,WAAW,EACxG,MAAOtH,EAAkBsH,EAAK,KAAK,EACnC,SAAUtH,EAAkBsH,EAAK,QAAQ,EACzC,QAAStH,EAAkBsH,EAAK,OAAO,EACvC,QAAStH,EAAkBsH,EAAK,OAAO,EACvC,KAAMvH,EAAkBuH,EAAK,IAAI,EAClC,CACH,CAAC,EACDnF,GAAYqE,EAAQ,CAClB,KAAAM,EACA,OAAQ/G,EAAkBkB,EAAO,QAAUA,EAAO,EAAE,EACpD,YAAalB,EAAkBkB,EAAO,WAAW,EACjD,mBAAoBjB,EAAkBiB,EAAO,oBAAsBA,EAAO,aAAa,EACvF,QAAAmG,EACA,IAAKvH,EAAQ,QAAUoB,EAAS,OACjC,CACH,CAEF,OAAOuF,CACT,CAEA,SAASX,GAAiBhC,EAAgC6B,EAA4E,CACpI,MAAMgB,EAAS7C,EAAM,OAGf8D,EAFSd,GAAgBhD,EAAM,OAASA,EAAM,QAAU6C,GAAQ,OAASA,GAAQ,MAAM,EAC1F,OAAQnF,GAA0C,CAAC,CAACA,GAAQ,OAAOA,GAAS,QAAQ,EACjE,KAAMN,GAAW,OAAOA,EAAO,MAAQ,EAAE,EAAE,OAAO,gBAAkB,SAAS,EAC7F2G,EAASD,EAAS,QAAmB,aACrC1G,EAAS0G,GAAUjC,EACnBmC,EAAYpH,EAAiBQ,EAAO,WAAaA,EAAO,QAAUyE,EAAO,MAAM,EAC/EoC,EAAWrH,EAAiBQ,EAAO,UAAYA,EAAO,SAAWyE,EAAO,OAAO,EAC/EqC,EAAWtH,EAAiBQ,EAAO,UAAYA,EAAO,SAAWyE,EAAO,OAAO,EAC/EsC,EAAahI,EAAkBiB,EAAO,gBAAkBA,EAAO,YAAcA,EAAO,SAAS,GAAK,EAClGgH,EAAYxH,EAAiBQ,EAAO,yBAA2BA,EAAO,eAAiBA,EAAO,WAAaA,EAAO,OAAO,EACzHiH,EAAiB,CAACC,GAAWN,EAAWC,EAAUC,CAAQ,EAKhE,GAAI,EAJgB,EAAQJ,GACvB,EAAQM,GACRC,GACA,KAAK,IAAIF,CAAU,EAAI,OACV,MAAO,GACzB,MAAMI,EAAWC,GAAoBJ,CAAS,EACxCK,EAAiBF,EACnBG,GAAyBV,EAAWC,EAAUC,EAAUC,CAAU,EAClE,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACjCQ,EAAqB,CACzB,OAAAZ,EACA,KAAM7H,EAAkBkB,EAAO,IAAI,EACnC,OAAQlB,EAAkBkB,EAAO,MAAM,EACvC,OAAQR,EAAiBQ,EAAO,QAAUA,EAAO,OAAO,EACxD,OAAQR,EAAiBQ,EAAO,YAAcA,EAAO,QAAUA,EAAO,MAAM,EAC5E,UAAAgH,EACA,WAAYjI,EAAkBiB,EAAO,YAAcA,EAAO,QAAUA,EAAO,QAAQ,EACnF,YAAajB,EAAkBiB,EAAO,WAAW,EACjD,WAAA+G,EACA,UAAAH,EACA,SAAAC,EACA,SAAAC,EACA,sBAAuBK,EACvB,eAAAE,CAAA,EAEF,OAAOF,EACH,CAAE,KAAAI,GACF,CACE,KAAAA,EACA,QAAS,0JAEjB,CAEA,SAASD,GACPE,EACAC,EACAC,EACAX,EACqB,CACrB,MAAMY,EAAQC,GAAkBH,CAAQ,GAAK,CAAE,EAAG,EAAG,EAAG,GAClDI,EAAiBD,GAAkBF,CAAQ,GAAK,CAAE,EAAG,CAACC,EAAM,EAAG,EAAGA,EAAM,GACxEG,EAAaH,EAAM,EAAIE,EAAe,EAAIF,EAAM,EAAIE,EAAe,EACnEE,EAAcH,GAAkB,CACpC,EAAGC,EAAe,EAAIF,EAAM,EAAIG,EAChC,EAAGD,EAAe,EAAIF,EAAM,EAAIG,CAAA,CACjC,GAAK,CAAE,EAAG,CAACH,EAAM,EAAG,EAAGA,EAAM,GACxBK,EAA4B,CAChC,EAAGL,EAAM,EACT,EAAGI,EAAY,EACf,EAAGJ,EAAM,EACT,EAAGI,EAAY,EACf,EAAGP,EAAS,EAAEA,EAAO,EAAIG,EAAM,EAAIH,EAAO,EAAIG,EAAM,GAAK,EACzD,EAAGH,EAAS,EAAEA,EAAO,EAAIO,EAAY,EAAIP,EAAO,EAAIO,EAAY,GAAK,GAEvE,OAAOzG,GAAeG,GAAe,OAAO,SAASsF,CAAU,EAAIA,EAAa,CAAC,EAAGiB,CAAI,CAC1F,CAEA,SAASJ,GAAkBK,EAAoE,CAC7F,GAAI,CAACA,GAAQ,KAAK,IAAI,OAAOA,EAAK,GAAK,CAAC,CAAC,EAAI,KAAM,OACnD,MAAM3B,EAAS,KAAK,MAAM2B,EAAK,EAAGA,EAAK,CAAC,EACxC,GAAI,GAAC,OAAO,SAAS3B,CAAM,GAAKA,EAAS,OACzC,MAAO,CAAE,EAAG2B,EAAK,EAAI3B,EAAQ,EAAG2B,EAAK,EAAI3B,CAAA,CAC3C,CAEA,SAASc,GAAoBJ,EAA4C,CACvE,GAAI,CAACA,GAAa,CAAC,OAAO,SAASA,EAAU,CAAC,GAAK,CAAC,OAAO,SAASA,EAAU,CAAC,GAAK,CAAC,OAAO,SAASA,EAAU,CAAC,EAAG,MAAO,GAC1H,MAAMV,EAAS,KAAK,MAAMU,EAAU,EAAGA,EAAU,EAAG,OAAOA,EAAU,CAAC,CAAC,EACvE,MAAI,CAAC,OAAO,SAASV,CAAM,GAAKA,EAAS,MAAc,GAChD,KAAK,MAAMU,EAAU,EAAGA,EAAU,CAAC,EAAIV,GAAU,MACnD,KAAK,IAAI,OAAOU,EAAU,CAAC,CAAC,EAAIV,GAAU,EAAI,IACrD,CAEA,SAASY,GACPM,EACAG,EACAO,EACS,CACT,MAAMC,EAAQ,CAACpI,EAA2BqI,IAAqB,OAAO,SAASrI,CAAK,GAAK,KAAK,IAAI,OAAOA,CAAK,EAAIqI,CAAQ,GAAK,MACzHC,EAAc,CAACb,GAAWW,EAAMX,EAAO,EAAG,CAAC,GAAKW,EAAMX,EAAO,EAAG,CAAC,GAAKW,EAAMX,EAAO,GAAK,EAAG,CAAC,EAC5Fc,EAAS,CAACX,GAAUQ,EAAMR,EAAM,EAAG,CAAC,GAAKQ,EAAMR,EAAM,EAAG,CAAC,GAAKQ,EAAMR,EAAM,GAAK,EAAG,CAAC,EACnFY,EAAS,CAACL,GAAUC,EAAMD,EAAM,EAAG,CAAC,GAAKC,EAAMD,EAAM,EAAG,CAAC,GAAKC,EAAMD,EAAM,GAAK,EAAG,CAAC,EACzF,OAAOG,GAAeC,GAAUC,CAClC,CAEA,SAAS/D,GAAc5B,EAAgChE,EAA0D,CAC/G,MAAM2G,EAAmC,GACnCC,EAAwB,CAAC5C,EAAM,OAAQA,EAAM,aAAcA,EAAM,cAAeA,EAAM,YAAY,EAClG6C,EAAS7C,EAAM,OACrB4C,EAAW,KAAKC,GAAQ,MAAOA,GAAQ,aAAcA,GAAQ,MAAM,EACnE,MAAMV,EAAmB,CAAE,QAAS,EAAQnG,EAAQ,QAAU,yBAA0B,EAAQA,EAAQ,OAAO,EAC/G,UAAW+G,KAAaH,EACtB,UAAWlF,KAAQsF,GAAgBD,CAAS,EAAG,CAC7C,MAAM3F,EAASM,EACTuF,EAAO/G,EAAkBkB,EAAO,MAAQA,EAAO,WAAaA,EAAO,KAAK,EAC9E,GAAI,CAAC6F,EAAM,SAEX,MAAMb,GADc,MAAM,QAAQhF,EAAO,QAAQ,EAAIA,EAAO,SAAW,MAAM,QAAQA,EAAO,YAAY,EAAIA,EAAO,aAAe,IAE/H,OAAQoG,GAA4C,CAAC,CAACA,GAAS,OAAOA,GAAU,QAAQ,EACxF,IAAKA,GAAUnB,GAAmBmB,EAAOrB,CAAgB,CAAC,EAC7D/D,GAASuE,EAAQ,CACf,KAAAM,EACA,UAAWrG,EAAiBQ,EAAO,WAAaA,EAAO,MAAM,GAAK,CAAE,EAAG,EAAG,EAAG,GAC7E,SAAAgF,EACA,IAAKpG,EAAQ,QAAUoB,EAAS,OACjC,CACH,CAEF,OAAOuF,CACT,CAEA,SAASK,GAAgBD,EAA+B,CACtD,GAAI,CAACA,EAAW,MAAO,GACvB,GAAI,MAAM,QAAQA,CAAS,EAAG,OAAOA,EACrC,GAAI,OAAOA,GAAc,SAAU,MAAO,GAC1C,MAAM3F,EAAS2F,EACT6C,EAAe,OAAO,OAAOxI,CAAM,EAAE,OAAQD,GAAUA,GAAS,OAAOA,GAAU,QAAQ,EACzF0I,EAAS,CAAC,UAAW,UAAW,QAAS,SAAU,SAAU,QAAQ,EAAE,QAAS/C,GAAQ,MAAM,QAAQ1F,EAAO0F,CAAG,CAAC,EAAI1F,EAAO0F,CAAG,EAAiB,EAAE,EACxJ,OAAI+C,EAAO,OAAS,EAAUA,EACvBD,CACT,CAEA,SAAStF,GAAkBF,EAA0B,CACnD,MAAM0F,EAAU1F,EAAS,QAAU,QACnC,GAAI0F,IAAY,IAAK,OAAOC,GAAA,EAC5B,MAAMC,EAAuBF,EAAQ,QAAQ,OAAQ,EAAE,EACvD,OAAIG,GAAcD,CAAoB,EAAUA,EAC5CA,EAAqB,WAAW,GAAG,EAAU,GAAGD,GAAA,CAAkB,GAAGC,CAAoB,GACtF,IAAI,IAAIA,EAAsBE,GAAA,CAAmB,EAAE,KAAK,QAAQ,OAAQ,EAAE,CACnF,CAEA,SAASpF,GAAmBV,EAA0B,CACpD,OAAO,IAAI,IAAI,oBAAqBe,GAAoBf,CAAQ,CAAC,EAAE,IACrE,CAEA,SAASe,GAAoBhE,EAAuB,CAClD,OAAOA,EAAM,SAAS,GAAG,EAAIA,EAAQ,GAAGA,CAAK,GAC/C,CAEA,SAAS8I,GAAc9I,EAAwB,CAC7C,MAAO,uBAAuB,KAAKA,CAAK,CAC1C,CAEA,SAAS+I,IAA4B,CACnC,OAAI,OAAO,SAAa,KAAe,SAAS,QAAgB,SAAS,QACrE,OAAO,SAAa,KAAe,SAAS,KAAa,SAAS,KAC/D,mBACT,CAEA,SAASH,IAA2B,CAClC,OAAI,OAAO,SAAa,KAAe,SAAS,OAAe,SAAS,OACjE,IAAI,IAAIG,GAAA,CAAmB,EAAE,MACtC,CAEA,eAAelF,GAAgBmF,EAAkC,CAC/D,GAAI,OAAO,OAAU,WACnB,MAAM,IAAI,MAAM,yEAAyE,EAG3F,MAAMC,EAAW,MAAM,MAAMD,EAAK,CAAE,YAAa,cAAe,MAAO,cAAe,EACtF,GAAI,CAACC,EAAS,GACZ,MAAM,IAAI,MAAM,uCAAuCA,EAAS,MAAM,QAAQD,CAAG,GAAG,EAGtF,MAAM1H,EAAQ,IAAI,WAAW,MAAM2H,EAAS,aAAa,EACzD,GAAI,CAACC,GAAa5H,CAAK,EAAG,CACxB,MAAM6H,EAAUC,GAAmB9H,CAAK,EAClC+H,EAAcJ,EAAS,QAAQ,IAAI,cAAc,GAAK,uBAC5D,MAAM,IAAI,MAAM,yBAAyBD,CAAG,qCAAqCM,GAAiBhI,CAAK,CAAC,KAAK+H,CAAW,yGAAyGF,CAAO,EAAE,CAC5O,CAEA,OAAO7H,CACT,CAEA,SAAS4H,GAAa5H,EAA4B,CAChD,OAAOA,EAAM,QAAU,GAAKA,EAAM,CAAC,IAAM,GAAQA,EAAM,CAAC,IAAM,IAAQA,EAAM,CAAC,IAAM,KAAQA,EAAM,CAAC,IAAM,GAC1G,CAEA,SAASgI,GAAiBhI,EAA2B,CACnD,OAAO,MAAM,KAAKA,EAAM,MAAM,EAAG,CAAC,CAAC,EAAE,IAAKiI,GAASA,EAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CACjG,CAEA,SAASH,GAAmB9H,EAA2B,CACrD,MAAMkI,EAAO,MAAM,KAAKlI,EAAM,MAAM,EAAG,EAAE,CAAC,EACvC,IAAKiI,GAASA,GAAQ,IAAMA,GAAQ,IAAM,OAAO,aAAaA,CAAI,EAAI,GAAG,EACzE,KAAK,EAAE,EACV,OAAO,KAAK,UAAUC,CAAI,CAC5B,CCncA,MAAMC,EAAQ,KAEdA,EAAM,YAAY,CAAE,KAAM,QAAS,EAEnCA,EAAM,UAAY,MAAOC,GAA0C,CACjE,MAAMC,EAAUD,EAAM,KACtB,GAAI,CAACC,EAAS,OACd,MAAMtH,EAAU,YAAY,MACtBuH,EAAQC,GAA8B,CAC1CJ,EAAM,YAAY,CAAE,KAAM,WAAY,UAAWE,EAAQ,UAAW,SAAAE,EAAU,CAChF,EAEA,GAAI,CACF,GAAIF,EAAQ,OAAS,SAAU,CAC7BC,EAAK,CAAE,MAAO,YAAa,OAAQ,MAAO,QAAS,yCAA0C,EAC7F,MAAMnH,GAAekH,EAAQ,SAAS,UAAY,QAAQ,EAC1DF,EAAM,YAAY,CAAE,KAAM,gBAAiB,UAAWE,EAAQ,UAAW,UAAW,YAAY,MAAQtH,CAAA,CAAS,EACjH,MACF,CAEA,GAAIsH,EAAQ,OAAS,OAAQ,OAC7BC,EAAK,CAAE,MAAO,eAAgB,OAAQ,MAAO,QAAS,kCAAmC,MAAOD,EAAQ,MAAM,WAAY,EAC1H,MAAMnE,EAAS,MAAMpD,GAAc,IAAI,WAAWuH,EAAQ,KAAK,EAAG,CAChE,GAAGA,EAAQ,QACX,WAAYA,EAAQ,SACpB,QAAS,EAAQA,EAAQ,SAAS,QAClC,WAAYC,CAAA,CACb,EACDpE,EAAO,SAAS,SAAS,WAAa,SACtCA,EAAO,UAAY,YAAY,MAAQnD,EACvCoH,EAAM,YAAY,CAAE,KAAM,SAAU,UAAWE,EAAQ,UAAW,OAAAnE,EAAQ,CAC5E,OAASvB,EAAO,CACd,MAAM6F,EAAaC,GAAqB9F,CAAK,EAC7CwF,EAAM,YAAY,CAAE,KAAM,QAAS,UAAWE,EAAQ,UAAW,MAAOG,EAAY,CACtF,CACF,EAEA,SAASC,GAAqB9F,EAAoE,CAChG,OAAIA,aAAiB,MAAc,CAAE,KAAMA,EAAM,KAAM,QAASA,EAAM,QAAS,MAAOA,EAAM,OACrF,CAAE,QAAS,OAAOA,CAAK,EAChC,CC7DO,IAAI+F,IACV,SAAUA,EAAa,CACpBA,EAAYA,EAAY,QAAa,CAAC,EAAI,UAC1CA,EAAYA,EAAY,YAAiB,CAAC,EAAI,cAC9CA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,CAAC,EAAI,gBAChDA,EAAYA,EAAY,cAAmB,EAAE,EAAI,gBACjDA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,SAAc,EAAE,EAAI,WAC5CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,aAAkB,GAAG,EAAI,cACrD,GAAGA,KAAgBA,GAAc,GAAG,EACpC,MAAMC,GAAY,CACd,QACA,QACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,OACA,QACA,QACA,SACA,eACA,eACA,eACA,MACA,eACA,eACA,eACA,eACA,eACA,cACA,YACA,MACA,SACA,OACA,QACA,WACA,cACJ,EACaC,GAAyBC,GAC3BF,GAAUE,CAAQ,ECjGtB,IAAIC,IACV,SAAUA,EAAkB,CACzBA,EAAiBA,EAAiB,QAAa,CAAC,EAAI,UACpDA,EAAiBA,EAAiB,QAAa,CAAC,EAAI,UACpDA,EAAiBA,EAAiB,QAAa,CAAC,EAAI,UACpDA,EAAiBA,EAAiB,SAAc,CAAC,EAAI,WACrDA,EAAiBA,EAAiB,OAAY,CAAC,EAAI,SACnDA,EAAiBA,EAAiB,cAAmB,CAAC,EAAI,gBAC1DA,EAAiBA,EAAiB,SAAc,CAAC,EAAI,WACrDA,EAAiBA,EAAiB,qBAA0B,EAAE,EAAI,uBAClEA,EAAiBA,EAAiB,oBAAyB,EAAE,EAAI,sBACjEA,EAAiBA,EAAiB,yBAA8B,GAAG,EAAI,0BAC3E,GAAGA,KAAqBA,GAAmB,GAAG,EACvC,IAAIC,GACV,SAAUA,EAAoB,CAC3BA,EAAmBA,EAAmB,QAAa,CAAC,EAAI,UACxDA,EAAmBA,EAAmB,UAAe,CAAC,EAAI,YAC1DA,EAAmBA,EAAmB,SAAc,CAAC,EAAI,WACzDA,EAAmBA,EAAmB,WAAgB,CAAC,EAAI,aAC3DA,EAAmBA,EAAmB,aAAkB,CAAC,EAAI,eAC7DA,EAAmBA,EAAmB,YAAiB,CAAC,EAAI,cAC5DA,EAAmBA,EAAmB,WAAgB,CAAC,EAAI,aAC3DA,EAAmBA,EAAmB,aAAkB,CAAC,EAAI,eAC7DA,EAAmBA,EAAmB,YAAiB,CAAC,EAAI,aAChE,GAAGA,IAAuBA,EAAqB,GAAG,EAC3C,IAAIC,IACV,SAAUA,EAA6B,CACpCA,EAA4BA,EAA4B,QAAa,CAAC,EAAI,UAC1EA,EAA4BA,EAA4B,MAAW,CAAC,EAAI,OAC5E,GAAGA,KAAgCA,GAA8B,GAAG,EAC7D,IAAIC,IACV,SAAUA,EAA0B,CACjCA,EAAyBA,EAAyB,OAAY,CAAC,EAAI,SACnEA,EAAyBA,EAAyB,MAAW,CAAC,EAAI,QAClEA,EAAyBA,EAAyB,QAAa,CAAC,EAAI,UACpEA,EAAyBA,EAAyB,IAAS,CAAC,EAAI,MAChEA,EAAyBA,EAAyB,MAAW,CAAC,EAAI,OACtE,GAAGA,KAA6BA,GAA2B,GAAG,EACvD,IAAIC,IACV,SAAUA,EAA6B,CACpCA,EAA4BA,EAA4B,KAAU,CAAC,EAAI,OACvEA,EAA4BA,EAA4B,KAAU,CAAC,EAAI,OACvEA,EAA4BA,EAA4B,KAAU,CAAC,EAAI,OACvEA,EAA4BA,EAA4B,YAAiB,CAAC,EAAI,cAC9EA,EAA4BA,EAA4B,QAAa,CAAC,EAAI,UAC1EA,EAA4BA,EAA4B,SAAc,CAAC,EAAI,WAC3EA,EAA4BA,EAA4B,mBAAwB,EAAE,EAAI,oBAC1F,GAAGA,KAAgCA,GAA8B,GAAG,EAC7D,IAAIC,IACV,SAAUA,EAAoC,CAC3CA,EAAmCA,EAAmC,KAAU,CAAC,EAAI,OACrFA,EAAmCA,EAAmC,QAAa,CAAC,EAAI,UACxFA,EAAmCA,EAAmC,SAAc,CAAC,EAAI,WACzFA,EAAmCA,EAAmC,mBAAwB,CAAC,EAAI,oBACvG,GAAGA,KAAuCA,GAAqC,GAAG,EAC3E,IAAIC,IACV,SAAUA,EAA4B,CACnCA,EAA2BA,EAA2B,OAAY,CAAC,EAAI,SACvEA,EAA2BA,EAA2B,KAAU,CAAC,EAAI,OACrEA,EAA2BA,EAA2B,MAAW,CAAC,EAAI,QACtEA,EAA2BA,EAA2B,UAAe,CAAC,EAAI,YAC1EA,EAA2BA,EAA2B,WAAgB,CAAC,EAAI,YAC/E,GAAGA,KAA+BA,GAA6B,GAAG,EAC3D,IAAIC,IACV,SAAUA,EAAmC,CAC1CA,EAAkCA,EAAkC,OAAY,CAAC,EAAI,SACrFA,EAAkCA,EAAkC,OAAY,CAAC,EAAI,SACrFA,EAAkCA,EAAkC,IAAS,CAAC,EAAI,KACtF,GAAGA,KAAsCA,GAAoC,GAAG,ECpEzE,IAAIC,GACV,SAAUA,EAAmB,CAC1BA,EAAkBA,EAAkB,YAAiB,CAAC,EAAI,cAC1DA,EAAkBA,EAAkB,UAAe,CAAC,EAAI,WAC5D,GAAGA,IAAsBA,EAAoB,GAAG,EACzC,IAAIC,GACV,SAAUA,EAAuB,CAC9BA,EAAsBA,EAAsB,eAAoB,CAAC,EAAI,iBACrEA,EAAsBA,EAAsB,YAAiB,CAAC,EAAI,aACtE,GAAGA,IAA0BA,EAAwB,GAAG,EACjD,IAAIC,IACV,SAAUA,EAAe,CACtBA,EAAcA,EAAc,OAAY,CAAC,EAAI,SAC7CA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAC5CA,EAAcA,EAAc,OAAY,CAAC,EAAI,QACjD,GAAGA,KAAkBA,GAAgB,GAAG,EACjC,IAAIC,IACV,SAAUA,EAAqB,CAC5BA,EAAoBA,EAAoB,YAAiB,CAAC,EAAI,cAC9DA,EAAoBA,EAAoB,WAAgB,CAAC,EAAI,aAC7DA,EAAoBA,EAAoB,OAAY,CAAC,EAAI,QAC7D,GAAGA,KAAwBA,GAAsB,GAAG,EAC7C,IAAIC,IACV,SAAUA,EAA4B,CACnCA,EAA2BA,EAA2B,aAAkB,CAAC,EAAI,eAC7EA,EAA2BA,EAA2B,UAAe,CAAC,EAAI,WAC9E,GAAGA,KAA+BA,GAA6B,GAAG,EAC3D,IAAIC,IACV,SAAUA,EAAsB,CAC7BA,EAAqBA,EAAqB,MAAW,CAAC,EAAI,QAC1DA,EAAqBA,EAAqB,SAAc,CAAC,EAAI,UACjE,GAAGA,KAAyBA,GAAuB,GAAG,EAC/C,IAAIC,IACV,SAAUA,EAA2B,CAClCA,EAA0BA,EAA0B,SAAc,CAAC,EAAI,WACvEA,EAA0BA,EAA0B,SAAc,CAAC,EAAI,UAC3E,GAAGA,KAA8BA,GAA4B,GAAG,EACzD,IAAIC,IACV,SAAUA,EAAyB,CAChCA,EAAwBA,EAAwB,QAAa,CAAC,EAAI,UAClEA,EAAwBA,EAAwB,SAAc,CAAC,EAAI,WACnEA,EAAwBA,EAAwB,SAAc,CAAC,EAAI,WACnEA,EAAwBA,EAAwB,QAAa,CAAC,EAAI,UAClEA,EAAwBA,EAAwB,QAAa,CAAC,EAAI,UAClEA,EAAwBA,EAAwB,UAAe,EAAE,EAAI,WACzE,GAAGA,KAA4BA,GAA0B,GAAG,EACrD,IAAIC,GACV,SAAUA,EAAyB,CAChCA,EAAwBA,EAAwB,KAAU,CAAC,EAAI,OAC/DA,EAAwBA,EAAwB,SAAc,CAAC,EAAI,WACnEA,EAAwBA,EAAwB,SAAc,CAAC,EAAI,WACnEA,EAAwBA,EAAwB,OAAY,CAAC,EAAI,QACrE,GAAGA,IAA4BA,EAA0B,GAAG,ECpDrD,IAAIC,IACV,SAAUA,EAAiB,CACxBA,EAAgBA,EAAgB,gBAAqB,CAAC,EAAI,kBAC1DA,EAAgBA,EAAgB,UAAe,CAAC,EAAI,YACpDA,EAAgBA,EAAgB,WAAgB,CAAC,EAAI,aACrDA,EAAgBA,EAAgB,YAAiB,CAAC,EAAI,cACtDA,EAAgBA,EAAgB,WAAgB,EAAE,EAAI,aACtDA,EAAgBA,EAAgB,eAAoB,EAAE,EAAI,iBAC1DA,EAAgBA,EAAgB,SAAc,EAAE,EAAI,WACpDA,EAAgBA,EAAgB,WAAgB,GAAG,EAAI,YAC3D,GAAGA,KAAoBA,GAAkB,GAAG,EACrC,IAAIC,IACV,SAAUA,EAAe,CACtBA,EAAcA,EAAc,KAAU,CAAC,EAAI,OAC3CA,EAAcA,EAAc,UAAe,CAAC,EAAI,YAChDA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAC5CA,EAAcA,EAAc,OAAY,CAAC,EAAI,QACjD,GAAGA,KAAkBA,GAAgB,GAAG,ECjBjC,IAAIC,IACV,SAAUA,EAAuB,CAC9BA,EAAsBA,EAAsB,KAAU,CAAC,EAAI,OAC3DA,EAAsBA,EAAsB,WAAgB,CAAC,EAAI,aACjEA,EAAsBA,EAAsB,WAAgB,CAAC,EAAI,YACrE,GAAGA,KAA0BA,GAAwB,GAAG,EACjD,IAAIC,IACV,SAAUA,EAAwB,CAC/BA,EAAuBA,EAAuB,KAAU,CAAC,EAAI,OAC7DA,EAAuBA,EAAuB,OAAY,CAAC,EAAI,SAC/DA,EAAuBA,EAAuB,MAAW,CAAC,EAAI,QAC9DA,EAAuBA,EAAuB,QAAa,CAAC,EAAI,UAChEA,EAAuBA,EAAuB,OAAY,CAAC,EAAI,SAC/DA,EAAuBA,EAAuB,IAAS,CAAC,EAAI,KAChE,GAAGA,KAA2BA,GAAyB,GAAG,EACnD,IAAIC,IACV,SAAUA,EAAsB,CAC7BA,EAAqBA,EAAqB,SAAc,CAAC,EAAI,WAC7DA,EAAqBA,EAAqB,OAAY,CAAC,EAAI,SAC3DA,EAAqBA,EAAqB,OAAY,CAAC,EAAI,SAC3DA,EAAqBA,EAAqB,IAAS,CAAC,EAAI,KAC5D,GAAGA,KAAyBA,GAAuB,GAAG,ECrB/C,MAAMC,GAAmB,OAAO,OAAO,CAC1C,eACA,UACA,UACA,SACA,UACA,SACA,SACA,UACA,YACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,WACA,UACA,UACA,SACA,UACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,SACA,WACA,SACA,WACA,WACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,SACA,UACA,UACA,SACA,SACA,QACA,WACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,SACA,SACA,WACA,SACA,cACA,YACA,UACA,SACA,SACA,WACA,YACA,WACA,kBACA,UACA,WACA,WACA,gBACA,WACA,UACA,WACA,iBACA,iBACA,gBACA,oBACA,sBACA,YACA,WACA,SACA,SACA,UACA,SACA,SACA,YACA,WACA,cACA,OACA,WACA,WACA,WACA,YACA,SACA,SACA,aACA,UACA,UACA,WACA,YACA,UACA,UACA,WACA,WACA,cACA,gBACA,YACA,aACA,YACA,WACA,WACA,UACA,cACA,gBACA,eACA,cACA,eACA,aACA,eACA,gBACA,WACA,WACA,YACA,YACA,WACA,WACA,sBACA,YACA,SACA,WACA,aACA,aACA,WACA,WACA,WACA,QACA,QACA,WACA,UACA,YACA,WACA,aACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,UACA,SACA,aACA,eACA,cACA,aACA,cACA,YACA,cACA,eACA,UACA,UACA,WACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WACA,cACA,YACA,YACA,aACA,OACJ,CAAC,EC9MM,IAAIC,IACV,SAAUA,EAA2B,CAClCA,EAA0BA,EAA0B,cAAmB,CAAC,EAAI,gBAC5EA,EAA0BA,EAA0B,aAAkB,CAAC,EAAI,eAC3EA,EAA0BA,EAA0B,SAAc,CAAC,EAAI,WACvEA,EAA0BA,EAA0B,SAAc,CAAC,EAAI,WACvEA,EAA0BA,EAA0B,KAAU,CAAC,EAAI,OACnEA,EAA0BA,EAA0B,aAAkB,CAAC,EAAI,cAC/E,GAAGA,KAA8BA,GAA4B,GAAG,ECjBzD,MAAMC,GAAc,CACvB,CACI,KAAM,UACN,IAAK,SACL,YAAa,SACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,QACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,QACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,QACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CAAE,KAAM,QAAS,IAAK,SAAU,YAAa,mBAAoB,QAAS,CAAC,EAC3E,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,EACjB,EACI,CAAE,KAAM,KAAM,IAAK,SAAU,YAAa,oBAAqB,QAAS,EAAG,EAC3E,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,mCACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,wBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EAEI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EAGI,CACI,KAAM,SACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EAGI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EAGI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EAKI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EAII,CACI,KAAM,SACN,IAAK,UACL,YAAa,oBACb,QAAS,EACjB,EACI,CAAE,KAAM,SAAU,IAAK,GAAI,YAAa,wBAAyB,QAAS,CAAC,CAC/E,ECtPA,eAA8BC,GAAaC,EAAqC,GAAkB,CAChG,MAAMC,EAAaC,GAAoBF,CAAS,EAC1CvI,EAAS,MAAM,OAA0BwI,GACzCE,EAAW1I,EAAyD,SAAYA,EAAsC,cAAgBA,EAC5I,GAAI,O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","names":["createCadDocument","init","inferEntityKind","type","normalizeCadEntity","raw","forcedType","options","entity","stringOrUndefined","numberOrUndefined","explicitClosed","typeUsesClassicPolylineFlag","typeUsesLwPolylineFlag","numericColorMode","rawColorNumber","explicitAci","explicitTrueColor","rawColorLooksRgb","pointFromUnknown","vertices","normalizePoints","controlPoints","fitPoints","rawAttribs","attribute","value","record","x","y","zCandidate","z","out","item","p","rec","vertex","bulge","startWidth","endWidth","addLayer","target","layer","addBlock","block","addLineType","lineType","exactArrayBuffer","bytes","multiplyMatrix","left","right","rotationMatrix","angle","c","s","RELEASES","readDwgVersion","signature","b","release","instances","parseDwgBytes","started","sourceName","version","lib","createLibreDwg","fileContent","fileType","dwg","rawDb","document","normalizeDwgDatabase","elapsedMs","wasmPath","normalizedPath","normalizeWasmPath","promise","__vitePreload","index","module","typed","LibreDwg","wasmUrl","getLibreDwgWasmUrl","wasmBinary","fetchWasmBinary","wasmInstance","filename","ensureTrailingSlash","error","message","instance","layers","extractLayers","lineTypes","extractLineTypes","blocks","extractBlocks","header","normalizeHeader","savedViewResult","extractSavedView","savedView","rawEntities","normalizeOptions","entities","normalizeDwgEntity","element","rgb","flag","classicPolyline","isRenderableAci","result","candidates","tables","key","candidate","expandCandidate","name","colorIndex","rawRgb","convertedRgb","useIndexedColor","trueColor","pattern","entry","part","length","convertedShapeCode","convertedTypeFlag","hasLibreDwgPair","active","source","ucsOrigin","ucsXAxis","ucsYAxis","twistAngle","direction","hasNonWorldUcs","isWorldUcs","planView","isPlanViewDirection","sceneTransform","createSavedViewTransform","view","origin","rawXAxis","rawYAxis","xAxis","normalizePlanAxis","yAxisCandidate","projection","orthogonalY","base","axis","yAxis","close","expected","originWorld","xWorld","yWorld","directValues","arrays","trimmed","getRuntimeOrigin","withoutTrailingSlash","isAbsoluteUrl","getRuntimeBaseUrl","url","response","hasWasmMagic","preview","decodeAsciiPreview","contentType","formatFirstBytes","byte","text","scope","event","request","emit","progress","normalized","normalizeWorkerError","DwgCodePage","encodings","dwgCodePageToEncoding","codepage","DwgDimensionType","DwgAttachmentPoint","DwgDimensionTextLineSpacing","DwgDimensionTextVertical","DwgDimensionZeroSuppression","DwgDimensionZeroSuppressionAngular","DwgDimensionTextHorizontal","DwgDimensionToleranceTextVertical","DwgHatchSolidFill","DwgHatchAssociativity","DwgHatchStyle","DwgHatchPatternType","DwgHatchBoundaryAnnotation","DwgHatchGradientFlag","DwgHatchGradientColorFlag","DwgBoundaryPathTypeFlag","DwgBoundaryPathEdgeType","DwgPolylineFlag","DwgSmoothType","DwgTextGenerationFlag","DwgTextHorizontalAlign","DwgTextVerticalAlign","HEADER_VARIABLES","DwgDictionaryCloningFlags","dwgVersions","createModule","moduleArg","runtimeUrl","resolveRuntimeJsUrl","factory","locateFile","located","Dwg_Object_Supertype","Dwg_Object_Type","Dwg_Object_Type_Inverted","Dwg_File_Type","Dwg_Hatch_Edge_Type","Dwg_Color_Method","MODEL_SPACE","MODEL_SPACE_PREFIX","isModelSpace","isPaperSpace","idToString","id","LibreEntityConverter","__publicField","db","force","ltype","object_ptr","libredwg","entity_tio","commonAttrs","fixedtype","corner1","corner2","corner3","corner4","center","radius","thickness","extrusionDirection","startAngle","endAngle","subclassName","attachmentPoint","insertionPoint","rectHeight","rectWidth","extentsHeight","extentsWidth","textValue","prompt","tag","flags","fieldLength","lockPositionFlag","duplicateRecordCloningFlag","isReallyLocked","mtextFlag","alignmentPoint","dimensionCommonAttrs","subDefinitionPoint1","subDefinitionPoint2","rotationAngle","obliqueAngle","centerPoint","arcPoint","leaderLength","majorAxisEndPoint","axisRatio","patternName","isSolidFill","isAssociative","numberOfBoundaryPaths","paths_ptr","boundaryPaths","patternStyle","patternType","patternAngle","patternScale","numberOfDefinitionLines","definitionLines_ptr","definitionLines","pixelSize","numberOfSeedPoints","seedPoints_ptr","seedPoints","gradientName","gradientRotation","gradientDefinition","colorTint","gradientColorFlag","gradientColors_ptr","gradientColors","paths","path","edges","seg","position","uPixel","vPixel","imageSize","clipping","brightness","contrast","fade","clipMode","clippingBoundaryType","countBoundaryPoints","clip_verts","clippingBoundaryPath","imagedef_ref","imageDefHandle","imagedefreactor_ref","imageDefReactorHandle","block_header_ref","block_header_obj","block_header_tio","scale","rotation","columnCount","rowCount","columnSpacing","rowSpacing","attrib_ptr_array","attribs","styleName","isArrowheadEnabled","isSpline","leaderCreationFlag","isHooklineSameDirection","isHooklineExists","textHeight","textWidth","numberOfVertices","vertices_ptr","byBlockColor","normal","horizontalDirection","offsetFromBlock","offsetFromAnnotation","startPoint","endPoint","constantWidth","elevation","num_points","points_ptr","points","num_bulges","bulges_ptr","bulges","point","justification","numberOfLines","verts_ptr","verts","vert","line","oleVersion","oleClient","dataSize","leftUpPoint","rightDownPoint","lockAspect","oleObjectType","tileModeDescriptor","binaryData","mode","drawingDirection","lineSpacingStyle","lineSpacing","backgroundFill","fillBoxScale","backgroundFillColor","backgroundFillTransparency","columnType","columnFlowReversed","columnAutoHeight","columnWidth","columnGutter","columnHeightCount","columnHeights_ptr","columnHeights","object","smoothType","classId","firstPoint","unitDirection","state","verticalDirection","topHeight","bottomHeight","indicatorTransparency","indicatorColor","numberOfBackLineVertices","backLineVertices_ptr","backLineVertices","geometrySettingHandle","geometrySettingHardId","degree","knotTolerance","numberOfKnots","knots_ptr","knots","fitTolerance","numberOfFitPoints","fit_pts_ptr","weighted","controlTolerance","numberOfControlPoints","ctrl_pts_ptr","startTangent","endTangent","directionVector","tableValue","row_heights_ptr","rowHeightArr","col_widths_ptr","columnWidthArr","table_style_ref","tableStyleId","blockRecordHandle","overrideFlag","borderColorOverrideFlag","borderLineWeightOverrideFlag","borderVisibilityOverrideFlag","num_cells","cells_ptr","cells","converted","cell","xScale","generationFlag","halign","valign","xAxisDirection","dimStyleName","viewportCenter","width","height","status","displayCenter","snapBase","snapSpacing","gridSpacing","viewDirection","targetPoint","perspectiveLensLength","frontClipZ","backClipZ","viewHeight","snapAngle","viewTwistAngle","circleZoomPercent","statusBitFlags","sheetName","renderMode","ucsPerViewport","named_ucs_ref","ucsId","base_ucs_ref","ucsBaseId","orthographicType","shadePlotMode","isDefaultLighting","defaultLightingType","majorGridFrequency","background_ref","backgroundId","shadeplot_ref","shadePlotId","visualstyle_ref","visualStyleId","sun_ref","sunId","definitionPoint","textPoint","dimensionType","textLineSpacingStyle","textLineSpacingFactor","measurement","textRotation","ocsRotation","color","method","rgbColor","handle","ownerhandle","ownerDictionaryHardId","lineweight","lineTypeScale","isVisible","xdata","LibreDwgConverter","data","num_objects","i","obj","tio","btr","attrib","viewportEntities","a","handleA","handleB","viewport","var_name","classes","count","cls","num_owned","description","basePoint","insertionUnits","explodability","scalability","layout_ptr","layout","bmpPreview","uint8ArrayToHexString","hexChars","bmpPreviewBinaryData","entities_ptr","object_ref_ptr_array","converter","ownerHandle","next","DIMTOL","DIMLIM","DIMTIH","DIMTOH","DIMSE1","DIMSE2","DIMALT","DIMTOFL","DIMSAH","DIMTIX","DIMSOXD","DIMALTD","DIMZIN","DIMSD1","DIMSD2","DIMTOLJ","DIMJUST","DIMFIT","DIMUPT","DIMTZIN","DIMALTZ","DIMALTTZ","DIMTAD","DIMUNIT","DIMAUNIT","DIMDEC","DIMTDEC","DIMALTU","DIMALTTD","DIMSCALE","DIMASZ","DIMEXO","DIMDLI","DIMEXE","DIMRND","DIMDLE","DIMTP","DIMTM","DIMFXL","DIMJOGANG","DIMTFILL","DIMTFILLCLR","DIMAZIN","DIMARCSYM","DIMTXT","DIMCEN","DIMTSZ","DIMALTF","DIMLFAC","DIMTVP","DIMTFAC","DIMGAP","DIMPOST","DIMAPOST","DIMBLK_T","DIMBLK1_T","DIMBLK2_T","DIMALTRND","DIMCLRD_N","DIMCLRE_N","DIMCLRT_N","DIMCLRD","DIMCLRE","DIMCLRT","DIMADEC","DIMFRAC","DIMLUNIT","DIMDSEP","DIMTMOVE","DIMATFIT","DIMFXLON","DIMTXTDIRECTION","DIMALTMZF","DIMALTMZS","DIMMZF","DIMMZS","DIMLWD","DIMLWE","DIMTXSTY_Ptr","DIMTXSTY","DIMLDRBLK_Ptr","DIMLDRBLK","frozen","off","frozenInNew","locked","plotFlag","linewt","ltypeRef","ltypeName","numDashes","patternLen","dashes","dashArray","patterns","dash","standardFlag","widthFactor","textGenerationFlag","lastHeight","font","bigFont","aspectRatio","viewTarget","viewDirectionFromTarget","lensLength","frontClippingPlane","backClippingPlane","viewMode","isDefaultLightingOn","defaultLightningType","ambient_color","lowerLeftCorner","upperRightCorner","circleSides","ucsIconSetting","snapRotationAngle","snapBasePoint","majorGridLines","background","backgroundObjectId","visualstyle","visualStyleObjectId","object_tio","isHardOwner","cloningFlag","numitems","itemhandles_ptr","itemhandles","texts","entries","size","fileName","isLoaded","sizeOfOnePixel","resolutionUnits","layoutName","tabOrder","controlFlag","minLimit","maxLimit","minExtent","maxExtent","paperSpaceTableId","active_viewport_ref","viewportId","namedUcsId","numberOfPointsOnClipBoundary","clip_verts_ptr","clipBoundaryVisible","frontClippingPlaneFlag","frontClippingPlaneDistance","backClippingPlaneFlag","backClippingPlaneDistance","transform_ptr","matrix","inverse_transform_ptr","invertBlockMatrix","Box2D","translation","corners","pt","angleInRad","cos","sin","dx","dy","box","evaluateBSpline","weights","n","d","weightsSafe","knotsSafe","domain","low","high","v","j","l","denom","alpha","round10","exp","exponent","shifted","shiftedBase","shiftedExp","_colorKeywords","AUTO_CAD_COLOR_INDEX","clamp","min","max","_Color","hexString","scalar","r","g","red","green","blue","style","clonedColor","Color","Vector2D","len","createPolylineArcPoints","from","to","resolution","theta","ab","lengthAB","lengthCD","normAB","rotated","startInter","endInter","angleRad","interpolatePolyline","closed","SvgConverter","interpolationsPerSplineSegment","polyline","controlPointsForLib","segmentTs","k","uMin","uMax","t","bbox","secondPoint","mtext","_","hex","lines","fontsize","anchor","transform","originX","originY","cellRects","row","col","cellIndex","svgElements","textX","textY","totalWidth","sum","w","totalHeight","h","svg","acc","bbox0","element0","cx","cy","majorX","majorY","rx","ry","startOffset","endOffset","largeArcFlag","angles","pts","M","elements","boundsAndElement","fill","lwpolyline","spline","modelSpace","blockElements","ms","viewBox","DwgThumbnailImageType","_LibreDwg","prop","receiver","inputFileName","outputFileName","encoding","obj_ptr","ref_ptr","absref","obj_tio","obj_obj_ptr","obj_generic_ptr","model_space","results","ptr","field","subclass","dimstyle_ref","dimstyle_obj","dimstyle_tio","block_ref","block_obj","block_tio","base_pt","current","style_ref","style_obj","style_tio","filepath"],"ignoreList":[6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,24,25],"sources":["../../src/core/entity.ts","../../src/core/format.ts","../../src/core/transform.ts","../../src/loaders/dwg/dwgVersion.ts","../../src/loaders/dwg/DwgParser.ts","../../src/loaders/dwg/DwgWorker.ts","../../node_modules/@mlightcad/libredwg-web/lib/database/codepage.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/dimension.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/hatch.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/polyline.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/text.js","../../node_modules/@mlightcad/libredwg-web/lib/database/header/variables.js","../../node_modules/@mlightcad/libredwg-web/lib/database/objects/dictionary.js","../../node_modules/@mlightcad/libredwg-web/lib/database/version.js","../../src/loaders/dwg/libredwgWasmModuleProxy.ts","../../node_modules/@mlightcad/libredwg-web/lib/types/enums.js","../../node_modules/@mlightcad/libredwg-web/lib/converter/utils.js","../../node_modules/@mlightcad/libredwg-web/lib/converter/entityConverter.js","../../node_modules/@mlightcad/libredwg-web/lib/converter/converter.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/box2d.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/bspline.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/color.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/vector.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/polyline.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/svgConverter.js","../../node_modules/@mlightcad/libredwg-web/lib/libredwg.js"],"sourcesContent":["import type { CadBlock, CadDocument, CadEntity, CadEntityKind, CadLayer, CadLineType, CadPage, CadPoint3D } from './types';\n\nexport interface NormalizeCadEntityOptions {\n /** Preserve the parser-owned raw object on entity.raw. This can be very large and may not be structured-clone safe. */\n keepRaw?: boolean;\n /** Copy unknown parser properties onto the normalized entity. Disable inside workers for predictable cloneable payloads. */\n includeUnknownProperties?: boolean;\n /** How to interpret a numeric raw `color` property when the source parser is ambiguous. */\n numericColorMode?: 'auto' | 'aci' | 'rgb';\n}\n\nexport function createCadDocument(init: Partial<CadDocument> & Pick<CadDocument, 'format'>): CadDocument {\n return {\n format: init.format,\n sourceName: init.sourceName,\n units: init.units,\n header: init.header ?? {},\n layers: init.layers ?? {},\n lineTypes: init.lineTypes ?? {},\n blocks: init.blocks ?? {},\n entities: init.entities ?? [],\n pages: init.pages,\n savedView: init.savedView,\n metadata: init.metadata ?? {},\n warnings: init.warnings ?? [],\n raw: init.raw\n };\n}\n\nexport function inferEntityKind(type: unknown): CadEntityKind {\n const upper = String(type ?? '').toUpperCase();\n switch (upper) {\n case 'LINE': return 'line';\n case 'CIRCLE': return 'circle';\n case 'ARC': return 'arc';\n case 'LWPOLYLINE':\n case 'POLYLINE':\n case 'POLYLINE_2D':\n case 'POLYLINE2D':\n case 'POLYLINE_3D':\n case 'POLYLINE3D':\n case 'LEADER':\n case 'MULTILEADER': return 'polyline';\n case 'ELLIPSE': return 'ellipse';\n case 'TEXT':\n case 'MTEXT':\n case 'ATTRIB':\n case 'ATTDEF':\n case 'DIMENSION': return 'text';\n case 'POINT': return 'point';\n case 'INSERT': return 'insert';\n case 'SOLID':\n case 'TRACE':\n case '3DFACE': return 'solid';\n case 'HATCH': return 'hatch';\n case 'SPLINE': return 'spline';\n case 'PATH':\n case 'XPS_PATH':\n case 'DWF_PATH': return 'path';\n case 'IMAGE':\n case 'RASTER_IMAGE':\n case 'DWF_IMAGE': return 'image';\n case 'VIEWPORT': return 'viewport';\n default: return 'unsupported';\n }\n}\n\nexport function normalizeCadEntity(raw: Record<string, unknown>, forcedType?: string, options: NormalizeCadEntityOptions = {}): CadEntity {\n const type = forcedType ?? String(raw.type ?? raw.entityType ?? raw.objectName ?? 'UNKNOWN').toUpperCase();\n const entity: CadEntity = options.includeUnknownProperties === false\n ? { type, kind: inferEntityKind(type) }\n : { ...raw, type, kind: inferEntityKind(type) } as CadEntity;\n if (options.keepRaw) entity.raw = raw;\n entity.handle = stringOrUndefined(raw.handle ?? raw.id);\n entity.layer = stringOrUndefined(raw.layer ?? raw.layerName);\n entity.lineType = stringOrUndefined(raw.lineType ?? raw.linetype);\n entity.lineTypeScale = numberOrUndefined(raw.lineTypeScale ?? raw.linetypeScale ?? raw.ltscale) ?? entity.lineTypeScale;\n entity.flag = numberOrUndefined(raw.flag ?? raw.flags) ?? entity.flag;\n const explicitClosed = raw.isClosed === true || raw.closed === true || raw.shape === true;\n const typeUsesClassicPolylineFlag = /^(POLYLINE|POLYLINE_2D|POLYLINE2D|POLYLINE_3D|POLYLINE3D|SPLINE)$/.test(type);\n const typeUsesLwPolylineFlag = type === 'LWPOLYLINE';\n if (explicitClosed\n || (typeUsesClassicPolylineFlag && (Number(entity.flag ?? 0) & 1) === 1)\n || (typeUsesLwPolylineFlag && (Number(entity.flag ?? 0) & 0x200) === 0x200)) {\n entity.isClosed = true;\n }\n\n const numericColorMode = options.numericColorMode ?? 'auto';\n const rawColorNumber = numberOrUndefined(raw.color);\n const explicitAci = numberOrUndefined(raw.colorIndex ?? raw.colorNumber ?? raw.aci ?? raw.aciColor ?? raw.color_index);\n entity.colorIndex = explicitAci ?? (numericColorMode !== 'rgb' && rawColorNumber !== undefined && Math.abs(rawColorNumber) <= 257 ? rawColorNumber : undefined);\n\n const explicitTrueColor = raw.trueColor ?? raw.true_color ?? raw.truecolor ?? raw.colorRGB ?? raw.colorRgb ?? raw.rgbColor ?? raw.rgb;\n const rawColorLooksRgb = rawColorNumber !== undefined && rawColorNumber >= 0 && rawColorNumber <= 0xffffff && (numericColorMode === 'rgb' || (numericColorMode === 'auto' && Math.abs(rawColorNumber) > 257));\n entity.trueColor = (explicitTrueColor ?? (rawColorLooksRgb ? rawColorNumber : undefined)) as CadEntity['trueColor'];\n if (typeof raw.color === 'string' || typeof raw.color === 'number') entity.color = raw.color as string | number;\n entity.colorNumber = numberOrUndefined(raw.colorNumber) ?? entity.colorNumber;\n entity.colorName = stringOrUndefined(raw.colorName ?? raw.color_name) ?? entity.colorName;\n entity.fillColor = (raw.fillColor ?? raw.fill_color) as CadEntity['fillColor'];\n entity.fillColorIndex = numberOrUndefined(raw.fillColorIndex ?? raw.fill_color_index ?? raw.fillColorNumber) ?? entity.fillColorIndex;\n entity.opacity = numberOrUndefined(raw.opacity ?? raw.alpha) ?? entity.opacity;\n entity.lineweight = numberOrUndefined(raw.lineweight ?? raw.lineWeight);\n entity.isVisible = raw.isVisible === false || raw.visible === false ? false : true;\n entity.startPoint = pointFromUnknown(raw.startPoint ?? raw.start ?? raw.p0 ?? raw.from) ?? entity.startPoint;\n entity.endPoint = pointFromUnknown(raw.endPoint ?? raw.end ?? raw.p1 ?? raw.to) ?? entity.endPoint;\n entity.center = pointFromUnknown(raw.center ?? raw.centerPoint) ?? entity.center;\n entity.insertionPoint = pointFromUnknown(raw.insertionPoint ?? raw.position ?? raw.location ?? raw.point ?? raw.basePoint) ?? entity.insertionPoint;\n entity.radius = numberOrUndefined(raw.radius) ?? entity.radius;\n entity.startAngle = numberOrUndefined(raw.startAngle ?? raw.start_angle) ?? entity.startAngle;\n entity.endAngle = numberOrUndefined(raw.endAngle ?? raw.end_angle) ?? entity.endAngle;\n entity.majorAxisEndPoint = pointFromUnknown(raw.majorAxisEndPoint ?? raw.majorAxis ?? raw.major) ?? entity.majorAxisEndPoint;\n entity.axisRatio = numberOrUndefined(raw.axisRatio ?? raw.ratio) ?? entity.axisRatio;\n entity.height = numberOrUndefined(raw.height ?? raw.textHeight) ?? entity.height;\n entity.textHeight = numberOrUndefined(raw.textHeight ?? raw.height) ?? entity.textHeight;\n entity.rotation = numberOrUndefined(raw.rotation ?? raw.angle) ?? entity.rotation;\n entity.text = stringOrUndefined(raw.text ?? raw.value ?? raw.string ?? raw.contents) ?? entity.text;\n entity.name = stringOrUndefined(raw.name ?? raw.blockName) ?? entity.name;\n entity.blockName = stringOrUndefined(raw.blockName ?? raw.name) ?? entity.blockName;\n\n const vertices = normalizePoints(raw.vertices ?? raw.points);\n if (vertices.length > 0) entity.vertices = vertices;\n const controlPoints = normalizePoints(raw.controlPoints ?? raw.control_points);\n if (controlPoints.length > 0) entity.controlPoints = controlPoints;\n const fitPoints = normalizePoints(raw.fitPoints ?? raw.fit_points);\n if (fitPoints.length > 0) entity.fitPoints = fitPoints;\n const rawAttribs = raw.attribs ?? raw.attributes;\n if (Array.isArray(rawAttribs)) {\n entity.attribs = rawAttribs\n .filter((attribute): attribute is Record<string, unknown> => !!attribute && typeof attribute === 'object')\n .map((attribute) => normalizeCadEntity(attribute, undefined, options));\n }\n return entity;\n}\n\nexport function pointFromUnknown(value: unknown): CadPoint3D | undefined {\n if (!value || typeof value !== 'object') return undefined;\n const record = value as Record<string, unknown>;\n const x = Number(record.x ?? record.X ?? record[0]);\n const y = Number(record.y ?? record.Y ?? record[1]);\n const zCandidate = record.z ?? record.Z ?? record[2];\n const z = zCandidate === undefined ? undefined : Number(zCandidate);\n if (!Number.isFinite(x) || !Number.isFinite(y)) return undefined;\n return Number.isFinite(z) ? { x, y, z } : { x, y };\n}\n\nexport function normalizePoints(value: unknown): Array<CadPoint3D & { bulge?: number; startWidth?: number; endWidth?: number }> {\n if (!Array.isArray(value)) return [];\n const out: Array<CadPoint3D & { bulge?: number; startWidth?: number; endWidth?: number }> = [];\n for (const item of value) {\n const p = pointFromUnknown(item);\n if (!p) continue;\n const rec = item as Record<string, unknown>;\n const vertex = p as CadPoint3D & { bulge?: number; startWidth?: number; endWidth?: number };\n const bulge = numberOrUndefined(rec.bulge);\n if (bulge !== undefined) vertex.bulge = bulge;\n const startWidth = numberOrUndefined(rec.startWidth ?? rec.start_width);\n if (startWidth !== undefined) vertex.startWidth = startWidth;\n const endWidth = numberOrUndefined(rec.endWidth ?? rec.end_width);\n if (endWidth !== undefined) vertex.endWidth = endWidth;\n out.push(vertex);\n }\n return out;\n}\n\nexport function summarizeCadDocument(document: CadDocument) {\n const byType: Record<string, number> = {};\n for (const entity of document.entities) {\n const type = String(entity.type ?? 'UNKNOWN').toUpperCase();\n byType[type] = (byType[type] ?? 0) + 1;\n }\n return {\n format: document.format,\n sourceName: document.sourceName,\n entityCount: document.entities.length,\n layerCount: Object.keys(document.layers).length,\n blockCount: Object.keys(document.blocks).length,\n pageCount: document.pages?.length ?? 0,\n byType,\n warnings: [...document.warnings]\n };\n}\n\nexport function isCadPolylineClosed(entity: CadEntity): boolean {\n if (entity.isClosed === true) return true;\n const type = String(entity.type ?? '').toUpperCase();\n const flag = Number(entity.flag ?? 0);\n if (type === 'LWPOLYLINE') return (flag & 0x200) === 0x200;\n if (/^(POLYLINE|POLYLINE_2D|POLYLINE2D|POLYLINE_3D|POLYLINE3D)$/.test(type)) return (flag & 1) === 1;\n return false;\n}\n\nexport function addLayer(target: Record<string, CadLayer>, layer: CadLayer): void {\n if (!layer.name) return;\n target[layer.name] = layer;\n target[layer.name.toLowerCase()] = layer;\n}\n\nexport function addBlock(target: Record<string, CadBlock>, block: CadBlock): void {\n if (!block.name) return;\n target[block.name] = block;\n target[block.name.toLowerCase()] = block;\n}\n\nexport function addLineType(target: Record<string, CadLineType>, lineType: CadLineType): void {\n if (!lineType.name) return;\n target[lineType.name] = lineType;\n target[lineType.name.toLowerCase()] = lineType;\n if (lineType.handle) {\n target[lineType.handle] = lineType;\n target[lineType.handle.toLowerCase()] = lineType;\n }\n}\n\nexport function flattenPages(pages: CadPage[] | undefined): CadEntity[] {\n if (!pages?.length) return [];\n return pages.flatMap((page) => page.entities.map((entity) => ({ ...entity, pageIndex: page.index })));\n}\n\nexport function numberOrUndefined(value: unknown): number | undefined {\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\nexport function stringOrUndefined(value: unknown): string | undefined {\n if (typeof value !== 'string' && typeof value !== 'number') return undefined;\n const out = String(value);\n return out.length > 0 ? out : undefined;\n}\n","import type { CadFormat, CadLoadInput } from './types';\n\nexport async function readInputBytes(input: CadLoadInput): Promise<Uint8Array> {\n if (input.buffer instanceof Uint8Array) return input.buffer;\n if (input.buffer instanceof ArrayBuffer) return new Uint8Array(input.buffer);\n if (input.file) return new Uint8Array(await input.file.arrayBuffer());\n throw new Error('CadLoadInput requires a File, ArrayBuffer, or Uint8Array.');\n}\n\nexport function exactArrayBuffer(bytes: Uint8Array): ArrayBuffer {\n if (bytes.byteOffset === 0 && bytes.byteLength === bytes.buffer.byteLength) return bytes.buffer as ArrayBuffer;\n return bytes.slice().buffer as ArrayBuffer;\n}\n\nexport function extensionOf(input: CadLoadInput): string {\n const name = input.fileName ?? input.file?.name ?? '';\n const index = name.lastIndexOf('.');\n return index >= 0 ? name.slice(index + 1).toLowerCase() : '';\n}\n\nexport function detectCadFormat(input: CadLoadInput, bytes?: Uint8Array): CadFormat {\n const ext = extensionOf(input);\n if (ext === 'dwg') return 'dwg';\n if (ext === 'dxf') return 'dxf';\n if (ext === 'dwfx') return 'dwfx';\n if (ext === 'xps') return 'xps';\n if (ext === 'dwf') return 'dwf';\n\n if (bytes && bytes.byteLength >= 6) {\n const sig = ascii(bytes.slice(0, 6));\n if (/^AC10/.test(sig)) return 'dwg';\n if (bytes[0] === 0x50 && bytes[1] === 0x4b) return 'dwfx';\n const head = ascii(bytes.slice(0, Math.min(bytes.byteLength, 2048))).toUpperCase();\n if (head.includes('SECTION') && head.includes('ENTITIES')) return 'dxf';\n if (head.includes('DWF')) return 'dwf';\n }\n return 'unknown';\n}\n\nexport function ascii(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => b >= 32 && b <= 126 ? String.fromCharCode(b) : ' ').join('');\n}\n\nexport function decodeUtf8(bytes: Uint8Array): string {\n return new TextDecoder('utf-8').decode(bytes);\n}\n","import type { CadEntity, CadPathCommand, CadPoint2D, CadPoint3D } from './types';\n\nexport interface Matrix2D {\n a: number;\n b: number;\n c: number;\n d: number;\n e: number;\n f: number;\n}\n\nexport const IDENTITY_MATRIX: Matrix2D = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };\n\nexport function multiplyMatrix(left: Matrix2D, right: Matrix2D): Matrix2D {\n return {\n a: left.a * right.a + left.c * right.b,\n b: left.b * right.a + left.d * right.b,\n c: left.a * right.c + left.c * right.d,\n d: left.b * right.c + left.d * right.d,\n e: left.a * right.e + left.c * right.f + left.e,\n f: left.b * right.e + left.d * right.f + left.f\n };\n}\n\nexport function translationMatrix(x: number, y: number): Matrix2D {\n return { a: 1, b: 0, c: 0, d: 1, e: x, f: y };\n}\n\nexport function rotationMatrix(angle: number): Matrix2D {\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n return { a: c, b: s, c: -s, d: c, e: 0, f: 0 };\n}\n\nexport function scaleMatrix(x: number, y = x): Matrix2D {\n return { a: x, b: 0, c: 0, d: y, e: 0, f: 0 };\n}\n\nexport function transformPoint(point: CadPoint2D | CadPoint3D, matrix: Matrix2D): CadPoint3D {\n return {\n x: point.x * matrix.a + point.y * matrix.c + matrix.e,\n y: point.x * matrix.b + point.y * matrix.d + matrix.f,\n z: 'z' in point ? point.z : undefined\n };\n}\n\nexport function transformPathCommands(commands: CadPathCommand[] | undefined, matrix: Matrix2D): CadPathCommand[] | undefined {\n if (!commands) return undefined;\n return commands.map((command) => ({ cmd: command.cmd, points: command.points.map((p) => transformPoint(p, matrix)) }));\n}\n\nexport function matrixFromInsert(entity: CadEntity, basePoint: CadPoint3D = { x: 0, y: 0 }): Matrix2D {\n const insertion = entity.insertionPoint ?? { x: 0, y: 0 };\n const scaleValue = entity.scale;\n const sx = typeof scaleValue === 'object' && scaleValue ? Number(scaleValue.x ?? 1) : Number((entity as Record<string, unknown>).scaleX ?? 1);\n const sy = typeof scaleValue === 'object' && scaleValue ? Number(scaleValue.y ?? sx) : Number((entity as Record<string, unknown>).scaleY ?? sx);\n const rotation = Number(entity.rotation ?? 0);\n let matrix = translationMatrix(insertion.x, insertion.y);\n matrix = multiplyMatrix(matrix, rotationMatrix(Number.isFinite(rotation) ? rotation : 0));\n matrix = multiplyMatrix(matrix, scaleMatrix(Number.isFinite(sx) ? sx : 1, Number.isFinite(sy) ? sy : 1));\n matrix = multiplyMatrix(matrix, translationMatrix(-basePoint.x, -basePoint.y));\n return matrix;\n}\n\nexport function transformEntity(entity: CadEntity, matrix: Matrix2D): CadEntity {\n const clone: CadEntity = { ...entity };\n if (entity.startPoint) clone.startPoint = transformPoint(entity.startPoint, matrix);\n if (entity.endPoint) clone.endPoint = transformPoint(entity.endPoint, matrix);\n if (entity.center) clone.center = transformPoint(entity.center, matrix);\n if (entity.insertionPoint) clone.insertionPoint = transformPoint(entity.insertionPoint, matrix);\n if (entity.majorAxisEndPoint) {\n const origin = transformPoint({ x: 0, y: 0 }, matrix);\n const major = transformPoint(entity.majorAxisEndPoint, matrix);\n clone.majorAxisEndPoint = { x: major.x - origin.x, y: major.y - origin.y, z: major.z };\n }\n if (entity.vertices) clone.vertices = entity.vertices.map((p) => ({ ...transformPoint(p, matrix), bulge: p.bulge, startWidth: p.startWidth, endWidth: p.endWidth }));\n if (entity.points) clone.points = entity.points.map((p) => transformPoint(p, matrix));\n if (entity.controlPoints) clone.controlPoints = entity.controlPoints.map((p) => transformPoint(p, matrix));\n if (entity.fitPoints) clone.fitPoints = entity.fitPoints.map((p) => transformPoint(p, matrix));\n if (entity.attribs) clone.attribs = entity.attribs.map((attribute) => transformEntity(attribute, matrix));\n if (entity.commands) clone.commands = transformPathCommands(entity.commands, matrix);\n if (entity.loops) {\n clone.loops = entity.loops.map((loop) => ({\n ...loop,\n vertices: loop.vertices?.map((p) => transformPoint(p, matrix)),\n commands: transformPathCommands(loop.commands, matrix)\n }));\n }\n\n const scaleApprox = Math.sqrt(Math.abs(matrix.a * matrix.d - matrix.b * matrix.c));\n if (typeof entity.radius === 'number' && Number.isFinite(scaleApprox)) clone.radius = entity.radius * scaleApprox;\n const rotation = Math.atan2(matrix.b, matrix.a);\n const ellipseAnglesAreRelative = entity.kind === 'ellipse' || String(entity.type ?? '').toUpperCase() === 'ELLIPSE';\n if (Number.isFinite(rotation) && Math.abs(rotation) > 1e-14) {\n if (typeof entity.rotation === 'number' || entity.kind === 'text' || entity.kind === 'insert') {\n clone.rotation = Number(entity.rotation ?? 0) + rotation;\n }\n // ARC angles are WCS angles and rotate with the scene. ELLIPSE start/end\n // parameters are relative to majorAxisEndPoint, which was already rotated.\n if (!ellipseAnglesAreRelative && typeof entity.startAngle === 'number') clone.startAngle = entity.startAngle + rotation;\n if (!ellipseAnglesAreRelative && typeof entity.endAngle === 'number') clone.endAngle = entity.endAngle + rotation;\n }\n if (matrix.a * matrix.d - matrix.b * matrix.c < 0 && clone.vertices) {\n clone.vertices = clone.vertices.map((point) => ({ ...point, bulge: typeof point.bulge === 'number' ? -point.bulge : undefined }));\n }\n return clone;\n}\n\nexport function parseMatrix(value: string | null | undefined): Matrix2D | undefined {\n if (!value) return undefined;\n const numbers = value.match(/-?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?/g)?.map(Number) ?? [];\n if (numbers.length < 6) return undefined;\n const [a, b, c, d, e, f] = numbers;\n return { a, b, c, d, e, f };\n}\n","export type DwgRelease = 'R12' | 'R13' | 'R14' | 'R2000' | 'R2004' | 'R2007' | 'R2010' | 'R2013' | 'R2018' | 'UNKNOWN';\n\nexport interface DwgVersionInfo {\n signature: string;\n release: DwgRelease;\n supportedByOpenDesignSpec: boolean;\n notes?: string;\n}\n\nconst RELEASES: Record<string, DwgRelease> = {\n AC1009: 'R12',\n AC1012: 'R13',\n AC1014: 'R14',\n AC1015: 'R2000',\n AC1018: 'R2004',\n AC1021: 'R2007',\n AC1024: 'R2010',\n AC1027: 'R2013',\n AC1032: 'R2018'\n};\n\nexport function readDwgVersion(bytes: Uint8Array): DwgVersionInfo {\n const signature = Array.from(bytes.slice(0, 6), (b) => String.fromCharCode(b)).join('');\n const release = RELEASES[signature] ?? 'UNKNOWN';\n return {\n signature,\n release,\n supportedByOpenDesignSpec: release !== 'UNKNOWN',\n notes: release === 'UNKNOWN' ? 'Unknown or unsupported DWG signature.' : undefined\n };\n}\n","import { addBlock, addLayer, addLineType, createCadDocument, normalizeCadEntity, numberOrUndefined, pointFromUnknown, stringOrUndefined } from '../../core/entity';\nimport { exactArrayBuffer } from '../../core/format';\nimport { multiplyMatrix, rotationMatrix } from '../../core/transform';\nimport type { CadBlock, CadDocument, CadEntity, CadLayer, CadLineType, CadLoadOptions, CadLoadProgress, CadLoadResult, CadPoint3D, CadSavedView, CadSceneTransform2D } from '../../core/types';\nimport { readDwgVersion } from './dwgVersion';\n\ninterface LibreDwgModule {\n Dwg_File_Type?: Record<string, number>;\n LibreDwg?: {\n create(wasmPath?: string): Promise<any>;\n createByWasmInstance?(wasmInstance: any): any;\n };\n createModule?: (moduleArg?: Record<string, unknown>) => Promise<any>;\n}\n\nexport interface ParseDwgBytesOptions extends CadLoadOptions {\n sourceName?: string;\n onProgress?: (progress: CadLoadProgress) => void;\n}\n\nconst instances = new Map<string, Promise<any>>();\n\nexport async function parseDwgBytes(bytes: Uint8Array, options: ParseDwgBytesOptions = {}): Promise<CadLoadResult> {\n const started = performance.now();\n const sourceName = options.sourceName;\n options.onProgress?.({ phase: 'detect', format: 'dwg', message: 'Validating DWG header…', total: bytes.byteLength });\n\n const version = readDwgVersion(bytes);\n if (!version.signature.startsWith('AC')) {\n throw new Error(`Invalid DWG header: ${JSON.stringify(version.signature)}.`);\n }\n\n options.onProgress?.({ phase: 'wasm-init', format: 'dwg', message: 'Initializing LibreDWG WebAssembly…', total: bytes.byteLength });\n const lib = await createLibreDwg(options.wasmPath ?? '/wasm/');\n\n options.onProgress?.({ phase: 'parse', format: 'dwg', message: `Decoding ${version.signature} DWG…`, total: bytes.byteLength, percent: 35 });\n const fileContent = exactArrayBuffer(bytes);\n const fileType = lib.Dwg_File_Type?.DWG ?? 0;\n const dwg = lib.instance.dwg_read_data(fileContent, fileType);\n if (!dwg) throw new Error('LibreDWG returned an empty DWG result.');\n if (typeof dwg.error === 'number' && dwg.error !== 0) throw new Error(`LibreDWG parse error code: ${dwg.error}.`);\n\n options.onProgress?.({ phase: 'normalize', format: 'dwg', message: 'Normalizing DWG database…', total: bytes.byteLength, percent: 72 });\n const rawDb = typeof lib.instance.convert === 'function' ? lib.instance.convert(dwg) : dwg;\n try {\n if (typeof lib.instance.dwg_free === 'function') lib.instance.dwg_free(dwg);\n } catch {\n // Different wrapper versions manage native memory differently.\n }\n\n const document = normalizeDwgDatabase(rawDb, sourceName, version, { keepRaw: Boolean(options.keepRaw) });\n const elapsedMs = performance.now() - started;\n options.onProgress?.({ phase: 'done', format: 'dwg', message: 'DWG loaded.', total: bytes.byteLength, percent: 100, elapsedMs });\n return {\n document,\n raw: options.keepRaw ? rawDb : undefined,\n bytes: bytes.byteLength,\n elapsedMs,\n format: 'dwg',\n warnings: document.warnings\n };\n}\n\nexport async function createLibreDwg(wasmPath = '/wasm/'): Promise<{ module: LibreDwgModule; instance: any; Dwg_File_Type?: Record<string, number> }> {\n const normalizedPath = normalizeWasmPath(wasmPath);\n let promise = instances.get(normalizedPath);\n if (!promise) {\n promise = import('@mlightcad/libredwg-web').then(async (module) => {\n const typed = module as LibreDwgModule;\n const LibreDwg = typed.LibreDwg;\n if (!LibreDwg || typeof LibreDwg.create !== 'function') {\n throw new Error('@mlightcad/libredwg-web did not expose LibreDwg.create().');\n }\n\n try {\n // Load the WASM binary explicitly instead of relying on Emscripten's\n // streaming fetch. This makes deployments robust when a CDN returns\n // application/octet-stream, when the server lacks the application/wasm\n // MIME mapping, and, most importantly, lets us detect SPA fallback HTML\n // before the WebAssembly runtime aborts with a cryptic magic-word error.\n if (typeof typed.createModule === 'function' && typeof LibreDwg.createByWasmInstance === 'function') {\n const wasmUrl = getLibreDwgWasmUrl(normalizedPath);\n const wasmBinary = await fetchWasmBinary(wasmUrl);\n const wasmInstance = await typed.createModule({\n wasmBinary,\n locateFile: (filename: string) => new URL(filename, ensureTrailingSlash(normalizedPath)).href\n });\n return LibreDwg.createByWasmInstance(wasmInstance);\n }\n\n // Important: call the static method on the class object. The upstream\n // implementation uses `this.createByWasmInstance(...)`; extracting\n // `create` into a standalone function loses `this` and causes\n // \"Cannot read properties of undefined (reading 'createByWasmInstance')\".\n return await LibreDwg.create(normalizedPath);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to initialize LibreDWG WebAssembly from ${normalizedPath}. Ensure libredwg-web.wasm is deployed at ${getLibreDwgWasmUrl(normalizedPath)} and wasmPath is resolved relative to the page, not the worker script. Run npm run copy:wasm before dev/build. Original error: ${message}`);\n }\n });\n instances.set(normalizedPath, promise);\n }\n const instance = await promise;\n const module = await import('@mlightcad/libredwg-web') as LibreDwgModule;\n return { module, instance, Dwg_File_Type: module.Dwg_File_Type };\n}\n\nexport function normalizeDwgDatabase(rawDb: unknown, sourceName?: string, version?: unknown, options: { keepRaw?: boolean } = {}): CadDocument {\n const record = rawDb && typeof rawDb === 'object' ? rawDb as Record<string, unknown> : {};\n const layers = extractLayers(record, options);\n const lineTypes = extractLineTypes(record, options);\n const blocks = extractBlocks(record, options);\n const header = normalizeHeader(record.header, version);\n const savedViewResult = extractSavedView(record, header);\n const savedView = savedViewResult.view;\n const rawEntities = Array.isArray(record.entities) ? record.entities : [];\n const normalizeOptions = { keepRaw: Boolean(options.keepRaw), includeUnknownProperties: Boolean(options.keepRaw) };\n const entities = rawEntities\n .filter((item): item is Record<string, unknown> => !!item && typeof item === 'object')\n .map((item) => normalizeDwgEntity(item, normalizeOptions));\n\n const document = createCadDocument({\n format: 'dwg',\n sourceName,\n header,\n layers,\n lineTypes,\n blocks,\n entities,\n savedView,\n metadata: {\n parser: '@mlightcad/libredwg-web',\n parserMode: 'wasm',\n version,\n savedView\n },\n warnings: savedViewResult.warning ? [savedViewResult.warning] : [],\n raw: options.keepRaw ? rawDb : undefined\n });\n\n if (entities.length === 0) {\n document.warnings.push('DWG parsed successfully but no model-space entities were exposed by the converter. Check layout/paper-space content or unsupported proxy objects.');\n }\n const uniqueLineTypes = new Set(Object.values(lineTypes));\n if ([...uniqueLineTypes].some((lineType) => lineType.pattern.some((element) => Number(element.elementTypeFlag ?? 0) !== 0))) {\n document.warnings.push('Complex SHX linetype glyphs are preserved in the normalized LTYPE definition and rendered as a dash/dot approximation; embedded shape glyph fidelity is not available yet.');\n }\n return document;\n}\n\n\nfunction normalizeDwgEntity(record: Record<string, unknown>, options: { keepRaw?: boolean; includeUnknownProperties?: boolean }): CadEntity {\n const entity = normalizeCadEntity(record, undefined, { ...options, numericColorMode: 'rgb' });\n const rgb = numberOrUndefined(record.color);\n // @mlightcad/libredwg-web exposes DwgEntity.color as a 24-bit RGB value,\n // while DXF parsers commonly expose `color` as an ACI index. DWG normalization\n // must therefore preserve `color` as trueColor even for low RGB values such as\n // 0x0000ff; otherwise valid DWG colors are interpreted as ACI and many files\n // render as a single foreground color.\n if (rgb !== undefined && rgb >= 0 && rgb <= 0xffffff) {\n entity.color = rgb;\n entity.trueColor = rgb;\n }\n entity.colorIndex = numberOrUndefined(record.colorIndex ?? record.colorNumber ?? record.aci) ?? entity.colorIndex;\n entity.colorName = stringOrUndefined(record.colorName ?? record.color_name) ?? entity.colorName;\n const flag = numberOrUndefined(record.flag ?? record.flags);\n if (flag !== undefined) entity.flag = flag;\n const type = String(record.type ?? record.entityType ?? '').toUpperCase();\n const classicPolyline = /^(POLYLINE|POLYLINE_2D|POLYLINE2D|POLYLINE_3D|POLYLINE3D)$/.test(type);\n if (record.isClosed === true || record.closed === true || (classicPolyline && (Number(flag ?? 0) & 1) === 1)\n || (type === 'LWPOLYLINE' && (Number(flag ?? 0) & 0x200) === 0x200)) {\n entity.isClosed = true;\n }\n return entity;\n}\n\nfunction isRenderableAci(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && Math.abs(Math.trunc(value)) >= 1 && Math.abs(Math.trunc(value)) <= 255;\n}\n\nfunction normalizeHeader(header: unknown, version: unknown): Record<string, unknown> {\n const result = header && typeof header === 'object' ? { ...(header as Record<string, unknown>) } : {};\n if (version) result.dwgVersion = version;\n return result;\n}\n\nfunction extractLayers(rawDb: Record<string, unknown>, options: { keepRaw?: boolean }): Record<string, CadLayer> {\n const result: Record<string, CadLayer> = {};\n const candidates: unknown[] = [];\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n for (const key of ['LAYER', 'layer', 'layers']) {\n const value = rawDb[key] ?? tables?.[key];\n if (value) candidates.push(value);\n }\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n const record = item as Record<string, unknown>;\n const name = stringOrUndefined(record.name ?? record.layerName ?? record.entryName);\n if (!name) continue;\n const colorIndex = numberOrUndefined(record.colorIndex ?? record.colorNumber);\n const rawRgb = numberOrUndefined(record.trueColor ?? record.true_color ?? record.truecolor ?? record.colorRGB ?? record.colorRgb ?? record.rgbColor ?? record.rgb);\n const convertedRgb = numberOrUndefined(record.color);\n const useIndexedColor = isRenderableAci(colorIndex);\n const trueColor = rawRgb ?? (!useIndexedColor && convertedRgb !== undefined && convertedRgb >= 0 && convertedRgb <= 0xffffff ? convertedRgb : undefined);\n const layer: CadLayer = {\n name,\n color: useIndexedColor ? undefined : (record.color ?? record.colorName) as CadLayer['color'],\n colorIndex: colorIndex ?? (convertedRgb !== undefined && Math.abs(convertedRgb) <= 257 ? convertedRgb : undefined),\n trueColor,\n lineType: stringOrUndefined(record.lineType ?? record.linetype),\n lineweight: numberOrUndefined(record.lineweight ?? record.lineWeight),\n isVisible: record.isVisible === false || record.off === true || Number(colorIndex ?? record.color ?? 1) < 0 ? false : true,\n isFrozen: Boolean(record.isFrozen ?? record.frozen),\n isLocked: Boolean(record.isLocked ?? record.locked),\n raw: options.keepRaw ? record : undefined\n };\n addLayer(result, layer);\n }\n }\n return result;\n}\n\nfunction extractLineTypes(rawDb: Record<string, unknown>, options: { keepRaw?: boolean }): Record<string, CadLineType> {\n const result: Record<string, CadLineType> = {};\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n const candidates = [rawDb.LTYPE, rawDb.ltype, rawDb.lineTypes, tables?.LTYPE, tables?.ltype, tables?.lineTypes];\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n const record = item as Record<string, unknown>;\n const name = stringOrUndefined(record.name ?? record.lineTypeName ?? record.entryName);\n if (!name) continue;\n const rawPattern = Array.isArray(record.pattern)\n ? record.pattern\n : Array.isArray(record.dashes)\n ? record.dashes\n : [];\n const pattern = rawPattern.flatMap((entry) => {\n if (typeof entry === 'number') return [{ length: entry }];\n if (!entry || typeof entry !== 'object') return [];\n const part = entry as Record<string, unknown>;\n const length = numberOrUndefined(part.elementLength ?? part.length ?? part.dashLength);\n if (length === undefined) return [];\n const convertedShapeCode = numberOrUndefined(part.elementTypeFlag);\n const convertedTypeFlag = numberOrUndefined(part.shapeNumber);\n // @mlightcad/libredwg-web 0.7.x maps LibreDWG's internal names in the\n // opposite direction: complex_shapecode is DXF group 75 (shape number)\n // and shape_flag is group 74 (element type). Restore the public DXF\n // semantics here instead of leaking the converter mismatch downstream.\n const hasLibreDwgPair = convertedShapeCode !== undefined && convertedTypeFlag !== undefined;\n return [{\n length,\n elementTypeFlag: hasLibreDwgPair ? convertedTypeFlag : numberOrUndefined(part.typeFlag ?? part.elementTypeFlag),\n shapeNumber: hasLibreDwgPair ? convertedShapeCode : numberOrUndefined(part.shapeCode ?? part.shapeNumber),\n scale: numberOrUndefined(part.scale),\n rotation: numberOrUndefined(part.rotation),\n offsetX: numberOrUndefined(part.offsetX),\n offsetY: numberOrUndefined(part.offsetY),\n text: stringOrUndefined(part.text)\n }];\n });\n addLineType(result, {\n name,\n handle: stringOrUndefined(record.handle ?? record.id),\n description: stringOrUndefined(record.description),\n totalPatternLength: numberOrUndefined(record.totalPatternLength ?? record.patternLength),\n pattern,\n raw: options.keepRaw ? record : undefined\n });\n }\n }\n return result;\n}\n\nfunction extractSavedView(rawDb: Record<string, unknown>, header: Record<string, unknown>): { view?: CadSavedView; warning?: string } {\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n const vports = expandCandidate(rawDb.VPORT ?? rawDb.vports ?? tables?.VPORT ?? tables?.vports)\n .filter((item): item is Record<string, unknown> => !!item && typeof item === 'object');\n const active = vports.find((record) => String(record.name ?? '').trim().toLowerCase() === '*active');\n const source = active ? 'vport' as const : 'header-ucs' as const;\n const record = active ?? header;\n const ucsOrigin = pointFromUnknown(record.ucsOrigin ?? record.UCSORG ?? header.UCSORG);\n const ucsXAxis = pointFromUnknown(record.ucsXAxis ?? record.UCSXDIR ?? header.UCSXDIR);\n const ucsYAxis = pointFromUnknown(record.ucsYAxis ?? record.UCSYDIR ?? header.UCSYDIR);\n const twistAngle = numberOrUndefined(record.viewTwistAngle ?? record.twistAngle ?? record.VIEWTWIST) ?? 0;\n const direction = pointFromUnknown(record.viewDirectionFromTarget ?? record.viewDirection ?? record.direction ?? record.VIEWDIR);\n const hasNonWorldUcs = !isWorldUcs(ucsOrigin, ucsXAxis, ucsYAxis);\n const hasViewData = Boolean(active)\n || Boolean(direction)\n || hasNonWorldUcs\n || Math.abs(twistAngle) > 1e-12;\n if (!hasViewData) return {};\n const planView = isPlanViewDirection(direction);\n const sceneTransform = planView\n ? createSavedViewTransform(ucsOrigin, ucsXAxis, ucsYAxis, twistAngle)\n : { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };\n const view: CadSavedView = {\n source,\n name: stringOrUndefined(record.name),\n handle: stringOrUndefined(record.handle),\n center: pointFromUnknown(record.center ?? record.VIEWCTR),\n target: pointFromUnknown(record.viewTarget ?? record.target ?? record.TARGET),\n direction,\n viewHeight: numberOrUndefined(record.viewHeight ?? record.height ?? record.VIEWSIZE),\n aspectRatio: numberOrUndefined(record.aspectRatio),\n twistAngle,\n ucsOrigin,\n ucsXAxis,\n ucsYAxis,\n sceneTransformApplied: planView,\n sceneTransform\n };\n return planView\n ? { view }\n : {\n view,\n warning: 'The saved CAD view has a missing, non-finite, or tilted VIEWDIR. File Viewer kept world coordinates instead of applying an unsafe 2D UCS/PLAN rotation.'\n };\n}\n\nfunction createSavedViewTransform(\n origin: CadPoint3D | undefined,\n rawXAxis: CadPoint3D | undefined,\n rawYAxis: CadPoint3D | undefined,\n twistAngle: number\n): CadSceneTransform2D {\n const xAxis = normalizePlanAxis(rawXAxis) ?? { x: 1, y: 0 };\n const yAxisCandidate = normalizePlanAxis(rawYAxis) ?? { x: -xAxis.y, y: xAxis.x };\n const projection = xAxis.x * yAxisCandidate.x + xAxis.y * yAxisCandidate.y;\n const orthogonalY = normalizePlanAxis({\n x: yAxisCandidate.x - xAxis.x * projection,\n y: yAxisCandidate.y - xAxis.y * projection\n }) ?? { x: -xAxis.y, y: xAxis.x };\n const base: CadSceneTransform2D = {\n a: xAxis.x,\n b: orthogonalY.x,\n c: xAxis.y,\n d: orthogonalY.y,\n e: origin ? -(origin.x * xAxis.x + origin.y * xAxis.y) : 0,\n f: origin ? -(origin.x * orthogonalY.x + origin.y * orthogonalY.y) : 0\n };\n return multiplyMatrix(rotationMatrix(Number.isFinite(twistAngle) ? twistAngle : 0), base);\n}\n\nfunction normalizePlanAxis(axis: CadPoint3D | undefined): { x: number; y: number } | undefined {\n if (!axis || Math.abs(Number(axis.z ?? 0)) > 1e-6) return undefined;\n const length = Math.hypot(axis.x, axis.y);\n if (!Number.isFinite(length) || length < 1e-12) return undefined;\n return { x: axis.x / length, y: axis.y / length };\n}\n\nfunction isPlanViewDirection(direction: CadPoint3D | undefined): boolean {\n if (!direction || !Number.isFinite(direction.x) || !Number.isFinite(direction.y) || !Number.isFinite(direction.z)) return false;\n const length = Math.hypot(direction.x, direction.y, Number(direction.z));\n if (!Number.isFinite(length) || length < 1e-12) return false;\n return Math.hypot(direction.x, direction.y) / length <= 1e-4\n && Math.abs(Number(direction.z)) / length >= 1 - 1e-8;\n}\n\nfunction isWorldUcs(\n origin: CadPoint3D | undefined,\n xAxis: CadPoint3D | undefined,\n yAxis: CadPoint3D | undefined\n): boolean {\n const close = (value: number | undefined, expected: number) => Number.isFinite(value) && Math.abs(Number(value) - expected) <= 1e-10;\n const originWorld = !origin || (close(origin.x, 0) && close(origin.y, 0) && close(origin.z ?? 0, 0));\n const xWorld = !xAxis || (close(xAxis.x, 1) && close(xAxis.y, 0) && close(xAxis.z ?? 0, 0));\n const yWorld = !yAxis || (close(yAxis.x, 0) && close(yAxis.y, 1) && close(yAxis.z ?? 0, 0));\n return originWorld && xWorld && yWorld;\n}\n\nfunction extractBlocks(rawDb: Record<string, unknown>, options: { keepRaw?: boolean }): Record<string, CadBlock> {\n const result: Record<string, CadBlock> = {};\n const candidates: unknown[] = [rawDb.blocks, rawDb.blockHeaders, rawDb.block_records, rawDb.blockRecords];\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n candidates.push(tables?.BLOCK, tables?.BLOCK_RECORD, tables?.blocks);\n const normalizeOptions = { keepRaw: Boolean(options.keepRaw), includeUnknownProperties: Boolean(options.keepRaw) };\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n const record = item as Record<string, unknown>;\n const name = stringOrUndefined(record.name ?? record.blockName ?? record.name2);\n if (!name) continue;\n const rawEntities = Array.isArray(record.entities) ? record.entities : Array.isArray(record.ownedObjects) ? record.ownedObjects : [];\n const entities: CadEntity[] = rawEntities\n .filter((entry): entry is Record<string, unknown> => !!entry && typeof entry === 'object')\n .map((entry) => normalizeDwgEntity(entry, normalizeOptions));\n addBlock(result, {\n name,\n basePoint: pointFromUnknown(record.basePoint ?? record.origin) ?? { x: 0, y: 0 },\n entities,\n raw: options.keepRaw ? record : undefined\n });\n }\n }\n return result;\n}\n\nfunction expandCandidate(candidate: unknown): unknown[] {\n if (!candidate) return [];\n if (Array.isArray(candidate)) return candidate;\n if (typeof candidate !== 'object') return [];\n const record = candidate as Record<string, unknown>;\n const directValues = Object.values(record).filter((value) => value && typeof value === 'object');\n const arrays = ['entries', 'records', 'items', 'values', 'layers', 'blocks'].flatMap((key) => Array.isArray(record[key]) ? record[key] as unknown[] : []);\n if (arrays.length > 0) return arrays;\n return directValues;\n}\n\nfunction normalizeWasmPath(wasmPath: string): string {\n const trimmed = wasmPath.trim() || '/wasm';\n if (trimmed === '/') return getRuntimeOrigin();\n const withoutTrailingSlash = trimmed.replace(/\\/+$/, '');\n if (isAbsoluteUrl(withoutTrailingSlash)) return withoutTrailingSlash;\n if (withoutTrailingSlash.startsWith('/')) return `${getRuntimeOrigin()}${withoutTrailingSlash}`;\n return new URL(withoutTrailingSlash, getRuntimeBaseUrl()).href.replace(/\\/+$/, '');\n}\n\nfunction getLibreDwgWasmUrl(wasmPath: string): string {\n return new URL('libredwg-web.wasm', ensureTrailingSlash(wasmPath)).href;\n}\n\nfunction ensureTrailingSlash(value: string): string {\n return value.endsWith('/') ? value : `${value}/`;\n}\n\nfunction isAbsoluteUrl(value: string): boolean {\n return /^[a-z][a-z0-9+.-]*:/i.test(value);\n}\n\nfunction getRuntimeBaseUrl(): string {\n if (typeof document !== 'undefined' && document.baseURI) return document.baseURI;\n if (typeof location !== 'undefined' && location.href) return location.href;\n return 'http://localhost/';\n}\n\nfunction getRuntimeOrigin(): string {\n if (typeof location !== 'undefined' && location.origin) return location.origin;\n return new URL(getRuntimeBaseUrl()).origin;\n}\n\nasync function fetchWasmBinary(url: string): Promise<Uint8Array> {\n if (typeof fetch !== 'function') {\n throw new Error('fetch() is not available, so the LibreDWG WASM binary cannot be loaded.');\n }\n\n const response = await fetch(url, { credentials: 'same-origin', cache: 'force-cache' });\n if (!response.ok) {\n throw new Error(`WASM asset request failed with HTTP ${response.status} for ${url}.`);\n }\n\n const bytes = new Uint8Array(await response.arrayBuffer());\n if (!hasWasmMagic(bytes)) {\n const preview = decodeAsciiPreview(bytes);\n const contentType = response.headers.get('content-type') ?? 'unknown content-type';\n throw new Error(`Invalid WASM asset at ${url}. Expected bytes 00 61 73 6d, got ${formatFirstBytes(bytes)} (${contentType}). The server probably returned an HTML fallback page instead of libredwg-web.wasm. Response preview: ${preview}`);\n }\n\n return bytes;\n}\n\nfunction hasWasmMagic(bytes: Uint8Array): boolean {\n return bytes.length >= 4 && bytes[0] === 0x00 && bytes[1] === 0x61 && bytes[2] === 0x73 && bytes[3] === 0x6d;\n}\n\nfunction formatFirstBytes(bytes: Uint8Array): string {\n return Array.from(bytes.slice(0, 4)).map((byte) => byte.toString(16).padStart(2, '0')).join(' ');\n}\n\nfunction decodeAsciiPreview(bytes: Uint8Array): string {\n const text = Array.from(bytes.slice(0, 32))\n .map((byte) => byte >= 32 && byte <= 126 ? String.fromCharCode(byte) : '.')\n .join('');\n return JSON.stringify(text);\n}\n","/// <reference lib=\"webworker\" />\n\nimport { createLibreDwg, parseDwgBytes } from './DwgParser';\nimport type { CadLoadOptions, CadLoadProgress } from '../../core/types';\n\ntype DwgWorkerLoadRequest = {\n type: 'load';\n requestId: number;\n bytes: ArrayBuffer;\n fileName?: string;\n options?: CadLoadOptions;\n};\n\ntype DwgWorkerWarmupRequest = {\n type: 'warmup';\n requestId: number;\n options?: CadLoadOptions;\n};\n\ntype DwgWorkerRequest = DwgWorkerLoadRequest | DwgWorkerWarmupRequest;\n\nconst scope = self as DedicatedWorkerGlobalScope;\n\nscope.postMessage({ type: 'ready' });\n\nscope.onmessage = async (event: MessageEvent<DwgWorkerRequest>) => {\n const request = event.data;\n if (!request) return;\n const started = performance.now();\n const emit = (progress: CadLoadProgress) => {\n scope.postMessage({ type: 'progress', requestId: request.requestId, progress });\n };\n\n try {\n if (request.type === 'warmup') {\n emit({ phase: 'wasm-init', format: 'dwg', message: 'Warming LibreDWG WebAssembly instance…' });\n await createLibreDwg(request.options?.wasmPath ?? '/wasm/');\n scope.postMessage({ type: 'warmup-result', requestId: request.requestId, elapsedMs: performance.now() - started });\n return;\n }\n\n if (request.type !== 'load') return;\n emit({ phase: 'worker-ready', format: 'dwg', message: 'DWG worker received file bytes.', total: request.bytes.byteLength });\n const result = await parseDwgBytes(new Uint8Array(request.bytes), {\n ...request.options,\n sourceName: request.fileName,\n keepRaw: Boolean(request.options?.keepRaw),\n onProgress: emit\n });\n result.document.metadata.loaderMode = 'worker';\n result.elapsedMs = performance.now() - started;\n scope.postMessage({ type: 'result', requestId: request.requestId, result });\n } catch (error) {\n const normalized = normalizeWorkerError(error);\n scope.postMessage({ type: 'error', requestId: request.requestId, error: normalized });\n }\n};\n\nfunction normalizeWorkerError(error: unknown): { name?: string; message: string; stack?: string } {\n if (error instanceof Error) return { name: error.name, message: error.message, stack: error.stack };\n return { message: String(error) };\n}\n","export var DwgCodePage;\n(function (DwgCodePage) {\n DwgCodePage[DwgCodePage[\"CP_UTF8\"] = 0] = \"CP_UTF8\";\n DwgCodePage[DwgCodePage[\"CP_US_ASCII\"] = 1] = \"CP_US_ASCII\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_1\"] = 2] = \"CP_ISO_8859_1\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_2\"] = 3] = \"CP_ISO_8859_2\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_3\"] = 4] = \"CP_ISO_8859_3\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_4\"] = 5] = \"CP_ISO_8859_4\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_5\"] = 6] = \"CP_ISO_8859_5\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_6\"] = 7] = \"CP_ISO_8859_6\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_7\"] = 8] = \"CP_ISO_8859_7\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_8\"] = 9] = \"CP_ISO_8859_8\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_9\"] = 10] = \"CP_ISO_8859_9\";\n DwgCodePage[DwgCodePage[\"CP_CP437\"] = 11] = \"CP_CP437\";\n DwgCodePage[DwgCodePage[\"CP_CP850\"] = 12] = \"CP_CP850\";\n DwgCodePage[DwgCodePage[\"CP_CP852\"] = 13] = \"CP_CP852\";\n DwgCodePage[DwgCodePage[\"CP_CP855\"] = 14] = \"CP_CP855\";\n DwgCodePage[DwgCodePage[\"CP_CP857\"] = 15] = \"CP_CP857\";\n DwgCodePage[DwgCodePage[\"CP_CP860\"] = 16] = \"CP_CP860\";\n DwgCodePage[DwgCodePage[\"CP_CP861\"] = 17] = \"CP_CP861\";\n DwgCodePage[DwgCodePage[\"CP_CP863\"] = 18] = \"CP_CP863\";\n DwgCodePage[DwgCodePage[\"CP_CP864\"] = 19] = \"CP_CP864\";\n DwgCodePage[DwgCodePage[\"CP_CP865\"] = 20] = \"CP_CP865\";\n DwgCodePage[DwgCodePage[\"CP_CP869\"] = 21] = \"CP_CP869\";\n DwgCodePage[DwgCodePage[\"CP_CP932\"] = 22] = \"CP_CP932\";\n DwgCodePage[DwgCodePage[\"CP_MACINTOSH\"] = 23] = \"CP_MACINTOSH\";\n DwgCodePage[DwgCodePage[\"CP_BIG5\"] = 24] = \"CP_BIG5\";\n DwgCodePage[DwgCodePage[\"CP_CP949\"] = 25] = \"CP_CP949\";\n DwgCodePage[DwgCodePage[\"CP_JOHAB\"] = 26] = \"CP_JOHAB\";\n DwgCodePage[DwgCodePage[\"CP_CP866\"] = 27] = \"CP_CP866\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1250\"] = 28] = \"CP_ANSI_1250\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1251\"] = 29] = \"CP_ANSI_1251\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1252\"] = 30] = \"CP_ANSI_1252\";\n DwgCodePage[DwgCodePage[\"CP_GB2312\"] = 31] = \"CP_GB2312\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1253\"] = 32] = \"CP_ANSI_1253\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1254\"] = 33] = \"CP_ANSI_1254\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1255\"] = 34] = \"CP_ANSI_1255\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1256\"] = 35] = \"CP_ANSI_1256\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1257\"] = 36] = \"CP_ANSI_1257\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_874\"] = 37] = \"CP_ANSI_874\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_932\"] = 38] = \"CP_ANSI_932\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_936\"] = 39] = \"CP_ANSI_936\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_949\"] = 40] = \"CP_ANSI_949\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_950\"] = 41] = \"CP_ANSI_950\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1361\"] = 42] = \"CP_ANSI_1361\";\n DwgCodePage[DwgCodePage[\"CP_UTF16\"] = 43] = \"CP_UTF16\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1258\"] = 44] = \"CP_ANSI_1258\";\n DwgCodePage[DwgCodePage[\"CP_UNDEFINED\"] = 255] = \"CP_UNDEFINED\"; // mostly R11\n})(DwgCodePage || (DwgCodePage = {}));\nconst encodings = [\n 'utf-8', // 0\n 'utf-8', // US ASCII\n 'iso-8859-1',\n 'iso-8859-2',\n 'iso-8859-3',\n 'iso-8859-4',\n 'iso-8859-5',\n 'iso-8859-6',\n 'iso-8859-7',\n 'iso-8859-8',\n 'iso-8859-9', // 10\n 'utf-8', // DOS English\n 'utf-8', // 12 DOS Latin-1\n 'utf-8', // DOS Central European\n 'utf-8', // DOS Cyrillic\n 'utf-8', // DOS Turkish\n 'utf-8', // DOS Portoguese\n 'utf-8', // DOS Icelandic\n 'utf-8', // DOS Hebrew\n 'utf-8', // DOS Arabic (IBM)\n 'utf-8', // DOS Nordic\n 'utf-8', // DOS Greek\n 'shift-jis', // DOS Japanese (shiftjis)\n 'macintosh', // 23\n 'big5',\n 'utf-8', // Korean (Wansung + Johab)\n 'utf-8', // Johab?\n 'ibm866', // Russian\n 'windows-1250', // Central + Eastern European\n 'windows-1251', // Cyrillic\n 'windows-1252', // Western European\n 'gbk', // EUC-CN Chinese\n 'windows-1253', // Greek\n 'windows-1254', // Turkish\n 'windows-1255', // Hebrew\n 'windows-1256', // Arabic\n 'windows-1257', // Baltic\n 'windows-874', // Thai\n 'shift-jis', // 38 Japanese (extended shiftjis, windows-31j)\n 'gbk', // 39 Simplified Chinese\n 'euc-kr', // 40 Korean Wansung\n 'big5', // 41 Trad Chinese\n 'utf-8', // 42 Korean Wansung\n 'utf-16le',\n 'windows-1258' // Vietnamese\n];\nexport const dwgCodePageToEncoding = (codepage) => {\n return encodings[codepage];\n};\n//# sourceMappingURL=codepage.js.map","export var DwgDimensionType;\n(function (DwgDimensionType) {\n DwgDimensionType[DwgDimensionType[\"Rotated\"] = 0] = \"Rotated\";\n DwgDimensionType[DwgDimensionType[\"Aligned\"] = 1] = \"Aligned\";\n DwgDimensionType[DwgDimensionType[\"Angular\"] = 2] = \"Angular\";\n DwgDimensionType[DwgDimensionType[\"Diameter\"] = 3] = \"Diameter\";\n DwgDimensionType[DwgDimensionType[\"Radius\"] = 4] = \"Radius\";\n DwgDimensionType[DwgDimensionType[\"Angular3Point\"] = 5] = \"Angular3Point\";\n DwgDimensionType[DwgDimensionType[\"Ordinate\"] = 6] = \"Ordinate\";\n DwgDimensionType[DwgDimensionType[\"ReferenceIsExclusive\"] = 32] = \"ReferenceIsExclusive\";\n DwgDimensionType[DwgDimensionType[\"IsOrdinateXTypeFlag\"] = 64] = \"IsOrdinateXTypeFlag\";\n DwgDimensionType[DwgDimensionType[\"IsCustomTextPositionFlag\"] = 128] = \"IsCustomTextPositionFlag\";\n})(DwgDimensionType || (DwgDimensionType = {}));\nexport var DwgAttachmentPoint;\n(function (DwgAttachmentPoint) {\n DwgAttachmentPoint[DwgAttachmentPoint[\"TopLeft\"] = 1] = \"TopLeft\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"TopCenter\"] = 2] = \"TopCenter\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"TopRight\"] = 3] = \"TopRight\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"MiddleRight\"] = 6] = \"MiddleRight\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"BottomLeft\"] = 7] = \"BottomLeft\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"BottomCenter\"] = 8] = \"BottomCenter\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"BottomRight\"] = 9] = \"BottomRight\";\n})(DwgAttachmentPoint || (DwgAttachmentPoint = {}));\nexport var DwgDimensionTextLineSpacing;\n(function (DwgDimensionTextLineSpacing) {\n DwgDimensionTextLineSpacing[DwgDimensionTextLineSpacing[\"AtLeast\"] = 1] = \"AtLeast\";\n DwgDimensionTextLineSpacing[DwgDimensionTextLineSpacing[\"Exact\"] = 2] = \"Exact\";\n})(DwgDimensionTextLineSpacing || (DwgDimensionTextLineSpacing = {}));\nexport var DwgDimensionTextVertical;\n(function (DwgDimensionTextVertical) {\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Center\"] = 0] = \"Center\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Above\"] = 1] = \"Above\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Outside\"] = 2] = \"Outside\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"JIS\"] = 3] = \"JIS\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Below\"] = 4] = \"Below\";\n})(DwgDimensionTextVertical || (DwgDimensionTextVertical = {}));\nexport var DwgDimensionZeroSuppression;\n(function (DwgDimensionZeroSuppression) {\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Feet\"] = 0] = \"Feet\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"None\"] = 1] = \"None\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Inch\"] = 2] = \"Inch\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"FeetAndInch\"] = 3] = \"FeetAndInch\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Leading\"] = 4] = \"Leading\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Trailing\"] = 8] = \"Trailing\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"LeadingAndTrailing\"] = 12] = \"LeadingAndTrailing\";\n})(DwgDimensionZeroSuppression || (DwgDimensionZeroSuppression = {}));\nexport var DwgDimensionZeroSuppressionAngular;\n(function (DwgDimensionZeroSuppressionAngular) {\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"None\"] = 0] = \"None\";\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"Leading\"] = 1] = \"Leading\";\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"Trailing\"] = 2] = \"Trailing\";\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"LeadingAndTrailing\"] = 3] = \"LeadingAndTrailing\";\n})(DwgDimensionZeroSuppressionAngular || (DwgDimensionZeroSuppressionAngular = {}));\nexport var DwgDimensionTextHorizontal;\n(function (DwgDimensionTextHorizontal) {\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"Center\"] = 0] = \"Center\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"Left\"] = 1] = \"Left\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"Right\"] = 2] = \"Right\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"OverFirst\"] = 3] = \"OverFirst\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"OverSecond\"] = 4] = \"OverSecond\";\n})(DwgDimensionTextHorizontal || (DwgDimensionTextHorizontal = {}));\nexport var DwgDimensionToleranceTextVertical;\n(function (DwgDimensionToleranceTextVertical) {\n DwgDimensionToleranceTextVertical[DwgDimensionToleranceTextVertical[\"Bottom\"] = 0] = \"Bottom\";\n DwgDimensionToleranceTextVertical[DwgDimensionToleranceTextVertical[\"Center\"] = 1] = \"Center\";\n DwgDimensionToleranceTextVertical[DwgDimensionToleranceTextVertical[\"Top\"] = 2] = \"Top\";\n})(DwgDimensionToleranceTextVertical || (DwgDimensionToleranceTextVertical = {}));\n//# sourceMappingURL=dimension.js.map","export var DwgHatchSolidFill;\n(function (DwgHatchSolidFill) {\n DwgHatchSolidFill[DwgHatchSolidFill[\"PatternFill\"] = 0] = \"PatternFill\";\n DwgHatchSolidFill[DwgHatchSolidFill[\"SolidFill\"] = 1] = \"SolidFill\";\n})(DwgHatchSolidFill || (DwgHatchSolidFill = {}));\nexport var DwgHatchAssociativity;\n(function (DwgHatchAssociativity) {\n DwgHatchAssociativity[DwgHatchAssociativity[\"NonAssociative\"] = 0] = \"NonAssociative\";\n DwgHatchAssociativity[DwgHatchAssociativity[\"Associative\"] = 1] = \"Associative\";\n})(DwgHatchAssociativity || (DwgHatchAssociativity = {}));\nexport var DwgHatchStyle;\n(function (DwgHatchStyle) {\n DwgHatchStyle[DwgHatchStyle[\"Normal\"] = 0] = \"Normal\";\n DwgHatchStyle[DwgHatchStyle[\"Outer\"] = 1] = \"Outer\";\n DwgHatchStyle[DwgHatchStyle[\"Ignore\"] = 2] = \"Ignore\";\n})(DwgHatchStyle || (DwgHatchStyle = {}));\nexport var DwgHatchPatternType;\n(function (DwgHatchPatternType) {\n DwgHatchPatternType[DwgHatchPatternType[\"UserDefined\"] = 0] = \"UserDefined\";\n DwgHatchPatternType[DwgHatchPatternType[\"Predefined\"] = 1] = \"Predefined\";\n DwgHatchPatternType[DwgHatchPatternType[\"Custom\"] = 2] = \"Custom\";\n})(DwgHatchPatternType || (DwgHatchPatternType = {}));\nexport var DwgHatchBoundaryAnnotation;\n(function (DwgHatchBoundaryAnnotation) {\n DwgHatchBoundaryAnnotation[DwgHatchBoundaryAnnotation[\"NotAnnotated\"] = 0] = \"NotAnnotated\";\n DwgHatchBoundaryAnnotation[DwgHatchBoundaryAnnotation[\"Annotated\"] = 1] = \"Annotated\";\n})(DwgHatchBoundaryAnnotation || (DwgHatchBoundaryAnnotation = {}));\nexport var DwgHatchGradientFlag;\n(function (DwgHatchGradientFlag) {\n DwgHatchGradientFlag[DwgHatchGradientFlag[\"Solid\"] = 0] = \"Solid\";\n DwgHatchGradientFlag[DwgHatchGradientFlag[\"Gradient\"] = 1] = \"Gradient\";\n})(DwgHatchGradientFlag || (DwgHatchGradientFlag = {}));\nexport var DwgHatchGradientColorFlag;\n(function (DwgHatchGradientColorFlag) {\n DwgHatchGradientColorFlag[DwgHatchGradientColorFlag[\"TwoColor\"] = 0] = \"TwoColor\";\n DwgHatchGradientColorFlag[DwgHatchGradientColorFlag[\"OneColor\"] = 1] = \"OneColor\";\n})(DwgHatchGradientColorFlag || (DwgHatchGradientColorFlag = {}));\nexport var DwgBoundaryPathTypeFlag;\n(function (DwgBoundaryPathTypeFlag) {\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Default\"] = 0] = \"Default\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"External\"] = 1] = \"External\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Polyline\"] = 2] = \"Polyline\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Derived\"] = 4] = \"Derived\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Textbox\"] = 8] = \"Textbox\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Outermost\"] = 16] = \"Outermost\";\n})(DwgBoundaryPathTypeFlag || (DwgBoundaryPathTypeFlag = {}));\nexport var DwgBoundaryPathEdgeType;\n(function (DwgBoundaryPathEdgeType) {\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Line\"] = 1] = \"Line\";\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Circular\"] = 2] = \"Circular\";\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Elliptic\"] = 3] = \"Elliptic\";\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Spline\"] = 4] = \"Spline\";\n})(DwgBoundaryPathEdgeType || (DwgBoundaryPathEdgeType = {}));\n//# sourceMappingURL=hatch.js.map","export var DwgPolylineFlag;\n(function (DwgPolylineFlag) {\n DwgPolylineFlag[DwgPolylineFlag[\"CLOSED_POLYLINE\"] = 1] = \"CLOSED_POLYLINE\";\n DwgPolylineFlag[DwgPolylineFlag[\"CURVE_FIT\"] = 2] = \"CURVE_FIT\";\n DwgPolylineFlag[DwgPolylineFlag[\"SPLINE_FIT\"] = 4] = \"SPLINE_FIT\";\n DwgPolylineFlag[DwgPolylineFlag[\"POLYLINE_3D\"] = 8] = \"POLYLINE_3D\";\n DwgPolylineFlag[DwgPolylineFlag[\"POLYGON_3D\"] = 16] = \"POLYGON_3D\";\n DwgPolylineFlag[DwgPolylineFlag[\"CLOSED_POLYGON\"] = 32] = \"CLOSED_POLYGON\";\n DwgPolylineFlag[DwgPolylineFlag[\"POLYFACE\"] = 64] = \"POLYFACE\";\n DwgPolylineFlag[DwgPolylineFlag[\"CONTINUOUS\"] = 128] = \"CONTINUOUS\";\n})(DwgPolylineFlag || (DwgPolylineFlag = {}));\nexport var DwgSmoothType;\n(function (DwgSmoothType) {\n DwgSmoothType[DwgSmoothType[\"NONE\"] = 0] = \"NONE\";\n DwgSmoothType[DwgSmoothType[\"QUADRATIC\"] = 5] = \"QUADRATIC\";\n DwgSmoothType[DwgSmoothType[\"CUBIC\"] = 6] = \"CUBIC\";\n DwgSmoothType[DwgSmoothType[\"BEZIER\"] = 8] = \"BEZIER\";\n})(DwgSmoothType || (DwgSmoothType = {}));\n//# sourceMappingURL=polyline.js.map","export var DwgTextGenerationFlag;\n(function (DwgTextGenerationFlag) {\n DwgTextGenerationFlag[DwgTextGenerationFlag[\"NONE\"] = 0] = \"NONE\";\n DwgTextGenerationFlag[DwgTextGenerationFlag[\"MIRRORED_X\"] = 2] = \"MIRRORED_X\";\n DwgTextGenerationFlag[DwgTextGenerationFlag[\"MIRRORED_Y\"] = 4] = \"MIRRORED_Y\";\n})(DwgTextGenerationFlag || (DwgTextGenerationFlag = {}));\nexport var DwgTextHorizontalAlign;\n(function (DwgTextHorizontalAlign) {\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"LEFT\"] = 0] = \"LEFT\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"CENTER\"] = 1] = \"CENTER\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"RIGHT\"] = 2] = \"RIGHT\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"ALIGNED\"] = 3] = \"ALIGNED\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"MIDDLE\"] = 4] = \"MIDDLE\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"FIT\"] = 5] = \"FIT\";\n})(DwgTextHorizontalAlign || (DwgTextHorizontalAlign = {}));\nexport var DwgTextVerticalAlign;\n(function (DwgTextVerticalAlign) {\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"BASELINE\"] = 0] = \"BASELINE\";\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"BOTTOM\"] = 1] = \"BOTTOM\";\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"MIDDLE\"] = 2] = \"MIDDLE\";\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"TOP\"] = 3] = \"TOP\";\n})(DwgTextVerticalAlign || (DwgTextVerticalAlign = {}));\n//# sourceMappingURL=text.js.map","export const HEADER_VARIABLES = Object.freeze([\n 'ACADMAINTVER',\n 'ACADVER',\n 'ANGBASE',\n 'ANGDIR',\n 'ATTMODE',\n 'AUNITS',\n 'AUPREC',\n 'CECOLOR',\n 'CELTSCALE',\n 'CELTYPE',\n 'CELWEIGHT',\n 'CEPSNID',\n 'CEPSNTYPE',\n 'CHAMFERA',\n 'CHAMFERB',\n 'CHAMFERC',\n 'CHAMFERD',\n 'CLAYER',\n 'CMLJUST',\n 'CMLSCALE',\n 'CMLSTYLE',\n 'CSHADOW',\n 'DIMADEC',\n 'DIMALT',\n 'DIMALTD',\n 'DIMALTF',\n 'DIMALTRND',\n 'DIMALTTD',\n 'DIMALTTZ',\n 'DIMALTU',\n 'DIMALTZ',\n 'DIMAPOST',\n 'DIMASO',\n 'DIMASSOC',\n 'DIMASZ',\n 'DIMATFIT',\n 'DIMAUNIT',\n 'DIMAZIN',\n 'DIMBLK',\n 'DIMBLK1',\n 'DIMBLK2',\n 'DIMCEN',\n 'DIMCLRD',\n 'DIMCLRE',\n 'DIMCLRT',\n 'DIMDEC',\n 'DIMDLE',\n 'DIMDLI',\n 'DIMDSEP',\n 'DIMEXE',\n 'DIMEXO',\n 'DIMFAC',\n 'DIMGAP',\n 'DIMJUST',\n 'DIMLDRBLK',\n 'DIMLFAC',\n 'DIMLIM',\n 'DIMLUNIT',\n 'DIMLWD',\n 'DIMLWE',\n 'DIMPOST',\n 'DIMRND',\n 'DIMSAH',\n 'DIMSCALE',\n 'DIMSD1',\n 'DIMSD2',\n 'DIMSE1',\n 'DIMSE2',\n 'DIMSHO',\n 'DIMSOXD',\n 'DIMSTYLE',\n 'DIMTAD',\n 'DIMTDEC',\n 'DIMTFAC',\n 'DIMTIH',\n 'DIMTIX',\n 'DIMTM',\n 'DIMTMOVE',\n 'DIMTOFL',\n 'DIMTOH',\n 'DIMTOL',\n 'DIMTOLJ',\n 'DIMTP',\n 'DIMTSZ',\n 'DIMTVP',\n 'DIMTXSTY',\n 'DIMTXT',\n 'DIMTZIN',\n 'DIMUPT',\n 'DIMZIN',\n 'DISPSILH',\n 'DRAGVS',\n 'DWGCODEPAGE',\n 'ELEVATION',\n 'ENDCAPS',\n 'EXTMAX',\n 'EXTMIN',\n 'EXTNAMES',\n 'FILLETRAD',\n 'FILLMODE',\n 'FINGERPRINTGUID',\n 'HALOGAP',\n 'HANDSEED',\n 'HIDETEXT',\n 'HYPERLINKBASE',\n 'INDEXCTL',\n 'INSBASE',\n 'INSUNITS',\n 'INTERFERECOLOR',\n 'INTERFEREOBJVS',\n 'INTERFEREVPVS',\n 'INTERSECTIONCOLOR',\n 'INTERSECTIONDISPLAY',\n 'JOINSTYLE',\n 'LIMCHECK',\n 'LIMMAX',\n 'LIMMIN',\n 'LTSCALE',\n 'LUNITS',\n 'LUPREC',\n 'LWDISPLAY',\n 'MAXACTVP',\n 'MEASUREMENT',\n 'MENU',\n 'MIRRTEXT',\n 'OBSCOLOR',\n 'OBSLTYPE',\n 'ORTHOMODE',\n 'PDMODE',\n 'PDSIZE',\n 'PELEVATION',\n 'PEXTMAX',\n 'PEXTMIN',\n 'PINSBASE',\n 'PLIMCHECK',\n 'PLIMMAX',\n 'PLIMMIN',\n 'PLINEGEN',\n 'PLINEWID',\n 'PROJECTNAME',\n 'PROXYGRAPHICS',\n 'PSLTSCALE',\n 'PSTYLEMODE',\n 'PSVPSCALE',\n 'PUCSBASE',\n 'PUCSNAME',\n 'PUCSORG',\n 'PUCSORGBACK',\n 'PUCSORGBOTTOM',\n 'PUCSORGFRONT',\n 'PUCSORGLEFT',\n 'PUCSORGRIGHT',\n 'PUCSORGTOP',\n 'PUCSORTHOREF',\n 'PUCSORTHOVIEW',\n 'PUCSXDIR',\n 'PUCSYDIR',\n 'QTEXTMODE',\n 'REGENMODE',\n 'SHADEDGE',\n 'SHADEDIF',\n 'SHADOWPLANELOCATION',\n 'SKETCHINC',\n 'SKPOLY',\n 'SORTENTS',\n 'SPLINESEGS',\n 'SPLINETYPE',\n 'SURFTAB1',\n 'SURFTAB2',\n 'SURFTYPE',\n 'SURFU',\n 'SURFV',\n 'TDCREATE',\n 'TDINDWG',\n 'TDUCREATE',\n 'TDUPDATE',\n 'TDUSRTIMER',\n 'TDUUPDATE',\n 'TEXTSIZE',\n 'TEXTSTYLE',\n 'THICKNESS',\n 'TILEMODE',\n 'TRACEWID',\n 'TREEDEPTH',\n 'UCSBASE',\n 'UCSNAME',\n 'UCSORG',\n 'UCSORGBACK',\n 'UCSORGBOTTOM',\n 'UCSORGFRONT',\n 'UCSORGLEFT',\n 'UCSORGRIGHT',\n 'UCSORGTOP',\n 'UCSORTHOREF',\n 'UCSORTHOVIEW',\n 'UCSXDIR',\n 'UCSYDIR',\n 'UNITMODE',\n 'USERI1',\n 'USERI2',\n 'USERI3',\n 'USERI4',\n 'USERI5',\n 'USERR1',\n 'USERR2',\n 'USERR3',\n 'USERR4',\n 'USERR5',\n 'USRTIMER',\n 'VERSIONGUID',\n 'VISRETAIN',\n 'WORLDVIEW',\n 'XCLIPFRAME',\n 'XEDIT'\n]);\n//# sourceMappingURL=variables.js.map","/**\n * Duplicate record cloning flag (determines how to merge duplicate entries)\n * - 0: Not applicable\n * - 1: Keep existing\n * - 2: Use clone\n * - 3: <xref>$0$<name>\n * - 4: $0$<name>\n * - 5: Unmangle name\n */\nexport var DwgDictionaryCloningFlags;\n(function (DwgDictionaryCloningFlags) {\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"NotApplicable\"] = 0] = \"NotApplicable\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"KeepExisting\"] = 1] = \"KeepExisting\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"UseClone\"] = 2] = \"UseClone\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"XrefName\"] = 3] = \"XrefName\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"Name\"] = 4] = \"Name\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"UnmangleName\"] = 5] = \"UnmangleName\";\n})(DwgDictionaryCloningFlags || (DwgDictionaryCloningFlags = {}));\n//# sourceMappingURL=dictionary.js.map","export const dwgVersions = [\n {\n type: 'invalid',\n hdr: 'INVALI',\n description: 'No DWG',\n version: 0\n },\n {\n type: 'r1.1',\n hdr: 'MC0.0',\n description: 'MicroCAD Release 1.1',\n version: 0\n },\n {\n type: 'r1.2',\n hdr: 'AC1.2',\n description: 'AutoCAD Release 1.2',\n version: 0\n },\n {\n type: 'r1.3',\n hdr: 'AC1.3',\n description: 'AutoCAD Release 1.3',\n version: 1\n },\n {\n type: 'r1.4',\n hdr: 'AC1.40',\n description: 'AutoCAD Release 1.4',\n version: 2\n },\n { type: 'r2.0b', hdr: 'AC1.50', description: 'AutoCAD 2.0 beta', version: 3 }, // not seen\n {\n type: 'r2.0',\n hdr: 'AC1.50',\n description: 'AutoCAD Release 2.0',\n version: 4\n },\n {\n type: 'r2.10',\n hdr: 'AC2.10',\n description: 'AutoCAD Release 2.10',\n version: 5\n },\n {\n type: 'r2.21',\n hdr: 'AC2.21',\n description: 'AutoCAD Release 2.21',\n version: 6\n },\n {\n type: 'r2.22',\n hdr: 'AC2.22',\n description: 'AutoCAD Release 2.22',\n version: 7\n },\n {\n type: 'r2.4',\n hdr: 'AC1001',\n description: 'AutoCAD Release 2.4',\n version: 8\n },\n {\n type: 'r2.5',\n hdr: 'AC1002',\n description: 'AutoCAD Release 2.5',\n version: 9\n },\n {\n type: 'r2.6',\n hdr: 'AC1003',\n description: 'AutoCAD Release 2.6',\n version: 10\n },\n { type: 'r9', hdr: 'AC1004', description: 'AutoCAD Release 9', version: 0xb },\n {\n type: 'r9c1',\n hdr: 'AC1005',\n description: 'AutoCAD Release 9c1',\n version: 0xc\n },\n {\n type: 'r10',\n hdr: 'AC1006',\n description: 'AutoCAD Release 10',\n version: 0xd\n },\n {\n type: 'r11b1',\n hdr: 'AC1007',\n description: 'AutoCAD 11 beta 1',\n version: 0xe\n },\n {\n type: 'r11b2',\n hdr: 'AC1008',\n description: 'AutoCAD 11 beta 2',\n version: 0xf\n },\n {\n type: 'r11',\n hdr: 'AC1009',\n description: 'AutoCAD Release 11/12 (LT R1/R2)',\n version: 0x10\n },\n {\n type: 'r13b1',\n hdr: 'AC1010',\n description: 'AutoCAD pre-R13 a',\n version: 0x11\n },\n {\n type: 'r13b2',\n hdr: 'AC1011',\n description: 'AutoCAD pre-R13 b',\n version: 0x12\n },\n {\n type: 'r13',\n hdr: 'AC1012',\n description: 'AutoCAD Release 13',\n version: 0x13\n },\n {\n type: 'r13c3',\n hdr: 'AC1013',\n description: 'AutoCAD Release 13c3',\n version: 0x14\n },\n {\n type: 'r14',\n hdr: 'AC1014',\n description: 'AutoCAD Release 14',\n version: 0x15\n },\n {\n type: 'r2000b',\n hdr: 'AC1500',\n description: 'AutoCAD 2000 beta',\n version: 0x16\n },\n {\n type: 'r2000',\n hdr: 'AC1015',\n description: 'AutoCAD Release 2000',\n version: 0x17\n },\n {\n type: 'r2000i',\n hdr: 'AC1016',\n description: 'AutoCAD Release 2000i',\n version: 0x17\n },\n {\n type: 'r2002',\n hdr: 'AC1017',\n description: 'AutoCAD Release 2002',\n version: 0x17\n },\n {\n type: 'r2004a',\n hdr: 'AC402a',\n description: 'AutoCAD 2004 alpha a',\n version: 0x18\n },\n {\n type: 'r2004b',\n hdr: 'AC402b',\n description: 'AutoCAD 2004 alpha b',\n version: 0x18\n },\n {\n type: 'r2004c',\n hdr: 'AC1018',\n description: 'AutoCAD 2004 beta',\n version: 0x18\n },\n // (includes versions AC1019/0x19 and AC1020/0x1a)\n {\n type: 'r2004',\n hdr: 'AC1018',\n description: 'AutoCAD Release 2004',\n version: 0x19\n },\n //{ type: \"r2005\", hdr: \"AC1019\", description: \"AutoCAD 2005\", version: 0x19 }, // not seen\n //{ type: \"r2006\", hdr: \"AC1020\", description: \"AutoCAD 2006\", version: 0x19 }, // not seen\n {\n type: 'r2007a',\n hdr: 'AC701a',\n description: 'AutoCAD 2007 alpha',\n version: 0x1a\n },\n {\n type: 'r2007b',\n hdr: 'AC1021',\n description: 'AutoCAD 2007 beta',\n version: 0x1a\n },\n {\n type: 'r2007',\n hdr: 'AC1021',\n description: 'AutoCAD Release 2007',\n version: 0x1b\n },\n //{ type: \"r2008\", hdr: \"AC1022\", description: \"AutoCAD 2008\", version: 0x1b }, // not seen\n //{ type: \"r2009\", hdr: \"AC1023\", description: \"AutoCAD 2009\", version: 0x1b }, // not seen\n {\n type: 'r2010b',\n hdr: 'AC1024',\n description: 'AutoCAD 2010 beta',\n version: 0x1c\n },\n {\n type: 'r2010',\n hdr: 'AC1024',\n description: 'AutoCAD Release 2010',\n version: 0x1d\n },\n //{ type: \"r2011\", hdr: \"AC1025\", description: \"AutoCAD 2011\", version: 0x1d }, // not seen\n //{ type: \"r2012\", hdr: \"AC1026\", description: \"AutoCAD 2012\", version: 0x1e }, // not seen\n {\n type: 'r2013b',\n hdr: 'AC1027',\n description: 'AutoCAD 2013 beta',\n version: 0x1e\n },\n {\n type: 'r2013',\n hdr: 'AC1027',\n description: 'AutoCAD Release 2013',\n version: 0x1f\n },\n //{ type: \"r2014\", hdr: \"AC1028\", description: \"AutoCAD 2014\", version: 0x1f }, // not seen\n //{ type: \"r2015\", hdr: \"AC1029\", description: \"AutoCAD 2015\", version: 0x1f }, // not seen\n //{ type: \"r2016\", hdr: \"AC1030\", description: \"AutoCAD 2016\", version: 0x1f }, // not seen\n //{ type: \"r2017\", hdr: \"AC1031\", description: \"AutoCAD 2017\", version: 0x20 }, // not seen\n {\n type: 'r2018b',\n hdr: 'AC1032',\n description: 'AutoCAD 2018 beta',\n version: 0x20\n },\n {\n type: 'r2018',\n hdr: 'AC1032',\n description: 'AutoCAD Release 2018',\n version: 0x21\n },\n //{ type: \"r2019\", \"AC1033\", description: \"AutoCAD Release 2019\", version: 0x22 }, // not seen\n //{ type: \"r2020\", \"AC1034\", description: \"AutoCAD Release 2020\", version: 0x23 }, // not seen\n //{ type: \"r2021\", \"AC1035\", description: \"AutoCAD Release 2021\", version: 0x23 }, // not seen\n {\n type: 'r2022b',\n hdr: 'AC103-4',\n description: 'AutoCAD 2022 beta',\n version: 0x24\n },\n { type: 'r>2022', hdr: '', description: 'AutoCAD Release >2022', version: 0 }\n];\n//# sourceMappingURL=version.js.map","/**\n * Runtime proxy for @mlightcad/libredwg-web/wasm/libredwg-web.js.\n *\n * The npm package root points Vite at a distribution file that embeds a huge\n * inline wasm data URL. The lean package wrapper imports the wasm glue file\n * directly, but Vite still tries to rewrite its `new URL('libredwg-web.wasm',\n * import.meta.url)` fallback and emits a duplicated .wasm asset.\n *\n * This proxy keeps the application bundle small: the worker loads the official\n * Emscripten glue from the public wasm directory at runtime, and DwgParser\n * provides the real wasm bytes through `wasmBinary`.\n */\nexport default async function createModule(moduleArg: Record<string, unknown> = {}): Promise<any> {\n const runtimeUrl = resolveRuntimeJsUrl(moduleArg);\n const module = await import(/* @vite-ignore */ runtimeUrl);\n const factory = (module as { default?: unknown; createModule?: unknown }).default ?? (module as { createModule?: unknown }).createModule ?? module;\n if (typeof factory !== 'function') {\n throw new Error(`LibreDWG runtime module at ${runtimeUrl} did not export a createModule function.`);\n }\n return (factory as (arg?: Record<string, unknown>) => Promise<any>)(moduleArg);\n}\n\nfunction resolveRuntimeJsUrl(moduleArg: Record<string, unknown>): string {\n const locateFile = moduleArg.locateFile;\n if (typeof locateFile === 'function') {\n try {\n const located = (locateFile as (filename: string, scriptDirectory?: string) => string)('libredwg-web.js', '');\n if (typeof located === 'string' && located.length > 0) return located;\n } catch {\n // Fall back to document-relative /wasm below.\n }\n }\n if (typeof document !== 'undefined' && document.baseURI) return new URL('wasm/libredwg-web.js', document.baseURI).href;\n if (typeof location !== 'undefined' && location.href) return new URL('/wasm/libredwg-web.js', location.origin).href;\n return '/wasm/libredwg-web.js';\n}\n","export var Dwg_Object_Supertype;\n(function (Dwg_Object_Supertype) {\n Dwg_Object_Supertype[Dwg_Object_Supertype[\"DWG_SUPERTYPE_ENTITY\"] = 0] = \"DWG_SUPERTYPE_ENTITY\";\n Dwg_Object_Supertype[Dwg_Object_Supertype[\"DWG_SUPERTYPE_OBJECT\"] = 1] = \"DWG_SUPERTYPE_OBJECT\";\n})(Dwg_Object_Supertype || (Dwg_Object_Supertype = {}));\nexport var Dwg_Object_Type;\n(function (Dwg_Object_Type) {\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UNUSED\"] = 0] = \"DWG_TYPE_UNUSED\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TEXT\"] = 1] = \"DWG_TYPE_TEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ATTRIB\"] = 2] = \"DWG_TYPE_ATTRIB\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ATTDEF\"] = 3] = \"DWG_TYPE_ATTDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCK\"] = 4] = \"DWG_TYPE_BLOCK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ENDBLK\"] = 5] = \"DWG_TYPE_ENDBLK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SEQEND\"] = 6] = \"DWG_TYPE_SEQEND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_INSERT\"] = 7] = \"DWG_TYPE_INSERT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MINSERT\"] = 8] = \"DWG_TYPE_MINSERT\";\n // DWG_TYPE_TRACE_old = 0x09, /* old TRACE r10-r11 only */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_2D\"] = 10] = \"DWG_TYPE_VERTEX_2D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_3D\"] = 11] = \"DWG_TYPE_VERTEX_3D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_MESH\"] = 12] = \"DWG_TYPE_VERTEX_MESH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_PFACE\"] = 13] = \"DWG_TYPE_VERTEX_PFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_PFACE_FACE\"] = 14] = \"DWG_TYPE_VERTEX_PFACE_FACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_2D\"] = 15] = \"DWG_TYPE_POLYLINE_2D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_3D\"] = 16] = \"DWG_TYPE_POLYLINE_3D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ARC\"] = 17] = \"DWG_TYPE_ARC\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CIRCLE\"] = 18] = \"DWG_TYPE_CIRCLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LINE\"] = 19] = \"DWG_TYPE_LINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ORDINATE\"] = 20] = \"DWG_TYPE_DIMENSION_ORDINATE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_LINEAR\"] = 21] = \"DWG_TYPE_DIMENSION_LINEAR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ALIGNED\"] = 22] = \"DWG_TYPE_DIMENSION_ALIGNED\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ANG3PT\"] = 23] = \"DWG_TYPE_DIMENSION_ANG3PT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ANG2LN\"] = 24] = \"DWG_TYPE_DIMENSION_ANG2LN\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_RADIUS\"] = 25] = \"DWG_TYPE_DIMENSION_RADIUS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_DIAMETER\"] = 26] = \"DWG_TYPE_DIMENSION_DIAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINT\"] = 27] = \"DWG_TYPE_POINT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_3DFACE\"] = 28] = \"DWG_TYPE_3DFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_PFACE\"] = 29] = \"DWG_TYPE_POLYLINE_PFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_MESH\"] = 30] = \"DWG_TYPE_POLYLINE_MESH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SOLID\"] = 31] = \"DWG_TYPE_SOLID\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TRACE\"] = 32] = \"DWG_TYPE_TRACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SHAPE\"] = 33] = \"DWG_TYPE_SHAPE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VIEWPORT\"] = 34] = \"DWG_TYPE_VIEWPORT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ELLIPSE\"] = 35] = \"DWG_TYPE_ELLIPSE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SPLINE\"] = 36] = \"DWG_TYPE_SPLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_REGION\"] = 37] = \"DWG_TYPE_REGION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_3DSOLID\"] = 38] = \"DWG_TYPE_3DSOLID\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BODY\"] = 39] = \"DWG_TYPE_BODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RAY\"] = 40] = \"DWG_TYPE_RAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XLINE\"] = 41] = \"DWG_TYPE_XLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DICTIONARY\"] = 42] = \"DWG_TYPE_DICTIONARY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_OLEFRAME\"] = 43] = \"DWG_TYPE_OLEFRAME\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MTEXT\"] = 44] = \"DWG_TYPE_MTEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LEADER\"] = 45] = \"DWG_TYPE_LEADER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TOLERANCE\"] = 46] = \"DWG_TYPE_TOLERANCE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLINE\"] = 47] = \"DWG_TYPE_MLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCK_CONTROL\"] = 48] = \"DWG_TYPE_BLOCK_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCK_HEADER\"] = 49] = \"DWG_TYPE_BLOCK_HEADER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYER_CONTROL\"] = 50] = \"DWG_TYPE_LAYER_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYER\"] = 51] = \"DWG_TYPE_LAYER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_STYLE_CONTROL\"] = 52] = \"DWG_TYPE_STYLE_CONTROL\"; /* 52 SHAPEFILE_CONTROL */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_STYLE\"] = 53] = \"DWG_TYPE_STYLE\";\n /* DWG_TYPE_<UNKNOWN> = 0x36, */\n /* DWG_TYPE_<UNKNOWN> = 0x37, */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LTYPE_CONTROL\"] = 56] = \"DWG_TYPE_LTYPE_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LTYPE\"] = 57] = \"DWG_TYPE_LTYPE\";\n /* DWG_TYPE_<UNKNOWN> = 0x3a, */\n /* DWG_TYPE_<UNKNOWN> = 0x3b, */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VIEW_CONTROL\"] = 60] = \"DWG_TYPE_VIEW_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VIEW\"] = 61] = \"DWG_TYPE_VIEW\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UCS_CONTROL\"] = 62] = \"DWG_TYPE_UCS_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UCS\"] = 63] = \"DWG_TYPE_UCS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VPORT_CONTROL\"] = 64] = \"DWG_TYPE_VPORT_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VPORT\"] = 65] = \"DWG_TYPE_VPORT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_APPID_CONTROL\"] = 66] = \"DWG_TYPE_APPID_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_APPID\"] = 67] = \"DWG_TYPE_APPID\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMSTYLE_CONTROL\"] = 68] = \"DWG_TYPE_DIMSTYLE_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMSTYLE\"] = 69] = \"DWG_TYPE_DIMSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VX_CONTROL\"] = 70] = \"DWG_TYPE_VX_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VX_TABLE_RECORD\"] = 71] = \"DWG_TYPE_VX_TABLE_RECORD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GROUP\"] = 72] = \"DWG_TYPE_GROUP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLINESTYLE\"] = 73] = \"DWG_TYPE_MLINESTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_OLE2FRAME\"] = 74] = \"DWG_TYPE_OLE2FRAME\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DUMMY\"] = 75] = \"DWG_TYPE_DUMMY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LONG_TRANSACTION\"] = 76] = \"DWG_TYPE_LONG_TRANSACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LWPOLYLINE\"] = 77] = \"DWG_TYPE_LWPOLYLINE\"; /* ?? */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_HATCH\"] = 78] = \"DWG_TYPE_HATCH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XRECORD\"] = 79] = \"DWG_TYPE_XRECORD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PLACEHOLDER\"] = 80] = \"DWG_TYPE_PLACEHOLDER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VBA_PROJECT\"] = 81] = \"DWG_TYPE_VBA_PROJECT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYOUT\"] = 82] = \"DWG_TYPE_LAYOUT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PROXY_ENTITY\"] = 498] = \"DWG_TYPE_PROXY_ENTITY\"; /* 498 */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PROXY_OBJECT\"] = 499] = \"DWG_TYPE_PROXY_OBJECT\"; /* 499 */\n /* non-fixed types > 500. not stored as type, but as fixedtype */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACDSRECORD\"] = 500] = \"DWG_TYPE_ACDSRECORD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACDSSCHEMA\"] = 501] = \"DWG_TYPE_ACDSSCHEMA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACMECOMMANDHISTORY\"] = 502] = \"DWG_TYPE_ACMECOMMANDHISTORY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACMESCOPE\"] = 503] = \"DWG_TYPE_ACMESCOPE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACMESTATEMGR\"] = 504] = \"DWG_TYPE_ACMESTATEMGR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_BOOLEAN_CLASS\"] = 505] = \"DWG_TYPE_ACSH_BOOLEAN_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_BOX_CLASS\"] = 506] = \"DWG_TYPE_ACSH_BOX_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_BREP_CLASS\"] = 507] = \"DWG_TYPE_ACSH_BREP_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_CHAMFER_CLASS\"] = 508] = \"DWG_TYPE_ACSH_CHAMFER_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_CONE_CLASS\"] = 509] = \"DWG_TYPE_ACSH_CONE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_CYLINDER_CLASS\"] = 510] = \"DWG_TYPE_ACSH_CYLINDER_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_EXTRUSION_CLASS\"] = 511] = \"DWG_TYPE_ACSH_EXTRUSION_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_FILLET_CLASS\"] = 512] = \"DWG_TYPE_ACSH_FILLET_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_HISTORY_CLASS\"] = 513] = \"DWG_TYPE_ACSH_HISTORY_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_LOFT_CLASS\"] = 514] = \"DWG_TYPE_ACSH_LOFT_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_PYRAMID_CLASS\"] = 515] = \"DWG_TYPE_ACSH_PYRAMID_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_REVOLVE_CLASS\"] = 516] = \"DWG_TYPE_ACSH_REVOLVE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_SPHERE_CLASS\"] = 517] = \"DWG_TYPE_ACSH_SPHERE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_SWEEP_CLASS\"] = 518] = \"DWG_TYPE_ACSH_SWEEP_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_TORUS_CLASS\"] = 519] = \"DWG_TYPE_ACSH_TORUS_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_WEDGE_CLASS\"] = 520] = \"DWG_TYPE_ACSH_WEDGE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ALDIMOBJECTCONTEXTDATA\"] = 521] = \"DWG_TYPE_ALDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ALIGNMENTPARAMETERENTITY\"] = 522] = \"DWG_TYPE_ALIGNMENTPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ANGDIMOBJECTCONTEXTDATA\"] = 523] = \"DWG_TYPE_ANGDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ANNOTSCALEOBJECTCONTEXTDATA\"] = 524] = \"DWG_TYPE_ANNOTSCALEOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ARCALIGNEDTEXT\"] = 525] = \"DWG_TYPE_ARCALIGNEDTEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ARC_DIMENSION\"] = 526] = \"DWG_TYPE_ARC_DIMENSION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOC2DCONSTRAINTGROUP\"] = 527] = \"DWG_TYPE_ASSOC2DCONSTRAINTGROUP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOC3POINTANGULARDIMACTIONBODY\"] = 528] = \"DWG_TYPE_ASSOC3POINTANGULARDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCACTION\"] = 529] = \"DWG_TYPE_ASSOCACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCACTIONPARAM\"] = 530] = \"DWG_TYPE_ASSOCACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCALIGNEDDIMACTIONBODY\"] = 531] = \"DWG_TYPE_ASSOCALIGNEDDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYACTIONBODY\"] = 532] = \"DWG_TYPE_ASSOCARRAYACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYMODIFYACTIONBODY\"] = 533] = \"DWG_TYPE_ASSOCARRAYMODIFYACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYMODIFYPARAMETERS\"] = 534] = \"DWG_TYPE_ASSOCARRAYMODIFYPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYPATHPARAMETERS\"] = 535] = \"DWG_TYPE_ASSOCARRAYPATHPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYPOLARPARAMETERS\"] = 536] = \"DWG_TYPE_ASSOCARRAYPOLARPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYRECTANGULARPARAMETERS\"] = 537] = \"DWG_TYPE_ASSOCARRAYRECTANGULARPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCASMBODYACTIONPARAM\"] = 538] = \"DWG_TYPE_ASSOCASMBODYACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCBLENDSURFACEACTIONBODY\"] = 539] = \"DWG_TYPE_ASSOCBLENDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCCOMPOUNDACTIONPARAM\"] = 540] = \"DWG_TYPE_ASSOCCOMPOUNDACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCDEPENDENCY\"] = 541] = \"DWG_TYPE_ASSOCDEPENDENCY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCDIMDEPENDENCYBODY\"] = 542] = \"DWG_TYPE_ASSOCDIMDEPENDENCYBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEDGEACTIONPARAM\"] = 543] = \"DWG_TYPE_ASSOCEDGEACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEDGECHAMFERACTIONBODY\"] = 544] = \"DWG_TYPE_ASSOCEDGECHAMFERACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEDGEFILLETACTIONBODY\"] = 545] = \"DWG_TYPE_ASSOCEDGEFILLETACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEXTENDSURFACEACTIONBODY\"] = 546] = \"DWG_TYPE_ASSOCEXTENDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEXTRUDEDSURFACEACTIONBODY\"] = 547] = \"DWG_TYPE_ASSOCEXTRUDEDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCFACEACTIONPARAM\"] = 548] = \"DWG_TYPE_ASSOCFACEACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCFILLETSURFACEACTIONBODY\"] = 549] = \"DWG_TYPE_ASSOCFILLETSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCGEOMDEPENDENCY\"] = 550] = \"DWG_TYPE_ASSOCGEOMDEPENDENCY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCLOFTEDSURFACEACTIONBODY\"] = 551] = \"DWG_TYPE_ASSOCLOFTEDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCMLEADERACTIONBODY\"] = 552] = \"DWG_TYPE_ASSOCMLEADERACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCNETWORK\"] = 553] = \"DWG_TYPE_ASSOCNETWORK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCNETWORKSURFACEACTIONBODY\"] = 554] = \"DWG_TYPE_ASSOCNETWORKSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCOBJECTACTIONPARAM\"] = 555] = \"DWG_TYPE_ASSOCOBJECTACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCOFFSETSURFACEACTIONBODY\"] = 556] = \"DWG_TYPE_ASSOCOFFSETSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCORDINATEDIMACTIONBODY\"] = 557] = \"DWG_TYPE_ASSOCORDINATEDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCOSNAPPOINTREFACTIONPARAM\"] = 558] = \"DWG_TYPE_ASSOCOSNAPPOINTREFACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPATCHSURFACEACTIONBODY\"] = 559] = \"DWG_TYPE_ASSOCPATCHSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPATHACTIONPARAM\"] = 560] = \"DWG_TYPE_ASSOCPATHACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPERSSUBENTMANAGER\"] = 561] = \"DWG_TYPE_ASSOCPERSSUBENTMANAGER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPLANESURFACEACTIONBODY\"] = 562] = \"DWG_TYPE_ASSOCPLANESURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPOINTREFACTIONPARAM\"] = 563] = \"DWG_TYPE_ASSOCPOINTREFACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCRESTOREENTITYSTATEACTIONBODY\"] = 564] = \"DWG_TYPE_ASSOCRESTOREENTITYSTATEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCREVOLVEDSURFACEACTIONBODY\"] = 565] = \"DWG_TYPE_ASSOCREVOLVEDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCROTATEDDIMACTIONBODY\"] = 566] = \"DWG_TYPE_ASSOCROTATEDDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCSWEPTSURFACEACTIONBODY\"] = 567] = \"DWG_TYPE_ASSOCSWEPTSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCTRIMSURFACEACTIONBODY\"] = 568] = \"DWG_TYPE_ASSOCTRIMSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCVALUEDEPENDENCY\"] = 569] = \"DWG_TYPE_ASSOCVALUEDEPENDENCY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCVARIABLE\"] = 570] = \"DWG_TYPE_ASSOCVARIABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCVERTEXACTIONPARAM\"] = 571] = \"DWG_TYPE_ASSOCVERTEXACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BASEPOINTPARAMETERENTITY\"] = 572] = \"DWG_TYPE_BASEPOINTPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLKREFOBJECTCONTEXTDATA\"] = 573] = \"DWG_TYPE_BLKREFOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKALIGNEDCONSTRAINTPARAMETER\"] = 574] = \"DWG_TYPE_BLOCKALIGNEDCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKALIGNMENTGRIP\"] = 575] = \"DWG_TYPE_BLOCKALIGNMENTGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKALIGNMENTPARAMETER\"] = 576] = \"DWG_TYPE_BLOCKALIGNMENTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKANGULARCONSTRAINTPARAMETER\"] = 577] = \"DWG_TYPE_BLOCKANGULARCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKARRAYACTION\"] = 578] = \"DWG_TYPE_BLOCKARRAYACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKBASEPOINTPARAMETER\"] = 579] = \"DWG_TYPE_BLOCKBASEPOINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKDIAMETRICCONSTRAINTPARAMETER\"] = 580] = \"DWG_TYPE_BLOCKDIAMETRICCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKFLIPACTION\"] = 581] = \"DWG_TYPE_BLOCKFLIPACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKFLIPGRIP\"] = 582] = \"DWG_TYPE_BLOCKFLIPGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKFLIPPARAMETER\"] = 583] = \"DWG_TYPE_BLOCKFLIPPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKGRIPLOCATIONCOMPONENT\"] = 584] = \"DWG_TYPE_BLOCKGRIPLOCATIONCOMPONENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKHORIZONTALCONSTRAINTPARAMETER\"] = 585] = \"DWG_TYPE_BLOCKHORIZONTALCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLINEARCONSTRAINTPARAMETER\"] = 586] = \"DWG_TYPE_BLOCKLINEARCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLINEARGRIP\"] = 587] = \"DWG_TYPE_BLOCKLINEARGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLINEARPARAMETER\"] = 588] = \"DWG_TYPE_BLOCKLINEARPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLOOKUPACTION\"] = 589] = \"DWG_TYPE_BLOCKLOOKUPACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLOOKUPGRIP\"] = 590] = \"DWG_TYPE_BLOCKLOOKUPGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLOOKUPPARAMETER\"] = 591] = \"DWG_TYPE_BLOCKLOOKUPPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKMOVEACTION\"] = 592] = \"DWG_TYPE_BLOCKMOVEACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPARAMDEPENDENCYBODY\"] = 593] = \"DWG_TYPE_BLOCKPARAMDEPENDENCYBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOINTPARAMETER\"] = 594] = \"DWG_TYPE_BLOCKPOINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOLARGRIP\"] = 595] = \"DWG_TYPE_BLOCKPOLARGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOLARPARAMETER\"] = 596] = \"DWG_TYPE_BLOCKPOLARPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOLARSTRETCHACTION\"] = 597] = \"DWG_TYPE_BLOCKPOLARSTRETCHACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPROPERTIESTABLE\"] = 598] = \"DWG_TYPE_BLOCKPROPERTIESTABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPROPERTIESTABLEGRIP\"] = 599] = \"DWG_TYPE_BLOCKPROPERTIESTABLEGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKRADIALCONSTRAINTPARAMETER\"] = 600] = \"DWG_TYPE_BLOCKRADIALCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKREPRESENTATION\"] = 601] = \"DWG_TYPE_BLOCKREPRESENTATION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKROTATEACTION\"] = 602] = \"DWG_TYPE_BLOCKROTATEACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKROTATIONGRIP\"] = 603] = \"DWG_TYPE_BLOCKROTATIONGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKROTATIONPARAMETER\"] = 604] = \"DWG_TYPE_BLOCKROTATIONPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKSCALEACTION\"] = 605] = \"DWG_TYPE_BLOCKSCALEACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKSTRETCHACTION\"] = 606] = \"DWG_TYPE_BLOCKSTRETCHACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKUSERPARAMETER\"] = 607] = \"DWG_TYPE_BLOCKUSERPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKVERTICALCONSTRAINTPARAMETER\"] = 608] = \"DWG_TYPE_BLOCKVERTICALCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKVISIBILITYGRIP\"] = 609] = \"DWG_TYPE_BLOCKVISIBILITYGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKVISIBILITYPARAMETER\"] = 610] = \"DWG_TYPE_BLOCKVISIBILITYPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKXYGRIP\"] = 611] = \"DWG_TYPE_BLOCKXYGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKXYPARAMETER\"] = 612] = \"DWG_TYPE_BLOCKXYPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CAMERA\"] = 613] = \"DWG_TYPE_CAMERA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CELLSTYLEMAP\"] = 614] = \"DWG_TYPE_CELLSTYLEMAP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CONTEXTDATAMANAGER\"] = 615] = \"DWG_TYPE_CONTEXTDATAMANAGER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CSACDOCUMENTOPTIONS\"] = 616] = \"DWG_TYPE_CSACDOCUMENTOPTIONS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CURVEPATH\"] = 617] = \"DWG_TYPE_CURVEPATH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DATALINK\"] = 618] = \"DWG_TYPE_DATALINK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DATATABLE\"] = 619] = \"DWG_TYPE_DATATABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DBCOLOR\"] = 620] = \"DWG_TYPE_DBCOLOR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DETAILVIEWSTYLE\"] = 621] = \"DWG_TYPE_DETAILVIEWSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DGNDEFINITION\"] = 622] = \"DWG_TYPE_DGNDEFINITION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DGNUNDERLAY\"] = 623] = \"DWG_TYPE_DGNUNDERLAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DICTIONARYVAR\"] = 624] = \"DWG_TYPE_DICTIONARYVAR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DICTIONARYWDFLT\"] = 625] = \"DWG_TYPE_DICTIONARYWDFLT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMASSOC\"] = 626] = \"DWG_TYPE_DIMASSOC\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DMDIMOBJECTCONTEXTDATA\"] = 627] = \"DWG_TYPE_DMDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DWFDEFINITION\"] = 628] = \"DWG_TYPE_DWFDEFINITION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DWFUNDERLAY\"] = 629] = \"DWG_TYPE_DWFUNDERLAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DYNAMICBLOCKPROXYNODE\"] = 630] = \"DWG_TYPE_DYNAMICBLOCKPROXYNODE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DYNAMICBLOCKPURGEPREVENTER\"] = 631] = \"DWG_TYPE_DYNAMICBLOCKPURGEPREVENTER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_EVALUATION_GRAPH\"] = 632] = \"DWG_TYPE_EVALUATION_GRAPH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_EXTRUDEDSURFACE\"] = 633] = \"DWG_TYPE_EXTRUDEDSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FCFOBJECTCONTEXTDATA\"] = 634] = \"DWG_TYPE_FCFOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FIELD\"] = 635] = \"DWG_TYPE_FIELD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FIELDLIST\"] = 636] = \"DWG_TYPE_FIELDLIST\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FLIPPARAMETERENTITY\"] = 637] = \"DWG_TYPE_FLIPPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FLIPACTIONENTITY\"] = 638] = \"DWG_TYPE_FLIPACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GEODATA\"] = 639] = \"DWG_TYPE_GEODATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GEOMAPIMAGE\"] = 640] = \"DWG_TYPE_GEOMAPIMAGE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GEOPOSITIONMARKER\"] = 641] = \"DWG_TYPE_GEOPOSITIONMARKER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GRADIENT_BACKGROUND\"] = 642] = \"DWG_TYPE_GRADIENT_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GROUND_PLANE_BACKGROUND\"] = 643] = \"DWG_TYPE_GROUND_PLANE_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_HELIX\"] = 644] = \"DWG_TYPE_HELIX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IBL_BACKGROUND\"] = 645] = \"DWG_TYPE_IBL_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IDBUFFER\"] = 646] = \"DWG_TYPE_IDBUFFER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGE\"] = 647] = \"DWG_TYPE_IMAGE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGEDEF\"] = 648] = \"DWG_TYPE_IMAGEDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGEDEF_REACTOR\"] = 649] = \"DWG_TYPE_IMAGEDEF_REACTOR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGE_BACKGROUND\"] = 650] = \"DWG_TYPE_IMAGE_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_INDEX\"] = 651] = \"DWG_TYPE_INDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LARGE_RADIAL_DIMENSION\"] = 652] = \"DWG_TYPE_LARGE_RADIAL_DIMENSION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYERFILTER\"] = 653] = \"DWG_TYPE_LAYERFILTER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYER_INDEX\"] = 654] = \"DWG_TYPE_LAYER_INDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYOUTPRINTCONFIG\"] = 655] = \"DWG_TYPE_LAYOUTPRINTCONFIG\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LEADEROBJECTCONTEXTDATA\"] = 656] = \"DWG_TYPE_LEADEROBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LIGHT\"] = 657] = \"DWG_TYPE_LIGHT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LIGHTLIST\"] = 658] = \"DWG_TYPE_LIGHTLIST\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LINEARPARAMETERENTITY\"] = 659] = \"DWG_TYPE_LINEARPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LOFTEDSURFACE\"] = 660] = \"DWG_TYPE_LOFTEDSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MATERIAL\"] = 661] = \"DWG_TYPE_MATERIAL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MENTALRAYRENDERSETTINGS\"] = 662] = \"DWG_TYPE_MENTALRAYRENDERSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MESH\"] = 663] = \"DWG_TYPE_MESH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLEADEROBJECTCONTEXTDATA\"] = 664] = \"DWG_TYPE_MLEADEROBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLEADERSTYLE\"] = 665] = \"DWG_TYPE_MLEADERSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MOVEACTIONENTITY\"] = 666] = \"DWG_TYPE_MOVEACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MOTIONPATH\"] = 667] = \"DWG_TYPE_MOTIONPATH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MPOLYGON\"] = 668] = \"DWG_TYPE_MPOLYGON\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MTEXTATTRIBUTEOBJECTCONTEXTDATA\"] = 669] = \"DWG_TYPE_MTEXTATTRIBUTEOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MTEXTOBJECTCONTEXTDATA\"] = 670] = \"DWG_TYPE_MTEXTOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MULTILEADER\"] = 671] = \"DWG_TYPE_MULTILEADER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NAVISWORKSMODEL\"] = 672] = \"DWG_TYPE_NAVISWORKSMODEL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NAVISWORKSMODELDEF\"] = 673] = \"DWG_TYPE_NAVISWORKSMODELDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NPOCOLLECTION\"] = 674] = \"DWG_TYPE_NPOCOLLECTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NURBSURFACE\"] = 675] = \"DWG_TYPE_NURBSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_OBJECT_PTR\"] = 676] = \"DWG_TYPE_OBJECT_PTR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ORDDIMOBJECTCONTEXTDATA\"] = 677] = \"DWG_TYPE_ORDDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PARTIAL_VIEWING_INDEX\"] = 678] = \"DWG_TYPE_PARTIAL_VIEWING_INDEX\";\n //DWG_TYPE_PARTIAL_VIEWING_FILTER,\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PDFDEFINITION\"] = 679] = \"DWG_TYPE_PDFDEFINITION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PDFUNDERLAY\"] = 680] = \"DWG_TYPE_PDFUNDERLAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PERSUBENTMGR\"] = 681] = \"DWG_TYPE_PERSUBENTMGR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PLANESURFACE\"] = 682] = \"DWG_TYPE_PLANESURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PLOTSETTINGS\"] = 683] = \"DWG_TYPE_PLOTSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUD\"] = 684] = \"DWG_TYPE_POINTCLOUD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDCOLORMAP\"] = 685] = \"DWG_TYPE_POINTCLOUDCOLORMAP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEF\"] = 686] = \"DWG_TYPE_POINTCLOUDDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEFEX\"] = 687] = \"DWG_TYPE_POINTCLOUDDEFEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEF_REACTOR\"] = 688] = \"DWG_TYPE_POINTCLOUDDEF_REACTOR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEF_REACTOR_EX\"] = 689] = \"DWG_TYPE_POINTCLOUDDEF_REACTOR_EX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDEX\"] = 690] = \"DWG_TYPE_POINTCLOUDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTPARAMETERENTITY\"] = 691] = \"DWG_TYPE_POINTPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTPATH\"] = 692] = \"DWG_TYPE_POINTPATH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLARGRIPENTITY\"] = 693] = \"DWG_TYPE_POLARGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RADIMLGOBJECTCONTEXTDATA\"] = 694] = \"DWG_TYPE_RADIMLGOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RADIMOBJECTCONTEXTDATA\"] = 695] = \"DWG_TYPE_RADIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RAPIDRTRENDERSETTINGS\"] = 696] = \"DWG_TYPE_RAPIDRTRENDERSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RASTERVARIABLES\"] = 697] = \"DWG_TYPE_RASTERVARIABLES\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERENTRY\"] = 698] = \"DWG_TYPE_RENDERENTRY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERENVIRONMENT\"] = 699] = \"DWG_TYPE_RENDERENVIRONMENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERGLOBAL\"] = 700] = \"DWG_TYPE_RENDERGLOBAL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERSETTINGS\"] = 701] = \"DWG_TYPE_RENDERSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_REVOLVEDSURFACE\"] = 702] = \"DWG_TYPE_REVOLVEDSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ROTATIONPARAMETERENTITY\"] = 703] = \"DWG_TYPE_ROTATIONPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ROTATEACTIONENTITY\"] = 704] = \"DWG_TYPE_ROTATEACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RTEXT\"] = 705] = \"DWG_TYPE_RTEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SCALE\"] = 706] = \"DWG_TYPE_SCALE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SCALEACTIONENTITY\"] = 707] = \"DWG_TYPE_SCALEACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTIONOBJECT\"] = 708] = \"DWG_TYPE_SECTIONOBJECT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTIONVIEWSTYLE\"] = 709] = \"DWG_TYPE_SECTIONVIEWSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTION_MANAGER\"] = 710] = \"DWG_TYPE_SECTION_MANAGER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTION_SETTINGS\"] = 711] = \"DWG_TYPE_SECTION_SETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SKYLIGHT_BACKGROUND\"] = 712] = \"DWG_TYPE_SKYLIGHT_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SOLID_BACKGROUND\"] = 713] = \"DWG_TYPE_SOLID_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SORTENTSTABLE\"] = 714] = \"DWG_TYPE_SORTENTSTABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SPATIAL_FILTER\"] = 715] = \"DWG_TYPE_SPATIAL_FILTER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SPATIAL_INDEX\"] = 716] = \"DWG_TYPE_SPATIAL_INDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_STRETCHACTIONENTITY\"] = 717] = \"DWG_TYPE_STRETCHACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SUN\"] = 718] = \"DWG_TYPE_SUN\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SUNSTUDY\"] = 719] = \"DWG_TYPE_SUNSTUDY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SWEPTSURFACE\"] = 720] = \"DWG_TYPE_SWEPTSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLE\"] = 721] = \"DWG_TYPE_TABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLECONTENT\"] = 722] = \"DWG_TYPE_TABLECONTENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLEGEOMETRY\"] = 723] = \"DWG_TYPE_TABLEGEOMETRY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLESTYLE\"] = 724] = \"DWG_TYPE_TABLESTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TEXTOBJECTCONTEXTDATA\"] = 725] = \"DWG_TYPE_TEXTOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TVDEVICEPROPERTIES\"] = 726] = \"DWG_TYPE_TVDEVICEPROPERTIES\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VISIBILITYGRIPENTITY\"] = 727] = \"DWG_TYPE_VISIBILITYGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VISIBILITYPARAMETERENTITY\"] = 728] = \"DWG_TYPE_VISIBILITYPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VISUALSTYLE\"] = 729] = \"DWG_TYPE_VISUALSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_WIPEOUT\"] = 730] = \"DWG_TYPE_WIPEOUT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_WIPEOUTVARIABLES\"] = 731] = \"DWG_TYPE_WIPEOUTVARIABLES\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XREFPANELOBJECT\"] = 732] = \"DWG_TYPE_XREFPANELOBJECT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XYPARAMETERENTITY\"] = 733] = \"DWG_TYPE_XYPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BREAKDATA\"] = 734] = \"DWG_TYPE_BREAKDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BREAKPOINTREF\"] = 735] = \"DWG_TYPE_BREAKPOINTREF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FLIPGRIPENTITY\"] = 736] = \"DWG_TYPE_FLIPGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LINEARGRIPENTITY\"] = 737] = \"DWG_TYPE_LINEARGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ROTATIONGRIPENTITY\"] = 738] = \"DWG_TYPE_ROTATIONGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XYGRIPENTITY\"] = 739] = \"DWG_TYPE_XYGRIPENTITY\";\n /* preR13 entities */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE__3DLINE\"] = 740] = \"DWG_TYPE__3DLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_REPEAT\"] = 741] = \"DWG_TYPE_REPEAT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ENDREP\"] = 742] = \"DWG_TYPE_ENDREP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_JUMP\"] = 743] = \"DWG_TYPE_JUMP\";\n /* pre2.0 entities */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LOAD\"] = 744] = \"DWG_TYPE_LOAD\";\n // after 1.0 add new types here for binary compat\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FREED\"] = 65533] = \"DWG_TYPE_FREED\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UNKNOWN_ENT\"] = 65534] = \"DWG_TYPE_UNKNOWN_ENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UNKNOWN_OBJ\"] = 65535] = \"DWG_TYPE_UNKNOWN_OBJ\";\n})(Dwg_Object_Type || (Dwg_Object_Type = {}));\n/**\n * The object created by swapping keys and values of Dwg_Object_Type\n */\nexport const Dwg_Object_Type_Inverted = Object.fromEntries(Object.entries(Dwg_Object_Type).map(([key, value]) => [value, key]));\nexport var Dwg_File_Type;\n(function (Dwg_File_Type) {\n Dwg_File_Type[Dwg_File_Type[\"DWG\"] = 0] = \"DWG\";\n Dwg_File_Type[Dwg_File_Type[\"DXF\"] = 1] = \"DXF\";\n})(Dwg_File_Type || (Dwg_File_Type = {}));\nexport var Dwg_Hatch_Edge_Type;\n(function (Dwg_Hatch_Edge_Type) {\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"Line\"] = 1] = \"Line\";\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"CircularArc\"] = 2] = \"CircularArc\";\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"EllipticArc\"] = 3] = \"EllipticArc\";\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"Spline\"] = 4] = \"Spline\";\n})(Dwg_Hatch_Edge_Type || (Dwg_Hatch_Edge_Type = {}));\nexport var Dwg_Color_Method;\n(function (Dwg_Color_Method) {\n Dwg_Color_Method[Dwg_Color_Method[\"ByLayer\"] = 192] = \"ByLayer\";\n Dwg_Color_Method[Dwg_Color_Method[\"ByBlock\"] = 193] = \"ByBlock\";\n Dwg_Color_Method[Dwg_Color_Method[\"Entities\"] = 194] = \"Entities\";\n Dwg_Color_Method[Dwg_Color_Method[\"TrueColor\"] = 195] = \"TrueColor\";\n Dwg_Color_Method[Dwg_Color_Method[\"ForegroundColor\"] = 197] = \"ForegroundColor\";\n Dwg_Color_Method[Dwg_Color_Method[\"None\"] = 200] = \"None\";\n})(Dwg_Color_Method || (Dwg_Color_Method = {}));\n//# sourceMappingURL=enums.js.map","const MODEL_SPACE = '*MODEL_SPACE';\nconst MODEL_SPACE_PREFIX = '*PAPER_SPACE';\nexport const isModelSpace = (name) => {\n return name && name.toUpperCase() == MODEL_SPACE;\n};\nexport const isPaperSpace = (name) => {\n return name && name.toUpperCase().startsWith(MODEL_SPACE_PREFIX);\n};\nexport const idToString = (id) => {\n return id.toString(16).toUpperCase();\n};\n//# sourceMappingURL=utils.js.map","import { DwgBoundaryPathEdgeType, DwgHatchAssociativity, DwgHatchGradientColorFlag, DwgHatchGradientFlag, DwgHatchSolidFill } from '../database';\nimport { Dwg_Hatch_Edge_Type, Dwg_Object_Type } from '../types';\nimport { idToString } from './utils';\nexport class LibreEntityConverter {\n libredwg;\n layers = new Map();\n ltypes = new Map();\n unknownEntityCount;\n constructor(instance) {\n this.libredwg = instance;\n this.unknownEntityCount = 0;\n }\n prepare(db, force = false) {\n if (force || this.layers.size == 0) {\n this.layers.clear();\n db.tables.LAYER.entries.forEach(layer => {\n this.layers.set(layer.handle, layer.name);\n });\n }\n if (force || this.ltypes.size == 0) {\n this.ltypes.clear();\n db.tables.LTYPE.entries.forEach(ltype => {\n this.ltypes.set(ltype.handle, ltype.name);\n });\n }\n this.unknownEntityCount = 0;\n }\n clear() {\n this.layers.clear();\n this.ltypes.clear();\n this.unknownEntityCount = 0;\n }\n convert(object_ptr) {\n const libredwg = this.libredwg;\n // Get values of the common attributes of one entity\n const entity = libredwg.dwg_object_to_entity(object_ptr);\n const entity_tio = libredwg.dwg_object_to_entity_tio(object_ptr);\n if (entity && entity_tio) {\n // Get values of the common attributes of one entity\n const commonAttrs = this.getCommonAttrs(entity);\n const fixedtype = libredwg.dwg_object_get_fixedtype(object_ptr);\n if (fixedtype == Dwg_Object_Type.DWG_TYPE_3DFACE) {\n return this.convert3dFace(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ARC) {\n return this.convertArc(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ATTDEF) {\n return this.convertAttdef(entity_tio, commonAttrs);\n // libredwg stores ATTRIB as children of one INSERT entity.\n // It does not exist in iterator of dwg data.\n // } else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ATTRIB) {\n // return this.convertAttrib(entity_tio, commonAttrs)\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_CIRCLE) {\n return this.convertCircle(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_ALIGNED ||\n fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_LINEAR) {\n return this.convertAlignedDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_ANG3PT) {\n return this.convert3PointAngularDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_DIAMETER) {\n return this.convertDiameterDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_ORDINATE) {\n return this.convertOrdinateDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_RADIUS) {\n return this.convertRadiusDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ELLIPSE) {\n return this.convertEllise(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_HATCH) {\n return this.convertHatch(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_IMAGE) {\n return this.convertImage(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_INSERT) {\n return this.convertInsert(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_LEADER) {\n return this.convertLeader(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_LINE) {\n return this.convertLine(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_LWPOLYLINE) {\n return this.convertLWPolyline(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_MLINE) {\n return this.convertMLine(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_MTEXT) {\n return this.convertMText(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_OLE2FRAME) {\n return this.convertOle2Frame(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_OLEFRAME) {\n return this.convertOleFrame(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_POINT) {\n return this.convertPoint(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_POLYLINE_2D) {\n return this.convertPolyline2d(entity_tio, commonAttrs, object_ptr);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_POLYLINE_3D) {\n return this.convertPolyline3d(entity_tio, commonAttrs, object_ptr);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_PROXY_ENTITY) {\n return this.convertProxy(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_RAY) {\n return this.convertRay(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_SECTIONOBJECT) {\n return this.convertSection(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_SOLID) {\n return this.convertSolid(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_SPLINE) {\n return this.convertSpline(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_TABLE) {\n return this.convertTable(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_TEXT) {\n return this.convertText(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_TOLERANCE) {\n return this.convertTolerance(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_VIEWPORT) {\n return this.convertViewport(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_WIPEOUT) {\n return this.convertWipeout(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_XLINE) {\n return this.convertXline(entity_tio, commonAttrs);\n }\n else if (fixedtype === Dwg_Object_Type.DWG_TYPE_UNKNOWN_ENT) {\n this.unknownEntityCount++;\n }\n }\n return undefined;\n }\n convert3dFace(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const corner1 = libredwg.dwg_dynapi_entity_value(entity, 'corner1')\n .data;\n const corner2 = libredwg.dwg_dynapi_entity_value(entity, 'corner2')\n .data;\n const corner3 = libredwg.dwg_dynapi_entity_value(entity, 'corner3')\n .data;\n const corner4 = libredwg.dwg_dynapi_entity_value(entity, 'corner4')\n .data;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'invis_flags')\n .data;\n return {\n type: '3DFACE',\n ...commonAttrs,\n corner1: corner1,\n corner2: corner2,\n corner3: corner3,\n corner4: corner4,\n flag: flag\n };\n }\n convertArc(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const center = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const radius = libredwg.dwg_dynapi_entity_value(entity, 'radius')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const startAngle = libredwg.dwg_dynapi_entity_value(entity, 'start_angle')\n .data;\n const endAngle = libredwg.dwg_dynapi_entity_value(entity, 'end_angle')\n .data;\n return {\n type: 'ARC',\n ...commonAttrs,\n thickness: thickness,\n center: center,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n extrusionDirection: extrusionDirection\n };\n }\n convertEmbeddedMText(entity, subclassName) {\n const libredwg = this.libredwg;\n const attachmentPoint = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'attachment').data;\n const insertionPoint = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'ins_pt').data;\n const direction = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'x_axis_dir').data;\n const rectHeight = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'rect_height').data;\n const rectWidth = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'rect_width').data;\n const extentsHeight = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'extents_height').data;\n const extentsWidth = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'extents_width').data;\n // const columnType = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'column_type')\n // .data as number\n // const columnWidth = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'column_width')\n // .data as number\n // const columnGutter = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'gutter')\n // .data as number\n // const columnAutoHeight = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'auto_height'\n // ).data as number\n // const columnFlowReversed = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'flow_reversed'\n // ).data as number\n // const columnHeightCount = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'num_column_heights'\n // ).data as number\n // const columnHeights_ptr = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'column_heights'\n // ).data as number\n // const columnHeights = libredwg.dwg_ptr_to_double_array(\n // columnHeights_ptr,\n // columnHeightCount\n // )\n return {\n insertionPoint: insertionPoint,\n rectHeight: rectHeight,\n rectWidth: rectWidth,\n extentsHeight: extentsHeight,\n extentsWidth: extentsWidth,\n attachmentPoint: attachmentPoint,\n direction: direction\n // columnType: columnType,\n // columnFlowReversed: columnFlowReversed,\n // columnAutoHeight: columnAutoHeight,\n // columnWidth: columnWidth,\n // columnGutter: columnGutter,\n // columnHeightCount: columnHeightCount,\n // columnHeights: columnHeights\n };\n }\n convertAttdef(entity, commonAttrs) {\n const libredwg = this.libredwg;\n // Because the field name of text string in Dwg_Entity_ATTDEF is 'default_value'\n // instead of 'text_value'. So we need to get its value again using the correct\n // field name.\n const textValue = libredwg.dwg_dynapi_entity_value(entity, 'default_value')\n .data;\n const text = this.convertTextBase(entity);\n text.text = textValue;\n const prompt = libredwg.dwg_dynapi_entity_value(entity, 'prompt')\n .data;\n const tag = libredwg.dwg_dynapi_entity_value(entity, 'tag').data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flags')\n .data;\n const fieldLength = libredwg.dwg_dynapi_entity_value(entity, 'field_length')\n .data;\n const lockPositionFlag = libredwg.dwg_dynapi_entity_value(entity, 'lock_position_flag').data;\n const duplicateRecordCloningFlag = libredwg.dwg_dynapi_entity_value(entity, 'keep_duplicate_records').data;\n const isReallyLocked = libredwg.dwg_dynapi_entity_value(entity, 'is_really_locked').data;\n // TODO: double check whether 'mtext_type' is 'mtextFlag'\n const mtextFlag = libredwg.dwg_dynapi_entity_value(entity, 'mtext_type')\n .data;\n const alignmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'alignment_pt').data;\n return {\n type: 'ATTDEF',\n ...commonAttrs,\n text: this.convertTextBase(entity),\n prompt: prompt,\n tag: tag,\n flags: flags,\n fieldLength: fieldLength,\n lockPositionFlag: lockPositionFlag > 0,\n duplicateRecordCloningFlag: duplicateRecordCloningFlag > 0,\n mtextFlag: mtextFlag,\n isReallyLocked: isReallyLocked > 0,\n alignmentPoint: alignmentPoint,\n annotationScale: 1, // TODO: Set the correct value\n attrTag: '', // TODO: Set the correct value\n mtext: this.convertEmbeddedMText(entity, 'ATTDEF_mtext')\n };\n }\n convertAttrib(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const text = this.convertTextBase(entity);\n const tag = libredwg.dwg_dynapi_entity_value(entity, 'tag').data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flags')\n .data;\n const fieldLength = libredwg.dwg_dynapi_entity_value(entity, 'field_length')\n .data;\n const lockPositionFlag = libredwg.dwg_dynapi_entity_value(entity, 'lock_position_flag').data;\n const duplicateRecordCloningFlag = libredwg.dwg_dynapi_entity_value(entity, 'keep_duplicate_records').data;\n // TODO: double check whether 'mtext_type' is 'mtextFlag'\n const mtextFlag = libredwg.dwg_dynapi_entity_value(entity, 'mtext_type')\n .data;\n const isReallyLocked = libredwg.dwg_dynapi_entity_value(entity, 'is_really_locked').data;\n const alignmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'alignment_pt').data;\n return {\n type: 'ATTRIB',\n ...commonAttrs,\n text: text,\n tag: tag,\n flags: flags,\n fieldLength: fieldLength,\n lockPositionFlag: !!lockPositionFlag,\n duplicateRecordCloningFlag: !!duplicateRecordCloningFlag,\n mtextFlag: mtextFlag,\n isReallyLocked: !!isReallyLocked,\n numberOfSecondaryAttrs: 0, // TODO: libredwg doesn't support it yet.\n secondaryAttrsHardId: '0', // TODO: libredwg doesn't support it yet.\n alignmentPoint: { ...alignmentPoint, z: 0 },\n annotationScale: 1, // TODO: Set the correct value\n attrTag: '', // TODO: Set the correct value\n mtext: this.convertEmbeddedMText(entity, 'ATTDEF_mtext')\n };\n }\n convertCircle(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const center = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const radius = libredwg.dwg_dynapi_entity_value(entity, 'radius')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n type: 'CIRCLE',\n ...commonAttrs,\n thickness: thickness,\n center: center,\n radius: radius,\n extrusionDirection: extrusionDirection\n };\n }\n convertAlignedDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'clone_ins_pt' is same as 'insertionPoint'\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'clone_ins_pt').data;\n const subDefinitionPoint1 = libredwg.dwg_dynapi_entity_value(entity, 'xline1_pt').data;\n const subDefinitionPoint2 = libredwg.dwg_dynapi_entity_value(entity, 'xline2_pt').data;\n const rotationAngle = libredwg.dwg_dynapi_entity_value(entity, 'ins_rotation').data;\n const obliqueAngle = libredwg.dwg_dynapi_entity_value(entity, 'oblique_angle').data;\n return {\n subclassMarker: 'AcDbAlignedDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n insertionPoint: insertionPoint,\n subDefinitionPoint1: subDefinitionPoint1,\n subDefinitionPoint2: subDefinitionPoint2,\n rotationAngle: rotationAngle == null ? 0 : rotationAngle,\n obliqueAngle: obliqueAngle\n };\n }\n convert3PointAngularDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n const subDefinitionPoint1 = libredwg.dwg_dynapi_entity_value(entity, 'xline1_pt').data;\n const subDefinitionPoint2 = libredwg.dwg_dynapi_entity_value(entity, 'xline2_pt').data;\n const centerPoint = libredwg.dwg_dynapi_entity_value(entity, 'center_pt')\n .data;\n const arcPoint = libredwg.dwg_dynapi_entity_value(entity, 'xline2end_pt')\n .data;\n return {\n subclassMarker: 'AcDb3PointAngularDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n subDefinitionPoint1: subDefinitionPoint1,\n subDefinitionPoint2: subDefinitionPoint2,\n centerPoint: centerPoint,\n arcPoint: arcPoint\n };\n }\n convertDiameterDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'first_arc_pt' is same as 'centerPoint'\n const centerPoint = libredwg.dwg_dynapi_entity_value(entity, 'first_arc_pt')\n .data;\n const leaderLength = libredwg.dwg_dynapi_entity_value(entity, 'leader_len')\n .data;\n return {\n subclassMarker: 'AcDbDiametricDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n centerPoint: centerPoint,\n leaderLength: leaderLength\n };\n }\n convertOrdinateDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'feature_location_pt' is same as 'subDefinitionPoint1'\n const subDefinitionPoint1 = libredwg.dwg_dynapi_entity_value(entity, 'feature_location_pt').data;\n // TODO: Not sure whether 'leader_endpt' is same as 'subDefinitionPoint2'\n const subDefinitionPoint2 = libredwg.dwg_dynapi_entity_value(entity, 'leader_endpt').data;\n return {\n subclassMarker: 'AcDbOrdinateDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n subDefinitionPoint1: subDefinitionPoint1,\n subDefinitionPoint2: subDefinitionPoint2\n };\n }\n convertRadiusDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'first_arc_pt' is same as 'centerPoint'\n const centerPoint = libredwg.dwg_dynapi_entity_value(entity, 'first_arc_pt')\n .data;\n const leaderLength = libredwg.dwg_dynapi_entity_value(entity, 'leader_len')\n .data;\n return {\n subclassMarker: 'AcDbRadialDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n centerPoint: centerPoint,\n leaderLength: leaderLength\n };\n }\n convertEllise(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const center = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const majorAxisEndPoint = libredwg.dwg_dynapi_entity_value(entity, 'sm_axis').data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const axisRatio = libredwg.dwg_dynapi_entity_value(entity, 'axis_ratio')\n .data;\n const startAngle = libredwg.dwg_dynapi_entity_value(entity, 'start_angle')\n .data;\n const endAngle = libredwg.dwg_dynapi_entity_value(entity, 'end_angle')\n .data;\n return {\n type: 'ELLIPSE',\n ...commonAttrs,\n center: center,\n majorAxisEndPoint: majorAxisEndPoint,\n extrusionDirection: extrusionDirection,\n axisRatio: axisRatio,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n convertHatch(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const patternName = libredwg.dwg_dynapi_entity_value(entity, 'name')\n .data;\n const isSolidFill = libredwg.dwg_dynapi_entity_value(entity, 'is_solid_fill').data;\n const isAssociative = libredwg.dwg_dynapi_entity_value(entity, 'is_associative').data;\n const numberOfBoundaryPaths = libredwg.dwg_dynapi_entity_value(entity, 'num_paths').data;\n const paths_ptr = libredwg.dwg_dynapi_entity_value(entity, 'paths')\n .data;\n const boundaryPaths = libredwg.dwg_ptr_to_hatch_path_array(paths_ptr, numberOfBoundaryPaths);\n const patternStyle = libredwg.dwg_dynapi_entity_value(entity, 'style')\n .data;\n const patternType = libredwg.dwg_dynapi_entity_value(entity, 'pattern_type')\n .data;\n const patternAngle = libredwg.dwg_dynapi_entity_value(entity, 'angle')\n .data;\n const patternScale = libredwg.dwg_dynapi_entity_value(entity, 'scale_spacing').data;\n const numberOfDefinitionLines = libredwg.dwg_dynapi_entity_value(entity, 'num_deflines').data;\n const definitionLines_ptr = libredwg.dwg_dynapi_entity_value(entity, 'deflines').data;\n const definitionLines = libredwg.dwg_ptr_to_hatch_defline_array(definitionLines_ptr, numberOfDefinitionLines);\n const pixelSize = libredwg.dwg_dynapi_entity_value(entity, 'pixel_size')\n .data;\n const numberOfSeedPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_seeds').data;\n const seedPoints_ptr = libredwg.dwg_dynapi_entity_value(entity, 'seeds')\n .data;\n const seedPoints = libredwg.dwg_ptr_to_point2d_array(seedPoints_ptr, numberOfSeedPoints);\n const result = {\n ...commonAttrs,\n // elevationPoint: DwgPoint3D\n extrusionDirection: extrusionDirection,\n patternName: patternName,\n solidFill: isSolidFill\n ? DwgHatchSolidFill.SolidFill\n : DwgHatchSolidFill.PatternFill,\n // patternFillColor: number\n associativity: isAssociative\n ? DwgHatchAssociativity.Associative\n : DwgHatchAssociativity.NonAssociative,\n numberOfBoundaryPaths: numberOfBoundaryPaths,\n boundaryPaths: this.convertHatchBoundaryPaths(boundaryPaths),\n hatchStyle: patternStyle,\n patternType: patternType,\n patternAngle: patternAngle,\n patternScale: patternScale,\n numberOfDefinitionLines: numberOfDefinitionLines,\n definitionLines: definitionLines.map(value => {\n return {\n angle: value.angle,\n base: value.pt0,\n offset: value.offset,\n numberOfDashLengths: value.dashes.length,\n dashLengths: value.dashes\n };\n }),\n pixelSize: pixelSize,\n numberOfSeedPoints: numberOfSeedPoints,\n // offsetVector?: DwgPoint3D\n seedPoints: seedPoints\n // gradientFlag?: DwgHatchGradientFlag\n };\n const gradientFlag = libredwg.dwg_dynapi_entity_value(entity, 'is_gradient_fill')\n .data;\n if (gradientFlag > 0) {\n const gradientName = libredwg.dwg_dynapi_entity_value(entity, 'gradient_name')\n .data;\n const gradientRotation = libredwg.dwg_dynapi_entity_value(entity, 'gradient_angle')\n .data;\n const gradientDefinition = libredwg.dwg_dynapi_entity_value(entity, 'gradient_shift')\n .data;\n const colorTint = libredwg.dwg_dynapi_entity_value(entity, 'gradient_tint')\n .data;\n const gradientColorFlag = libredwg.dwg_dynapi_entity_value(entity, 'single_color_gradient')\n .data;\n // const numberOfColors = libredwg.dwg_dynapi_entity_value(entity, 'num_colors')\n // .data as number\n const gradientColors_ptr = libredwg.dwg_dynapi_entity_value(entity, 'colors')\n .data;\n const gradientColors = libredwg.dwg_ptr_to_hatch_gradient_color_array(gradientColors_ptr, (gradientColorFlag == 1) ? 1 : 2);\n return {\n type: 'HATCH',\n ...result,\n gradientFlag: DwgHatchGradientFlag.Gradient,\n gradientColorFlag: gradientColorFlag == 1 ? DwgHatchGradientColorFlag.OneColor : DwgHatchGradientColorFlag.TwoColor,\n gradientName,\n gradientRotation,\n gradientDefinition,\n colorTint,\n gradientColors\n };\n }\n else {\n return {\n type: 'HATCH',\n ...result\n };\n }\n }\n convertHatchBoundaryPaths(paths) {\n const converted = paths\n .filter(path => path.num_segs_or_paths > 0)\n .map(path => {\n const commonAttrs = {\n boundaryPathTypeFlag: path.flag\n };\n // Check whether it is a polyline\n if (path.flag & 0x02) {\n return {\n ...commonAttrs,\n hasBulge: path.bulges_present,\n isClosed: path.closed,\n numberOfVertices: path.num_segs_or_paths,\n vertices: path.polyline_paths.map(vertex => {\n return {\n x: vertex.point.x,\n y: vertex.point.y,\n bulge: vertex.bulge\n };\n })\n };\n }\n else {\n const edges = path.segs.map(seg => {\n if (seg.curve_type == Dwg_Hatch_Edge_Type.Line) {\n return {\n type: DwgBoundaryPathEdgeType.Line,\n start: seg.first_endpoint,\n end: seg.second_endpoint\n };\n }\n else if (seg.curve_type == Dwg_Hatch_Edge_Type.CircularArc) {\n return {\n type: DwgBoundaryPathEdgeType.Circular,\n center: seg.center,\n radius: seg.radius,\n startAngle: seg.start_angle,\n endAngle: seg.end_angle,\n isCCW: seg.is_ccw\n };\n }\n else if (seg.curve_type == Dwg_Hatch_Edge_Type.EllipticArc) {\n return {\n type: DwgBoundaryPathEdgeType.Elliptic,\n center: seg.center,\n end: seg.endpoint,\n lengthOfMinorAxis: seg.minor_major_ratio,\n startAngle: seg.start_angle,\n endAngle: seg.end_angle,\n isCCW: seg.is_ccw\n };\n }\n else if (seg.curve_type == Dwg_Hatch_Edge_Type.Spline) {\n return {\n type: DwgBoundaryPathEdgeType.Spline,\n degree: seg.degree,\n isRational: seg.is_rational,\n isPeriodic: seg.is_periodic,\n numberOfKnots: seg.num_knots,\n numberOfControlPoints: seg.num_control_points,\n knots: seg.knots,\n controlPoints: seg.control_points,\n numberOfFitData: seg.num_fitpts,\n fitDatum: seg.fitpts,\n startTangent: seg.start_tangent,\n endTangent: seg.end_tangent\n };\n }\n });\n return {\n ...commonAttrs,\n numberOfEdges: path.num_segs_or_paths,\n edges: edges\n };\n }\n });\n return converted;\n }\n convertImage(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const version = libredwg.dwg_dynapi_entity_value(entity, 'class_version')\n .data;\n const position = libredwg.dwg_dynapi_entity_value(entity, 'pt0')\n .data;\n const uPixel = libredwg.dwg_dynapi_entity_value(entity, 'uvec')\n .data;\n const vPixel = libredwg.dwg_dynapi_entity_value(entity, 'vvec')\n .data;\n const imageSize = libredwg.dwg_dynapi_entity_value(entity, 'image_size')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'display_props')\n .data;\n const clipping = libredwg.dwg_dynapi_entity_value(entity, 'clipping')\n .data;\n const brightness = libredwg.dwg_dynapi_entity_value(entity, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(entity, 'contrast')\n .data;\n const fade = libredwg.dwg_dynapi_entity_value(entity, 'fade').data;\n const clipMode = libredwg.dwg_dynapi_entity_value(entity, 'clip_mode')\n .data;\n const clippingBoundaryType = libredwg.dwg_dynapi_entity_value(entity, 'clip_boundary_type').data;\n const countBoundaryPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_clip_verts').data;\n const clip_verts = libredwg.dwg_dynapi_entity_value(entity, 'clip_verts')\n .data;\n const clippingBoundaryPath = libredwg.dwg_ptr_to_point3d_array(clip_verts, countBoundaryPoints);\n const imagedef_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedef')\n .data;\n const imageDefHandle = idToString(libredwg.dwg_ref_get_absref(imagedef_ref));\n const imagedefreactor_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedefreactor').data;\n const imageDefReactorHandle = idToString(libredwg.dwg_ref_get_absref(imagedefreactor_ref));\n return {\n type: 'IMAGE',\n ...commonAttrs,\n version: version,\n position: position,\n uPixel: uPixel,\n vPixel: vPixel,\n imageSize: imageSize,\n imageDefHandle: imageDefHandle,\n flags: flags,\n clipping: clipping,\n brightness: brightness,\n contrast: contrast,\n fade: fade,\n imageDefReactorHandle: imageDefReactorHandle,\n clippingBoundaryType: clippingBoundaryType,\n countBoundaryPoints: countBoundaryPoints,\n clippingBoundaryPath: clippingBoundaryPath,\n clipMode: clipMode\n };\n }\n convertInsert(entity, commonAttrs) {\n const libredwg = this.libredwg;\n // Get block name\n let name = '';\n const block_header_ref = libredwg.dwg_dynapi_entity_value(entity, 'block_header').data;\n if (block_header_ref) {\n const block_header_obj = libredwg.dwg_ref_get_object(block_header_ref);\n if (block_header_obj) {\n const block_header_tio = libredwg.dwg_object_to_object_tio(block_header_obj);\n if (block_header_tio) {\n name =\n libredwg.dwg_entity_block_header_get_block(block_header_tio).name;\n }\n }\n }\n if (!name) {\n /* pre-R2.0 */\n name = libredwg.dwg_dynapi_entity_value(entity, 'block_name')\n .data;\n }\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const scale = libredwg.dwg_dynapi_entity_value(entity, 'scale')\n .data;\n const rotation = libredwg.dwg_dynapi_entity_value(entity, 'rotation')\n .data;\n const columnCount = libredwg.dwg_dynapi_entity_value(entity, 'num_cols')\n .data;\n const rowCount = libredwg.dwg_dynapi_entity_value(entity, 'num_rows')\n .data;\n const columnSpacing = libredwg.dwg_dynapi_entity_value(entity, 'col_spacing').data;\n const rowSpacing = libredwg.dwg_dynapi_entity_value(entity, 'row_spacing')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const attrib_ptr_array = libredwg.dwg_entity_insert_get_attribs(entity);\n const attribs = [];\n attrib_ptr_array.forEach(object_ptr => {\n const entity = libredwg.dwg_object_to_entity(object_ptr);\n const entity_tio = libredwg.dwg_object_to_entity_tio(object_ptr);\n if (entity && entity_tio) {\n // Get values of the common attributes of ATTRIB entity\n const commonAttrs = this.getCommonAttrs(entity);\n const fixedtype = libredwg.dwg_object_get_fixedtype(object_ptr);\n if (fixedtype == Dwg_Object_Type.DWG_TYPE_ATTRIB) {\n attribs.push(this.convertAttrib(entity_tio, commonAttrs));\n }\n }\n });\n // TODO: convert block attributes\n return {\n type: 'INSERT',\n ...commonAttrs,\n name: name,\n insertionPoint: insertionPoint,\n xScale: scale ? scale.x : 1,\n yScale: scale ? scale.y : 1,\n zScale: scale ? scale.z : 1,\n rotation: rotation,\n columnCount: columnCount,\n rowCount: rowCount,\n columnSpacing: columnSpacing,\n rowSpacing: rowSpacing,\n extrusionDirection: extrusionDirection,\n attribs: attribs\n };\n }\n convertLeader(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const styleName = libredwg.dwg_entity_mtext_get_style_name(entity);\n const isArrowheadEnabled = libredwg.dwg_dynapi_entity_value(entity, 'arrowhead_type').data;\n const isSpline = libredwg.dwg_dynapi_entity_value(entity, 'path_type')\n .data;\n const leaderCreationFlag = libredwg.dwg_dynapi_entity_value(entity, 'annot_type').data;\n const isHooklineSameDirection = libredwg.dwg_dynapi_entity_value(entity, 'hookline_dir').data;\n const isHooklineExists = libredwg.dwg_dynapi_entity_value(entity, 'hookline_on').data;\n const textHeight = libredwg.dwg_dynapi_entity_value(entity, 'box_height')\n .data;\n const textWidth = libredwg.dwg_dynapi_entity_value(entity, 'box_width')\n .data;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_points').data;\n const vertices_ptr = libredwg.dwg_dynapi_entity_value(entity, 'points')\n .data;\n const vertices = numberOfVertices > 0\n ? libredwg.dwg_ptr_to_point3d_array(vertices_ptr, numberOfVertices)\n : [];\n const byBlockColor = libredwg.dwg_dynapi_entity_value(entity, 'byblock_color').data;\n const normal = libredwg.dwg_dynapi_entity_value(entity, 'extrusion')\n .data;\n const horizontalDirection = libredwg.dwg_dynapi_entity_value(entity, 'x_direction').data;\n const offsetFromBlock = libredwg.dwg_dynapi_entity_value(entity, 'inspt_offset').data;\n const offsetFromAnnotation = libredwg.dwg_dynapi_entity_value(entity, 'endptproj').data;\n return {\n type: 'LEADER',\n ...commonAttrs,\n styleName: styleName,\n isArrowheadEnabled: isArrowheadEnabled > 0,\n isSpline: isSpline > 0,\n leaderCreationFlag: leaderCreationFlag,\n isHooklineSameDirection: isHooklineSameDirection > 0,\n isHooklineExists: isHooklineExists > 0,\n textHeight: textHeight,\n textWidth: textWidth,\n numberOfVertices: numberOfVertices,\n vertices: vertices,\n byBlockColor: byBlockColor,\n normal: normal,\n horizontalDirection: horizontalDirection,\n offsetFromBlock: offsetFromBlock,\n offsetFromAnnotation: offsetFromAnnotation\n };\n }\n convertLine(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'start')\n .data;\n const endPoint = libredwg.dwg_dynapi_entity_value(entity, 'end')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n type: 'LINE',\n ...commonAttrs,\n thickness: thickness,\n startPoint: startPoint,\n endPoint: endPoint,\n extrusionDirection: extrusionDirection\n };\n }\n convertLWPolyline(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_points').data;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const constantWidth = libredwg.dwg_dynapi_entity_value(entity, 'const_width').data;\n const elevation = libredwg.dwg_dynapi_entity_value(entity, 'elevation')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const vertices = [];\n const num_points = libredwg.dwg_dynapi_entity_value(entity, 'num_points')\n .data;\n const points_ptr = libredwg.dwg_dynapi_entity_value(entity, 'points')\n .data;\n const points = libredwg.dwg_ptr_to_point2d_array(points_ptr, num_points);\n const num_bulges = libredwg.dwg_dynapi_entity_value(entity, 'num_bulges')\n .data;\n const bulges_ptr = libredwg.dwg_dynapi_entity_value(entity, 'bulges')\n .data;\n const bulges = libredwg.dwg_ptr_to_double_array(bulges_ptr, num_bulges);\n points.forEach((point, index) => {\n vertices.push({\n id: index,\n x: point.x,\n y: point.y,\n bulge: bulges.length > index ? bulges[index] : 0\n });\n });\n return {\n type: 'LWPOLYLINE',\n ...commonAttrs,\n numberOfVertices: numberOfVertices,\n flag: flag,\n constantWidth: constantWidth,\n elevation: elevation,\n thickness: thickness,\n extrusionDirection: extrusionDirection,\n vertices: vertices\n };\n }\n convertMLine(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const scale = libredwg.dwg_dynapi_entity_value(entity, 'scale')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flags')\n .data;\n const justification = libredwg.dwg_dynapi_entity_value(entity, 'justification').data;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'base_point')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const numberOfLines = libredwg.dwg_dynapi_entity_value(entity, 'num_lines')\n .data;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_verts').data;\n const verts_ptr = libredwg.dwg_dynapi_entity_value(entity, 'verts')\n .data;\n const verts = libredwg.dwg_ptr_to_mline_vertex_array(verts_ptr, numberOfVertices);\n const vertices = [];\n verts.forEach(vert => {\n vertices.push({\n vertex: vert.vertex,\n vertexDirection: vert.vertex_direction,\n miterDirection: vert.miter_direction,\n numberOfLines: vert.num_lines,\n lines: vert.lines.map(line => {\n return {\n numberOfSegmentParams: line.num_segparms,\n segmentParams: line.segparms,\n numberOfAreaFillParams: line.num_areafillparms,\n areaFillParams: line.areafillparms\n };\n })\n });\n });\n return {\n type: 'MLINE',\n ...commonAttrs,\n scale: scale,\n flags: flags,\n justification: justification,\n startPoint: startPoint,\n extrusionDirection: extrusionDirection,\n numberOfLines: numberOfLines,\n numberOfVertices: numberOfVertices,\n vertices: vertices,\n mlineStyle: '' // TODO: Set the correct value\n };\n }\n convertOle2Frame(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const oleVersion = libredwg.dwg_dynapi_entity_value(entity, 'oleversion')\n .data;\n const oleClient = libredwg.dwg_dynapi_entity_value(entity, 'oleclient')\n .data;\n const dataSize = libredwg.dwg_dynapi_entity_value(entity, 'data_size')\n .data;\n const leftUpPoint = libredwg.dwg_dynapi_entity_value(entity, 'pt1')\n .data;\n const rightDownPoint = libredwg.dwg_dynapi_entity_value(entity, 'pt2')\n .data;\n const lockAspect = libredwg.dwg_dynapi_entity_value(entity, 'lock_aspect')\n .data;\n const oleObjectType = libredwg.dwg_dynapi_entity_value(entity, 'type')\n .data;\n const tileModeDescriptor = libredwg.dwg_dynapi_entity_value(entity, 'mode')\n .data;\n const binaryData = libredwg.dwg_dynapi_entity_value(entity, 'data')\n .data;\n return {\n type: 'OLE2FRAME',\n ...commonAttrs,\n oleVersion: oleVersion,\n oleClient: oleClient,\n dataSize: dataSize,\n leftUpPoint: leftUpPoint,\n rightDownPoint: rightDownPoint,\n lockAspect: lockAspect,\n oleObjectType: oleObjectType,\n tileModeDescriptor: tileModeDescriptor,\n binaryData: binaryData\n };\n }\n convertOleFrame(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const mode = libredwg.dwg_dynapi_entity_value(entity, 'mode').data;\n const dataSize = libredwg.dwg_dynapi_entity_value(entity, 'data_size')\n .data;\n const binaryData = libredwg.dwg_dynapi_entity_value(entity, 'data')\n .data;\n return {\n type: 'OLEFRAME',\n ...commonAttrs,\n flag: flag,\n mode: mode,\n dataSize: dataSize,\n binaryData: binaryData\n };\n }\n convertMText(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const textHeight = libredwg.dwg_dynapi_entity_value(entity, 'text_height')\n .data;\n const rectHeight = libredwg.dwg_dynapi_entity_value(entity, 'rect_height')\n .data;\n const rectWidth = libredwg.dwg_dynapi_entity_value(entity, 'rect_width')\n .data;\n const extentsWidth = libredwg.dwg_dynapi_entity_value(entity, 'extents_width').data;\n const extentsHeight = libredwg.dwg_dynapi_entity_value(entity, 'extents_height').data;\n const attachmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'attachment').data;\n const drawingDirection = libredwg.dwg_dynapi_entity_value(entity, 'flow_dir').data;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'text').data;\n const styleName = libredwg.dwg_entity_mtext_get_style_name(entity);\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const direction = libredwg.dwg_dynapi_entity_value(entity, 'x_axis_dir')\n .data;\n const lineSpacingStyle = libredwg.dwg_dynapi_entity_value(entity, 'linespace_style').data;\n const lineSpacing = libredwg.dwg_dynapi_entity_value(entity, 'linespace_factor').data;\n const backgroundFill = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_flag').data;\n const fillBoxScale = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_scale').data;\n const backgroundFillColor = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_color').data;\n const backgroundFillTransparency = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_trans').data;\n const columnType = libredwg.dwg_dynapi_entity_value(entity, 'column_type')\n .data;\n const columnFlowReversed = libredwg.dwg_dynapi_entity_value(entity, 'flow_reversed').data;\n const columnAutoHeight = libredwg.dwg_dynapi_entity_value(entity, 'auto_height').data;\n const columnWidth = libredwg.dwg_dynapi_entity_value(entity, 'column_width')\n .data;\n const columnGutter = libredwg.dwg_dynapi_entity_value(entity, 'gutter')\n .data;\n const columnHeightCount = libredwg.dwg_dynapi_entity_value(entity, 'num_column_heights').data;\n const columnHeights_ptr = libredwg.dwg_dynapi_entity_value(entity, 'column_heights').data;\n const columnHeights = libredwg.dwg_ptr_to_double_array(columnHeights_ptr, columnHeightCount);\n return {\n type: 'MTEXT',\n ...commonAttrs,\n insertionPoint: insertionPoint,\n textHeight: textHeight,\n rectHeight: rectHeight,\n rectWidth: rectWidth,\n extentsHeight: extentsHeight,\n extentsWidth: extentsWidth,\n attachmentPoint: attachmentPoint,\n drawingDirection: drawingDirection,\n text: text,\n styleName: styleName,\n extrusionDirection: extrusionDirection,\n direction: direction,\n rotation: 0, // TODO: Didn't find the corresponding field in libredwg\n lineSpacingStyle: lineSpacingStyle,\n lineSpacing: lineSpacing,\n backgroundFill: backgroundFill,\n // backgroundColor: backgroundColor.rgb, // TODO: Double check whether it should be color index\n fillBoxScale: fillBoxScale,\n backgroundFillColor: backgroundFillColor.rgb, // TODO: Double check whether it should be color index\n backgroundFillTransparency: backgroundFillTransparency,\n columnType: columnType,\n // columnCount: columnCount,\n columnFlowReversed: columnFlowReversed,\n columnAutoHeight: columnAutoHeight,\n columnWidth: columnWidth,\n columnGutter: columnGutter,\n columnHeightCount: columnHeightCount,\n columnHeights: columnHeights\n };\n }\n convertPoint(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const x = libredwg.dwg_dynapi_entity_value(entity, 'x').data;\n const y = libredwg.dwg_dynapi_entity_value(entity, 'y').data;\n const z = libredwg.dwg_dynapi_entity_value(entity, 'z').data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const angle = libredwg.dwg_dynapi_entity_value(entity, 'x_ang')\n .data;\n return {\n type: 'POINT',\n ...commonAttrs,\n position: { x, y, z },\n thickness: thickness,\n extrusionDirection: extrusionDirection,\n angle: angle\n };\n }\n convertPolyline2d(entity, commonAttrs, object) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const smoothType = libredwg.dwg_dynapi_entity_value(entity, 'curve_type')\n .data;\n const startWidth = libredwg.dwg_dynapi_entity_value(entity, 'start_width')\n .data;\n const endWidth = libredwg.dwg_dynapi_entity_value(entity, 'end_width')\n .data;\n const elevation = libredwg.dwg_dynapi_entity_value(entity, 'elevation')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const vertices = libredwg.dwg_entity_polyline_2d_get_vertices(object);\n return {\n type: 'POLYLINE2D',\n ...commonAttrs,\n flag: flag,\n smoothType: smoothType,\n startWidth: startWidth,\n endWidth: endWidth,\n elevation: elevation,\n thickness: thickness,\n extrusionDirection: extrusionDirection,\n vertices: vertices.map(vertex => {\n return {\n x: vertex.point.x,\n y: vertex.point.y,\n z: vertex.point.z,\n startWidth: vertex.start_width,\n endWidth: vertex.end_width,\n bulge: vertex.bulge,\n flag: vertex.flag,\n tangentDirection: vertex.tangent_dir\n };\n }),\n meshMVertexCount: 0,\n meshNVertexCount: 0,\n surfaceMDensity: 0,\n surfaceNDensity: 0\n };\n }\n convertPolyline3d(entity, commonAttrs, object) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const smoothType = libredwg.dwg_dynapi_entity_value(entity, 'curve_type')\n .data;\n const startWidth = libredwg.dwg_dynapi_entity_value(entity, 'start_width')\n .data;\n const endWidth = libredwg.dwg_dynapi_entity_value(entity, 'end_width')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const vertices = libredwg.dwg_entity_polyline_3d_get_vertices(object);\n return {\n type: 'POLYLINE3D',\n ...commonAttrs,\n flag: flag,\n smoothType: smoothType,\n startWidth: startWidth,\n endWidth: endWidth,\n extrusionDirection: extrusionDirection,\n vertices: vertices.map(vertex => {\n return {\n x: vertex.point.x,\n y: vertex.point.y,\n z: vertex.point.z,\n flag: vertex.flag\n };\n })\n };\n }\n convertProxy(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const classId = libredwg.dwg_dynapi_entity_value(entity, 'class_id')\n .data;\n return {\n type: 'PROXY',\n ...commonAttrs,\n applicationEntityClassId: classId\n };\n }\n convertRay(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const firstPoint = libredwg.dwg_dynapi_entity_value(entity, 'point')\n .data;\n const unitDirection = libredwg.dwg_dynapi_entity_value(entity, 'vector')\n .data;\n return {\n type: 'RAY',\n ...commonAttrs,\n firstPoint: firstPoint,\n unitDirection: unitDirection\n };\n }\n convertSection(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const state = libredwg.dwg_dynapi_entity_value(entity, 'state')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flag')\n .data;\n const name = libredwg.dwg_dynapi_entity_value(entity, 'name').data;\n const verticalDirection = libredwg.dwg_dynapi_entity_value(entity, 'vert_dir').data;\n const topHeight = libredwg.dwg_dynapi_entity_value(entity, 'top_height')\n .data;\n const bottomHeight = libredwg.dwg_dynapi_entity_value(entity, 'bottom_height').data;\n const indicatorTransparency = libredwg.dwg_dynapi_entity_value(entity, 'indicator_alpha').data;\n const indicatorColor = libredwg.dwg_dynapi_entity_value(entity, 'indicator_color').data;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_verts').data;\n const vertices_ptr = libredwg.dwg_dynapi_entity_value(entity, 'verts')\n .data;\n const vertices = numberOfVertices > 0\n ? libredwg.dwg_ptr_to_point3d_array(vertices_ptr, numberOfVertices)\n : [];\n const numberOfBackLineVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_blverts').data;\n const backLineVertices_ptr = libredwg.dwg_dynapi_entity_value(entity, 'blverts').data;\n const backLineVertices = numberOfBackLineVertices > 0\n ? libredwg.dwg_ptr_to_point3d_array(backLineVertices_ptr, numberOfBackLineVertices)\n : [];\n const geometrySettingHandle = libredwg.dwg_dynapi_entity_value(entity, 'geometrySettingHardId').data;\n const geometrySettingHardId = libredwg.dwg_ref_get_handle_absolute_ref(geometrySettingHandle);\n return {\n type: 'SECTION',\n ...commonAttrs,\n state: state,\n flags: flags,\n name: name,\n verticalDirection: verticalDirection,\n topHeight: topHeight,\n bottomHeight: bottomHeight,\n indicatorTransparency: indicatorTransparency,\n indicatorColor: indicatorColor.rgb,\n numberOfVertices: numberOfVertices,\n vertices: vertices,\n numberOfBackLineVertices: numberOfBackLineVertices,\n backLineVertices: backLineVertices,\n geometrySettingHardId: geometrySettingHardId\n };\n }\n convertSolid(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const corner1 = libredwg.dwg_dynapi_entity_value(entity, 'corner1')\n .data;\n const corner2 = libredwg.dwg_dynapi_entity_value(entity, 'corner2')\n .data;\n const corner3 = libredwg.dwg_dynapi_entity_value(entity, 'corner3')\n .data;\n const corner4 = libredwg.dwg_dynapi_entity_value(entity, 'corner4')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n type: 'SOLID',\n ...commonAttrs,\n corner1: corner1,\n corner2: corner2,\n corner3: corner3,\n corner4: corner4,\n thickness: thickness,\n extrusionDirection: extrusionDirection\n };\n }\n convertSpline(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'splineflags')\n .data;\n const degree = libredwg.dwg_dynapi_entity_value(entity, 'degree')\n .data;\n // Convert knots\n const knotTolerance = libredwg.dwg_dynapi_entity_value(entity, 'knot_tol')\n .data;\n const numberOfKnots = libredwg.dwg_dynapi_entity_value(entity, 'num_knots')\n .data;\n const knots_ptr = libredwg.dwg_dynapi_entity_value(entity, 'knots')\n .data;\n const knots = libredwg.dwg_ptr_to_double_array(knots_ptr, numberOfKnots);\n // Convert fit points\n const fitTolerance = libredwg.dwg_dynapi_entity_value(entity, 'fit_tol')\n .data;\n const numberOfFitPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_fit_pts').data;\n const fit_pts_ptr = libredwg.dwg_dynapi_entity_value(entity, 'fit_pts')\n .data;\n const fitPoints = libredwg.dwg_ptr_to_point3d_array(fit_pts_ptr, numberOfFitPoints);\n // Convert control points\n const weighted = libredwg.dwg_dynapi_entity_value(entity, 'weighted')\n .data;\n const controlTolerance = libredwg.dwg_dynapi_entity_value(entity, 'ctrl_tol').data;\n const numberOfControlPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_ctrl_pts').data;\n const ctrl_pts_ptr = libredwg.dwg_dynapi_entity_value(entity, 'ctrl_pts')\n .data;\n const controlPoints = libredwg.dwg_ptr_to_point4d_array(ctrl_pts_ptr, numberOfControlPoints);\n const startTangent = libredwg.dwg_dynapi_entity_value(entity, 'beg_tan_vec')\n .data;\n const endTangent = libredwg.dwg_dynapi_entity_value(entity, 'end_tan_vec')\n .data;\n return {\n type: 'SPLINE',\n ...commonAttrs,\n // normal?: DwgPoint3D\n flag: flag,\n degree: degree,\n numberOfKnots: numberOfKnots,\n numberOfControlPoints: numberOfControlPoints,\n numberOfFitPoints: numberOfFitPoints,\n knotTolerance: knotTolerance,\n controlTolerance: controlTolerance,\n fitTolerance: fitTolerance,\n startTangent: startTangent,\n endTangent: endTangent,\n knots: knots,\n weights: weighted ? controlPoints.map(value => value.w) : undefined,\n controlPoints: controlPoints.map(value => {\n return {\n x: value.x,\n y: value.y,\n z: value.z\n };\n }),\n fitPoints: fitPoints\n };\n }\n convertTable(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const name = libredwg.dwg_dynapi_subclass_value(entity, 'ldata', 'name')\n .data;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const directionVector = libredwg.dwg_dynapi_entity_value(entity, 'horiz_direction').data;\n const tableValue = libredwg.dwg_dynapi_entity_value(entity, 'flag_for_table_value').data;\n const rowCount = libredwg.dwg_dynapi_entity_value(entity, 'num_rows')\n .data;\n const columnCount = libredwg.dwg_dynapi_entity_value(entity, 'num_cols')\n .data;\n const row_heights_ptr = libredwg.dwg_dynapi_entity_value(entity, 'row_heights').data;\n const rowHeightArr = libredwg.dwg_ptr_to_double_array(row_heights_ptr, rowCount);\n const col_widths_ptr = libredwg.dwg_dynapi_entity_value(entity, 'col_widths').data;\n const columnWidthArr = libredwg.dwg_ptr_to_double_array(col_widths_ptr, columnCount);\n const table_style_ref = libredwg.dwg_dynapi_entity_value(entity, 'tablestyle').data;\n const tableStyleId = idToString(libredwg.dwg_ref_get_absref(table_style_ref));\n const block_header_ref = libredwg.dwg_dynapi_entity_value(entity, 'block_header').data;\n const blockRecordHandle = idToString(libredwg.dwg_ref_get_absref(block_header_ref));\n const overrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'table_flag_override').data;\n const borderColorOverrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'border_color_overrides_flag').data;\n const borderLineWeightOverrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'border_lineweight_overrides_flag').data;\n const borderVisibilityOverrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'border_visibility_overrides_flag').data;\n const num_cells = libredwg.dwg_dynapi_entity_value(entity, 'num_cells')\n .data;\n const cells_ptr = libredwg.dwg_dynapi_entity_value(entity, 'cells')\n .data;\n const cells = libredwg.dwg_ptr_to_table_cell_array(cells_ptr, num_cells);\n return {\n type: 'ACAD_TABLE',\n ...commonAttrs,\n name: name,\n startPoint: startPoint,\n directionVector: directionVector,\n // attachmentPoint: DwgAttachmentPoint\n tableValue: tableValue,\n rowCount: rowCount,\n columnCount: columnCount,\n overrideFlag: overrideFlag,\n borderColorOverrideFlag: borderColorOverrideFlag,\n borderLineWeightOverrideFlag: borderLineWeightOverrideFlag,\n borderVisibilityOverrideFlag: borderVisibilityOverrideFlag,\n rowHeightArr: rowHeightArr,\n columnWidthArr: columnWidthArr,\n tableStyleId: tableStyleId,\n blockRecordHandle: blockRecordHandle,\n cells: this.convertTableCells(cells),\n bmpPreview: ''\n };\n }\n convertTableCells(cells) {\n const converted = [];\n cells.forEach(cell => {\n return {\n text: cell.text_value,\n attachmentPoint: cell.cell_alignment,\n textStyle: cell.text_style, // TODO: Set the text style name instead of handle\n rotation: cell.rotation,\n cellType: cell.type,\n flagValue: cell.flags,\n mergedValue: cell.is_merged_value,\n autoFit: cell.is_autofit_flag,\n // borderWidth?: number\n // borderHeight?: number\n topBorderVisibility: cell.top_visibility,\n bottomBorderVisibility: cell.bottom_visibility,\n leftBorderVisibility: cell.left_visibility,\n rightBorderVisibility: cell.right_visibility,\n overrideFlag: cell.cell_flag_override,\n virtualEdgeFlag: cell.virtual_edge_flag,\n // fieldObjetId?: string\n blockTableRecordI: cell.block_handle.absolute_ref,\n blockScale: cell.block_scale,\n blockAttrNum: cell.attr_defs.length,\n attrDefineId: cell.attr_defs.map(value => value.attdef.absolute_ref),\n // attrText?: string\n // textHeight: number\n extendedCellFlags: cell.additional_data_flag\n };\n });\n return converted;\n }\n convertTextBase(entity) {\n const libredwg = this.libredwg;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'text_value')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const endPoint = libredwg.dwg_dynapi_entity_value(entity, 'alignment_pt')\n .data;\n const rotation = libredwg.dwg_dynapi_entity_value(entity, 'rotation')\n .data;\n const textHeight = libredwg.dwg_dynapi_entity_value(entity, 'height')\n .data;\n const xScale = libredwg.dwg_dynapi_entity_value(entity, 'width_factor')\n .data;\n const obliqueAngle = libredwg.dwg_dynapi_entity_value(entity, 'oblique_angle').data;\n const styleName = libredwg.dwg_entity_text_get_style_name(entity);\n const generationFlag = libredwg.dwg_dynapi_entity_value(entity, 'generation').data;\n const halign = libredwg.dwg_dynapi_entity_value(entity, 'horiz_alignment')\n .data;\n const valign = libredwg.dwg_dynapi_entity_value(entity, 'vert_alignment')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n text: text,\n thickness: thickness,\n startPoint: startPoint,\n endPoint: endPoint,\n textHeight: textHeight,\n rotation: rotation,\n xScale: xScale,\n obliqueAngle: obliqueAngle,\n styleName: styleName,\n generationFlag: generationFlag,\n halign: halign,\n valign: valign,\n extrusionDirection: extrusionDirection\n };\n }\n convertText(entity, commonAttrs) {\n return {\n type: 'TEXT',\n ...commonAttrs,\n ...this.convertTextBase(entity)\n };\n }\n convertTolerance(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'text_value')\n .data;\n const xAxisDirection = libredwg.dwg_dynapi_entity_value(entity, 'x_direction').data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const dimStyleName = libredwg.dwg_entity_get_dimstyle_name(entity);\n return {\n type: 'TOLERANCE',\n ...commonAttrs,\n styleName: dimStyleName,\n insertionPoint: insertionPoint,\n text: text,\n extrusionDirection: extrusionDirection,\n xAxisDirection: xAxisDirection\n };\n }\n convertViewport(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const viewportCenter = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const width = libredwg.dwg_dynapi_entity_value(entity, 'width')\n .data;\n const height = libredwg.dwg_dynapi_entity_value(entity, 'height')\n .data;\n const status = libredwg.dwg_dynapi_entity_value(entity, 'on_off')\n .data;\n const displayCenter = libredwg.dwg_dynapi_entity_value(entity, 'VIEWCTR')\n .data;\n const snapBase = libredwg.dwg_dynapi_entity_value(entity, 'SNAPBASE')\n .data;\n const snapSpacing = libredwg.dwg_dynapi_entity_value(entity, 'SNAPUNIT')\n .data;\n const gridSpacing = libredwg.dwg_dynapi_entity_value(entity, 'GRIDUNIT')\n .data;\n const viewDirection = libredwg.dwg_dynapi_entity_value(entity, 'VIEWDIR')\n .data;\n const targetPoint = libredwg.dwg_dynapi_entity_value(entity, 'view_target')\n .data;\n const perspectiveLensLength = libredwg.dwg_dynapi_entity_value(entity, 'lens_length').data;\n const frontClipZ = libredwg.dwg_dynapi_entity_value(entity, 'front_clip_z')\n .data;\n const backClipZ = libredwg.dwg_dynapi_entity_value(entity, 'back_clip_z')\n .data;\n // TODO: I am not sure whether view size in libredwg represents view height\n const viewHeight = libredwg.dwg_dynapi_entity_value(entity, 'VIEWSIZE')\n .data;\n const snapAngle = libredwg.dwg_dynapi_entity_value(entity, 'SNAPANG')\n .data;\n const viewTwistAngle = libredwg.dwg_dynapi_entity_value(entity, 'twist_angle').data;\n const circleZoomPercent = libredwg.dwg_dynapi_entity_value(entity, 'circle_zoom').data;\n // TODO: convert frozenLayerIds and clippingBoundaryId\n const statusBitFlags = libredwg.dwg_dynapi_entity_value(entity, 'status_flag').data;\n const sheetName = libredwg.dwg_dynapi_entity_value(entity, 'style_sheet')\n .data;\n const renderMode = libredwg.dwg_dynapi_entity_value(entity, 'render_mode')\n .data;\n // TODO: Not sure whether UCSVP in libredwg represents ucsPerViewport\n const ucsPerViewport = libredwg.dwg_dynapi_entity_value(entity, 'UCSVP')\n .data;\n const ucsOrigin = libredwg.dwg_dynapi_entity_value(entity, 'ucsorg')\n .data;\n const ucsXAxis = libredwg.dwg_dynapi_entity_value(entity, 'ucsxdir')\n .data;\n const ucsYAxis = libredwg.dwg_dynapi_entity_value(entity, 'ucsydir')\n .data;\n const named_ucs_ref = libredwg.dwg_dynapi_entity_value(entity, 'named_ucs')\n .data;\n const ucsId = libredwg.dwg_ref_get_absref(named_ucs_ref);\n const base_ucs_ref = libredwg.dwg_dynapi_entity_value(entity, 'base_ucs')\n .data;\n const ucsBaseId = libredwg.dwg_ref_get_absref(base_ucs_ref);\n // TODO: Not sure whether UCSORTHOVIEW represents orthographicType\n const orthographicType = libredwg.dwg_dynapi_entity_value(entity, 'UCSORTHOVIEW').data;\n const elevation = libredwg.dwg_dynapi_entity_value(entity, 'ucs_elevation')\n .data;\n const shadePlotMode = libredwg.dwg_dynapi_entity_value(entity, 'shadeplot_mode').data;\n const isDefaultLighting = libredwg.dwg_dynapi_entity_value(entity, 'use_default_lights').data;\n const defaultLightingType = libredwg.dwg_dynapi_entity_value(entity, 'default_lighting_type').data;\n const brightness = libredwg.dwg_dynapi_entity_value(entity, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(entity, 'contrast')\n .data;\n const majorGridFrequency = libredwg.dwg_dynapi_entity_value(entity, 'grid_major').data;\n const background_ref = libredwg.dwg_dynapi_entity_value(entity, 'background').data;\n const backgroundId = libredwg.dwg_ref_get_absref(background_ref);\n const shadeplot_ref = libredwg.dwg_dynapi_entity_value(entity, 'shadeplot')\n .data;\n const shadePlotId = libredwg.dwg_ref_get_absref(shadeplot_ref);\n const visualstyle_ref = libredwg.dwg_dynapi_entity_value(entity, 'visualstyle').data;\n const visualStyleId = libredwg.dwg_ref_get_absref(visualstyle_ref);\n // TODO: convert ambientLightColor\n const sun_ref = libredwg.dwg_dynapi_entity_value(entity, 'sun')\n .data;\n const sunId = libredwg.dwg_ref_get_absref(sun_ref);\n return {\n type: 'VIEWPORT',\n ...commonAttrs,\n viewportCenter: viewportCenter,\n width: width,\n height: height,\n status: status,\n viewportId: 0, // Will be set later in LibreDwgConverter.convert\n displayCenter: displayCenter,\n snapBase: snapBase,\n snapSpacing: snapSpacing,\n gridSpacing: gridSpacing,\n viewDirection: viewDirection,\n targetPoint: targetPoint,\n perspectiveLensLength: perspectiveLensLength,\n frontClipZ: frontClipZ,\n backClipZ: backClipZ,\n viewHeight: viewHeight,\n snapAngle: snapAngle,\n viewTwistAngle: viewTwistAngle,\n circleZoomPercent: circleZoomPercent,\n statusBitFlags: statusBitFlags,\n sheetName: sheetName,\n renderMode: renderMode,\n ucsPerViewport: ucsPerViewport,\n ucsOrigin: ucsOrigin,\n ucsXAxis: ucsXAxis,\n ucsYAxis: ucsYAxis,\n ucsId: idToString(ucsId),\n ucsBaseId: idToString(ucsBaseId),\n orthographicType: orthographicType,\n elevation: elevation,\n shadePlotMode: shadePlotMode,\n majorGridFrequency: majorGridFrequency,\n backgroundId: idToString(backgroundId),\n shadePlotId: idToString(shadePlotId),\n visualStyleId: idToString(visualStyleId),\n isDefaultLighting: !!isDefaultLighting,\n defaultLightingType: defaultLightingType,\n brightness: brightness,\n contrast: contrast,\n sunId: idToString(sunId)\n };\n }\n convertWipeout(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const version = libredwg.dwg_dynapi_entity_value(entity, 'class_version')\n .data;\n const position = libredwg.dwg_dynapi_entity_value(entity, 'pt0')\n .data;\n const uPixel = libredwg.dwg_dynapi_entity_value(entity, 'uvec')\n .data;\n const vPixel = libredwg.dwg_dynapi_entity_value(entity, 'vvec')\n .data;\n const imageSize = libredwg.dwg_dynapi_entity_value(entity, 'image_size')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'display_props')\n .data;\n const clipping = libredwg.dwg_dynapi_entity_value(entity, 'clipping')\n .data;\n const brightness = libredwg.dwg_dynapi_entity_value(entity, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(entity, 'contrast')\n .data;\n const fade = libredwg.dwg_dynapi_entity_value(entity, 'fade').data;\n const clipMode = libredwg.dwg_dynapi_entity_value(entity, 'clip_mode')\n .data;\n const clippingBoundaryType = libredwg.dwg_dynapi_entity_value(entity, 'clip_boundary_type').data;\n const countBoundaryPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_clip_verts').data;\n const clip_verts = libredwg.dwg_dynapi_entity_value(entity, 'clip_verts')\n .data;\n const clippingBoundaryPath = libredwg.dwg_ptr_to_point2d_array(clip_verts, countBoundaryPoints);\n const imagedef_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedef')\n .data;\n const imageDefHandle = libredwg.dwg_ref_get_absref(imagedef_ref);\n const imagedefreactor_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedefreactor').data;\n const imageDefReactorHandle = libredwg.dwg_ref_get_absref(imagedefreactor_ref);\n return {\n type: 'WIPEOUT',\n ...commonAttrs,\n version: version,\n position: position,\n uPixel: uPixel,\n vPixel: vPixel,\n imageSize: imageSize,\n imageDefHandle: imageDefHandle,\n flags: flags,\n clipping: clipping,\n brightness: brightness,\n contrast: contrast,\n fade: fade,\n imageDefReactorHandle: imageDefReactorHandle,\n clippingBoundaryType: clippingBoundaryType,\n countBoundaryPoints: countBoundaryPoints,\n clippingBoundaryPath: clippingBoundaryPath,\n clipMode: clipMode\n };\n }\n convertXline(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const firstPoint = libredwg.dwg_dynapi_entity_value(entity, 'point')\n .data;\n const unitDirection = libredwg.dwg_dynapi_entity_value(entity, 'vector')\n .data;\n return {\n type: 'XLINE',\n ...commonAttrs,\n firstPoint: firstPoint,\n unitDirection: unitDirection\n };\n }\n getDimensionCommonAttrs(entity) {\n const libredwg = this.libredwg;\n const version = libredwg.dwg_dynapi_entity_value(entity, 'class_version')\n .data;\n const name = libredwg.dwg_entity_get_block_name(entity, 'block');\n const definitionPoint = libredwg.dwg_dynapi_entity_value(entity, 'def_pt')\n .data;\n const textPoint = libredwg.dwg_dynapi_entity_value(entity, 'text_midpt')\n .data;\n const attachmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'attachmentPoint').data;\n const dimensionType = libredwg.dwg_dynapi_entity_value(entity, 'flag')\n .data;\n const textLineSpacingStyle = libredwg.dwg_dynapi_entity_value(entity, 'lspace_factor').data;\n const textLineSpacingFactor = libredwg.dwg_dynapi_entity_value(entity, 'lspace_factor').data;\n const measurement = libredwg.dwg_dynapi_entity_value(entity, 'act_measurement').data;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'user_text')\n .data;\n const textRotation = libredwg.dwg_dynapi_entity_value(entity, 'text_rotation').data;\n // TODO: Not sure whether 'ins_rotation' is 'ocsRotation'.\n const ocsRotation = libredwg.dwg_dynapi_entity_value(entity, 'ins_rotation')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const styleName = libredwg.dwg_entity_get_dimstyle_name(entity);\n return {\n type: 'DIMENSION',\n version: version,\n name: name,\n definitionPoint: definitionPoint,\n textPoint: textPoint,\n dimensionType: dimensionType,\n attachmentPoint: attachmentPoint,\n textLineSpacingStyle: textLineSpacingStyle,\n textLineSpacingFactor: textLineSpacingFactor || 1,\n measurement: measurement,\n text: text,\n textRotation: textRotation,\n ocsRotation: ocsRotation,\n extrusionDirection: extrusionDirection,\n styleName: styleName\n };\n }\n getCommonAttrs(entity) {\n const libredwg = this.libredwg;\n const color = libredwg.dwg_object_entity_get_color_object(entity);\n // - 0xc0 for ByLayer (also c3 and rgb of 0x100)\n // - 0xc1 for ByBlock (also c3 and rgb of 0)\n // - 0xc2 for entities (default), with names with an additional name flag RC\n // - 0xc3 for truecolor\n // - 0xc5 for foreground color\n // - 0xc8 for none (also c3 and rgb of 0x101)\n const method = color.method;\n const colorIndex = color.index;\n let rgbColor = undefined;\n if (method == 0xc2 || ((color.rgb >>> 24) & 0xff) === 0xc2) {\n rgbColor = color.rgb & 0x00ffffff;\n }\n const layer = this.getLayerName(entity);\n const handle = libredwg.dwg_object_entity_get_handle_object(entity);\n const ownerhandle = libredwg.dwg_object_entity_get_ownerhandle_object(entity);\n const ownerDictionaryHardId = libredwg.dwg_object_entity_get_xdicobjhandle_object(entity);\n const lineType = this.getLtypeName(entity);\n const lineweight = libredwg.dwg_object_entity_get_line_weight(entity);\n const lineTypeScale = libredwg.dwg_object_entity_get_ltype_scale(entity);\n const isVisible = !libredwg.dwg_object_entity_get_invisible(entity);\n const xdata = libredwg.dwg_object_entity_get_xdata(entity);\n return {\n handle: idToString(handle.value),\n ownerDictionaryHardId: idToString(ownerDictionaryHardId.absolute_ref),\n ownerBlockRecordSoftId: idToString(ownerhandle.absolute_ref),\n layer: layer,\n color: rgbColor,\n colorIndex: colorIndex,\n colorName: color.name,\n lineType: lineType,\n lineweight: lineweight,\n lineTypeScale: lineTypeScale,\n isVisible: isVisible,\n transparency: color.alpha,\n transparencyType: color.alpha_type,\n xdata: xdata\n };\n }\n getLayerName(entity) {\n const libredwg = this.libredwg;\n const layer = libredwg.dwg_object_entity_get_layer_object_ref(entity);\n const name = this.layers.get(idToString(layer.handleref.value));\n return name ?? '0';\n }\n getLtypeName(entity) {\n const libredwg = this.libredwg;\n const ltype = libredwg.dwg_object_entity_get_ltype_object_ref(entity);\n const name = this.ltypes.get(idToString(ltype.handleref.value));\n return name ?? '';\n }\n}\n//# sourceMappingURL=entityConverter.js.map","import { HEADER_VARIABLES } from '../database';\nimport { Dwg_Object_Type } from '../types';\nimport { LibreEntityConverter } from './entityConverter';\nimport { idToString, isModelSpace, isPaperSpace } from './utils';\n/**\n * Class used to convert Dwg_Data instance to DwgDatabase instance.\n */\nexport class LibreDwgConverter {\n libredwg;\n entityConverter;\n constructor(instance) {\n this.libredwg = instance;\n this.entityConverter = new LibreEntityConverter(instance);\n }\n convert(data) {\n this.entityConverter.clear();\n const db = {\n tables: {\n APPID: {\n entries: []\n },\n BLOCK_RECORD: {\n entries: []\n },\n DIMSTYLE: {\n entries: []\n },\n LAYER: {\n entries: []\n },\n LTYPE: {\n entries: []\n },\n STYLE: {\n entries: []\n },\n VPORT: {\n entries: []\n }\n },\n objects: {\n DICTIONARY: [],\n IMAGEDEF: [],\n LAYOUT: [],\n SPATIAL_FILTER: []\n },\n header: {},\n entities: [],\n classes: []\n };\n const libredwg = this.libredwg;\n this.convertHeader(data, db.header);\n this.convertClasses(data, db.classes);\n const num_objects = libredwg.dwg_get_num_objects(data);\n for (let i = 0; i < num_objects; i++) {\n const obj = libredwg.dwg_get_object(data, i);\n if (obj) {\n const tio = libredwg.dwg_object_to_object_tio(obj);\n if (tio) {\n const fixedtype = libredwg.dwg_object_get_fixedtype(obj);\n switch (fixedtype) {\n case Dwg_Object_Type.DWG_TYPE_LAYER:\n {\n const layer = this.convertLayer(tio, obj);\n db.tables.LAYER.entries.push(layer);\n this.entityConverter.layers.set(layer.handle, layer.name);\n }\n break;\n case Dwg_Object_Type.DWG_TYPE_LTYPE:\n {\n const ltype = this.convertLineType(tio, obj);\n db.tables.LTYPE.entries.push(ltype);\n this.entityConverter.ltypes.set(ltype.handle, ltype.name);\n }\n break;\n default:\n break;\n }\n }\n }\n }\n for (let i = 0; i < num_objects; i++) {\n const obj = libredwg.dwg_get_object(data, i);\n if (obj) {\n const tio = libredwg.dwg_object_to_object_tio(obj);\n if (tio) {\n const fixedtype = libredwg.dwg_object_get_fixedtype(obj);\n switch (fixedtype) {\n case Dwg_Object_Type.DWG_TYPE_APPID:\n db.tables.APPID.entries.push(this.convertAppId(tio));\n break;\n case Dwg_Object_Type.DWG_TYPE_BLOCK_HEADER:\n {\n const btr = this.convertBlockRecord(tio, obj);\n db.tables.BLOCK_RECORD.entries.push(btr);\n // Store entities in model space and paper space to db.entities to keep the\n // the consistent data structure as DXF file\n if (isModelSpace(btr.name) || isPaperSpace(btr.name)) {\n btr.entities.forEach(entity => {\n db.entities.push(entity);\n // Store ATTRIB entity in db.entities to keep the the consistent data\n // structure as DXF file\n if (entity.type === 'INSERT') {\n entity.attribs.forEach(attrib => {\n db.entities.push(attrib);\n });\n }\n });\n }\n }\n break;\n case Dwg_Object_Type.DWG_TYPE_DIMSTYLE:\n db.tables.DIMSTYLE.entries.push(this.convertDimStyle(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_STYLE:\n db.tables.STYLE.entries.push(this.convertStyle(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_VPORT:\n db.tables.VPORT.entries.push(this.convertViewport(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_DICTIONARY:\n db.objects.DICTIONARY.push(this.convertDictionary(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_IMAGEDEF:\n db.objects.IMAGEDEF.push(this.convertImageDef(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_LAYOUT:\n db.objects.LAYOUT.push(this.convertLayout(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_SPATIAL_FILTER:\n db.objects.SPATIAL_FILTER.push(this.convertSpatialFilter(tio, obj));\n break;\n default:\n break;\n }\n }\n }\n }\n // Process viewport entities: sort by objectId (handle) and assign viewportId\n const viewportEntities = db.entities.filter(entity => entity.type === 'VIEWPORT');\n viewportEntities.sort((a, b) => {\n // Convert handle to hex number for sorting\n const handleA = parseInt(a.handle, 16);\n const handleB = parseInt(b.handle, 16);\n return handleA - handleB;\n });\n // Assign viewportId starting from 1\n viewportEntities.forEach((viewport, index) => {\n viewport.viewportId = index + 1;\n });\n return db;\n }\n getConversionStats() {\n return {\n unknownEntityCount: this.entityConverter.unknownEntityCount\n };\n }\n convertHeader(data, header) {\n const libredwg = this.libredwg;\n HEADER_VARIABLES.forEach(name => {\n let var_name = name;\n if (name == 'DIMBLK' || name == 'DIMBLK1' || name == 'DIMBLK2') {\n var_name = var_name + '_T';\n }\n let value = libredwg.dwg_dynapi_header_value(data, var_name).data;\n // Get object name if the 'value' is one Dwg_Object_Ref instance.\n // TODO: handle 'CMLSTYLE' correctly\n if (name == 'CELTYPE' ||\n name == 'CLAYER' ||\n name == 'CLAYER' ||\n name == 'DIMSTYLE' ||\n name == 'DIMTXSTY' ||\n name == 'TEXTSTYLE') {\n value = !!value ? libredwg.dwg_ref_get_object_name(value) : '';\n }\n else if (name == 'DRAGVS') {\n value = !!value ? libredwg.dwg_ref_get_absref(value) : 2;\n }\n // @ts-expect-error header variable name\n header[name] = value;\n });\n }\n convertClasses(data, classes) {\n const libredwg = this.libredwg;\n const count = libredwg.dwg_get_num_classes(data);\n for (let index = 0; index < count; index++) {\n const cls = libredwg.dwg_get_class(data, index);\n classes.push({\n dxfName: cls.dxfname,\n cppName: cls.cppname,\n appName: cls.appname,\n capabilitiesFlag: cls.proxyflag,\n instanceCount: cls.num_instances,\n wasAProxyFlag: cls.s_zombie,\n // DWG_TYPE_PROXY_ENTITY = 0x1F2 /* 498 */,\n // DWG_TYPE_PROXY_OBJECT = 0x1F3 /* 499 */,\n isAnEntityFlag: cls.item_class_id === 0x1f2\n });\n }\n }\n convertAppId(item) {\n const libredwg = this.libredwg;\n const name = libredwg.dwg_dynapi_entity_value(item, 'name').data;\n const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n return {\n name: name,\n standardFlag: flag\n };\n }\n convertBlockRecord(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n // The BLOCK_HEADER has only the abbrevated name, but we want \"*D30\" instead of \"*D\".\n // So get full name from BLOCK entity.\n const block = libredwg.dwg_entity_block_header_get_block(item);\n if (block.name) {\n commonAttrs.name = block.name;\n }\n // The number of entities\n const num_owned = libredwg.dwg_dynapi_entity_value(item, 'num_owned')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n const description = libredwg.dwg_dynapi_entity_value(item, 'description')\n .data;\n const basePoint = libredwg.dwg_dynapi_entity_value(item, 'base_pt')\n .data;\n const insertionUnits = libredwg.dwg_dynapi_entity_value(item, 'insert_units').data;\n const explodability = libredwg.dwg_dynapi_entity_value(item, 'explodable')\n .data;\n const scalability = libredwg.dwg_dynapi_entity_value(item, 'block_scaling')\n .data;\n const layout_ptr = libredwg.dwg_dynapi_entity_value(item, 'layout')\n .data;\n const layout = idToString(libredwg.dwg_ref_get_absref(layout_ptr));\n let bmpPreview = '';\n const uint8ArrayToHexString = (bytes) => {\n const hexChars = new Array(bytes.length);\n for (let i = 0; i < bytes.length; i++) {\n hexChars[i] = bytes[i].toString(16).toUpperCase();\n }\n return hexChars.join('');\n };\n const bmpPreviewBinaryData = libredwg.dwg_entity_block_header_get_preview(item);\n if (bmpPreviewBinaryData && bmpPreviewBinaryData.length > 0) {\n bmpPreview = uint8ArrayToHexString(bmpPreviewBinaryData);\n }\n // Sometimes function get_first_owned_entity returns 0 when trying to iterate entities in one block.\n // I guess it is one bug on libredwg. I logged [one bug](https://github.com/LibreDWG/libredwg/issues/1199)\n // on libredwg too. In this time, I try to use property 'entities' of block header to iterate entities.\n let entities = this.convertEntities(obj, commonAttrs.handle);\n if (!entities || entities.length == 0) {\n entities = [];\n const entities_ptr = libredwg.dwg_dynapi_entity_value(item, 'entities')\n .data;\n if (entities_ptr) {\n const object_ref_ptr_array = libredwg.dwg_ptr_to_object_ref_ptr_array(entities_ptr, num_owned);\n const converter = this.entityConverter;\n for (let index = 0; index < num_owned; index++) {\n const object = libredwg.dwg_ref_get_object(object_ref_ptr_array[index]);\n const entity = converter.convert(object);\n if (entity) {\n entity.ownerBlockRecordSoftId = commonAttrs.handle;\n entities.push(entity);\n }\n }\n }\n }\n return {\n ...commonAttrs,\n flags: flags,\n description: description,\n basePoint: basePoint,\n layout: layout,\n insertionUnits: insertionUnits,\n explodability: explodability,\n scalability: scalability,\n bmpPreview: bmpPreview,\n entities: entities\n };\n }\n convertEntities(obj, ownerHandle) {\n const libredwg = this.libredwg;\n const converter = this.entityConverter;\n const entities = [];\n let next = libredwg.get_first_owned_entity(obj);\n while (next) {\n const entity = converter.convert(next);\n if (entity) {\n entity.ownerBlockRecordSoftId = ownerHandle;\n entities.push(entity);\n }\n next = libredwg.get_next_owned_entity(obj, next);\n }\n return entities;\n }\n convertDimStyle(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const DIMTOL = libredwg.dwg_dynapi_entity_value(item, 'DIMTOL')\n .data;\n const DIMLIM = libredwg.dwg_dynapi_entity_value(item, 'DIMLIM')\n .data;\n const DIMTIH = libredwg.dwg_dynapi_entity_value(item, 'DIMTIH')\n .data;\n const DIMTOH = libredwg.dwg_dynapi_entity_value(item, 'DIMTOH')\n .data;\n const DIMSE1 = libredwg.dwg_dynapi_entity_value(item, 'DIMSE1')\n .data;\n const DIMSE2 = libredwg.dwg_dynapi_entity_value(item, 'DIMSE2')\n .data;\n const DIMALT = libredwg.dwg_dynapi_entity_value(item, 'DIMALT')\n .data;\n const DIMTOFL = libredwg.dwg_dynapi_entity_value(item, 'DIMTOFL')\n .data;\n const DIMSAH = libredwg.dwg_dynapi_entity_value(item, 'DIMSAH')\n .data;\n const DIMTIX = libredwg.dwg_dynapi_entity_value(item, 'DIMTIX')\n .data;\n const DIMSOXD = libredwg.dwg_dynapi_entity_value(item, 'DIMSOXD')\n .data;\n const DIMALTD = libredwg.dwg_dynapi_entity_value(item, 'DIMALTD')\n .data;\n const DIMZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMZIN')\n .data;\n const DIMSD1 = libredwg.dwg_dynapi_entity_value(item, 'DIMSD1')\n .data;\n const DIMSD2 = libredwg.dwg_dynapi_entity_value(item, 'DIMSD2')\n .data;\n const DIMTOLJ = libredwg.dwg_dynapi_entity_value(item, 'DIMTOLJ')\n .data;\n const DIMJUST = libredwg.dwg_dynapi_entity_value(item, 'DIMJUST')\n .data;\n const DIMFIT = libredwg.dwg_dynapi_entity_value(item, 'DIMFIT')\n .data;\n const DIMUPT = libredwg.dwg_dynapi_entity_value(item, 'DIMUPT')\n .data;\n const DIMTZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMTZIN')\n .data;\n const DIMALTZ = libredwg.dwg_dynapi_entity_value(item, 'DIMALTZ')\n .data;\n const DIMALTTZ = libredwg.dwg_dynapi_entity_value(item, 'DIMALTTZ')\n .data;\n const DIMTAD = libredwg.dwg_dynapi_entity_value(item, 'DIMTAD')\n .data;\n const DIMUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMUNIT')\n .data;\n const DIMAUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMAUNIT')\n .data;\n const DIMDEC = libredwg.dwg_dynapi_entity_value(item, 'DIMDEC')\n .data;\n const DIMTDEC = libredwg.dwg_dynapi_entity_value(item, 'DIMTDEC')\n .data;\n const DIMALTU = libredwg.dwg_dynapi_entity_value(item, 'DIMALTU')\n .data;\n const DIMALTTD = libredwg.dwg_dynapi_entity_value(item, 'DIMALTTD')\n .data;\n const DIMSCALE = libredwg.dwg_dynapi_entity_value(item, 'DIMSCALE')\n .data;\n const DIMASZ = libredwg.dwg_dynapi_entity_value(item, 'DIMASZ')\n .data;\n const DIMEXO = libredwg.dwg_dynapi_entity_value(item, 'DIMEXO')\n .data;\n const DIMDLI = libredwg.dwg_dynapi_entity_value(item, 'DIMDLI')\n .data;\n const DIMEXE = libredwg.dwg_dynapi_entity_value(item, 'DIMEXE')\n .data;\n const DIMRND = libredwg.dwg_dynapi_entity_value(item, 'DIMRND')\n .data;\n const DIMDLE = libredwg.dwg_dynapi_entity_value(item, 'DIMDLE')\n .data;\n const DIMTP = libredwg.dwg_dynapi_entity_value(item, 'DIMTP').data;\n const DIMTM = libredwg.dwg_dynapi_entity_value(item, 'DIMTM').data;\n const DIMFXL = libredwg.dwg_dynapi_entity_value(item, 'DIMFXL')\n .data;\n const DIMJOGANG = libredwg.dwg_dynapi_entity_value(item, 'DIMJOGANG')\n .data;\n const DIMTFILL = libredwg.dwg_dynapi_entity_value(item, 'DIMTFILL')\n .data;\n const DIMTFILLCLR = libredwg.dwg_dynapi_entity_value(item, 'DIMTFILLCLR')\n .data;\n const DIMAZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMAZIN')\n .data;\n const DIMARCSYM = libredwg.dwg_dynapi_entity_value(item, 'DIMARCSYM')\n .data;\n const DIMTXT = libredwg.dwg_dynapi_entity_value(item, 'DIMTXT')\n .data;\n const DIMCEN = libredwg.dwg_dynapi_entity_value(item, 'DIMCEN')\n .data;\n const DIMTSZ = libredwg.dwg_dynapi_entity_value(item, 'DIMTSZ')\n .data;\n const DIMALTF = libredwg.dwg_dynapi_entity_value(item, 'DIMALTF')\n .data;\n const DIMLFAC = libredwg.dwg_dynapi_entity_value(item, 'DIMLFAC')\n .data;\n const DIMTVP = libredwg.dwg_dynapi_entity_value(item, 'DIMTVP')\n .data;\n const DIMTFAC = libredwg.dwg_dynapi_entity_value(item, 'DIMTFAC')\n .data;\n const DIMGAP = libredwg.dwg_dynapi_entity_value(item, 'DIMGAP')\n .data;\n const DIMPOST = libredwg.dwg_dynapi_entity_value(item, 'DIMPOST')\n .data;\n const DIMAPOST = libredwg.dwg_dynapi_entity_value(item, 'DIMAPOST')\n .data;\n const DIMBLK_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK_T')\n .data;\n const DIMBLK1_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK1_T')\n .data;\n const DIMBLK2_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK2_T')\n .data;\n const DIMALTRND = libredwg.dwg_dynapi_entity_value(item, 'DIMALTRND')\n .data;\n const DIMCLRD_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRD_N')\n .data;\n const DIMCLRE_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRE_N')\n .data;\n const DIMCLRT_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRT_N')\n .data;\n const DIMCLRD = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRD')\n .data;\n const DIMCLRE = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRE')\n .data;\n const DIMCLRT = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRT')\n .data;\n const DIMADEC = libredwg.dwg_dynapi_entity_value(item, 'DIMADEC')\n .data;\n const DIMFRAC = libredwg.dwg_dynapi_entity_value(item, 'DIMFRAC')\n .data;\n const DIMLUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMLUNIT')\n .data;\n const DIMDSEP = libredwg.dwg_dynapi_entity_value(item, 'DIMDSEP')\n .data;\n const DIMTMOVE = libredwg.dwg_dynapi_entity_value(item, 'DIMTMOVE')\n .data;\n const DIMATFIT = libredwg.dwg_dynapi_entity_value(item, 'DIMATFIT')\n .data;\n const DIMFXLON = libredwg.dwg_dynapi_entity_value(item, 'DIMFXLON')\n .data;\n const DIMTXTDIRECTION = libredwg.dwg_dynapi_entity_value(item, 'DIMTXTDIRECTION').data;\n const DIMALTMZF = libredwg.dwg_dynapi_entity_value(item, 'DIMALTMZF')\n .data;\n const DIMALTMZS = libredwg.dwg_dynapi_entity_value(item, 'DIMALTMZS')\n .data;\n const DIMMZF = libredwg.dwg_dynapi_entity_value(item, 'DIMMZF')\n .data;\n const DIMMZS = libredwg.dwg_dynapi_entity_value(item, 'DIMMZS')\n .data;\n const DIMLWD = libredwg.dwg_dynapi_entity_value(item, 'DIMLWD')\n .data;\n const DIMLWE = libredwg.dwg_dynapi_entity_value(item, 'DIMLWE')\n .data;\n const DIMTXSTY_Ptr = libredwg.dwg_dynapi_entity_value(item, 'DIMTXSTY')\n .data;\n const DIMTXSTY = libredwg.dwg_ref_get_absref(DIMTXSTY_Ptr);\n const DIMLDRBLK_Ptr = libredwg.dwg_dynapi_entity_value(item, 'DIMLDRBLK')\n .data;\n const DIMLDRBLK = libredwg.dwg_ref_get_absref(DIMLDRBLK_Ptr);\n return {\n ...commonAttrs,\n DIMPOST: DIMPOST,\n DIMAPOST: DIMAPOST,\n DIMBLK: DIMBLK_T,\n DIMBLK1: DIMBLK1_T,\n DIMBLK2: DIMBLK2_T,\n DIMSCALE: DIMSCALE,\n DIMASZ: DIMASZ,\n DIMEXO: DIMEXO,\n DIMDLI: DIMDLI,\n DIMEXE: DIMEXE,\n DIMRND: DIMRND,\n DIMDLE: DIMDLE,\n DIMTP: DIMTP,\n DIMTM: DIMTM,\n DIMTXT: DIMTXT,\n DIMCEN: DIMCEN,\n DIMTSZ: DIMTSZ,\n DIMALTF: DIMALTF,\n DIMLFAC: DIMLFAC,\n DIMTVP: DIMTVP,\n DIMTFAC: DIMTFAC,\n DIMGAP: DIMGAP,\n DIMALTRND: DIMALTRND,\n DIMTOL: DIMTOL,\n DIMLIM: DIMLIM,\n DIMTIH: DIMTIH,\n DIMTOH: DIMTOH,\n DIMSE1: DIMSE1,\n DIMSE2: DIMSE2,\n DIMTAD: DIMTAD,\n DIMZIN: DIMZIN,\n DIMAZIN: DIMAZIN,\n DIMALT: DIMALT,\n DIMALTD: DIMALTD,\n DIMTOFL: DIMTOFL,\n DIMSAH: DIMSAH,\n DIMTIX: DIMTIX,\n DIMSOXD: DIMSOXD,\n DIMCLRD: DIMCLRD,\n DIMCLRE: DIMCLRE,\n DIMCLRT: DIMCLRT,\n DIMADEC: DIMADEC,\n DIMUNIT: DIMUNIT,\n DIMDEC: DIMDEC,\n DIMTDEC: DIMTDEC,\n DIMALTU: DIMALTU,\n DIMALTTD: DIMALTTD,\n DIMAUNIT: DIMAUNIT,\n DIMFRAC: DIMFRAC,\n DIMLUNIT: DIMLUNIT,\n DIMDSEP: String.fromCharCode(DIMDSEP),\n DIMTMOVE: DIMTMOVE,\n DIMJUST: DIMJUST,\n DIMSD1: DIMSD1,\n DIMSD2: DIMSD2,\n DIMTOLJ: DIMTOLJ,\n DIMTZIN: DIMTZIN,\n DIMALTZ: DIMALTZ,\n DIMALTTZ: DIMALTTZ,\n DIMFIT: DIMFIT,\n DIMUPT: DIMUPT,\n DIMATFIT: DIMATFIT,\n DIMTXSTY: DIMTXSTY,\n DIMLDRBLK: DIMLDRBLK,\n DIMLWD: DIMLWD,\n DIMLWE: DIMLWE,\n DIMFXL: DIMFXL,\n DIMJOGANG: DIMJOGANG,\n DIMTFILL: DIMTFILL,\n DIMTFILLCLR: DIMTFILLCLR,\n DIMARCSYM: DIMARCSYM,\n DIMCLRD_N: DIMCLRD_N,\n DIMCLRE_N: DIMCLRE_N,\n DIMCLRT_N: DIMCLRT_N,\n DIMFXLON: DIMFXLON,\n DIMTXTDIRECTION: DIMTXTDIRECTION,\n DIMALTMZF: DIMALTMZF,\n DIMALTMZS: DIMALTMZS,\n DIMMZF: DIMMZF,\n DIMMZS: DIMMZS\n };\n }\n convertLayer(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n const frozen = libredwg.dwg_dynapi_entity_value(item, 'frozen')\n .data;\n const off = libredwg.dwg_dynapi_entity_value(item, 'off').data;\n const frozenInNew = libredwg.dwg_dynapi_entity_value(item, 'frozen_in_new')\n .data;\n const locked = libredwg.dwg_dynapi_entity_value(item, 'plotflockedlag')\n .data;\n const plotFlag = libredwg.dwg_dynapi_entity_value(item, 'plotflag')\n .data;\n const linewt = libredwg.dwg_dynapi_entity_value(item, 'linewt')\n .data;\n const color = libredwg.dwg_dynapi_entity_value(item, 'color')\n .data;\n const ltypeRef = libredwg.dwg_dynapi_entity_value(item, 'ltype')\n .data;\n let ltypeName = 'Continuous';\n if (ltypeRef) {\n try {\n ltypeName = libredwg.dwg_ref_get_object_name(ltypeRef);\n }\n catch {\n // ref may be invalid in some DWG files\n }\n }\n // - 0xc0 for ByLayer (also c3 and rgb of 0x100)\n // - 0xc1 for ByBlock (also c3 and rgb of 0)\n // - 0xc2 for entities (default), with names with an additional name flag RC\n // - 0xc3 for truecolor\n // - 0xc5 for foreground color\n // - 0xc8 for none (also c3 and rgb of 0x101)\n const method = color.method;\n let colorIndex = 256;\n let rgbColor = 0xffffff;\n // NOTE: Some older DWG formats use method=0x0 and provide the ACI index via color.index.\n if (method === 0xc3 || ((color.rgb >>> 24) & 0xff) === 0xc3) {\n colorIndex = color.rgb & 0x000000ff;\n }\n else if (method == 0xc2 || ((color.rgb >>> 24) & 0xff) === 0xc2) {\n rgbColor = color.rgb & 0x00ffffff;\n }\n else if (color.index >= 1 && color.index <= 255) {\n // Older DWG format: ACI index is directly available in color.index.\n colorIndex = color.index;\n }\n return {\n ...commonAttrs,\n standardFlag: flag,\n colorIndex: colorIndex,\n color: rgbColor,\n colorName: color.name,\n transparency: color.alpha,\n lineType: ltypeName,\n frozen: frozen != 0,\n off: off != 0,\n frozenInNew: frozenInNew != 0,\n locked: locked != 0,\n plotFlag: plotFlag,\n lineweight: linewt,\n plotStyleNameObjectId: '',\n materialObjectId: ''\n };\n }\n convertLineType(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n const description = libredwg.dwg_dynapi_entity_value(item, 'description')\n .data;\n const numDashes = libredwg.dwg_dynapi_entity_value(item, 'numdashes')\n .data;\n const patternLen = libredwg.dwg_dynapi_entity_value(item, 'pattern_len')\n .data;\n const dashes = libredwg.dwg_dynapi_entity_value(item, 'dashes')\n .data;\n const dashArray = dashes\n ? libredwg.dwg_ptr_to_ltype_dash_array(dashes, numDashes)\n : [];\n return {\n ...commonAttrs,\n description: description,\n standardFlag: flag,\n numberOfLineTypes: numDashes,\n totalPatternLength: patternLen,\n pattern: this.convertLineTypePattern(dashArray)\n };\n }\n convertLineTypePattern(dashes) {\n const patterns = [];\n dashes.forEach(dash => {\n patterns.push({\n elementLength: dash.length || 0,\n elementTypeFlag: dash.complex_shapecode,\n shapeNumber: dash.shape_flag,\n // TODO: convert style handle to style object id\n // styleObjectId: dash.style,\n scale: dash.scale,\n rotation: dash.rotation,\n offsetX: dash.x_offset,\n offsetY: dash.y_offset,\n text: dash.text\n });\n });\n return patterns;\n }\n convertStyle(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const standardFlag = libredwg.dwg_dynapi_entity_value(item, 'flag')\n .data;\n const widthFactor = libredwg.dwg_dynapi_entity_value(item, 'width_factor')\n .data;\n const obliqueAngle = libredwg.dwg_dynapi_entity_value(item, 'oblique_angle')\n .data;\n const textGenerationFlag = libredwg.dwg_dynapi_entity_value(item, 'generation').data;\n const lastHeight = libredwg.dwg_dynapi_entity_value(item, 'last_height')\n .data;\n const font = libredwg.dwg_dynapi_entity_value(item, 'font_file')\n .data;\n const bigFont = libredwg.dwg_dynapi_entity_value(item, 'bigfont_file')\n .data;\n return {\n ...commonAttrs,\n standardFlag: standardFlag,\n fixedTextHeight: 0, // TODO: Set the correct value\n widthFactor: widthFactor,\n obliqueAngle: obliqueAngle,\n textGenerationFlag: textGenerationFlag,\n lastHeight: lastHeight,\n font: font,\n bigFont: bigFont\n };\n }\n convertViewport(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const standardFlag = libredwg.dwg_dynapi_entity_value(item, 'flag')\n .data;\n const viewHeight = libredwg.dwg_dynapi_entity_value(item, 'VIEWSIZE')\n .data;\n const aspectRatio = libredwg.dwg_dynapi_entity_value(item, 'aspect_ratio')\n .data;\n const center = libredwg.dwg_dynapi_entity_value(item, 'VIEWCTR')\n .data;\n const viewTarget = libredwg.dwg_dynapi_entity_value(item, 'view_target')\n .data;\n const viewDirectionFromTarget = libredwg.dwg_dynapi_entity_value(item, 'VIEWDIR').data;\n const viewTwistAngle = libredwg.dwg_dynapi_entity_value(item, 'view_twist')\n .data;\n const lensLength = libredwg.dwg_dynapi_entity_value(item, 'lens_length')\n .data;\n const frontClippingPlane = libredwg.dwg_dynapi_entity_value(item, 'front_clip_z').data;\n const backClippingPlane = libredwg.dwg_dynapi_entity_value(item, 'back_clip_z').data;\n const viewMode = libredwg.dwg_dynapi_entity_value(item, 'VIEWMODE')\n .data;\n const renderMode = libredwg.dwg_dynapi_entity_value(item, 'render_mode')\n .data;\n const isDefaultLightingOn = libredwg.dwg_dynapi_entity_value(item, 'use_default_lights')\n .data != 0;\n const defaultLightningType = libredwg.dwg_dynapi_entity_value(item, 'default_lightning_type').data;\n const brightness = libredwg.dwg_dynapi_entity_value(item, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(item, 'contrast')\n .data;\n const ambient_color = libredwg.dwg_dynapi_entity_value(item, 'ambient_color').data;\n // ViewportTableRecord\n const lowerLeftCorner = libredwg.dwg_dynapi_entity_value(item, 'lower_left')\n .data;\n const upperRightCorner = libredwg.dwg_dynapi_entity_value(item, 'upper_right').data;\n // TODO: Not sure whether 'circleSides' is equal to 'circle_zoom'\n const circleSides = libredwg.dwg_dynapi_entity_value(item, 'circle_zoom')\n .data;\n const ucsIconSetting = libredwg.dwg_dynapi_entity_value(item, 'UCSICON')\n .data;\n // TODO: Not sure whether 'gridSpacing' is equal to 'GRIDUNIT'\n const gridSpacing = libredwg.dwg_dynapi_entity_value(item, 'GRIDUNIT')\n .data;\n const snapRotationAngle = libredwg.dwg_dynapi_entity_value(item, 'SNAPANG')\n .data;\n const snapBasePoint = libredwg.dwg_dynapi_entity_value(item, 'SNAPBASE')\n .data;\n // TODO: Not sure whether 'snapSpacing' is equal to 'SNAPUNIT'\n const snapSpacing = libredwg.dwg_dynapi_entity_value(item, 'SNAPUNIT')\n .data;\n const ucsOrigin = libredwg.dwg_dynapi_entity_value(item, 'ucsorg')\n .data;\n const ucsXAxis = libredwg.dwg_dynapi_entity_value(item, 'ucsxdir')\n .data;\n const ucsYAxis = libredwg.dwg_dynapi_entity_value(item, 'ucsydir')\n .data;\n const elevation = libredwg.dwg_dynapi_entity_value(item, 'ucs_elevation')\n .data;\n const majorGridLines = libredwg.dwg_dynapi_entity_value(item, 'grid_major')\n .data;\n const background = libredwg.dwg_dynapi_entity_value(item, 'background')\n .data;\n const backgroundObjectId = background\n ? idToString(libredwg.dwg_ref_get_absref(background))\n : undefined;\n const visualstyle = libredwg.dwg_dynapi_entity_value(item, 'visualstyle')\n .data;\n const visualStyleObjectId = visualstyle\n ? idToString(libredwg.dwg_ref_get_absref(visualstyle))\n : undefined;\n // BITCODE_B UCSFOLLOW;\n // BITCODE_B FASTZOOM;\n // BITCODE_B GRIDMODE; /* DXF 76: on or off */\n // BITCODE_B SNAPMODE; /* DXF 75: on or off */\n // BITCODE_B SNAPSTYLE;\n // BITCODE_BS SNAPISOPAIR;\n // BITCODE_B ucs_at_origin;\n // BITCODE_B UCSVP;\n // BITCODE_BS UCSORTHOVIEW;\n // BITCODE_BS grid_flags; /* bit 1: bound to limits, bit 2: adaptive */\n // BITCODE_H sun;\n // BITCODE_H named_ucs;\n // BITCODE_H base_ucs;\n return {\n ...commonAttrs,\n standardFlag: standardFlag,\n lowerLeftCorner: lowerLeftCorner,\n upperRightCorner: upperRightCorner,\n center: center,\n snapBasePoint: snapBasePoint,\n snapSpacing: snapSpacing,\n gridSpacing: gridSpacing,\n viewDirectionFromTarget: viewDirectionFromTarget,\n viewTarget: viewTarget,\n lensLength: lensLength,\n frontClippingPlane: frontClippingPlane,\n backClippingPlane: backClippingPlane,\n viewHeight: viewHeight,\n aspectRatio: aspectRatio,\n snapRotationAngle: snapRotationAngle,\n viewTwistAngle: viewTwistAngle,\n circleSides: circleSides,\n frozenLayers: [], // TODO: Set the correct value\n styleSheet: '', // TODO: Set the correct value\n renderMode: renderMode,\n viewMode: viewMode,\n ucsIconSetting: ucsIconSetting,\n ucsOrigin: ucsOrigin,\n ucsXAxis: ucsXAxis,\n ucsYAxis: ucsYAxis,\n orthographicType: 0, // TODO: Set the correct value\n elevation: elevation,\n shadePlotSetting: 0, // TODO: Set the correct value\n majorGridLines: majorGridLines,\n backgroundObjectId: backgroundObjectId,\n // shadePlotObjectId: undefined,\n visualStyleObjectId: visualStyleObjectId,\n isDefaultLightingOn: isDefaultLightingOn,\n defaultLightingType: defaultLightningType,\n brightness: brightness,\n contrast: contrast,\n // TODO: Not sure whether 'index' or 'rgb' should be used\n ambientColor: ambient_color.index\n };\n }\n getCommonTableEntryAttrs(tio, obj) {\n const libredwg = this.libredwg;\n const object_tio = libredwg.dwg_object_get_tio(obj);\n const ownerhandle = libredwg.dwg_object_object_get_ownerhandle_object(object_tio);\n const handle = libredwg.dwg_object_get_handle_object(obj);\n return {\n handle: idToString(handle.value),\n ownerHandle: idToString(ownerhandle.absolute_ref),\n name: libredwg.dwg_dynapi_entity_value(tio, 'name').data\n };\n }\n convertDictionary(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n const isHardOwner = libredwg.dwg_dynapi_entity_value(item, 'is_hardowner')\n .data;\n const cloningFlag = libredwg.dwg_dynapi_entity_value(item, 'cloning')\n .data;\n const numitems = libredwg.dwg_dynapi_entity_value(item, 'numitems')\n .data;\n const itemhandles_ptr = libredwg.dwg_dynapi_entity_value(item, 'itemhandles').data;\n const itemhandles = libredwg.dwg_ptr_to_object_ref_array(itemhandles_ptr, numitems);\n const texts = libredwg.dwg_object_dictionary_get_texts(obj);\n const entries = {};\n itemhandles.forEach((handle, index) => (entries[texts[index]] = idToString(handle.absolute_ref)));\n return {\n ...commonAttrs,\n isHardOwner: !!isHardOwner,\n cloningFlag: cloningFlag,\n entries: entries\n };\n }\n convertImageDef(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n // const classVersion = libredwg.dwg_dynapi_entity_value(item, 'class_version').data as number\n const size = libredwg.dwg_dynapi_entity_value(item, 'image_size')\n .data;\n const fileName = libredwg.dwg_dynapi_entity_value(item, 'file_path')\n .data;\n const isLoaded = libredwg.dwg_dynapi_entity_value(item, 'is_loaded')\n .data;\n const sizeOfOnePixel = libredwg.dwg_dynapi_entity_value(item, 'pixel_size')\n .data;\n const resolutionUnits = libredwg.dwg_dynapi_entity_value(item, 'resunits')\n .data;\n return {\n ...commonAttrs,\n fileName: fileName,\n size: size,\n sizeOfOnePixel: sizeOfOnePixel,\n isLoaded: isLoaded,\n resolutionUnits: resolutionUnits\n };\n }\n convertLayout(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n // AcDbLayout\n const layoutName = libredwg.dwg_dynapi_entity_value(item, 'layout_name')\n .data;\n const tabOrder = libredwg.dwg_dynapi_entity_value(item, 'tab_order')\n .data;\n const controlFlag = libredwg.dwg_dynapi_entity_value(item, 'layout_flags')\n .data;\n const insertionPoint = libredwg.dwg_dynapi_entity_value(item, 'INSBASE')\n .data;\n const minLimit = libredwg.dwg_dynapi_entity_value(item, 'LIMMIN')\n .data;\n const maxLimit = libredwg.dwg_dynapi_entity_value(item, 'LIMMAX')\n .data;\n const ucsOrigin = libredwg.dwg_dynapi_entity_value(item, 'UCSORG')\n .data;\n const ucsXAxis = libredwg.dwg_dynapi_entity_value(item, 'UCSXDIR')\n .data;\n const ucsYAxis = libredwg.dwg_dynapi_entity_value(item, 'UCSYDIR')\n .data;\n const orthographicType = libredwg.dwg_dynapi_entity_value(item, 'UCSORTHOVIEW').data;\n const minExtent = libredwg.dwg_dynapi_entity_value(item, 'EXTMIN')\n .data;\n const maxExtent = libredwg.dwg_dynapi_entity_value(item, 'EXTMAX')\n .data;\n const elevation = libredwg.dwg_dynapi_entity_value(item, 'ucs_elevation')\n .data;\n const block_header_ref = libredwg.dwg_dynapi_entity_value(item, 'block_header').data;\n const paperSpaceTableId = idToString(libredwg.dwg_ref_get_absref(block_header_ref));\n const active_viewport_ref = libredwg.dwg_dynapi_entity_value(item, 'active_viewport').data;\n const viewportId = idToString(libredwg.dwg_ref_get_absref(active_viewport_ref));\n const named_ucs_ref = libredwg.dwg_dynapi_entity_value(item, 'named_ucs')\n .data;\n const namedUcsId = !!named_ucs_ref\n ? idToString(libredwg.dwg_ref_get_absref(named_ucs_ref))\n : undefined;\n // BITCODE_H base_ucs;\n // BITCODE_BL num_viewports; // r2004+\n // BITCODE_H *viewports; // r2004+\n return {\n ...commonAttrs,\n layoutName: layoutName,\n controlFlag: controlFlag,\n tabOrder: tabOrder,\n minLimit: minLimit,\n maxLimit: maxLimit,\n insertionPoint: insertionPoint,\n minExtent: minExtent,\n maxExtent: maxExtent,\n elevation: elevation,\n ucsOrigin: ucsOrigin,\n ucsXAxis: ucsXAxis,\n ucsYAxis: ucsYAxis,\n orthographicType: orthographicType,\n paperSpaceTableId: paperSpaceTableId,\n viewportId: viewportId,\n namedUcsId: namedUcsId,\n // orthographicUcsId?: string;\n shadePlotId: '' // TODO: Set the correct value\n };\n }\n convertSpatialFilter(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n const origin = libredwg.dwg_dynapi_entity_value(item, 'origin')\n .data;\n const numberOfPointsOnClipBoundary = libredwg.dwg_dynapi_entity_value(item, 'num_clip_verts').data;\n const clip_verts_ptr = libredwg.dwg_dynapi_entity_value(item, 'clip_verts')\n .data;\n const vertices = libredwg.dwg_ptr_to_point2d_array(clip_verts_ptr, numberOfPointsOnClipBoundary);\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(item, 'extrusion').data;\n const clipBoundaryVisible = libredwg.dwg_dynapi_entity_value(item, 'display_boundary_on').data;\n const frontClippingPlaneFlag = libredwg.dwg_dynapi_entity_value(item, 'front_clip_on').data;\n const frontClippingPlaneDistance = libredwg.dwg_dynapi_entity_value(item, 'front_clip_z').data;\n const backClippingPlaneFlag = libredwg.dwg_dynapi_entity_value(item, 'back_clip_on').data;\n const backClippingPlaneDistance = libredwg.dwg_dynapi_entity_value(item, 'back_clip_z').data;\n const transform_ptr = libredwg.dwg_dynapi_entity_value(item, 'transform')\n .data;\n const matrix = libredwg.dwg_ptr_to_double_array(transform_ptr, 12);\n const inverse_transform_ptr = libredwg.dwg_dynapi_entity_value(item, 'inverse_transform').data;\n const invertBlockMatrix = libredwg.dwg_ptr_to_double_array(inverse_transform_ptr, 12);\n return {\n ...commonAttrs,\n origin: origin,\n numberOfPointsOnClipBoundary: numberOfPointsOnClipBoundary,\n vertices: vertices,\n extrusionDirection: extrusionDirection,\n clipBoundaryVisible: !!clipBoundaryVisible,\n frontClippingPlaneFlag: !!frontClippingPlaneFlag,\n frontClippingPlaneDistance: frontClippingPlaneDistance,\n backClippingPlaneFlag: !!backClippingPlaneFlag,\n backClippingPlaneDistance: backClippingPlaneDistance,\n matrix: matrix,\n invertBlockMatrix: invertBlockMatrix\n };\n }\n getCommonObjectAttrs(obj) {\n const libredwg = this.libredwg;\n const object_tio = libredwg.dwg_object_get_tio(obj);\n const ownerhandle = libredwg.dwg_object_object_get_ownerhandle_object(object_tio);\n const handle = libredwg.dwg_object_get_handle_object(obj);\n return {\n handle: idToString(handle.value),\n ownerHandle: idToString(ownerhandle.absolute_ref)\n };\n }\n}\n//# sourceMappingURL=converter.js.map","/**\n * Represents a 2D axis-aligned bounding box.\n */\nexport class Box2D {\n min;\n max;\n valid;\n constructor() {\n this.min = { x: Infinity, y: Infinity };\n this.max = { x: -Infinity, y: -Infinity };\n this.valid = false;\n }\n /**\n * Expands the bounding box to include a given point.\n *\n * @param point - The point to include in the bounding box.\n * @returns This bounding box after expansion.\n */\n expandByPoint(point) {\n this.min.x = Math.min(this.min.x, point.x);\n this.min.y = Math.min(this.min.y, point.y);\n this.max.x = Math.max(this.max.x, point.x);\n this.max.y = Math.max(this.max.y, point.y);\n this.valid = true;\n return this;\n }\n /**\n * Applies a scaling and translation transformation to this bounding box.\n *\n * @param scale - The scaling factors in x and y directions.\n * @param translation - The translation offsets in x and y directions.\n * @returns This bounding box after transformation.\n */\n transform(scale, translation) {\n const corners = this.getCorners().map(p => ({\n x: p.x * scale.x + translation.x,\n y: p.y * scale.y + translation.y\n }));\n this.reset();\n for (const pt of corners) {\n this.expandByPoint(pt);\n }\n return this;\n }\n /**\n * Applies a rotation around a specific point to this bounding box.\n *\n * @param angleInRad - The angle of rotation in radians.\n * @param point - The center of rotation.\n * @returns This bounding box after rotation.\n */\n rotate(angleInRad, point) {\n const cos = Math.cos(angleInRad);\n const sin = Math.sin(angleInRad);\n const corners = this.getCorners().map(p => {\n const dx = p.x - point.x;\n const dy = p.y - point.y;\n return {\n x: point.x + dx * cos - dy * sin,\n y: point.y + dx * sin + dy * cos\n };\n });\n this.reset();\n for (const pt of corners) {\n this.expandByPoint(pt);\n }\n return this;\n }\n /**\n * Creates a deep copy of this bounding box.\n *\n * @returns A new instance of Box2D with the same properties.\n */\n clone() {\n const box = new Box2D();\n box.min = { x: this.min.x, y: this.min.y };\n box.max = { x: this.max.x, y: this.max.y };\n box.valid = this.valid;\n return box;\n }\n /**\n * Resets this bounding box to its initial unbounded state.\n */\n reset() {\n this.min = { x: Infinity, y: Infinity };\n this.max = { x: -Infinity, y: -Infinity };\n this.valid = false;\n }\n /**\n * Retrieves the four corner points of the bounding box.\n *\n * @returns An array of corner points in the order:\n * bottom-left, top-left, bottom-right, top-right.\n */\n getCorners() {\n return [\n { x: this.min.x, y: this.min.y },\n { x: this.min.x, y: this.max.y },\n { x: this.max.x, y: this.min.y },\n { x: this.max.x, y: this.max.y }\n ];\n }\n}\n//# sourceMappingURL=box2d.js.map","/**\n * Copied and ported to code standard as the b-spline library is not maintained any longer.\n * Source:\n * https://github.com/thibauts/b-spline\n * Copyright (c) 2015 Thibaut Séguy <thibaut.seguy@gmail.com>\n *\n * B-spline evaluator with optional weights and knot vector.\n * Returns a point on the curve given parameter t ∈ [0,1].\n */\nexport function evaluateBSpline(t, degree, points, knots, weights) {\n const n = points.length; // Number of control points\n if (n === 0)\n throw new Error('points must not be empty');\n const d = points[0].length; // Dimensionality\n if (t < 0 || t > 1) {\n throw new Error(`t out of bounds [0,1]: ${t}`);\n }\n if (degree < 1) {\n throw new Error('degree must be at least 1 (linear)');\n }\n if (degree > n - 1) {\n throw new Error('degree must be less than or equal to point count - 1');\n }\n const weightsSafe = weights ?? new Array(n).fill(1);\n const knotsSafe = knots ??\n (() => {\n const result = [];\n for (let i = 0; i < n + degree + 1; i++) {\n result.push(i);\n }\n return result;\n })();\n if (knotsSafe.length !== n + degree + 1) {\n throw new Error('bad knot vector length');\n }\n const domain = [degree, knotsSafe.length - 1 - degree];\n const low = knotsSafe[domain[0]];\n const high = knotsSafe[domain[1]];\n t = t * (high - low) + low;\n t = Math.max(t, low);\n t = Math.min(t, high);\n let s = domain[0];\n for (; s < domain[1]; s++) {\n if (t >= knotsSafe[s] && t <= knotsSafe[s + 1]) {\n break;\n }\n }\n // Homogeneous coordinates\n const v = new Array(n);\n for (let i = 0; i < n; i++) {\n v[i] = new Array(d + 1);\n for (let j = 0; j < d; j++) {\n v[i][j] = points[i][j] * weightsSafe[i];\n }\n v[i][d] = weightsSafe[i];\n }\n // De Boor algorithm\n for (let l = 1; l <= degree + 1; l++) {\n for (let i = s; i > s - degree - 1 + l; i--) {\n const denom = knotsSafe[i + degree + 1 - l] - knotsSafe[i];\n const alpha = denom === 0 ? 0 : (t - knotsSafe[i]) / denom;\n for (let j = 0; j < d + 1; j++) {\n v[i][j] = (1 - alpha) * v[i - 1][j] + alpha * v[i][j];\n }\n }\n }\n const result = new Array(d);\n for (let i = 0; i < d; i++) {\n result[i] = round10(v[s][i] / v[s][d], -9);\n }\n return result;\n}\n/**\n * Rounds a number to a specified exponent of 10.\n * Equivalent to shifting the decimal point, rounding, then shifting back.\n *\n * @param value - The number to round.\n * @param exp - The exponent (e.g., -1 for 1 decimal place, -9 for nanometers).\n * @returns The rounded number.\n */\nfunction round10(value, exp) {\n if (exp === 0 || exp === undefined) {\n return Math.round(value);\n }\n if (isNaN(value) || !Number.isInteger(exp)) {\n return NaN;\n }\n // Shift\n const [base, exponent = '0'] = value.toString().split('e');\n const shifted = Math.round(Number(`${base}e${+exponent - exp}`));\n // Shift back\n const [shiftedBase, shiftedExp = '0'] = shifted.toString().split('e');\n return Number(`${shiftedBase}e${+shiftedExp + exp}`);\n}\n//# sourceMappingURL=bspline.js.map","const _colorKeywords = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n/**\n * AutoCAD files sometimes use an indexed color value between 1 and 255 inclusive.\n * Each value corresponds to a color. index 1 is red, that is 16711680 or 0xFF0000.\n * index 0 and 256, while included in this array, are actually reserved for inheritance\n * values in AutoCAD so they should not be used for index color lookups.\n */\nconst AUTO_CAD_COLOR_INDEX = [\n 0, 16711680, 16776960, 65280, 65535, 255, 16711935, 16777215, 8421504,\n 12632256, 16711680, 16744319, 13369344, 13395558, 10027008, 10046540, 8323072,\n 8339263, 4980736, 4990502, 16727808, 16752511, 13382400, 13401958, 10036736,\n 10051404, 8331008, 8343359, 4985600, 4992806, 16744192, 16760703, 13395456,\n 13408614, 10046464, 10056268, 8339200, 8347455, 4990464, 4995366, 16760576,\n 16768895, 13408512, 13415014, 10056192, 10061132, 8347392, 8351551, 4995328,\n 4997670, 16776960, 16777087, 13421568, 13421670, 10000384, 10000460, 8355584,\n 8355647, 5000192, 5000230, 12582656, 14679935, 10079232, 11717734, 7510016,\n 8755276, 6258432, 7307071, 3755008, 4344870, 8388352, 12582783, 6736896,\n 10079334, 5019648, 7510092, 4161280, 6258495, 2509824, 3755046, 4194048,\n 10485631, 3394560, 8375398, 2529280, 6264908, 2064128, 5209919, 1264640,\n 3099686, 65280, 8388479, 52224, 6736998, 38912, 5019724, 32512, 4161343,\n 19456, 2509862, 65343, 8388511, 52275, 6737023, 38950, 5019743, 32543,\n 4161359, 19475, 2509871, 65407, 8388543, 52326, 6737049, 38988, 5019762,\n 32575, 4161375, 19494, 2509881, 65471, 8388575, 52377, 6737074, 39026,\n 5019781, 32607, 4161391, 19513, 2509890, 65535, 8388607, 52428, 6737100,\n 39064, 5019800, 32639, 4161407, 19532, 2509900, 49151, 8380415, 39372,\n 6730444, 29336, 5014936, 24447, 4157311, 14668, 2507340, 32767, 8372223,\n 26316, 6724044, 19608, 5010072, 16255, 4153215, 9804, 2505036, 16383, 8364031,\n 13260, 6717388, 9880, 5005208, 8063, 4149119, 4940, 2502476, 255, 8355839,\n 204, 6710988, 152, 5000344, 127, 4145023, 76, 2500172, 4129023, 10452991,\n 3342540, 8349388, 2490520, 6245528, 2031743, 5193599, 1245260, 3089996,\n 8323327, 12550143, 6684876, 10053324, 4980888, 7490712, 4128895, 6242175,\n 2490444, 3745356, 12517631, 14647295, 10027212, 11691724, 7471256, 8735896,\n 6226047, 7290751, 3735628, 4335180, 16711935, 16744447, 13369548, 13395660,\n 9961624, 9981080, 8323199, 8339327, 4980812, 4990540, 16711871, 16744415,\n 13369497, 13395634, 9961586, 9981061, 8323167, 8339311, 4980793, 4990530,\n 16711807, 16744383, 13369446, 13395609, 9961548, 9981042, 8323135, 8339295,\n 4980774, 4990521, 16711743, 16744351, 13369395, 13395583, 9961510, 9981023,\n 8323103, 8339279, 4980755, 4990511, 3355443, 5987163, 8684676, 11382189,\n 14079702, 16777215, 0\n];\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nexport class Color {\n _colorIndex;\n _color;\n _colorName;\n static NAMES = _colorKeywords;\n constructor() {\n this._colorIndex = 256;\n this._color = null;\n this._colorName = null;\n }\n get color() {\n return this._color;\n }\n set color(value) {\n if (value == null) {\n this._color = null;\n }\n else {\n this._color = Math.round(clamp(value, 0, 256 * 256 * 256 - 1));\n this._colorIndex = this.getColorIndexByValue(this._color);\n this._colorName = this.getColorNameByValue(this._color);\n }\n }\n get hexColor() {\n // Ensure the number is a valid RGB value\n if (this._color && this._color > 0 && this._color <= 0xffffff) {\n let hexString = this._color.toString(16).toUpperCase();\n // Pad the string with leading zeros if necessary\n while (hexString.length < 6) {\n hexString = '0' + hexString;\n }\n return `0x${hexString}`;\n }\n return '';\n }\n get cssColor() {\n return `rgb(${this.red},${this.green},${this.blue})`;\n }\n get red() {\n return this.color != null ? (this.color >> 16) & 255 : null;\n }\n get green() {\n return this.color != null ? (this.color >> 8) & 255 : null;\n }\n get blue() {\n return this.color != null ? this.color & 255 : null;\n }\n /**\n * AutoCAD color index value. The index value will be in the range 0 to 256. 0 and 256 are special values.\n * If value less than 0 is set, 0 will be used. If value greater than 256 is set, 256 will be used.\n * - 0 indicates that the entity uses the color of the BlockReference that's displaying it. If the entity\n * is not displayed through a block reference (for example, it is directly owned by the model space\n * block table record) and its color is 0, then it will display as though its color were 7.\n * - 256 indicates that the entity uses the color specified in the layer table record it references.\n */\n get colorIndex() {\n return this._colorIndex;\n }\n set colorIndex(value) {\n if (value == null) {\n this._colorIndex = null;\n }\n else {\n this._colorIndex = clamp(value, 0, 256);\n this._color = AUTO_CAD_COLOR_INDEX[value];\n this._colorName = this.getColorNameByValue(this._color);\n }\n }\n get colorName() {\n return this._colorName;\n }\n set colorName(value) {\n if (value) {\n const color = _colorKeywords[value.toLowerCase()];\n if (color !== undefined) {\n // red\n this._colorName = value;\n this._color = color;\n this._colorIndex = this.getColorIndexByValue(this._color);\n }\n else {\n // unknown color\n console.warn('Unknown color: ' + value);\n }\n }\n else {\n this._colorName = null;\n }\n }\n get hasColorName() {\n return this._colorName == null;\n }\n get hasColorIndex() {\n return this._colorIndex == null;\n }\n get isByLayer() {\n return this.colorIndex == 256;\n }\n setByLayer() {\n this.colorIndex = 256;\n return this;\n }\n get isByBlock() {\n return this.colorIndex == 0;\n }\n setByBlock() {\n this.colorIndex = 0;\n return this;\n }\n setScalar(scalar) {\n this.setRGB(scalar, scalar, scalar);\n return this;\n }\n setRGB(r, g, b) {\n const red = Math.round(clamp(r, 0, 255));\n const green = Math.round(clamp(g, 0, 255));\n const blue = Math.round(clamp(b, 0, 255));\n this.color = (red << 16) + (green << 8) + blue;\n return this;\n }\n setColorName(style) {\n const color = _colorKeywords[style.toLowerCase()];\n if (color !== undefined) {\n // red\n this.color = color;\n }\n else {\n // unknown color\n console.warn('Unknown color ' + style);\n }\n return this;\n }\n clone() {\n const clonedColor = new Color();\n clonedColor.colorIndex = this.colorIndex;\n clonedColor.color = this.color;\n clonedColor._colorName = this._colorName;\n return this;\n }\n copy(color) {\n this.colorIndex = color.colorIndex;\n this.color = color.color;\n this._colorName = color._colorName;\n return this;\n }\n equals(c) {\n return (c.color == this.color &&\n c.colorIndex == this.colorIndex &&\n c._colorName == this._colorName);\n }\n toString() {\n if (this.isByLayer) {\n return 'ByLayer';\n }\n else if (this.isByBlock) {\n return 'ByBlock';\n }\n else if (this.colorName) {\n return this.colorName;\n }\n else {\n return this.hexColor;\n }\n }\n getColorNameByValue(target) {\n for (const [key, value] of Object.entries(_colorKeywords)) {\n if (value === target) {\n return key;\n }\n }\n return null;\n }\n getColorIndexByValue(target) {\n const length = AUTO_CAD_COLOR_INDEX.length - 1;\n for (let index = 1; index < length; ++index) {\n if (AUTO_CAD_COLOR_INDEX[index] === target) {\n return index;\n }\n }\n return null;\n }\n}\n//# sourceMappingURL=color.js.map","export class Vector2D {\n x;\n y;\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n add(v) {\n return new Vector2D(this.x + v.x, this.y + v.y);\n }\n sub(v) {\n return new Vector2D(this.x - v.x, this.y - v.y);\n }\n multiply(scalar) {\n return new Vector2D(this.x * scalar, this.y * scalar);\n }\n length() {\n return Math.sqrt(this.x ** 2 + this.y ** 2);\n }\n norm() {\n const len = this.length();\n if (len === 0)\n return new Vector2D(0, 0);\n return new Vector2D(this.x / len, this.y / len);\n }\n}\n//# sourceMappingURL=vector.js.map","import { Vector2D } from './vector';\nexport function createPolylineArcPoints(from, to, bulge, resolution = 5) {\n let theta;\n let a;\n let b;\n if (bulge < 0) {\n theta = Math.atan(-bulge) * 4;\n a = new Vector2D(from.x, from.y);\n b = new Vector2D(to.x, to.y);\n }\n else {\n theta = Math.atan(bulge) * 4;\n a = new Vector2D(to.x, to.y);\n b = new Vector2D(from.x, from.y);\n }\n const ab = b.sub(a);\n const lengthAB = ab.length();\n const c = a.add(ab.multiply(0.5));\n const lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2));\n const normAB = ab.norm();\n const rotated = new Vector2D(normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2), normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2));\n const d = theta < Math.PI\n ? c.add(rotated.multiply(-lengthCD))\n : c.add(rotated.multiply(lengthCD));\n const startAngle = (Math.atan2(b.y - d.y, b.x - d.x) / Math.PI) * 180;\n let endAngle = (Math.atan2(a.y - d.y, a.x - d.x) / Math.PI) * 180;\n if (endAngle < startAngle) {\n endAngle += 360;\n }\n const r = b.sub(d).length();\n const startInter = Math.floor(startAngle / resolution) * resolution + resolution;\n const endInter = Math.ceil(endAngle / resolution) * resolution - resolution;\n const points = [];\n for (let i = startInter; i <= endInter; i += resolution) {\n const angleRad = (i / 180) * Math.PI;\n const point = d.add(new Vector2D(Math.cos(angleRad) * r, Math.sin(angleRad) * r));\n points.push(point);\n }\n if (bulge < 0) {\n points.reverse();\n }\n return points;\n}\nexport function interpolatePolyline(entity, closed = false) {\n let points = [];\n const vertices = entity.vertices.map(v => {\n return {\n x: v.x,\n y: v.y,\n bulge: v.bulge\n };\n });\n if (closed) {\n vertices.push(vertices[0]);\n }\n for (let i = 0, len = vertices.length; i < len - 1; ++i) {\n const from = vertices[i];\n const to = vertices[i + 1];\n points.push(from);\n if (vertices[i].bulge) {\n points = points.concat(createPolylineArcPoints(from, to, entity.vertices[i].bulge));\n }\n // The last iteration of the for loop\n if (i === len - 2) {\n points.push(to);\n }\n }\n return points;\n}\n//# sourceMappingURL=polyline.js.map","import { isModelSpace } from '../converter/utils';\nimport { DwgAttachmentPoint, DwgTextHorizontalAlign } from '../database';\nimport { Box2D } from './box2d';\nimport { evaluateBSpline } from './bspline';\nimport { Color } from './color';\nimport { interpolatePolyline } from './polyline';\nexport class SvgConverter {\n blockMap = new Map();\n rotate(point, angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return {\n x: point.x * cos - point.y * sin,\n y: point.x * sin + point.y * cos\n };\n }\n /**\n * Interpolates a B-spline curve and returns the resulting polyline.\n *\n * @param controlPoints The control points of the B-spline.\n * @param degree The degree of the B-spline.\n * @param knots The knot vector.\n * @param interpolationsPerSplineSegment Number of interpolated points per spline segment.\n * @param weights Optional weight vector for rational B-splines.\n * @returns An array of interpolated 2D points representing the polyline.\n */\n interpolateBSpline(controlPoints, degree, knots, interpolationsPerSplineSegment = 25, weights) {\n const polyline = [];\n const controlPointsForLib = controlPoints.map((p) => [p.x, p.y]);\n const segmentTs = [knots[degree]];\n const domain = [\n knots[degree],\n knots[knots.length - 1 - degree]\n ];\n for (let k = degree + 1; k < knots.length - degree; ++k) {\n if (segmentTs[segmentTs.length - 1] !== knots[k]) {\n segmentTs.push(knots[k]);\n }\n }\n for (let i = 1; i < segmentTs.length; ++i) {\n const uMin = segmentTs[i - 1];\n const uMax = segmentTs[i];\n for (let k = 0; k <= interpolationsPerSplineSegment; ++k) {\n const u = (k / interpolationsPerSplineSegment) * (uMax - uMin) + uMin;\n let t = (u - domain[0]) / (domain[1] - domain[0]);\n t = Math.max(0, Math.min(1, t)); // Clamp t to [0, 1]\n const p = evaluateBSpline(t, degree, controlPointsForLib, knots, weights);\n polyline.push({ x: p[0], y: p[1] });\n }\n }\n return polyline;\n }\n addFlipXIfApplicable(entity, { bbox, element }) {\n if ('extrusionDirection' in entity &&\n entity.extrusionDirection.z === -1) {\n return {\n bbox: new Box2D()\n .expandByPoint({ x: -bbox.min.x, y: bbox.min.y })\n .expandByPoint({ x: -bbox.max.x, y: bbox.max.y }),\n element: `<g transform=\"matrix(-1 0 0 1 0 0)\">${element}</g>`\n };\n }\n else {\n return { bbox, element };\n }\n }\n line(entity) {\n const bbox = new Box2D()\n .expandByPoint({ x: entity.startPoint.x, y: entity.startPoint.y })\n .expandByPoint({ x: entity.endPoint.x, y: entity.endPoint.y });\n const element = `<line x1=\"${entity.startPoint.x}\" y1=\"${entity.startPoint.y}\" x2=\"${entity.endPoint.x}\" y2=\"${entity.endPoint.y}\" />`;\n return { bbox, element };\n }\n ray(entity) {\n const scale = 10000;\n const firstPoint = entity.firstPoint;\n const secondPoint = {\n x: firstPoint.x + entity.unitDirection.x * scale,\n y: firstPoint.y + entity.unitDirection.y * scale\n };\n const bbox = new Box2D()\n .expandByPoint(firstPoint)\n .expandByPoint(secondPoint);\n const element = `<line x1=\"${firstPoint.x}\" y1=\"${firstPoint.y}\" x2=\"${secondPoint.x}\" y2=\"${secondPoint.y}\" />`;\n return { bbox, element };\n }\n xline(entity) {\n const scale = 10000;\n const firstPoint = {\n x: entity.firstPoint.x - entity.unitDirection.x * scale,\n y: entity.firstPoint.y - entity.unitDirection.y * scale\n };\n const secondPoint = {\n x: entity.firstPoint.x + entity.unitDirection.x * scale,\n y: entity.firstPoint.y + entity.unitDirection.y * scale\n };\n const bbox = new Box2D()\n .expandByPoint(firstPoint)\n .expandByPoint(secondPoint);\n const element = `<line x1=\"${firstPoint.x}\" y1=\"${firstPoint.y}\" x2=\"${secondPoint.x}\" y2=\"${secondPoint.y}\" />`;\n return { bbox, element };\n }\n extractMTextLines(mtext) {\n return (mtext\n // Convert Unicode codes to characters\n .replace(/\\\\U\\+([0-9A-Fa-f]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))\n // Preserve line breaks: replace \\P with newline placeholder\n .replace(/\\\\P/g, '\\n')\n // Remove underline, overline\n .replace(/\\\\[LOlo]/g, '')\n // Remove font specs like \\FArial|b0|i0|c134|p49;\n .replace(/\\\\[Ff][^;\\\\]*?(?:\\|[^;\\\\]*)*;/g, '')\n // Remove formatting codes like \\H1.0x; \\W0.5; \\C7 etc.\n .replace(/\\\\[KkCcHhWwTtAa][^;\\\\]*;?/g, '')\n // Remove general \\word; style control codes like \\x; \\pxqc;\n .replace(/\\\\[a-zA-Z]+;?/g, '')\n // Remove AutoCAD %% control sequences like %%d, %%p, etc.\n .replace(/%%(d|p|c|%)/gi, '')\n // Replace escaped backslash\n .replace(/\\\\\\\\/g, '\\\\')\n // Replace non-breaking space\n .replace(/\\\\~/g, '\\u00A0')\n // Remove grouping braces\n .replace(/[{}]/g, '')\n // Split by preserved newlines\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0));\n }\n lines(lines, fontsize, insertionPoint, extentsWidth, anchor = 'start') {\n const bbox = new Box2D()\n .expandByPoint({\n x: insertionPoint.x,\n y: insertionPoint.y\n })\n .expandByPoint({\n x: insertionPoint.x + extentsWidth,\n y: insertionPoint.y - lines.length * fontsize * 1.5\n });\n const texts = lines.map((line, index) => {\n const x = insertionPoint.x;\n const y = insertionPoint.y - index * fontsize * 1.5;\n const transform = `translate(${x},${y}) scale(1,-1) translate(${-x},${-y})`;\n return `<text x=\"${x}\" y=\"${y}\" font-size=\"${fontsize}\" text-anchor=\"${anchor}\" transform=\"${transform}\">${line}</text>`;\n });\n return { bbox, element: texts.join('\\n') };\n }\n mtext(entity) {\n const fontsize = entity.textHeight;\n const insertionPoint = entity.insertionPoint;\n const lines = this.extractMTextLines(entity.text);\n const attachmentPoint = entity.attachmentPoint;\n let anchor = 'start';\n if (attachmentPoint == DwgAttachmentPoint.BottomCenter ||\n attachmentPoint == DwgAttachmentPoint.MiddleCenter ||\n attachmentPoint == DwgAttachmentPoint.TopCenter) {\n anchor = 'middle';\n }\n else if (attachmentPoint == DwgAttachmentPoint.BottomRight ||\n attachmentPoint == DwgAttachmentPoint.MiddleRight ||\n attachmentPoint == DwgAttachmentPoint.TopRight) {\n anchor = 'end';\n }\n return this.lines(lines, fontsize, insertionPoint, entity.extentsWidth, anchor);\n }\n table(entity) {\n const { rowCount, columnCount, rowHeightArr, columnWidthArr, startPoint, cells } = entity;\n const originX = startPoint.x;\n const originY = startPoint.y;\n // Compute cell rectangles\n const cellRects = [];\n for (let row = 0, y = originY; row < rowCount; row++) {\n const height = rowHeightArr[row];\n let x = originX;\n for (let col = 0; col < columnCount; col++) {\n const cellIndex = row * columnCount + col;\n const cell = cells[cellIndex];\n const width = columnWidthArr[col];\n cellRects.push({ x, y, width, height, cell, row, col });\n x += width;\n }\n y += height;\n }\n // Create SVG content\n const svgElements = cellRects\n .map(({ x, y, width, height, cell }) => {\n const lines = [];\n if (cell.topBorderVisibility)\n lines.push(`<line x1=\"${x}\" y1=\"${y}\" x2=\"${x + width}\" y2=\"${y}\" stroke=\"black\" />`);\n if (cell.bottomBorderVisibility)\n lines.push(`<line x1=\"${x}\" y1=\"${y + height}\" x2=\"${x + width}\" y2=\"${y + height}\" stroke=\"black\" />`);\n if (cell.leftBorderVisibility)\n lines.push(`<line x1=\"${x}\" y1=\"${y}\" x2=\"${x}\" y2=\"${y + height}\" stroke=\"black\" />`);\n if (cell.rightBorderVisibility)\n lines.push(`<line x1=\"${x + width}\" y1=\"${y}\" x2=\"${x + width}\" y2=\"${y + height}\" stroke=\"black\" />`);\n const textX = x + width / 2;\n const textY = y + height / 2 + cell.textHeight / 3;\n const text = `<text x=\"${textX}\" y=\"${textY}\" font-size=\"${cell.textHeight}\" text-anchor=\"middle\" dominant-baseline=\"middle\">${cell.text}</text>`;\n return [...lines, text].join('\\n');\n })\n .join('\\n');\n const totalWidth = columnWidthArr.reduce((sum, w) => sum + w, 0);\n const totalHeight = rowHeightArr.reduce((sum, h) => sum + h, 0);\n const bbox = new Box2D()\n .expandByPoint({ x: originX, y: originY })\n .expandByPoint({ x: originX + totalWidth, y: originY + totalHeight });\n const svg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${totalWidth}\" height=\"${totalHeight}\" viewBox=\"${originX} ${originY} ${totalWidth} ${totalHeight}\">\n ${svgElements}\n </svg>\n `.trim();\n return {\n bbox,\n element: svg\n };\n }\n text(entity) {\n const fontsize = entity.textHeight;\n const insertionPoint = entity.startPoint;\n const lines = [entity.text];\n let extentsWidth = entity.endPoint.x - entity.endPoint.x;\n if (entity.halign == 0) {\n extentsWidth = entity.text.length * fontsize + entity.startPoint.x;\n }\n let anchor = 'start';\n if (entity.halign == DwgTextHorizontalAlign.CENTER) {\n anchor = 'middle';\n }\n else if (entity.halign == DwgTextHorizontalAlign.RIGHT) {\n anchor = 'end';\n }\n return this.lines(lines, fontsize, insertionPoint, extentsWidth, anchor);\n }\n vertices(vertices, closed = false) {\n const bbox = vertices.reduce((acc, point) => acc.expandByPoint(point), new Box2D());\n let d = vertices.reduce((acc, point, i) => {\n acc += i === 0 ? 'M' : 'L';\n acc += point.x + ',' + point.y;\n return acc;\n }, '');\n if (closed) {\n d += 'Z';\n }\n return { bbox, element: `<path d=\"${d}\" />` };\n }\n circle(entity) {\n const bbox0 = new Box2D()\n .expandByPoint({\n x: entity.center.x + entity.radius,\n y: entity.center.y + entity.radius\n })\n .expandByPoint({\n x: entity.center.x - entity.radius,\n y: entity.center.y - entity.radius\n });\n const element0 = `<circle cx=\"${entity.center.x}\" cy=\"${entity.center.y}\" r=\"${entity.radius}\" />`;\n return {\n bbox: bbox0,\n element: element0\n };\n }\n ellipseOrArc(cx, cy, majorX, majorY, axisRatio, startAngle, endAngle) {\n const rx = Math.sqrt(majorX * majorX + majorY * majorY);\n const ry = axisRatio * rx;\n const rotationAngle = -Math.atan2(-majorY, majorX);\n const bbox = this.bboxEllipseOrArc(cx, cy, majorX, majorY, axisRatio, startAngle, endAngle);\n if (Math.abs(startAngle - endAngle) < 1e-9 ||\n Math.abs(startAngle - endAngle + Math.PI * 2) < 1e-9) {\n const element = `<g transform=\"rotate(${(rotationAngle / Math.PI) * 180} ${cx}, ${cy})\"><ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${rx}\" ry=\"${ry}\" /></g>`;\n return { bbox, element };\n }\n else {\n const startOffset = this.rotate({ x: Math.cos(startAngle) * rx, y: Math.sin(startAngle) * ry }, rotationAngle);\n const startPoint = { x: cx + startOffset.x, y: cy + startOffset.y };\n const endOffset = this.rotate({ x: Math.cos(endAngle) * rx, y: Math.sin(endAngle) * ry }, rotationAngle);\n const endPoint = { x: cx + endOffset.x, y: cy + endOffset.y };\n const adjustedEndAngle = endAngle < startAngle ? endAngle + Math.PI * 2 : endAngle;\n const largeArcFlag = adjustedEndAngle - startAngle < Math.PI ? 0 : 1;\n const d = `M ${startPoint.x} ${startPoint.y} A ${rx} ${ry} ${(rotationAngle / Math.PI) * 180} ${largeArcFlag} 1 ${endPoint.x} ${endPoint.y}`;\n const element = `<path d=\"${d}\" />`;\n return { bbox, element };\n }\n }\n bboxEllipseOrArc(cx, cy, majorX, majorY, axisRatio, startAngle, endAngle) {\n while (startAngle < 0)\n startAngle += Math.PI * 2;\n while (endAngle <= startAngle)\n endAngle += Math.PI * 2;\n const angles = [];\n if (Math.abs(majorX) < 1e-12 || Math.abs(majorY) < 1e-12) {\n for (let i = 0; i < 4; i++) {\n angles.push((i / 2) * Math.PI);\n }\n }\n else {\n angles[0] = Math.atan((-majorY * axisRatio) / majorX) - Math.PI;\n angles[1] = Math.atan((majorX * axisRatio) / majorY) - Math.PI;\n angles[2] = angles[0] - Math.PI;\n angles[3] = angles[1] - Math.PI;\n }\n for (let i = 4; i >= 0; i--) {\n while (angles[i] < startAngle)\n angles[i] += Math.PI * 2;\n if (angles[i] > endAngle) {\n angles.splice(i, 1);\n }\n }\n angles.push(startAngle);\n angles.push(endAngle);\n const pts = angles.map(a => ({ x: Math.cos(a), y: Math.sin(a) }));\n const M = [\n [majorX, -majorY * axisRatio],\n [majorY, majorX * axisRatio]\n ];\n const rotatedPts = pts.map(p => ({\n x: p.x * M[0][0] + p.y * M[0][1] + cx,\n y: p.x * M[1][0] + p.y * M[1][1] + cy\n }));\n const bbox = rotatedPts.reduce((acc, p) => {\n acc.expandByPoint(p);\n return acc;\n }, new Box2D());\n return bbox;\n }\n ellipse(entity) {\n const { bbox: bbox0, element: element0 } = this.ellipseOrArc(entity.center.x, entity.center.y, entity.majorAxisEndPoint.x, entity.majorAxisEndPoint.y, entity.axisRatio, entity.startAngle, entity.endAngle);\n return {\n bbox: bbox0,\n element: element0\n };\n }\n arc(entity) {\n const { bbox: bbox0, element: element0 } = this.ellipseOrArc(entity.center.x, entity.center.y, entity.radius, 0, 1, entity.startAngle, entity.endAngle);\n return {\n bbox: bbox0,\n element: element0\n };\n }\n dimension(entity) {\n const block = this.blockMap.get(entity.name);\n if (block) {\n return {\n bbox: block.bbox,\n element: `<use href=\"#${entity.name}\" />`\n };\n }\n return null;\n }\n insert(entity) {\n const block = this.blockMap.get(entity.name);\n if (block) {\n // In SVG, the unit of rotate is degrees — not radians.\n const insertionPoint = entity.insertionPoint;\n // const basePoint = block.bbox.min\n const rotation = entity.rotation * (180 / Math.PI);\n const transform = `translate(${insertionPoint.x},${insertionPoint.y}) rotate(${rotation}) scale(${entity.xScale},${entity.yScale})`;\n const newBBox = block.bbox\n .clone()\n .transform({ x: entity.xScale, y: entity.yScale }, { x: insertionPoint.x, y: insertionPoint.y })\n .rotate(entity.rotation, insertionPoint);\n return {\n bbox: newBBox,\n element: `<use href=\"#${entity.name}\" transform=\"${transform}\" />`\n };\n }\n return null;\n }\n block(block, dwg) {\n const entities = block.entities;\n const { bbox, elements } = entities.reduce((acc, entity) => {\n const boundsAndElement = this.entityToBoundsAndElement(entity);\n if (boundsAndElement) {\n const { bbox, element } = boundsAndElement;\n if (bbox.valid) {\n acc.bbox.expandByPoint(bbox.min);\n acc.bbox.expandByPoint(bbox.max);\n }\n const color = this.getEntityColor(dwg.tables.LAYER.entries, entity);\n const fill = entity.type == 'TEXT' || entity.type == 'MTEXT'\n ? color.cssColor\n : 'none';\n if (color.isByBlock) {\n acc.elements.push(`<g id=\"${entity.handle}\">${element}</g>`);\n }\n else {\n acc.elements.push(`<g id=\"${entity.handle}\" stroke=\"${color.cssColor}\" fill=\"${fill}\">${element}</g>`);\n }\n }\n return acc;\n }, {\n bbox: new Box2D(),\n elements: []\n });\n if (bbox.valid) {\n return {\n bbox,\n element: `<g id=\"${block.name}\">${elements.join('\\n')}</g>`\n };\n }\n return null;\n }\n entityToBoundsAndElement(entity) {\n let result = null;\n switch (entity.type) {\n case 'ARC':\n result = this.arc(entity);\n break;\n case 'CIRCLE':\n result = this.circle(entity);\n break;\n case 'DIMENSION':\n result = this.dimension(entity);\n break;\n case 'ELLIPSE':\n result = this.ellipse(entity);\n break;\n case 'INSERT':\n result = this.insert(entity);\n break;\n case 'LINE':\n result = this.line(entity);\n break;\n case 'LWPOLYLINE': {\n const lwpolyline = entity;\n const closed = !!(lwpolyline.flag & 0x200);\n const vertices = interpolatePolyline(lwpolyline, closed);\n result = this.vertices(vertices, closed);\n break;\n }\n case 'MTEXT':\n result = this.mtext(entity);\n break;\n case 'SPLINE': {\n const spline = entity;\n result = this.vertices(this.interpolateBSpline(spline.controlPoints, spline.degree, spline.knots, 25, spline.weights));\n break;\n }\n case 'POLYLINE': {\n // const polyline = entity as DwgPolylineEntity\n // const closed = !!(polyline.flag & 0x1)\n // const vertices = interpolatePolyline(polyline, closed)\n // result = this.vertices(vertices, closed)\n break;\n }\n case 'RAY':\n result = this.ray(entity);\n break;\n case 'TABLE':\n result = this.table(entity);\n break;\n case 'TEXT':\n result = this.text(entity);\n break;\n case 'XLINE':\n result = this.xline(entity);\n break;\n default:\n result = null;\n break;\n }\n if (result) {\n return this.addFlipXIfApplicable(entity, result);\n }\n return null;\n }\n getEntityColor(layers, entity) {\n // Get entity color\n const color = new Color();\n if (entity.colorIndex != null) {\n color.colorIndex = entity.colorIndex;\n }\n else if (entity.colorName) {\n color.colorName = entity.colorName;\n }\n else if (entity.color != null) {\n color.color = entity.color;\n }\n // ACI 7 is one background-dependent color\n if (color.colorIndex == 7) {\n color.colorIndex = 256;\n }\n // If color is 'byLayer', use the layer color\n if (color.isByLayer) {\n const layer = layers.find((layer) => layer.name === entity.layer);\n if (layer != null) {\n color.colorIndex = layer.colorIndex;\n }\n }\n if (color.color == null) {\n color.color = 0xffffff;\n }\n return color;\n }\n convert(dwg) {\n let modelSpace = null;\n this.blockMap.clear();\n let blockElements = '';\n dwg.tables.BLOCK_RECORD.entries.forEach(block => {\n if (isModelSpace(block.name)) {\n modelSpace = block;\n }\n else {\n const item = this.block(block, dwg);\n if (item) {\n blockElements += item.element;\n this.blockMap.set(block.name, item);\n }\n }\n });\n const ms = this.block(modelSpace, dwg);\n const viewBox = ms && ms.bbox.valid\n ? {\n x: ms.bbox.min.x,\n y: -ms.bbox.max.y,\n width: ms.bbox.max.x - ms.bbox.min.x,\n height: ms.bbox.max.y - ms.bbox.min.y\n }\n : {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return `<?xml version=\"1.0\"?>\n<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n preserveAspectRatio=\"xMinYMin meet\"\n viewBox=\"${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}\"\n width=\"100%\" height=\"100%\"\n>\n <defs>${blockElements}</defs>\n <g stroke=\"#000000\" stroke-width=\"0.1%\" fill=\"none\" transform=\"matrix(1,0,0,-1,0,0)\">\n ${ms ? ms.element : ''}\n </g>\n</svg>`;\n }\n}\n//# sourceMappingURL=svgConverter.js.map","import createModule from '../wasm/libredwg-web.js';\nimport { LibreDwgConverter } from './converter';\nimport { dwgCodePageToEncoding, dwgVersions } from './database';\nimport { SvgConverter } from './svg';\nimport { Dwg_File_Type, Dwg_Object_Type } from './types';\nexport { createModule };\nexport var DwgThumbnailImageType;\n(function (DwgThumbnailImageType) {\n DwgThumbnailImageType[DwgThumbnailImageType[\"BMP\"] = 2] = \"BMP\";\n DwgThumbnailImageType[DwgThumbnailImageType[\"WMF\"] = 3] = \"WMF\";\n DwgThumbnailImageType[DwgThumbnailImageType[\"PNG\"] = 6] = \"PNG\";\n})(DwgThumbnailImageType || (DwgThumbnailImageType = {}));\nexport class LibreDwg {\n static instance;\n wasmInstance;\n decoder;\n constructor(wasmInstance) {\n this.wasmInstance = wasmInstance;\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Delegate to the wasmInstance for WebAssembly methods\n return Reflect.get(target.wasmInstance, prop, receiver);\n }\n });\n }\n dwg_read_data(fileContent, fileType) {\n if (fileType == Dwg_File_Type.DWG) {\n const fileName = 'tmp.dwg';\n try {\n this.wasmInstance.FS.writeFile(fileName, new Uint8Array(fileContent));\n const result = this.wasmInstance.dwg_read_file(fileName);\n if (result.error != 0) {\n console.log('Open dwg file with error code: ', result.error);\n }\n return result.data;\n }\n finally {\n if (this.wasmInstance.FS.analyzePath(fileName, false).exists) {\n this.wasmInstance.FS.unlink(fileName);\n }\n }\n }\n // else if (fileType == Dwg_File_Type.DXF) {\n // const fileName = \"tmp.dxf\";\n // this.wasmInstance.FS.writeFile(fileName, new Uint8Array(fileContent as ArrayBuffer));\n // const result = this.wasmInstance.dxf_read_file(fileName);\n // if (result.error != 0) {\n // console.log('Open dxf file with error code: ', result.error);\n // }\n // this.wasmInstance.FS.unlink(fileName);\n // return result.data as Dwg_Data_Ptr;\n // }\n }\n /**\n * Converts DWG file content to DXF file content.\n * @param fileContent DWG file content.\n * @returns Returns DXF file content if conversion succeeds. Otherwise returns null.\n */\n dwg_write_dxf(fileContent) {\n const inputFileName = 'tmp.dwg';\n const outputFileName = 'tmp.dxf';\n try {\n this.wasmInstance.FS.writeFile(inputFileName, new Uint8Array(fileContent));\n const error = this.wasmInstance.dwg_write_dxf(inputFileName, outputFileName);\n if (error != 0) {\n console.log('Convert dwg to dxf with error code: ', error);\n return null;\n }\n return this.wasmInstance.FS.readFile(outputFileName);\n }\n finally {\n if (this.wasmInstance.FS.analyzePath(inputFileName, false).exists) {\n this.wasmInstance.FS.unlink(inputFileName);\n }\n if (this.wasmInstance.FS.analyzePath(outputFileName, false).exists) {\n this.wasmInstance.FS.unlink(outputFileName);\n }\n }\n }\n /**\n * Gets the version of the dwg.\n * @param data Pointer to Dwg_Data instance.\n * @returns Return the version of the dwg\n */\n dwg_get_version_type(data) {\n const version = this.wasmInstance.dwg_get_version_type(data);\n return dwgVersions[version];\n }\n /**\n * Gets code page of the dwg.\n * @param data Pointer to Dwg_Data instance.\n * @returns Return code page of the dwg\n */\n dwg_get_codepage(data) {\n const codepage = this.wasmInstance.dwg_get_codepage(data);\n return codepage;\n }\n /**\n * Extracts thumbnail image from dwg.\n * @param data Pointer to Dwg_Data instance.\n * @returns Return thumbnail image data\n */\n dwg_bmp(data) {\n return this.wasmInstance.dwg_bmp(data);\n }\n /**\n * Returns the number of classes in dwg file.\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns the number of classes in dwg file.\n */\n dwg_get_num_classes(data) {\n return this.wasmInstance.dwg_get_num_classes(data);\n }\n /**\n * Returns the nth class in dwg file.\n * @param data Pointer to Dwg_Data instance.\n * @param index Index of the class\n * @returns Returns the nth class in dwg file.\n */\n dwg_get_class(data, index) {\n return this.wasmInstance.dwg_get_class(data, index);\n }\n /**\n * Converts Dwg_Data instance to DwgDatabase instance. DwgDatabase instance doesn't depend on\n * Dwg_Data instance any more after conversion. So you can call function dwg_free to free memory\n * occupied by Dwg_Data.\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns the converted DwgDatabase.\n */\n convert(data) {\n const codepage = this.dwg_get_codepage(data);\n const encoding = dwgCodePageToEncoding(codepage);\n this.decoder = new TextDecoder(encoding);\n const converter = new LibreDwgConverter(this);\n return converter.convert(data);\n }\n /**\n * Converts Dwg_Data instance to DwgDatabase instance and returns conversion statistics.\n * DwgDatabase instance doesn't depend on Dwg_Data instance any more after conversion.\n * So you can call function dwg_free to free memory occupied by Dwg_Data.\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns the converted DwgDatabase and conversion statistics.\n */\n convertEx(data) {\n const codepage = this.dwg_get_codepage(data);\n const encoding = dwgCodePageToEncoding(codepage);\n this.decoder = new TextDecoder(encoding);\n const converter = new LibreDwgConverter(this);\n return {\n database: converter.convert(data),\n stats: converter.getConversionStats()\n };\n }\n /**\n * Converts DwgDatabase instance to svg string.\n * @param data DwgDatabase instance.\n * @returns Returns the converted svg string.\n */\n dwg_to_svg(data) {\n const converter = new SvgConverter();\n return converter.convert(data);\n }\n /**\n * Frees the whole DWG. all tables, sections, objects, ...\n * @param data Pointer to Dwg_Data instance.\n */\n dwg_free(data) {\n this.wasmInstance.dwg_free(data);\n }\n /**\n * Frees the object (all three structs and its fields)\n * @group Dwg_Object Methods\n * @param ptr Pointer to one Dwg_Object instance.\n */\n dwg_free_object(obj_ptr) {\n this.wasmInstance.dwg_free_object(obj_ptr);\n }\n /**\n * Gets an object by its handle.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @returns Returns the object whose handle is equal to the given handle.\n */\n dwg_ref_object(data, ref_ptr) {\n return this.wasmInstance.dwg_ref_object(data, ref_ptr);\n }\n /**\n * Gets an object by its handle without warning message.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @returns Returns the object whose handle is equal to the given handle.\n */\n dwg_ref_object_silent(data, ref_ptr) {\n return this.wasmInstance.dwg_ref_object_silent(data, ref_ptr);\n }\n /**\n * Gets an object given its handle and relative base object.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @param obj_ptr Pointer to the relative base object (Dwg_Object instance).\n * @returns Returns the object given its handle and relative base object.\n */\n dwg_ref_object_relative(data, ref_ptr, obj_ptr) {\n return this.wasmInstance.dwg_ref_object_relative(data, ref_ptr, obj_ptr);\n }\n /**\n * Resolves handle absref value to Dwg_Object instance.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param absref Handle absref value.\n * @returns Returns the object with the given handle absref value.\n */\n dwg_resolve_handle(data, absref) {\n return this.wasmInstance.dwg_resolve_handle(data, absref);\n }\n /**\n * Resolves handle absref value to Dwg_Object instance without warning message.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param absref Handle absref value.\n * @returns Returns the object with the given handle absref value.\n */\n dwg_resolve_handle_silent(data, absref) {\n return this.wasmInstance.dwg_resolve_handle_silent(data, absref);\n }\n /**\n * Sets ref->absolute_ref from the specified obj for a subsequent dwg_resolve_handle\n * @group Handle Conversion Methods\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns 1 if set absref value correctly. Otherwise, return 0.\n */\n dwg_resolve_handleref(ref_ptr, obj_ptr) {\n return this.wasmInstance.dwg_resolve_handleref(ref_ptr, obj_ptr);\n }\n /**\n * Returns object (such as line type, layer name, dimension style, and etc.) name by its handle.\n * @group Handle Conversion Methods\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @returns Returns object name by its handle.\n */\n dwg_ref_get_object_name(ref_ptr) {\n const wasmInstance = this.wasmInstance;\n const obj = wasmInstance.dwg_ref_get_object(ref_ptr);\n const obj_tio = wasmInstance.dwg_object_to_object_tio(obj);\n const obj_name = this.dwg_dynapi_entity_value(obj_tio, 'name')\n .data;\n return obj_name;\n }\n /**\n * Converts Dwg_Object_Object instance to Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object_Object instance.\n * @returns Returns one pointer to Dwg_Object instance.\n */\n dwg_obj_obj_to_object(obj_obj_ptr) {\n return this.wasmInstance.dwg_obj_obj_to_object(obj_obj_ptr);\n }\n /**\n * Converts Dwg_Object_* instance to Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_generic_ptr Pointer to Dwg_Object_* instance.\n * @returns Returns one pointer to Dwg_Object instance.\n */\n dwg_obj_generic_to_object(obj_generic_ptr) {\n return this.wasmInstance.dwg_obj_generic_to_object(obj_generic_ptr);\n }\n /**\n * Converts Dwg_Object instance to Dwg_Object_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Object instance.\n */\n dwg_object_to_object(obj_ptr) {\n return this.wasmInstance.dwg_object_to_object(obj_ptr);\n }\n /**\n * Gets Dwg_Object_* instance (such as Dwg_Entity_LAYER, Dwg_Entity_STYLE, and etc.)\n * from Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Object_TIO_Ptr instance.\n */\n dwg_object_to_object_tio(obj_ptr) {\n return this.wasmInstance.dwg_object_to_object_tio(obj_ptr);\n }\n /**\n * Converts Dwg_Object instance to Dwg_Object_Entity instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Entity instance.\n */\n dwg_object_to_entity(obj_ptr) {\n return this.wasmInstance.dwg_object_to_entity(obj_ptr);\n }\n /**\n * Gets Dwg_Entity_* instance (such as Dwg_Entity_LINE, Dwg_Entity_SPLINE, and etc.)\n * from Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Object_TIO_Ptr instance.\n */\n dwg_object_to_entity_tio(obj_ptr) {\n return this.wasmInstance.dwg_object_to_entity_tio(obj_ptr);\n }\n /**\n * Returns all of entities in the model space. Each item in returned array\n * is one Dwg_Object pointer (Dwg_Object*).\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of entities in the model space.\n */\n dwg_getall_entities_in_model_space(data) {\n const wasmInstance = this.wasmInstance;\n const model_space = wasmInstance.dwg_model_space_object(data);\n const entities = [];\n let next = wasmInstance.get_first_owned_entity(model_space);\n while (next) {\n entities.push(next);\n next = wasmInstance.get_next_owned_entity(model_space, next);\n }\n return entities;\n }\n /**\n * Returns all of objects in Dwg_Data instance with the specified type.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @param type Object type.\n * @returns Returns all of objects with the specified type.\n */\n dwg_getall_object_by_type(data, type) {\n const wasmInstance = this.wasmInstance;\n const num_objects = wasmInstance.dwg_get_num_objects(data);\n const results = [];\n for (let i = 0; i < num_objects; i++) {\n const obj = wasmInstance.dwg_get_object(data, i);\n const tio = wasmInstance.dwg_object_to_object_tio(obj);\n if (tio && wasmInstance.dwg_object_get_fixedtype(obj) == type) {\n results.push(tio);\n }\n }\n return results;\n }\n /**\n * Returns all of objects in Dwg_Data instance with the specified type.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @param type Object type.\n * @returns Returns all of objects with the specified type.\n */\n dwg_getall_entity_by_type(data, type) {\n const wasmInstance = this.wasmInstance;\n const num_objects = wasmInstance.dwg_get_num_objects(data);\n const results = [];\n for (let i = 0; i < num_objects; i++) {\n const obj = wasmInstance.dwg_get_object(data, i);\n const tio = wasmInstance.dwg_object_to_entity_tio(obj);\n if (tio && wasmInstance.dwg_object_get_fixedtype(obj) == type) {\n results.push(tio);\n }\n }\n return results;\n }\n /**\n * Returns all of layer objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of layer objects in Dwg_Data instance.\n */\n dwg_getall_LAYER(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_LAYER);\n }\n /**\n * Returns all of line type objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of line type objects in Dwg_Data instance.\n */\n dwg_getall_LTYPE(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_LTYPE);\n }\n /**\n * Returns all of text style objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of text style objects in Dwg_Data instance.\n */\n dwg_getall_STYLE(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_STYLE);\n }\n /**\n * Returns all of dimension style objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of dimension style objects in Dwg_Data instance.\n */\n dwg_getall_DIMSTYLE(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_DIMSTYLE);\n }\n /**\n * Returns all of viewport objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of viewport objects in Dwg_Data instance.\n */\n dwg_getall_VPORT(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_VPORT);\n }\n /**\n * Returns all of layout objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of layout objects in Dwg_Data instance.\n */\n dwg_getall_LAYOUT(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_LAYOUT);\n }\n /**\n * Returns all of block objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of block objects in Dwg_Data instance.\n */\n dwg_getall_BLOCK(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_BLOCK);\n }\n /**\n * Returns all of block header objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of block header objects in Dwg_Data instance.\n */\n dwg_getall_BLOCK_HEADER(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_BLOCK_HEADER);\n }\n /**\n * Returns all of image definition objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of image definition objects in Dwg_Data instance.\n */\n dwg_getall_IMAGEDEF(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_IMAGEDEF);\n }\n /**\n * Returns all of 2d vertex objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 2d vertex objects in Dwg_Data instance.\n */\n dwg_getall_VERTEX_2D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_VERTEX_2D);\n }\n /**\n * Returns all of 3d vertex objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 3d vertex objects in Dwg_Data instance.\n */\n dwg_getall_VERTEX_3D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_VERTEX_3D);\n }\n /**\n * Returns all of 2d polyline entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 2d polyline entities in Dwg_Data instance.\n */\n dwg_getall_POLYLINE_2D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_POLYLINE_2D);\n }\n /**\n * Returns all of 3d polyline entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 3d polyline entities in Dwg_Data instance.\n */\n dwg_getall_POLYLINE_3D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_POLYLINE_3D);\n }\n /**\n * Returns all of image entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of image entities in Dwg_Data instance.\n */\n dwg_getall_IMAGE(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_IMAGE);\n }\n /**\n * Returns all of lwpolyline entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of lwpolyline entities in Dwg_Data instance.\n */\n dwg_getall_LWPOLYLINE(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_LWPOLYLINE);\n }\n /**\n * Converts one C++ handle array to one JavaScript Dwg_Object_Ref array.\n * @group Array Methods\n * @param ptr Pointer to C++ handle array.\n * @param size The size of C++ handle array.\n * @returns Returns one JavaScript Dwg_Object_Ref array from the specified C++ handle array.\n */\n dwg_ptr_to_object_ref_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_object_ref_array(ptr, size);\n }\n /**\n * Converts one C++ handle array to one JavaScript Dwg_Object_Ref_Ptr array.\n * @group Array Methods\n * @param ptr Pointer to C++ handle array.\n * @param size The size of C++ handle array.\n * @returns Returns one JavaScript Dwg_Object_Ref_Ptr array from the specified C++ handle array.\n */\n dwg_ptr_to_object_ref_ptr_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_object_ref_ptr_array(ptr, size);\n }\n /**\n * Converts one C++ wchar_t* array to one JavaScript string array.\n * @group Array Methods\n * @param ptr Pointer to C++ wchar_t* array.\n * @param size The size of C++ wchar_t* array.\n * @returns Returns one JavaScript string array from the specified C++ wchar_t* array.\n */\n dwg_ptr_to_wchar_string_array(ptr, size) {\n // const array = this.wasmInstance.dwg_ptr_to_char_string_array(ptr, size) as Array<Dwg_String>\n // return array.map(item => item.data)\n return this.wasmInstance.dwg_ptr_to_wchar_string_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned char array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned char array.\n * @param size The size of C++ unsigned char array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned char array.\n */\n dwg_ptr_to_unsigned_char_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_unsigned_char_array(ptr, size);\n }\n /**\n * Converts one C++ signed char array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ signed char array.\n * @param size The size of C++ signed char array.\n * @returns Returns one JavaScript number array from the specified C++ signed char array.\n */\n dwg_ptr_to_signed_char_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_signed_char_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned int16 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned int16 array.\n * @param size The size of C++ unsigned int16 array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned int16 array.\n */\n dwg_ptr_to_uint16_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_uint16_t_array(ptr, size);\n }\n /**\n * Converts one C++ int16 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ int16 array.\n * @param size The size of C++ int16 array.\n * @returns Returns one JavaScript number array from the specified C++ int16 array.\n */\n dwg_ptr_to_int16_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_int16_t_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned int32 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned int32 array.\n * @param size The size of C++ unsigned int32 array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned int32 array.\n */\n dwg_ptr_to_uint32_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_uint32_t_array(ptr, size);\n }\n /**\n * Converts one C++ int32 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ int32 array.\n * @param size The size of C++ int32 array.\n * @returns Returns one JavaScript number array from the specified C++ int32 array.\n */\n dwg_ptr_to_int32_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_int32_t_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned int64 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned int64 array.\n * @param size The size of C++ unsigned int64 array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned int64 array.\n */\n dwg_ptr_to_uint64_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_uint64_t_array(ptr, size);\n }\n /**\n * Converts one C++ int64 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ int64 array.\n * @param size The size of C++ int64 array.\n * @returns Returns one JavaScript number array from the specified C++ int64 array.\n */\n dwg_ptr_to_int64_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_int64_t_array(ptr, size);\n }\n /**\n * Converts one C++ double array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ double array.\n * @param size The size of C++ double array.\n * @returns Returns one JavaScript number array from the specified C++ double array.\n */\n dwg_ptr_to_double_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_double_array(ptr, size);\n }\n /**\n * Converts one C++ 2d point array to one JavaScript 2d point array.\n * @group Array Methods\n * @param ptr Pointer to C++ 2d point array.\n * @param size The size of C++ 2 point array.\n * @returns Returns one JavaScript 2d point array from the specified C++ 2d point array.\n */\n dwg_ptr_to_point2d_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_point2d_array(ptr, size);\n }\n /**\n * Converts one C++ 3d point array to one JavaScript 3d point array.\n * @group Array Methods\n * @param ptr Pointer to C++ 3d point array.\n * @param size The size of C++ 3d point array.\n * @returns Returns one JavaScript 3d point array from the specified C++ 3d point array.\n */\n dwg_ptr_to_point3d_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_point3d_array(ptr, size);\n }\n /**\n * Converts one C++ 4d point array to one JavaScript 4d point array.\n * @group Array Methods\n * @param ptr Pointer to C++ 4d point array.\n * @param size The size of C++ 4d point array.\n * @returns Returns one JavaScript 4d point array from the specified C++ 4d point array.\n */\n dwg_ptr_to_point4d_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_point4d_array(ptr, size);\n }\n /**\n * Converts one C++ line type array to one JavaScript line type array.\n * @group Array Methods\n * @param ptr Pointer to C++ line type array.\n * @param size The size of C++ line type array.\n * @returns Returns one JavaScript line type array from the specified C++ line type array.\n */\n dwg_ptr_to_ltype_dash_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_ltype_dash_array(ptr, size);\n }\n /**\n * Converts one C++ table cell array to one JavaScript table cell array.\n * @group Array Methods\n * @group Dwg_Entity_TABLE Methods\n * @param ptr Pointer to C++ table cell array.\n * @param size The size of C++ table cell array.\n * @returns Returns one JavaScript table cell array from the specified C++ table cell array.\n */\n dwg_ptr_to_table_cell_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_table_cell_array(ptr, size);\n }\n /**\n * Converts one C++ hatch definition line array to one JavaScript hatch definition line array.\n * @group Array Methods\n * @group Dwg_Entity_HATCH Methods\n * @param ptr Pointer to C++ hatch definition line array.\n * @param size The size of C++ hatch definition line array.\n * @returns Returns one JavaScript hatch definition line array from the specified C++ hatch definition line array.\n */\n dwg_ptr_to_hatch_defline_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_hatch_defline_array(ptr, size);\n }\n /**\n * Converts one C++ hatch path array to one JavaScript hatch path array.\n * @group Array Methods\n * @group Dwg_Entity_HATCH Methods\n * @param ptr Pointer to C++ hatch path array.\n * @param size The size of C++ hatch path array.\n * @returns Returns one JavaScript hatch path array from the specified C++ hatch path array.\n */\n dwg_ptr_to_hatch_path_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_hatch_path_array(ptr, size);\n }\n /**\n * Converts one C++ hatch gradient color array to one JavaScript hatch gradient color array.\n * @group Array Methods\n * @group Dwg_Entity_HATCH Methods\n * @param ptr Pointer to C++ hatch gradient color array.\n * @param size The size of C++ hatch gradient color array.\n * @returns Returns one JavaScript hatch gradient color array from the specified C++ hatch gradient color array.\n */\n dwg_ptr_to_hatch_gradient_color_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_hatch_gradient_color_array(ptr, size);\n }\n /**\n * Converts one C++ mline vertex array to one JavaScript mline vertex array.\n * @group Array Methods\n * @group Dwg_Entity_MLINE Methods\n * @param ptr Pointer to C++ mline vertex array.\n * @param size The size of C++ mline vertex array.\n * @returns Returns one JavaScript mline vertex array from the specified C++ mline vertex array.\n */\n dwg_ptr_to_mline_vertex_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_mline_vertex_array(ptr, size);\n }\n /**\n * Generic field value getter. Used to get the field value of one object or entity.\n * @group Dynamic API Methods\n * @param obj Pointer to one object or entity\n * @param field Field name of one object or entity\n * @returns Returns the field value of one object or entity.\n */\n dwg_dynapi_entity_value(obj, field) {\n const value = this.wasmInstance.dwg_dynapi_entity_value(obj, field);\n if (value.bin && this.decoder) {\n value.data = this.decoder.decode(value.bin);\n }\n return value;\n }\n /**\n * Header field value getter. Used to get the field value of dwg/dxf header.\n * @group Dynamic API Methods\n * @param data Pointer to Dwg_Data instance.\n * @param field Field name of header.\n * @returns Returns the field value of dwg/dxf header.\n */\n dwg_dynapi_header_value(data, field) {\n return this.wasmInstance.dwg_dynapi_header_value(data, field);\n }\n /**\n * The common field value getter. Used to get the value of object or entity common fields.\n * @group Dynamic API Methods\n * @param obj Pointer to one object or entity\n * @param field The name of object or entity common fields.\n * @returns Returns the value of object or entity common fields.\n */\n dwg_dynapi_common_value(obj, field) {\n return this.wasmInstance.dwg_dynapi_common_value(obj, field);\n }\n /**\n * The field of one object or entity may not be primitive type. It means one field may consist of\n * multiple sub-fields. This method is used to get the sub-field value of those complex field.\n * @group Dynamic API Methods\n * @param obj Pointer to one object or entity.\n * @param subclass The class name of the field with complex type.\n * @param field The field name of one object or entit.\n * @returns Returns the sub-field value of one complex field.\n */\n dwg_dynapi_subclass_value(obj, subclass, field) {\n return this.wasmInstance.dwg_dynapi_subclass_value(obj, subclass, field);\n }\n /**\n * Returns the handle of one Dwg_Object instance.\n * @group Dwg_Object Methods\n * @param ptr Pointer to one Dwg_Object instance.\n * @returns Returns the handle of one Dwg_Object instance.\n */\n dwg_object_get_handle_object(ptr) {\n return this.wasmInstance.dwg_object_get_handle_object(ptr);\n }\n /**\n * Returns the handle of one Dwg_Object_Object instance.\n * @group Dwg_Object_Object Methods\n * @param ptr Pointer to one Dwg_Object_Object instance.\n * @returns Returns the handle of one Dwg_Object_Object instance.\n */\n dwg_object_object_get_handle_object(ptr) {\n return this.wasmInstance.dwg_object_object_get_handle_object(ptr);\n }\n /**\n * Returns the owner handle of one Dwg_Object_Object instance.\n * @group Dwg_Object_Object Methods\n * @param ptr Pointer to one Dwg_Object_Object instance.\n * @returns Returns the owner handle of one Dwg_Object_Object instance.\n */\n dwg_object_object_get_ownerhandle_object(ptr) {\n return this.wasmInstance.dwg_object_object_get_ownerhandle_object(ptr);\n }\n /**\n * Returns the handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_handle_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_handle_object(ptr);\n }\n /**\n * Returns the owner handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the owner handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_ownerhandle_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_ownerhandle_object(ptr);\n }\n /**\n * Returns hard-owner ID/handle to owner dictionary of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns hard-owner ID/handle to owner dictionary of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_xdicobjhandle_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_xdicobjhandle_object(ptr);\n }\n /**\n * Returns the layer handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the layer handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_layer_object_ref(ptr) {\n return this.wasmInstance.dwg_object_entity_get_layer_object_ref(ptr);\n }\n /**\n * Returns the line type handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the line type handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_ltype_object_ref(ptr) {\n return this.wasmInstance.dwg_object_entity_get_ltype_object_ref(ptr);\n }\n /**\n * Returns color value of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns color value of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_color_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_color_object(ptr);\n }\n /**\n * Returns xdata of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns xdata of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_xdata(ptr) {\n return this.wasmInstance.dwg_object_entity_get_xdata(ptr);\n }\n /**\n * Returns pointer to BLOCK_HEADER owner for generic entity from ent->ownerhandle.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns pointer to BLOCK_HEADER owner.\n */\n dwg_entity_owner(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_owner(ptr);\n }\n /**\n * Returns block name of one Dwg_Entity_* instance with one block field. For example,\n * dimension entities have one 'block' field which represents the block that contains\n * the entities that make up the dimension picture.\n * @group Dwg_Entity_* Methods\n * @param ptr Pointer to one Dwg_Entity_* instance with one block field.\n * @param field Field name of the block.\n * @returns Returns block name of one Dwg_Entity_* instance.\n */\n dwg_entity_get_block_name(ptr, field) {\n const wasmInstance = this.wasmInstance;\n const block_header_ref = wasmInstance.dwg_dynapi_entity_value(ptr, field)\n .data;\n const block_header_obj = wasmInstance.dwg_ref_get_object(block_header_ref);\n const block_header_tio = wasmInstance.dwg_object_to_object_tio(block_header_obj);\n const block = this.dwg_entity_block_header_get_block(block_header_tio);\n return block.name;\n }\n /**\n * Returns dimension style name of one Dwg_Entity_* instance with one dimension style\n * field.\n * @group Dwg_Entity_* Methods\n * @param ptr Pointer to one Dwg_Entity_* instance.\n * @param field Field name of the dimension style.\n * @returns Returns dimension style name of one Dwg_Entity_* instance.\n */\n dwg_entity_get_dimstyle_name(ptr, field = 'dimstyle') {\n const wasmInstance = this.wasmInstance;\n const dimstyle_ref = wasmInstance.dwg_dynapi_entity_value(ptr, field)\n .data;\n const dimstyle_obj = wasmInstance.dwg_ref_get_object(dimstyle_ref);\n const dimstyle_tio = wasmInstance.dwg_object_to_object_tio(dimstyle_obj);\n const dimstyle_name = this.dwg_dynapi_entity_value(dimstyle_tio, 'name')\n .data;\n return dimstyle_name;\n }\n /**\n * Returns block entity pointed by the specified block header.\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to one Dwg_Entity_BLOCK_HEADER instance.\n * @returns Returns block entity pointed by the specified block header.\n */\n dwg_entity_block_header_get_block(ptr) {\n const wasmInstance = this.wasmInstance;\n const block_ref = wasmInstance.dwg_dynapi_entity_value(ptr, 'block_entity')\n .data;\n const block_obj = wasmInstance.dwg_ref_get_object(block_ref);\n const block_tio = wasmInstance.dwg_object_to_entity_tio(block_obj);\n const name = wasmInstance.dwg_dynapi_entity_value(block_tio, 'name')\n .data;\n const base_pt = wasmInstance.dwg_dynapi_entity_value(block_tio, 'base_pt')\n .data;\n return {\n name,\n base_pt // preR13 only\n };\n }\n /**\n * Returns preview image of the block pointed by the specified block header.\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to one Dwg_Entity_BLOCK_HEADER instance.\n * @returns Returns preview image of the block pointed by the specified block header.\n */\n dwg_entity_block_header_get_preview(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_block_header_get_preview(ptr)\n .data;\n }\n /**\n * Returns the first entity owned by the block header or null\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to the block header.\n * @returns Returns the first entity owned by the block header or null\n */\n get_first_owned_entity(ptr) {\n return this.wasmInstance.get_first_owned_entity(ptr);\n }\n /**\n * Returns the next entity owned by the block header or null.\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to the block header.\n * @param current Pointer to the current entity in the block header.\n * @returns Returns the next entity owned by the block header or null.\n */\n get_next_owned_entity(ptr, current) {\n return this.wasmInstance.get_next_owned_entity(ptr, current);\n }\n /**\n * Returns text style name of one Dwg_Entity_MTEXT instance.\n * @group Dwg_Entity_MTEXT Methods\n * @param ptr Pointer to one Dwg_Entity_MTEXT instance.\n * @returns Returns text style name of one Dwg_Entity_MTEXT instance.\n */\n dwg_entity_mtext_get_style_name(ptr) {\n const wasmInstance = this.wasmInstance;\n const style_ref = wasmInstance.dwg_dynapi_entity_value(ptr, 'style')\n .data;\n const style_obj = wasmInstance.dwg_ref_get_object(style_ref);\n const style_tio = wasmInstance.dwg_object_to_object_tio(style_obj);\n const name = wasmInstance.dwg_dynapi_entity_value(style_tio, 'name')\n .data;\n return name;\n }\n /**\n * Returns text style name of one Dwg_Entity_TEXT instance.\n * @group Dwg_Entity_TEXT Methods\n * @param ptr Pointer to one Dwg_Entity_TEXT instance.\n * @returns Returns text style name of one Dwg_Entity_TEXT instance.\n */\n dwg_entity_text_get_style_name(ptr) {\n return this.dwg_entity_mtext_get_style_name(ptr);\n }\n /**\n * Returns the number of points in Dwg_Entity_POLYLINE_2D.\n * @group Dwg_Entity_POLYLINE_2D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_2D) instance.\n * @returns Returns the number of points in one Dwg_Entity_POLYLINE_2D.\n */\n dwg_entity_polyline_2d_get_numpoints(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_2d_get_numpoints(ptr).data;\n }\n /**\n * Returns points in Dwg_Entity_POLYLINE_2D.\n * @group Dwg_Entity_POLYLINE_2D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_2D) instance.\n * @returns Returns points in one Dwg_Entity_POLYLINE_2D.\n */\n dwg_entity_polyline_2d_get_points(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_2d_get_points(ptr)\n .data;\n }\n /**\n * Returns vertices in Dwg_Entity_POLYLINE_2D.\n * @group Dwg_Entity_POLYLINE_2D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_2D) instance.\n * @returns Returns vertices in one Dwg_Entity_POLYLINE_2D.\n */\n dwg_entity_polyline_2d_get_vertices(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_2d_get_vertices(ptr)\n .data;\n }\n /**\n * Returns the number of points in Dwg_Entity_POLYLINE_3D.\n * @group Dwg_Entity_POLYLINE_3D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_3D) instance.\n * @returns Returns the number of points in one Dwg_Entity_POLYLINE_3D.\n */\n dwg_entity_polyline_3d_get_numpoints(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_3d_get_numpoints(ptr).data;\n }\n /**\n * Returns points in Dwg_Entity_POLYLINE_3D.\n * @group Dwg_Entity_POLYLINE_3D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_3D) instance.\n * @returns Returns points in one Dwg_Entity_POLYLINE_3D.\n */\n dwg_entity_polyline_3d_get_points(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_3d_get_points(ptr)\n .data;\n }\n /**\n * Returns vertices in Dwg_Entity_POLYLINE_3D.\n * @group Dwg_Entity_POLYLINE_3D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_3D) instance.\n * @returns Returns vertices in one Dwg_Entity_POLYLINE_3D.\n */\n dwg_entity_polyline_3d_get_vertices(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_3d_get_vertices(ptr)\n .data;\n }\n /**\n * Returns attributes associated with INSERT entity.\n * @group Dwg_Entity_INSERT Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_INSERT) instance.\n * @returns Returns attributes associated with INSERT entity.\n */\n dwg_entity_insert_get_attribs(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_insert_get_attribs(ptr)\n .data;\n }\n /**\n * Returns texts in Dwg_Object_DICTIONARY.\n * @group Dwg_Object_DICTIONARY Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Object_DICTIONARY) instance.\n * @returns Returns texts in one Dwg_Object_DICTIONARY.\n */\n dwg_object_dictionary_get_texts(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_object_dictionary_get_texts(ptr)\n .data;\n }\n static createByWasmInstance(wasmInstance) {\n return this.instance == null\n ? new LibreDwg(wasmInstance)\n : this.instance;\n }\n static async create(filepath) {\n const wasmInstance = filepath == null\n ? await createModule()\n : await createModule({\n locateFile: (filename) => {\n return `${filepath}/${filename}`;\n }\n });\n return this.createByWasmInstance(wasmInstance);\n }\n}\n//# sourceMappingURL=libredwg.js.map"],"file":"dwg-worker.js"}
1
+ {"version":3,"mappings":"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ACA,SACA,SACA,SACA,SACA,UACA,WACA,SACA,UACA,UACA,SACA,SACA,QACA,WACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,SACA,SACA,WACA,SACA,cACA,YACA,UACA,SACA,SACA,WACA,YACA,WACA,kBACA,UACA,WACA,WACA,gBACA,WACA,UACA,WACA,iBACA,iBACA,gBACA,oBACA,sBACA,YACA,WACA,SACA,SACA,UACA,SACA,SACA,YACA,WACA,cACA,OACA,WACA,WACA,WACA,YACA,SACA,SACA,aACA,UACA,UACA,WACA,YACA,UACA,UACA,WACA,WACA,cACA,gBACA,YACA,aACA,YACA,WACA,WACA,UACA,cACA,gBACA,eACA,cACA,eACA,aACA,eACA,gBACA,WACA,WACA,YACA,YACA,WACA,WACA,sBACA,YACA,SACA,WACA,aACA,aACA,WACA,WACA,WACA,QACA,QACA,WACA,UACA,YACA,WACA,aACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,UACA,SACA,aACA,eACA,cACA,aACA,cACA,YACA,cACA,eACA,UACA,UACA,WACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WACA,cACA,YACA,YACA,aACA,OACJ,CAAC,EC9MM,IAAIC,IACV,SAAUA,EAA2B,CAClCA,EAA0BA,EAA0B,cAAmB,CAAC,EAAI,gBAC5EA,EAA0BA,EAA0B,aAAkB,CAAC,EAAI,eAC3EA,EAA0BA,EAA0B,SAAc,CAAC,EAAI,WACvEA,EAA0BA,EAA0B,SAAc,CAAC,EAAI,WACvEA,EAA0BA,EAA0B,KAAU,CAAC,EAAI,OACnEA,EAA0BA,EAA0B,aAAkB,CAAC,EAAI,cAC/E,GAAGA,KAA8BA,GAA4B,GAAG,ECjBzD,MAAMC,GAAc,CACvB,CACI,KAAM,UACN,IAAK,SACL,YAAa,SACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,QACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,QACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,QACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CAAE,KAAM,QAAS,IAAK,SAAU,YAAa,mBAAoB,QAAS,CAAC,EAC3E,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,CACjB,EACI,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,EACjB,EACI,CAAE,KAAM,KAAM,IAAK,SAAU,YAAa,oBAAqB,QAAS,EAAG,EAC3E,CACI,KAAM,OACN,IAAK,SACL,YAAa,sBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,mCACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,QAAS,EACjB,EACI,CACI,KAAM,MACN,IAAK,SACL,YAAa,qBACb,QAAS,EACjB,EACI,CACI,KAAM,SACN,IAAK,SACL,YAAa,oBACb,QAAS,EACjB,EACI,CACI,KAAM,QACN,IAAK,SACL,YAAa,uBACb,Q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","names":["createCadDocument","init","inferEntityKind","type","normalizeCadEntity","raw","forcedType","options","entity","stringOrUndefined","numberOrUndefined","explicitClosed","typeUsesClassicPolylineFlag","typeUsesLwPolylineFlag","numericColorMode","rawColorNumber","explicitAci","explicitTrueColor","rawColorLooksRgb","pointFromUnknown","scale","scaleX","scaleY","scaleZ","vertices","normalizePoints","controlPoints","fitPoints","rawAttribs","attribute","value","record","x","y","zCandidate","z","out","item","p","rec","vertex","bulge","startWidth","endWidth","addLayer","target","layer","addBlock","block","addLineType","lineType","exactArrayBuffer","bytes","multiplyMatrix","left","right","rotationMatrix","angle","c","s","RELEASES","readDwgVersion","signature","b","release","instances","parseDwgBytes","started","sourceName","version","lib","createLibreDwg","fileContent","fileType","dwg","rawDb","document","normalizeDwgDatabase","elapsedMs","wasmPath","normalizedPath","normalizeWasmPath","promise","__vitePreload","index","module","typed","LibreDwg","wasmUrl","getLibreDwgWasmUrl","wasmBinary","fetchWasmBinary","wasmInstance","filename","ensureTrailingSlash","error","message","instance","layers","extractLayers","shapeStyles","extractShxStyles","lineTypes","extractLineTypes","blocks","extractBlocks","header","normalizeHeader","requiredShxFonts","extractRequiredShapeFonts","savedViewResult","extractSavedView","savedView","rawEntities","normalizeOptions","entities","normalizeDwgEntity","element","dependency","referenced","tables","candidates","byReference","shapeFonts","candidate","expandCandidate","font","reference","key","styleReferenceKey","rgb","flag","classicPolyline","isRenderableAci","result","name","colorIndex","rawRgb","convertedRgb","useIndexedColor","trueColor","styles","pattern","entry","part","length","convertedShapeCode","convertedTypeFlag","hasLibreDwgPair","elementTypeFlag","styleHandle","fontName","active","source","ucsOrigin","ucsXAxis","ucsYAxis","twistAngle","direction","hasNonWorldUcs","isWorldUcs","planView","isPlanViewDirection","sceneTransform","createSavedViewTransform","view","origin","rawXAxis","rawYAxis","xAxis","normalizePlanAxis","yAxisCandidate","projection","orthogonalY","base","axis","yAxis","close","expected","originWorld","xWorld","yWorld","directValues","arrays","trimmed","getRuntimeOrigin","withoutTrailingSlash","isAbsoluteUrl","getRuntimeBaseUrl","url","response","hasWasmMagic","preview","decodeAsciiPreview","contentType","formatFirstBytes","byte","text","scope","event","request","emit","progress","normalized","normalizeWorkerError","DwgCodePage","encodings","dwgCodePageToEncoding","codepage","DwgDimensionType","DwgAttachmentPoint","DwgDimensionTextLineSpacing","DwgDimensionTextVertical","DwgDimensionZeroSuppression","DwgDimensionZeroSuppressionAngular","DwgDimensionTextHorizontal","DwgDimensionToleranceTextVertical","DwgHatchSolidFill","DwgHatchAssociativity","DwgHatchStyle","DwgHatchPatternType","DwgHatchBoundaryAnnotation","DwgHatchGradientFlag","DwgHatchGradientColorFlag","DwgBoundaryPathTypeFlag","DwgBoundaryPathEdgeType","DwgPolylineFlag","DwgSmoothType","DwgTextGenerationFlag","DwgTextHorizontalAlign","DwgTextVerticalAlign","HEADER_VARIABLES","DwgDictionaryCloningFlags","dwgVersions","createModule","moduleArg","runtimeUrl","resolveRuntimeJsUrl","factory","locateFile","located","Dwg_Object_Supertype","Dwg_Object_Type","Dwg_Object_Type_Inverted","Dwg_File_Type","Dwg_Hatch_Edge_Type","Dwg_Color_Method","MODEL_SPACE","MODEL_SPACE_PREFIX","isModelSpace","isPaperSpace","idToString","id","LibreEntityConverter","__publicField","db","force","ltype","object_ptr","libredwg","entity_tio","commonAttrs","fixedtype","corner1","corner2","corner3","corner4","center","radius","thickness","extrusionDirection","startAngle","endAngle","subclassName","attachmentPoint","insertionPoint","rectHeight","rectWidth","extentsHeight","extentsWidth","textValue","prompt","tag","flags","fieldLength","lockPositionFlag","duplicateRecordCloningFlag","isReallyLocked","mtextFlag","alignmentPoint","dimensionCommonAttrs","subDefinitionPoint1","subDefinitionPoint2","rotationAngle","obliqueAngle","centerPoint","arcPoint","leaderLength","majorAxisEndPoint","axisRatio","patternName","isSolidFill","isAssociative","numberOfBoundaryPaths","paths_ptr","boundaryPaths","patternStyle","patternType","patternAngle","patternScale","numberOfDefinitionLines","definitionLines_ptr","definitionLines","pixelSize","numberOfSeedPoints","seedPoints_ptr","seedPoints","gradientName","gradientRotation","gradientDefinition","colorTint","gradientColorFlag","gradientColors_ptr","gradientColors","paths","path","edges","seg","position","uPixel","vPixel","imageSize","clipping","brightness","contrast","fade","clipMode","clippingBoundaryType","countBoundaryPoints","clip_verts","clippingBoundaryPath","imagedef_ref","imageDefHandle","imagedefreactor_ref","imageDefReactorHandle","block_header_ref","block_header_obj","block_header_tio","rotation","columnCount","rowCount","columnSpacing","rowSpacing","attrib_ptr_array","attribs","styleName","isArrowheadEnabled","isSpline","leaderCreationFlag","isHooklineSameDirection","isHooklineExists","textHeight","textWidth","numberOfVertices","vertices_ptr","byBlockColor","normal","horizontalDirection","offsetFromBlock","offsetFromAnnotation","startPoint","endPoint","constantWidth","elevation","num_points","points_ptr","points","num_bulges","bulges_ptr","bulges","point","justification","numberOfLines","verts_ptr","verts","vert","line","oleVersion","oleClient","dataSize","leftUpPoint","rightDownPoint","lockAspect","oleObjectType","tileModeDescriptor","binaryData","mode","drawingDirection","lineSpacingStyle","lineSpacing","backgroundFill","fillBoxScale","backgroundFillColor","backgroundFillTransparency","columnType","columnFlowReversed","columnAutoHeight","columnWidth","columnGutter","columnHeightCount","columnHeights_ptr","columnHeights","object","smoothType","classId","firstPoint","unitDirection","state","verticalDirection","topHeight","bottomHeight","indicatorTransparency","indicatorColor","numberOfBackLineVertices","backLineVertices_ptr","backLineVertices","geometrySettingHandle","geometrySettingHardId","degree","knotTolerance","numberOfKnots","knots_ptr","knots","fitTolerance","numberOfFitPoints","fit_pts_ptr","weighted","controlTolerance","numberOfControlPoints","ctrl_pts_ptr","startTangent","endTangent","directionVector","tableValue","row_heights_ptr","rowHeightArr","col_widths_ptr","columnWidthArr","table_style_ref","tableStyleId","blockRecordHandle","overrideFlag","borderColorOverrideFlag","borderLineWeightOverrideFlag","borderVisibilityOverrideFlag","num_cells","cells_ptr","cells","converted","cell","xScale","generationFlag","halign","valign","xAxisDirection","dimStyleName","viewportCenter","width","height","status","displayCenter","snapBase","snapSpacing","gridSpacing","viewDirection","targetPoint","perspectiveLensLength","frontClipZ","backClipZ","viewHeight","snapAngle","viewTwistAngle","circleZoomPercent","statusBitFlags","sheetName","renderMode","ucsPerViewport","named_ucs_ref","ucsId","base_ucs_ref","ucsBaseId","orthographicType","shadePlotMode","isDefaultLighting","defaultLightingType","majorGridFrequency","background_ref","backgroundId","shadeplot_ref","shadePlotId","visualstyle_ref","visualStyleId","sun_ref","sunId","definitionPoint","textPoint","dimensionType","textLineSpacingStyle","textLineSpacingFactor","measurement","textRotation","ocsRotation","color","method","rgbColor","handle","ownerhandle","ownerDictionaryHardId","lineweight","lineTypeScale","isVisible","xdata","LibreDwgConverter","data","num_objects","i","obj","tio","btr","attrib","viewportEntities","a","handleA","handleB","viewport","var_name","classes","count","cls","num_owned","description","basePoint","insertionUnits","explodability","scalability","layout_ptr","layout","bmpPreview","uint8ArrayToHexString","hexChars","bmpPreviewBinaryData","entities_ptr","object_ref_ptr_array","converter","ownerHandle","next","DIMTOL","DIMLIM","DIMTIH","DIMTOH","DIMSE1","DIMSE2","DIMALT","DIMTOFL","DIMSAH","DIMTIX","DIMSOXD","DIMALTD","DIMZIN","DIMSD1","DIMSD2","DIMTOLJ","DIMJUST","DIMFIT","DIMUPT","DIMTZIN","DIMALTZ","DIMALTTZ","DIMTAD","DIMUNIT","DIMAUNIT","DIMDEC","DIMTDEC","DIMALTU","DIMALTTD","DIMSCALE","DIMASZ","DIMEXO","DIMDLI","DIMEXE","DIMRND","DIMDLE","DIMTP","DIMTM","DIMFXL","DIMJOGANG","DIMTFILL","DIMTFILLCLR","DIMAZIN","DIMARCSYM","DIMTXT","DIMCEN","DIMTSZ","DIMALTF","DIMLFAC","DIMTVP","DIMTFAC","DIMGAP","DIMPOST","DIMAPOST","DIMBLK_T","DIMBLK1_T","DIMBLK2_T","DIMALTRND","DIMCLRD_N","DIMCLRE_N","DIMCLRT_N","DIMCLRD","DIMCLRE","DIMCLRT","DIMADEC","DIMFRAC","DIMLUNIT","DIMDSEP","DIMTMOVE","DIMATFIT","DIMFXLON","DIMTXTDIRECTION","DIMALTMZF","DIMALTMZS","DIMMZF","DIMMZS","DIMLWD","DIMLWE","DIMTXSTY_Ptr","DIMTXSTY","DIMLDRBLK_Ptr","DIMLDRBLK","frozen","off","frozenInNew","locked","plotFlag","linewt","ltypeRef","ltypeName","numDashes","patternLen","dashes","dashArray","patterns","dash","standardFlag","widthFactor","textGenerationFlag","lastHeight","bigFont","aspectRatio","viewTarget","viewDirectionFromTarget","lensLength","frontClippingPlane","backClippingPlane","viewMode","isDefaultLightingOn","defaultLightningType","ambient_color","lowerLeftCorner","upperRightCorner","circleSides","ucsIconSetting","snapRotationAngle","snapBasePoint","majorGridLines","background","backgroundObjectId","visualstyle","visualStyleObjectId","object_tio","isHardOwner","cloningFlag","numitems","itemhandles_ptr","itemhandles","texts","entries","size","fileName","isLoaded","sizeOfOnePixel","resolutionUnits","layoutName","tabOrder","controlFlag","minLimit","maxLimit","minExtent","maxExtent","paperSpaceTableId","active_viewport_ref","viewportId","namedUcsId","numberOfPointsOnClipBoundary","clip_verts_ptr","clipBoundaryVisible","frontClippingPlaneFlag","frontClippingPlaneDistance","backClippingPlaneFlag","backClippingPlaneDistance","transform_ptr","matrix","inverse_transform_ptr","invertBlockMatrix","Box2D","translation","corners","pt","angleInRad","cos","sin","dx","dy","box","evaluateBSpline","weights","n","d","weightsSafe","knotsSafe","domain","low","high","v","j","l","denom","alpha","round10","exp","exponent","shifted","shiftedBase","shiftedExp","_colorKeywords","AUTO_CAD_COLOR_INDEX","clamp","min","max","_Color","hexString","scalar","r","g","red","green","blue","style","clonedColor","Color","Vector2D","len","createPolylineArcPoints","from","to","resolution","theta","ab","lengthAB","lengthCD","normAB","rotated","startInter","endInter","angleRad","interpolatePolyline","closed","SvgConverter","interpolationsPerSplineSegment","polyline","controlPointsForLib","segmentTs","k","uMin","uMax","t","bbox","secondPoint","mtext","_","hex","lines","fontsize","anchor","transform","originX","originY","cellRects","row","col","cellIndex","svgElements","textX","textY","totalWidth","sum","w","totalHeight","h","svg","acc","bbox0","element0","cx","cy","majorX","majorY","rx","ry","startOffset","endOffset","largeArcFlag","angles","pts","M","elements","boundsAndElement","fill","lwpolyline","spline","modelSpace","blockElements","ms","viewBox","DwgThumbnailImageType","_LibreDwg","prop","receiver","inputFileName","outputFileName","encoding","obj_ptr","ref_ptr","absref","obj_tio","obj_obj_ptr","obj_generic_ptr","model_space","results","ptr","field","subclass","dimstyle_ref","dimstyle_obj","dimstyle_tio","block_ref","block_obj","block_tio","base_pt","current","style_ref","style_obj","style_tio","filepath"],"ignoreList":[6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,24,25],"sources":["../../src/core/entity.ts","../../src/core/format.ts","../../src/core/transform.ts","../../src/loaders/dwg/dwgVersion.ts","../../src/loaders/dwg/DwgParser.ts","../../src/loaders/dwg/DwgWorker.ts","../../node_modules/@mlightcad/libredwg-web/lib/database/codepage.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/dimension.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/hatch.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/polyline.js","../../node_modules/@mlightcad/libredwg-web/lib/database/entities/text.js","../../node_modules/@mlightcad/libredwg-web/lib/database/header/variables.js","../../node_modules/@mlightcad/libredwg-web/lib/database/objects/dictionary.js","../../node_modules/@mlightcad/libredwg-web/lib/database/version.js","../../src/loaders/dwg/libredwgWasmModuleProxy.ts","../../node_modules/@mlightcad/libredwg-web/lib/types/enums.js","../../node_modules/@mlightcad/libredwg-web/lib/converter/utils.js","../../node_modules/@mlightcad/libredwg-web/lib/converter/entityConverter.js","../../node_modules/@mlightcad/libredwg-web/lib/converter/converter.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/box2d.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/bspline.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/color.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/vector.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/polyline.js","../../node_modules/@mlightcad/libredwg-web/lib/svg/svgConverter.js","../../node_modules/@mlightcad/libredwg-web/lib/libredwg.js"],"sourcesContent":["import type { CadBlock, CadDocument, CadEntity, CadEntityKind, CadLayer, CadLineType, CadPage, CadPoint3D } from './types';\n\nexport interface NormalizeCadEntityOptions {\n /** Preserve the parser-owned raw object on entity.raw. This can be very large and may not be structured-clone safe. */\n keepRaw?: boolean;\n /** Copy unknown parser properties onto the normalized entity. Disable inside workers for predictable cloneable payloads. */\n includeUnknownProperties?: boolean;\n /** How to interpret a numeric raw `color` property when the source parser is ambiguous. */\n numericColorMode?: 'auto' | 'aci' | 'rgb';\n}\n\nexport function createCadDocument(init: Partial<CadDocument> & Pick<CadDocument, 'format'>): CadDocument {\n return {\n format: init.format,\n sourceName: init.sourceName,\n units: init.units,\n header: init.header ?? {},\n layers: init.layers ?? {},\n lineTypes: init.lineTypes ?? {},\n blocks: init.blocks ?? {},\n entities: init.entities ?? [],\n pages: init.pages,\n savedView: init.savedView,\n metadata: init.metadata ?? {},\n warnings: init.warnings ?? [],\n raw: init.raw\n };\n}\n\nexport function inferEntityKind(type: unknown): CadEntityKind {\n const upper = String(type ?? '').toUpperCase();\n switch (upper) {\n case 'LINE': return 'line';\n case 'CIRCLE': return 'circle';\n case 'ARC': return 'arc';\n case 'LWPOLYLINE':\n case 'POLYLINE':\n case 'POLYLINE_2D':\n case 'POLYLINE2D':\n case 'POLYLINE_3D':\n case 'POLYLINE3D':\n case 'LEADER':\n case 'MULTILEADER': return 'polyline';\n case 'ELLIPSE': return 'ellipse';\n case 'TEXT':\n case 'MTEXT':\n case 'ATTRIB':\n case 'ATTDEF':\n case 'DIMENSION': return 'text';\n case 'POINT': return 'point';\n case 'INSERT': return 'insert';\n case 'SOLID':\n case 'TRACE':\n case '3DFACE': return 'solid';\n case 'HATCH': return 'hatch';\n case 'SPLINE': return 'spline';\n case 'PATH':\n case 'XPS_PATH':\n case 'DWF_PATH': return 'path';\n case 'IMAGE':\n case 'RASTER_IMAGE':\n case 'DWF_IMAGE': return 'image';\n case 'VIEWPORT': return 'viewport';\n default: return 'unsupported';\n }\n}\n\nexport function normalizeCadEntity(raw: Record<string, unknown>, forcedType?: string, options: NormalizeCadEntityOptions = {}): CadEntity {\n const type = forcedType ?? String(raw.type ?? raw.entityType ?? raw.objectName ?? 'UNKNOWN').toUpperCase();\n const entity: CadEntity = options.includeUnknownProperties === false\n ? { type, kind: inferEntityKind(type) }\n : { ...raw, type, kind: inferEntityKind(type) } as CadEntity;\n if (options.keepRaw) entity.raw = raw;\n entity.handle = stringOrUndefined(raw.handle ?? raw.id);\n entity.layer = stringOrUndefined(raw.layer ?? raw.layerName);\n entity.lineType = stringOrUndefined(raw.lineType ?? raw.linetype);\n entity.lineTypeScale = numberOrUndefined(raw.lineTypeScale ?? raw.linetypeScale ?? raw.ltscale) ?? entity.lineTypeScale;\n entity.flag = numberOrUndefined(raw.flag ?? raw.flags) ?? entity.flag;\n entity.constantWidth = numberOrUndefined(raw.constantWidth ?? raw.constWidth ?? raw.const_width) ?? entity.constantWidth;\n entity.thickness = numberOrUndefined(raw.thickness) ?? entity.thickness;\n const explicitClosed = raw.isClosed === true || raw.closed === true || raw.shape === true;\n const typeUsesClassicPolylineFlag = /^(POLYLINE|POLYLINE_2D|POLYLINE2D|POLYLINE_3D|POLYLINE3D|SPLINE)$/.test(type);\n const typeUsesLwPolylineFlag = type === 'LWPOLYLINE';\n if (explicitClosed\n || (typeUsesClassicPolylineFlag && (Number(entity.flag ?? 0) & 1) === 1)\n || (typeUsesLwPolylineFlag && (Number(entity.flag ?? 0) & 0x200) === 0x200)) {\n entity.isClosed = true;\n }\n\n const numericColorMode = options.numericColorMode ?? 'auto';\n const rawColorNumber = numberOrUndefined(raw.color);\n const explicitAci = numberOrUndefined(raw.colorIndex ?? raw.colorNumber ?? raw.aci ?? raw.aciColor ?? raw.color_index);\n entity.colorIndex = explicitAci ?? (numericColorMode !== 'rgb' && rawColorNumber !== undefined && Math.abs(rawColorNumber) <= 257 ? rawColorNumber : undefined);\n\n const explicitTrueColor = raw.trueColor ?? raw.true_color ?? raw.truecolor ?? raw.colorRGB ?? raw.colorRgb ?? raw.rgbColor ?? raw.rgb;\n const rawColorLooksRgb = rawColorNumber !== undefined && rawColorNumber >= 0 && rawColorNumber <= 0xffffff && (numericColorMode === 'rgb' || (numericColorMode === 'auto' && Math.abs(rawColorNumber) > 257));\n entity.trueColor = (explicitTrueColor ?? (rawColorLooksRgb ? rawColorNumber : undefined)) as CadEntity['trueColor'];\n if (typeof raw.color === 'string' || typeof raw.color === 'number') entity.color = raw.color as string | number;\n entity.colorNumber = numberOrUndefined(raw.colorNumber) ?? entity.colorNumber;\n entity.colorName = stringOrUndefined(raw.colorName ?? raw.color_name) ?? entity.colorName;\n entity.fillColor = (raw.fillColor ?? raw.fill_color) as CadEntity['fillColor'];\n entity.fillColorIndex = numberOrUndefined(raw.fillColorIndex ?? raw.fill_color_index ?? raw.fillColorNumber) ?? entity.fillColorIndex;\n entity.opacity = numberOrUndefined(raw.opacity ?? raw.alpha) ?? entity.opacity;\n entity.lineweight = numberOrUndefined(raw.lineweight ?? raw.lineWeight);\n entity.isVisible = raw.isVisible === false || raw.visible === false ? false : true;\n entity.startPoint = pointFromUnknown(raw.startPoint ?? raw.start ?? raw.p0 ?? raw.from) ?? entity.startPoint;\n entity.endPoint = pointFromUnknown(raw.endPoint ?? raw.end ?? raw.p1 ?? raw.to) ?? entity.endPoint;\n entity.center = pointFromUnknown(raw.center ?? raw.centerPoint) ?? entity.center;\n entity.insertionPoint = pointFromUnknown(raw.insertionPoint ?? raw.position ?? raw.location ?? raw.point ?? raw.basePoint) ?? entity.insertionPoint;\n entity.radius = numberOrUndefined(raw.radius) ?? entity.radius;\n entity.startAngle = numberOrUndefined(raw.startAngle ?? raw.start_angle) ?? entity.startAngle;\n entity.endAngle = numberOrUndefined(raw.endAngle ?? raw.end_angle) ?? entity.endAngle;\n entity.majorAxisEndPoint = pointFromUnknown(raw.majorAxisEndPoint ?? raw.majorAxis ?? raw.major) ?? entity.majorAxisEndPoint;\n entity.axisRatio = numberOrUndefined(raw.axisRatio ?? raw.ratio) ?? entity.axisRatio;\n entity.height = numberOrUndefined(raw.height ?? raw.textHeight) ?? entity.height;\n entity.textHeight = numberOrUndefined(raw.textHeight ?? raw.height) ?? entity.textHeight;\n entity.xScale = numberOrUndefined(raw.xScale ?? raw.widthFactor) ?? entity.xScale;\n entity.generationFlag = numberOrUndefined(raw.generationFlag ?? raw.textGenerationFlag) ?? entity.generationFlag;\n entity.halign = numberOrUndefined(raw.halign ?? raw.horizontalAlignment) ?? entity.halign;\n entity.valign = numberOrUndefined(raw.valign ?? raw.verticalAlignment) ?? entity.valign;\n entity.extrusionDirection = pointFromUnknown(raw.extrusionDirection ?? raw.extrusion) ?? entity.extrusionDirection;\n entity.rotation = numberOrUndefined(raw.rotation ?? raw.angle) ?? entity.rotation;\n entity.text = stringOrUndefined(raw.text ?? raw.value ?? raw.string ?? raw.contents) ?? entity.text;\n entity.name = stringOrUndefined(raw.name ?? raw.blockName) ?? entity.name;\n entity.blockName = stringOrUndefined(raw.blockName ?? raw.name) ?? entity.blockName;\n if (type === 'INSERT') {\n const scale = pointFromUnknown(raw.scale);\n if (scale) {\n entity.scale = scale;\n } else {\n const scaleX = numberOrUndefined(raw.scaleX ?? raw.xScale);\n const scaleY = numberOrUndefined(raw.scaleY ?? raw.yScale) ?? scaleX;\n const scaleZ = numberOrUndefined(raw.scaleZ ?? raw.zScale);\n if (scaleX !== undefined && scaleY !== undefined) {\n entity.scale = scaleZ === undefined ? { x: scaleX, y: scaleY } : { x: scaleX, y: scaleY, z: scaleZ };\n }\n }\n }\n\n const vertices = normalizePoints(raw.vertices ?? raw.points);\n if (vertices.length > 0) entity.vertices = vertices;\n const controlPoints = normalizePoints(raw.controlPoints ?? raw.control_points);\n if (controlPoints.length > 0) entity.controlPoints = controlPoints;\n const fitPoints = normalizePoints(raw.fitPoints ?? raw.fit_points);\n if (fitPoints.length > 0) entity.fitPoints = fitPoints;\n const rawAttribs = raw.attribs ?? raw.attributes;\n if (Array.isArray(rawAttribs)) {\n entity.attribs = rawAttribs\n .filter((attribute): attribute is Record<string, unknown> => !!attribute && typeof attribute === 'object')\n .map((attribute) => normalizeCadEntity(attribute, undefined, options));\n }\n return entity;\n}\n\nexport function pointFromUnknown(value: unknown): CadPoint3D | undefined {\n if (!value || typeof value !== 'object') return undefined;\n const record = value as Record<string, unknown>;\n const x = Number(record.x ?? record.X ?? record[0]);\n const y = Number(record.y ?? record.Y ?? record[1]);\n const zCandidate = record.z ?? record.Z ?? record[2];\n const z = zCandidate === undefined ? undefined : Number(zCandidate);\n if (!Number.isFinite(x) || !Number.isFinite(y)) return undefined;\n return Number.isFinite(z) ? { x, y, z } : { x, y };\n}\n\nexport function normalizePoints(value: unknown): Array<CadPoint3D & { bulge?: number; startWidth?: number; endWidth?: number }> {\n if (!Array.isArray(value)) return [];\n const out: Array<CadPoint3D & { bulge?: number; startWidth?: number; endWidth?: number }> = [];\n for (const item of value) {\n const p = pointFromUnknown(item);\n if (!p) continue;\n const rec = item as Record<string, unknown>;\n const vertex = p as CadPoint3D & { bulge?: number; startWidth?: number; endWidth?: number };\n const bulge = numberOrUndefined(rec.bulge);\n if (bulge !== undefined) vertex.bulge = bulge;\n const startWidth = numberOrUndefined(rec.startWidth ?? rec.start_width);\n if (startWidth !== undefined) vertex.startWidth = startWidth;\n const endWidth = numberOrUndefined(rec.endWidth ?? rec.end_width);\n if (endWidth !== undefined) vertex.endWidth = endWidth;\n out.push(vertex);\n }\n return out;\n}\n\nexport function summarizeCadDocument(document: CadDocument) {\n const byType: Record<string, number> = {};\n for (const entity of document.entities) {\n const type = String(entity.type ?? 'UNKNOWN').toUpperCase();\n byType[type] = (byType[type] ?? 0) + 1;\n }\n return {\n format: document.format,\n sourceName: document.sourceName,\n entityCount: document.entities.length,\n layerCount: Object.keys(document.layers).length,\n blockCount: Object.keys(document.blocks).length,\n pageCount: document.pages?.length ?? 0,\n byType,\n warnings: [...document.warnings]\n };\n}\n\nexport function isCadPolylineClosed(entity: CadEntity): boolean {\n if (entity.isClosed === true) return true;\n const type = String(entity.type ?? '').toUpperCase();\n const flag = Number(entity.flag ?? 0);\n const isLightweightPolyline = type === 'LWPOLYLINE';\n const isClassicPolyline = /^(POLYLINE|POLYLINE_2D|POLYLINE2D|POLYLINE_3D|POLYLINE3D)$/.test(type);\n if (isLightweightPolyline && (flag & 0x200) === 0x200) return true;\n if (isClassicPolyline && (flag & 1) === 1) return true;\n if (!isLightweightPolyline && !isClassicPolyline) return false;\n const points = entity.vertices ?? entity.points;\n if (!Array.isArray(points) || points.length < 3) return false;\n const first = points[0];\n const last = points[points.length - 1];\n if (!first || !last) return false;\n const extent = points.reduce((max, point) => Math.max(max, Math.abs(point.x), Math.abs(point.y)), 1);\n return Math.hypot(first.x - last.x, first.y - last.y) <= Math.max(1e-9, extent * 1e-12);\n}\n\n/** Returns an entity's authored polyline width in drawing units. */\nexport function cadEntityWorldStrokeWidth(entity: CadEntity): number {\n let width = finiteNonNegative(entity.constantWidth);\n for (const vertex of entity.vertices ?? []) {\n width = Math.max(width, finiteNonNegative(vertex.startWidth), finiteNonNegative(vertex.endWidth));\n }\n return width;\n}\n\nexport function addLayer(target: Record<string, CadLayer>, layer: CadLayer): void {\n if (!layer.name) return;\n target[layer.name] = layer;\n target[layer.name.toLowerCase()] = layer;\n}\n\nexport function addBlock(target: Record<string, CadBlock>, block: CadBlock): void {\n if (!block.name) return;\n target[block.name] = block;\n target[block.name.toLowerCase()] = block;\n}\n\nexport function addLineType(target: Record<string, CadLineType>, lineType: CadLineType): void {\n if (!lineType.name) return;\n target[lineType.name] = lineType;\n target[lineType.name.toLowerCase()] = lineType;\n if (lineType.handle) {\n target[lineType.handle] = lineType;\n target[lineType.handle.toLowerCase()] = lineType;\n }\n}\n\nexport function flattenPages(pages: CadPage[] | undefined): CadEntity[] {\n if (!pages?.length) return [];\n return pages.flatMap((page) => page.entities.map((entity) => ({ ...entity, pageIndex: page.index })));\n}\n\nexport function numberOrUndefined(value: unknown): number | undefined {\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\nexport function stringOrUndefined(value: unknown): string | undefined {\n if (typeof value !== 'string' && typeof value !== 'number') return undefined;\n const out = String(value);\n return out.length > 0 ? out : undefined;\n}\n\nfunction finiteNonNegative(value: unknown): number {\n const number = Math.abs(Number(value));\n return Number.isFinite(number) ? number : 0;\n}\n","import type { CadFormat, CadLoadInput } from './types';\n\nexport async function readInputBytes(input: CadLoadInput): Promise<Uint8Array> {\n if (input.buffer instanceof Uint8Array) return input.buffer;\n if (input.buffer instanceof ArrayBuffer) return new Uint8Array(input.buffer);\n if (input.file) return new Uint8Array(await input.file.arrayBuffer());\n throw new Error('CadLoadInput requires a File, ArrayBuffer, or Uint8Array.');\n}\n\nexport function exactArrayBuffer(bytes: Uint8Array): ArrayBuffer {\n if (bytes.byteOffset === 0 && bytes.byteLength === bytes.buffer.byteLength) return bytes.buffer as ArrayBuffer;\n return bytes.slice().buffer as ArrayBuffer;\n}\n\nexport function extensionOf(input: CadLoadInput): string {\n const name = input.fileName ?? input.file?.name ?? '';\n const index = name.lastIndexOf('.');\n return index >= 0 ? name.slice(index + 1).toLowerCase() : '';\n}\n\nexport function detectCadFormat(input: CadLoadInput, bytes?: Uint8Array): CadFormat {\n const ext = extensionOf(input);\n if (ext === 'dwg') return 'dwg';\n if (ext === 'dxf') return 'dxf';\n if (ext === 'dwfx') return 'dwfx';\n if (ext === 'xps') return 'xps';\n if (ext === 'dwf') return 'dwf';\n\n if (bytes && bytes.byteLength >= 6) {\n const sig = ascii(bytes.slice(0, 6));\n if (/^AC10/.test(sig)) return 'dwg';\n if (bytes[0] === 0x50 && bytes[1] === 0x4b) return 'dwfx';\n const head = ascii(bytes.slice(0, Math.min(bytes.byteLength, 2048))).toUpperCase();\n if (head.includes('SECTION') && head.includes('ENTITIES')) return 'dxf';\n if (head.includes('DWF')) return 'dwf';\n }\n return 'unknown';\n}\n\nexport function ascii(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => b >= 32 && b <= 126 ? String.fromCharCode(b) : ' ').join('');\n}\n\nexport function decodeUtf8(bytes: Uint8Array): string {\n return new TextDecoder('utf-8').decode(bytes);\n}\n","import type { CadEntity, CadPathCommand, CadPoint2D, CadPoint3D } from './types';\n\nexport interface Matrix2D {\n a: number;\n b: number;\n c: number;\n d: number;\n e: number;\n f: number;\n}\n\nexport const IDENTITY_MATRIX: Matrix2D = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };\n\nexport function multiplyMatrix(left: Matrix2D, right: Matrix2D): Matrix2D {\n return {\n a: left.a * right.a + left.c * right.b,\n b: left.b * right.a + left.d * right.b,\n c: left.a * right.c + left.c * right.d,\n d: left.b * right.c + left.d * right.d,\n e: left.a * right.e + left.c * right.f + left.e,\n f: left.b * right.e + left.d * right.f + left.f\n };\n}\n\nexport function translationMatrix(x: number, y: number): Matrix2D {\n return { a: 1, b: 0, c: 0, d: 1, e: x, f: y };\n}\n\nexport function rotationMatrix(angle: number): Matrix2D {\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n return { a: c, b: s, c: -s, d: c, e: 0, f: 0 };\n}\n\nexport function scaleMatrix(x: number, y = x): Matrix2D {\n return { a: x, b: 0, c: 0, d: y, e: 0, f: 0 };\n}\n\nexport function transformPoint(point: CadPoint2D | CadPoint3D, matrix: Matrix2D): CadPoint3D {\n return {\n x: point.x * matrix.a + point.y * matrix.c + matrix.e,\n y: point.x * matrix.b + point.y * matrix.d + matrix.f,\n z: 'z' in point ? point.z : undefined\n };\n}\n\nexport function transformPathCommands(commands: CadPathCommand[] | undefined, matrix: Matrix2D): CadPathCommand[] | undefined {\n if (!commands) return undefined;\n return commands.map((command) => ({ cmd: command.cmd, points: command.points.map((p) => transformPoint(p, matrix)) }));\n}\n\nexport function matrixFromInsert(entity: CadEntity, basePoint: CadPoint3D = { x: 0, y: 0 }): Matrix2D {\n const insertion = entity.insertionPoint ?? { x: 0, y: 0 };\n const scaleValue = entity.scale;\n const sx = typeof scaleValue === 'object' && scaleValue ? Number(scaleValue.x ?? 1) : Number((entity as Record<string, unknown>).scaleX ?? 1);\n const sy = typeof scaleValue === 'object' && scaleValue ? Number(scaleValue.y ?? sx) : Number((entity as Record<string, unknown>).scaleY ?? sx);\n const rotation = Number(entity.rotation ?? 0);\n let matrix = translationMatrix(insertion.x, insertion.y);\n matrix = multiplyMatrix(matrix, rotationMatrix(Number.isFinite(rotation) ? rotation : 0));\n matrix = multiplyMatrix(matrix, scaleMatrix(Number.isFinite(sx) ? sx : 1, Number.isFinite(sy) ? sy : 1));\n matrix = multiplyMatrix(matrix, translationMatrix(-basePoint.x, -basePoint.y));\n return matrix;\n}\n\nexport function transformEntity(entity: CadEntity, matrix: Matrix2D): CadEntity {\n const clone: CadEntity = { ...entity };\n const determinant = matrix.a * matrix.d - matrix.b * matrix.c;\n const scaleApprox = Math.sqrt(Math.abs(determinant));\n const scaleX = Math.hypot(matrix.a, matrix.b);\n const scaleY = Math.hypot(matrix.c, matrix.d);\n if (entity.startPoint) clone.startPoint = transformPoint(entity.startPoint, matrix);\n if (entity.endPoint) clone.endPoint = transformPoint(entity.endPoint, matrix);\n if (entity.center) clone.center = transformPoint(entity.center, matrix);\n if (entity.insertionPoint) clone.insertionPoint = transformPoint(entity.insertionPoint, matrix);\n if (entity.majorAxisEndPoint) {\n const origin = transformPoint({ x: 0, y: 0 }, matrix);\n const major = transformPoint(entity.majorAxisEndPoint, matrix);\n clone.majorAxisEndPoint = { x: major.x - origin.x, y: major.y - origin.y, z: major.z };\n }\n if (entity.vertices) {\n clone.vertices = entity.vertices.map((point) => ({\n ...transformPoint(point, matrix),\n bulge: point.bulge,\n startWidth: scaleDimension(point.startWidth, scaleApprox),\n endWidth: scaleDimension(point.endWidth, scaleApprox)\n }));\n }\n if (entity.points) clone.points = entity.points.map((p) => transformPoint(p, matrix));\n if (entity.controlPoints) clone.controlPoints = entity.controlPoints.map((p) => transformPoint(p, matrix));\n if (entity.fitPoints) clone.fitPoints = entity.fitPoints.map((p) => transformPoint(p, matrix));\n if (entity.attribs) clone.attribs = entity.attribs.map((attribute) => transformEntity(attribute, matrix));\n if (entity.commands) clone.commands = transformPathCommands(entity.commands, matrix);\n if (entity.loops) {\n clone.loops = entity.loops.map((loop) => ({\n ...loop,\n vertices: loop.vertices?.map((p) => transformPoint(p, matrix)),\n commands: transformPathCommands(loop.commands, matrix)\n }));\n }\n\n if (typeof entity.radius === 'number' && Number.isFinite(scaleApprox)) clone.radius = entity.radius * scaleApprox;\n if (typeof entity.constantWidth === 'number' && Number.isFinite(scaleApprox)) clone.constantWidth = entity.constantWidth * scaleApprox;\n if (typeof entity.thickness === 'number' && Number.isFinite(scaleApprox)) clone.thickness = entity.thickness * scaleApprox;\n if (typeof entity.lineTypeScale === 'number' && Number.isFinite(scaleApprox)) clone.lineTypeScale = entity.lineTypeScale * scaleApprox;\n if (entity.kind === 'text' || /^(TEXT|MTEXT|ATTRIB|ATTDEF|DIMENSION)$/i.test(String(entity.type ?? ''))) {\n if (typeof entity.textHeight === 'number' && Number.isFinite(scaleY)) clone.textHeight = entity.textHeight * scaleY;\n if (typeof entity.height === 'number' && Number.isFinite(scaleY)) clone.height = entity.height * scaleY;\n if (typeof entity.xScale === 'number' && scaleY > 1e-14 && Number.isFinite(scaleX)) clone.xScale = entity.xScale * scaleX / scaleY;\n }\n const rotation = Math.atan2(matrix.b, matrix.a);\n const ellipseAnglesAreRelative = entity.kind === 'ellipse' || String(entity.type ?? '').toUpperCase() === 'ELLIPSE';\n if (typeof entity.rotation === 'number' || entity.kind === 'text' || entity.kind === 'insert') {\n clone.rotation = normalizeRotation(Number(entity.rotation ?? 0) + (Number.isFinite(rotation) ? rotation : 0));\n }\n if (Number.isFinite(rotation) && Math.abs(rotation) > 1e-14) {\n // ARC angles are WCS angles and rotate with the scene. ELLIPSE start/end\n // parameters are relative to majorAxisEndPoint, which was already rotated.\n if (!ellipseAnglesAreRelative && typeof entity.startAngle === 'number') clone.startAngle = entity.startAngle + rotation;\n if (!ellipseAnglesAreRelative && typeof entity.endAngle === 'number') clone.endAngle = entity.endAngle + rotation;\n }\n if (determinant < 0 && clone.vertices) {\n clone.vertices = clone.vertices.map((point) => ({ ...point, bulge: typeof point.bulge === 'number' ? -point.bulge : undefined }));\n }\n return clone;\n}\n\nfunction scaleDimension(value: number | undefined, scale: number): number | undefined {\n return typeof value === 'number' && Number.isFinite(scale) ? value * scale : value;\n}\n\nfunction normalizeRotation(angle: number): number {\n if (!Number.isFinite(angle)) return angle;\n const tau = Math.PI * 2;\n const normalized = ((angle + Math.PI) % tau + tau) % tau - Math.PI;\n return Math.abs(normalized) <= 1e-12 ? 0 : normalized;\n}\n\nexport function parseMatrix(value: string | null | undefined): Matrix2D | undefined {\n if (!value) return undefined;\n const numbers = value.match(/-?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?/g)?.map(Number) ?? [];\n if (numbers.length < 6) return undefined;\n const [a, b, c, d, e, f] = numbers;\n return { a, b, c, d, e, f };\n}\n","export type DwgRelease = 'R12' | 'R13' | 'R14' | 'R2000' | 'R2004' | 'R2007' | 'R2010' | 'R2013' | 'R2018' | 'UNKNOWN';\n\nexport interface DwgVersionInfo {\n signature: string;\n release: DwgRelease;\n supportedByOpenDesignSpec: boolean;\n notes?: string;\n}\n\nconst RELEASES: Record<string, DwgRelease> = {\n AC1009: 'R12',\n AC1012: 'R13',\n AC1014: 'R14',\n AC1015: 'R2000',\n AC1018: 'R2004',\n AC1021: 'R2007',\n AC1024: 'R2010',\n AC1027: 'R2013',\n AC1032: 'R2018'\n};\n\nexport function readDwgVersion(bytes: Uint8Array): DwgVersionInfo {\n const signature = Array.from(bytes.slice(0, 6), (b) => String.fromCharCode(b)).join('');\n const release = RELEASES[signature] ?? 'UNKNOWN';\n return {\n signature,\n release,\n supportedByOpenDesignSpec: release !== 'UNKNOWN',\n notes: release === 'UNKNOWN' ? 'Unknown or unsupported DWG signature.' : undefined\n };\n}\n","import { addBlock, addLayer, addLineType, createCadDocument, normalizeCadEntity, numberOrUndefined, pointFromUnknown, stringOrUndefined } from '../../core/entity';\nimport { exactArrayBuffer } from '../../core/format';\nimport { multiplyMatrix, rotationMatrix } from '../../core/transform';\nimport type { CadBlock, CadDocument, CadEntity, CadLayer, CadLineType, CadLoadOptions, CadLoadProgress, CadLoadResult, CadPoint3D, CadSavedView, CadSceneTransform2D } from '../../core/types';\nimport { readDwgVersion } from './dwgVersion';\n\ninterface LibreDwgModule {\n Dwg_File_Type?: Record<string, number>;\n LibreDwg?: {\n create(wasmPath?: string): Promise<any>;\n createByWasmInstance?(wasmInstance: any): any;\n };\n createModule?: (moduleArg?: Record<string, unknown>) => Promise<any>;\n}\n\nexport interface ParseDwgBytesOptions extends CadLoadOptions {\n sourceName?: string;\n onProgress?: (progress: CadLoadProgress) => void;\n}\n\nconst instances = new Map<string, Promise<any>>();\n\nexport async function parseDwgBytes(bytes: Uint8Array, options: ParseDwgBytesOptions = {}): Promise<CadLoadResult> {\n const started = performance.now();\n const sourceName = options.sourceName;\n options.onProgress?.({ phase: 'detect', format: 'dwg', message: 'Validating DWG header…', total: bytes.byteLength });\n\n const version = readDwgVersion(bytes);\n if (!version.signature.startsWith('AC')) {\n throw new Error(`Invalid DWG header: ${JSON.stringify(version.signature)}.`);\n }\n\n options.onProgress?.({ phase: 'wasm-init', format: 'dwg', message: 'Initializing LibreDWG WebAssembly…', total: bytes.byteLength });\n const lib = await createLibreDwg(options.wasmPath ?? '/wasm/');\n\n options.onProgress?.({ phase: 'parse', format: 'dwg', message: `Decoding ${version.signature} DWG…`, total: bytes.byteLength, percent: 35 });\n const fileContent = exactArrayBuffer(bytes);\n const fileType = lib.Dwg_File_Type?.DWG ?? 0;\n const dwg = lib.instance.dwg_read_data(fileContent, fileType);\n if (!dwg) throw new Error('LibreDWG returned an empty DWG result.');\n if (typeof dwg.error === 'number' && dwg.error !== 0) throw new Error(`LibreDWG parse error code: ${dwg.error}.`);\n\n options.onProgress?.({ phase: 'normalize', format: 'dwg', message: 'Normalizing DWG database…', total: bytes.byteLength, percent: 72 });\n const rawDb = typeof lib.instance.convert === 'function' ? lib.instance.convert(dwg) : dwg;\n try {\n if (typeof lib.instance.dwg_free === 'function') lib.instance.dwg_free(dwg);\n } catch {\n // Different wrapper versions manage native memory differently.\n }\n\n const document = normalizeDwgDatabase(rawDb, sourceName, version, { keepRaw: Boolean(options.keepRaw) });\n const elapsedMs = performance.now() - started;\n options.onProgress?.({ phase: 'done', format: 'dwg', message: 'DWG loaded.', total: bytes.byteLength, percent: 100, elapsedMs });\n return {\n document,\n raw: options.keepRaw ? rawDb : undefined,\n bytes: bytes.byteLength,\n elapsedMs,\n format: 'dwg',\n warnings: document.warnings\n };\n}\n\nexport async function createLibreDwg(wasmPath = '/wasm/'): Promise<{ module: LibreDwgModule; instance: any; Dwg_File_Type?: Record<string, number> }> {\n const normalizedPath = normalizeWasmPath(wasmPath);\n let promise = instances.get(normalizedPath);\n if (!promise) {\n promise = import('@mlightcad/libredwg-web').then(async (module) => {\n const typed = module as LibreDwgModule;\n const LibreDwg = typed.LibreDwg;\n if (!LibreDwg || typeof LibreDwg.create !== 'function') {\n throw new Error('@mlightcad/libredwg-web did not expose LibreDwg.create().');\n }\n\n try {\n // Load the WASM binary explicitly instead of relying on Emscripten's\n // streaming fetch. This makes deployments robust when a CDN returns\n // application/octet-stream, when the server lacks the application/wasm\n // MIME mapping, and, most importantly, lets us detect SPA fallback HTML\n // before the WebAssembly runtime aborts with a cryptic magic-word error.\n if (typeof typed.createModule === 'function' && typeof LibreDwg.createByWasmInstance === 'function') {\n const wasmUrl = getLibreDwgWasmUrl(normalizedPath);\n const wasmBinary = await fetchWasmBinary(wasmUrl);\n const wasmInstance = await typed.createModule({\n wasmBinary,\n locateFile: (filename: string) => new URL(filename, ensureTrailingSlash(normalizedPath)).href\n });\n return LibreDwg.createByWasmInstance(wasmInstance);\n }\n\n // Important: call the static method on the class object. The upstream\n // implementation uses `this.createByWasmInstance(...)`; extracting\n // `create` into a standalone function loses `this` and causes\n // \"Cannot read properties of undefined (reading 'createByWasmInstance')\".\n return await LibreDwg.create(normalizedPath);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to initialize LibreDWG WebAssembly from ${normalizedPath}. Ensure libredwg-web.wasm is deployed at ${getLibreDwgWasmUrl(normalizedPath)} and wasmPath is resolved relative to the page, not the worker script. Run npm run copy:wasm before dev/build. Original error: ${message}`);\n }\n });\n instances.set(normalizedPath, promise);\n }\n const instance = await promise;\n const module = await import('@mlightcad/libredwg-web') as LibreDwgModule;\n return { module, instance, Dwg_File_Type: module.Dwg_File_Type };\n}\n\nexport function normalizeDwgDatabase(rawDb: unknown, sourceName?: string, version?: unknown, options: { keepRaw?: boolean } = {}): CadDocument {\n const record = rawDb && typeof rawDb === 'object' ? rawDb as Record<string, unknown> : {};\n const layers = extractLayers(record, options);\n const shapeStyles = extractShxStyles(record);\n const lineTypes = extractLineTypes(record, options, shapeStyles);\n const blocks = extractBlocks(record, options);\n const header = normalizeHeader(record.header, version);\n const requiredShxFonts = extractRequiredShapeFonts(lineTypes);\n const savedViewResult = extractSavedView(record, header);\n const savedView = savedViewResult.view;\n const rawEntities = Array.isArray(record.entities) ? record.entities : [];\n const normalizeOptions = { keepRaw: Boolean(options.keepRaw), includeUnknownProperties: Boolean(options.keepRaw) };\n const entities = rawEntities\n .filter((item): item is Record<string, unknown> => !!item && typeof item === 'object')\n .map((item) => normalizeDwgEntity(item, normalizeOptions));\n\n const document = createCadDocument({\n format: 'dwg',\n sourceName,\n header,\n layers,\n lineTypes,\n blocks,\n entities,\n savedView,\n metadata: {\n parser: '@mlightcad/libredwg-web',\n parserMode: 'wasm',\n version,\n savedView,\n requiredShxFonts\n },\n warnings: savedViewResult.warning ? [savedViewResult.warning] : [],\n raw: options.keepRaw ? rawDb : undefined\n });\n\n if (entities.length === 0) {\n document.warnings.push('DWG parsed successfully but no model-space entities were exposed by the converter. Check layout/paper-space content or unsupported proxy objects.');\n }\n const uniqueLineTypes = new Set(Object.values(lineTypes));\n if ([...uniqueLineTypes].some((lineType) => lineType.pattern.some((element) => Number(element.elementTypeFlag ?? 0) !== 0))) {\n const dependency = requiredShxFonts.length > 0\n ? ` This drawing references external shape font${requiredShxFonts.length === 1 ? '' : 's'} ${requiredShxFonts.join(', ')}, whose outlines are not embedded in the DWG.`\n : '';\n document.warnings.push(`Complex SHX linetype glyphs are preserved in the normalized LTYPE definition and rendered as a dash/dot approximation.${dependency}`);\n }\n return document;\n}\n\nfunction extractRequiredShapeFonts(lineTypes: Record<string, CadLineType>): string[] {\n const referenced = new Set<string>();\n for (const lineType of new Set(Object.values(lineTypes))) {\n for (const element of lineType.pattern) {\n if (Number(element.elementTypeFlag ?? 0) !== 0 && element.fontName) referenced.add(element.fontName);\n }\n }\n return [...referenced].sort((left, right) => left.localeCompare(right));\n}\n\ninterface DwgShxStyles {\n byReference: Map<string, string>;\n shapeFonts: string[];\n}\n\nfunction extractShxStyles(rawDb: Record<string, unknown>): DwgShxStyles {\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n const candidates = [rawDb.STYLE, rawDb.styles, tables?.STYLE, tables?.styles];\n const byReference = new Map<string, string>();\n const shapeFonts = new Set<string>();\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n if (!item || typeof item !== 'object') continue;\n const record = item as Record<string, unknown>;\n const font = stringOrUndefined(record.font ?? record.fontFileName ?? record.primaryFontFileName);\n if (!font || !/\\.shx$/i.test(font)) continue;\n const flag = numberOrUndefined(record.standardFlag ?? record.flag) ?? 0;\n if ((flag & 1) === 1) shapeFonts.add(font);\n for (const reference of [record.handle, record.id, record.name]) {\n const key = styleReferenceKey(reference);\n if (key) byReference.set(key, font);\n }\n }\n }\n return { byReference, shapeFonts: [...shapeFonts] };\n}\n\nfunction normalizeDwgEntity(record: Record<string, unknown>, options: { keepRaw?: boolean; includeUnknownProperties?: boolean }): CadEntity {\n const entity = normalizeCadEntity(record, undefined, { ...options, numericColorMode: 'rgb' });\n const rgb = numberOrUndefined(record.color);\n // @mlightcad/libredwg-web exposes DwgEntity.color as a 24-bit RGB value,\n // while DXF parsers commonly expose `color` as an ACI index. DWG normalization\n // must therefore preserve `color` as trueColor even for low RGB values such as\n // 0x0000ff; otherwise valid DWG colors are interpreted as ACI and many files\n // render as a single foreground color.\n if (rgb !== undefined && rgb >= 0 && rgb <= 0xffffff) {\n entity.color = rgb;\n entity.trueColor = rgb;\n }\n entity.colorIndex = numberOrUndefined(record.colorIndex ?? record.colorNumber ?? record.aci) ?? entity.colorIndex;\n entity.colorName = stringOrUndefined(record.colorName ?? record.color_name) ?? entity.colorName;\n const flag = numberOrUndefined(record.flag ?? record.flags);\n if (flag !== undefined) entity.flag = flag;\n const type = String(record.type ?? record.entityType ?? '').toUpperCase();\n const classicPolyline = /^(POLYLINE|POLYLINE_2D|POLYLINE2D|POLYLINE_3D|POLYLINE3D)$/.test(type);\n if (record.isClosed === true || record.closed === true || (classicPolyline && (Number(flag ?? 0) & 1) === 1)\n || (type === 'LWPOLYLINE' && (Number(flag ?? 0) & 0x200) === 0x200)) {\n entity.isClosed = true;\n }\n return entity;\n}\n\nfunction isRenderableAci(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && Math.abs(Math.trunc(value)) >= 1 && Math.abs(Math.trunc(value)) <= 255;\n}\n\nfunction normalizeHeader(header: unknown, version: unknown): Record<string, unknown> {\n const result = header && typeof header === 'object' ? { ...(header as Record<string, unknown>) } : {};\n if (version) result.dwgVersion = version;\n return result;\n}\n\nfunction extractLayers(rawDb: Record<string, unknown>, options: { keepRaw?: boolean }): Record<string, CadLayer> {\n const result: Record<string, CadLayer> = {};\n const candidates: unknown[] = [];\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n for (const key of ['LAYER', 'layer', 'layers']) {\n const value = rawDb[key] ?? tables?.[key];\n if (value) candidates.push(value);\n }\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n const record = item as Record<string, unknown>;\n const name = stringOrUndefined(record.name ?? record.layerName ?? record.entryName);\n if (!name) continue;\n const colorIndex = numberOrUndefined(record.colorIndex ?? record.colorNumber);\n const rawRgb = numberOrUndefined(record.trueColor ?? record.true_color ?? record.truecolor ?? record.colorRGB ?? record.colorRgb ?? record.rgbColor ?? record.rgb);\n const convertedRgb = numberOrUndefined(record.color);\n const useIndexedColor = isRenderableAci(colorIndex);\n const trueColor = rawRgb ?? (!useIndexedColor && convertedRgb !== undefined && convertedRgb >= 0 && convertedRgb <= 0xffffff ? convertedRgb : undefined);\n const layer: CadLayer = {\n name,\n color: useIndexedColor ? undefined : (record.color ?? record.colorName) as CadLayer['color'],\n colorIndex: colorIndex ?? (convertedRgb !== undefined && Math.abs(convertedRgb) <= 257 ? convertedRgb : undefined),\n trueColor,\n lineType: stringOrUndefined(record.lineType ?? record.linetype),\n lineweight: numberOrUndefined(record.lineweight ?? record.lineWeight),\n isVisible: record.isVisible === false || record.off === true || Number(colorIndex ?? record.color ?? 1) < 0 ? false : true,\n isFrozen: Boolean(record.isFrozen ?? record.frozen),\n isLocked: Boolean(record.isLocked ?? record.locked),\n raw: options.keepRaw ? record : undefined\n };\n addLayer(result, layer);\n }\n }\n return result;\n}\n\nfunction extractLineTypes(rawDb: Record<string, unknown>, options: { keepRaw?: boolean }, styles: DwgShxStyles): Record<string, CadLineType> {\n const result: Record<string, CadLineType> = {};\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n const candidates = [rawDb.LTYPE, rawDb.ltype, rawDb.lineTypes, tables?.LTYPE, tables?.ltype, tables?.lineTypes];\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n const record = item as Record<string, unknown>;\n const name = stringOrUndefined(record.name ?? record.lineTypeName ?? record.entryName);\n if (!name) continue;\n const rawPattern = Array.isArray(record.pattern)\n ? record.pattern\n : Array.isArray(record.dashes)\n ? record.dashes\n : [];\n const pattern = rawPattern.flatMap((entry) => {\n if (typeof entry === 'number') return [{ length: entry }];\n if (!entry || typeof entry !== 'object') return [];\n const part = entry as Record<string, unknown>;\n const length = numberOrUndefined(part.elementLength ?? part.length ?? part.dashLength);\n if (length === undefined) return [];\n const convertedShapeCode = numberOrUndefined(part.elementTypeFlag);\n const convertedTypeFlag = numberOrUndefined(part.shapeNumber);\n // @mlightcad/libredwg-web 0.7.x maps LibreDWG's internal names in the\n // opposite direction: complex_shapecode is DXF group 75 (shape number)\n // and shape_flag is group 74 (element type). Restore the public DXF\n // semantics here instead of leaking the converter mismatch downstream.\n const hasLibreDwgPair = convertedShapeCode !== undefined && convertedTypeFlag !== undefined;\n const elementTypeFlag = hasLibreDwgPair ? convertedTypeFlag : numberOrUndefined(part.typeFlag ?? part.elementTypeFlag);\n const styleHandle = stringOrUndefined(part.styleObjectId ?? part.styleHandle ?? part.style);\n const fontName = (styleHandle ? styles.byReference.get(styleReferenceKey(styleHandle)) : undefined)\n ?? ((Number(elementTypeFlag ?? 0) & 4) === 4 && styles.shapeFonts.length === 1 ? styles.shapeFonts[0] : undefined);\n return [{\n length,\n elementTypeFlag,\n shapeNumber: hasLibreDwgPair ? convertedShapeCode : numberOrUndefined(part.shapeCode ?? part.shapeNumber),\n scale: numberOrUndefined(part.scale),\n rotation: numberOrUndefined(part.rotation),\n offsetX: numberOrUndefined(part.offsetX),\n offsetY: numberOrUndefined(part.offsetY),\n text: stringOrUndefined(part.text),\n styleHandle,\n fontName\n }];\n });\n addLineType(result, {\n name,\n handle: stringOrUndefined(record.handle ?? record.id),\n description: stringOrUndefined(record.description),\n totalPatternLength: numberOrUndefined(record.totalPatternLength ?? record.patternLength),\n pattern,\n raw: options.keepRaw ? record : undefined\n });\n }\n }\n return result;\n}\n\nfunction styleReferenceKey(value: unknown): string {\n return String(value ?? '').trim().replace(/^0x/i, '').replace(/^0+(?=[0-9a-f])/i, '').toLowerCase();\n}\n\nfunction extractSavedView(rawDb: Record<string, unknown>, header: Record<string, unknown>): { view?: CadSavedView; warning?: string } {\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n const vports = expandCandidate(rawDb.VPORT ?? rawDb.vports ?? tables?.VPORT ?? tables?.vports)\n .filter((item): item is Record<string, unknown> => !!item && typeof item === 'object');\n const active = vports.find((record) => String(record.name ?? '').trim().toLowerCase() === '*active');\n const source = active ? 'vport' as const : 'header-ucs' as const;\n const record = active ?? header;\n const ucsOrigin = pointFromUnknown(record.ucsOrigin ?? record.UCSORG ?? header.UCSORG);\n const ucsXAxis = pointFromUnknown(record.ucsXAxis ?? record.UCSXDIR ?? header.UCSXDIR);\n const ucsYAxis = pointFromUnknown(record.ucsYAxis ?? record.UCSYDIR ?? header.UCSYDIR);\n const twistAngle = numberOrUndefined(record.viewTwistAngle ?? record.twistAngle ?? record.VIEWTWIST) ?? 0;\n const direction = pointFromUnknown(record.viewDirectionFromTarget ?? record.viewDirection ?? record.direction ?? record.VIEWDIR);\n const hasNonWorldUcs = !isWorldUcs(ucsOrigin, ucsXAxis, ucsYAxis);\n const hasViewData = Boolean(active)\n || Boolean(direction)\n || hasNonWorldUcs\n || Math.abs(twistAngle) > 1e-12;\n if (!hasViewData) return {};\n const planView = isPlanViewDirection(direction);\n const sceneTransform = planView\n ? createSavedViewTransform(ucsOrigin, ucsXAxis, ucsYAxis, twistAngle)\n : { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };\n const view: CadSavedView = {\n source,\n name: stringOrUndefined(record.name),\n handle: stringOrUndefined(record.handle),\n center: pointFromUnknown(record.center ?? record.VIEWCTR),\n target: pointFromUnknown(record.viewTarget ?? record.target ?? record.TARGET),\n direction,\n viewHeight: numberOrUndefined(record.viewHeight ?? record.height ?? record.VIEWSIZE),\n aspectRatio: numberOrUndefined(record.aspectRatio),\n twistAngle,\n ucsOrigin,\n ucsXAxis,\n ucsYAxis,\n sceneTransformApplied: planView,\n sceneTransform\n };\n return planView\n ? { view }\n : {\n view,\n warning: 'The saved CAD view has a missing, non-finite, or tilted VIEWDIR. File Viewer kept world coordinates instead of applying an unsafe 2D UCS/PLAN rotation.'\n };\n}\n\nfunction createSavedViewTransform(\n origin: CadPoint3D | undefined,\n rawXAxis: CadPoint3D | undefined,\n rawYAxis: CadPoint3D | undefined,\n twistAngle: number\n): CadSceneTransform2D {\n const xAxis = normalizePlanAxis(rawXAxis) ?? { x: 1, y: 0 };\n const yAxisCandidate = normalizePlanAxis(rawYAxis) ?? { x: -xAxis.y, y: xAxis.x };\n const projection = xAxis.x * yAxisCandidate.x + xAxis.y * yAxisCandidate.y;\n const orthogonalY = normalizePlanAxis({\n x: yAxisCandidate.x - xAxis.x * projection,\n y: yAxisCandidate.y - xAxis.y * projection\n }) ?? { x: -xAxis.y, y: xAxis.x };\n const base: CadSceneTransform2D = {\n a: xAxis.x,\n b: orthogonalY.x,\n c: xAxis.y,\n d: orthogonalY.y,\n e: origin ? -(origin.x * xAxis.x + origin.y * xAxis.y) : 0,\n f: origin ? -(origin.x * orthogonalY.x + origin.y * orthogonalY.y) : 0\n };\n return multiplyMatrix(rotationMatrix(Number.isFinite(twistAngle) ? twistAngle : 0), base);\n}\n\nfunction normalizePlanAxis(axis: CadPoint3D | undefined): { x: number; y: number } | undefined {\n if (!axis || Math.abs(Number(axis.z ?? 0)) > 1e-6) return undefined;\n const length = Math.hypot(axis.x, axis.y);\n if (!Number.isFinite(length) || length < 1e-12) return undefined;\n return { x: axis.x / length, y: axis.y / length };\n}\n\nfunction isPlanViewDirection(direction: CadPoint3D | undefined): boolean {\n if (!direction || !Number.isFinite(direction.x) || !Number.isFinite(direction.y) || !Number.isFinite(direction.z)) return false;\n const length = Math.hypot(direction.x, direction.y, Number(direction.z));\n if (!Number.isFinite(length) || length < 1e-12) return false;\n return Math.hypot(direction.x, direction.y) / length <= 1e-4\n && Math.abs(Number(direction.z)) / length >= 1 - 1e-8;\n}\n\nfunction isWorldUcs(\n origin: CadPoint3D | undefined,\n xAxis: CadPoint3D | undefined,\n yAxis: CadPoint3D | undefined\n): boolean {\n const close = (value: number | undefined, expected: number) => Number.isFinite(value) && Math.abs(Number(value) - expected) <= 1e-10;\n const originWorld = !origin || (close(origin.x, 0) && close(origin.y, 0) && close(origin.z ?? 0, 0));\n const xWorld = !xAxis || (close(xAxis.x, 1) && close(xAxis.y, 0) && close(xAxis.z ?? 0, 0));\n const yWorld = !yAxis || (close(yAxis.x, 0) && close(yAxis.y, 1) && close(yAxis.z ?? 0, 0));\n return originWorld && xWorld && yWorld;\n}\n\nfunction extractBlocks(rawDb: Record<string, unknown>, options: { keepRaw?: boolean }): Record<string, CadBlock> {\n const result: Record<string, CadBlock> = {};\n const candidates: unknown[] = [rawDb.blocks, rawDb.blockHeaders, rawDb.block_records, rawDb.blockRecords];\n const tables = rawDb.tables as Record<string, unknown> | undefined;\n candidates.push(tables?.BLOCK, tables?.BLOCK_RECORD, tables?.blocks);\n const normalizeOptions = { keepRaw: Boolean(options.keepRaw), includeUnknownProperties: Boolean(options.keepRaw) };\n for (const candidate of candidates) {\n for (const item of expandCandidate(candidate)) {\n const record = item as Record<string, unknown>;\n const name = stringOrUndefined(record.name ?? record.blockName ?? record.name2);\n if (!name) continue;\n const rawEntities = Array.isArray(record.entities) ? record.entities : Array.isArray(record.ownedObjects) ? record.ownedObjects : [];\n const entities: CadEntity[] = rawEntities\n .filter((entry): entry is Record<string, unknown> => !!entry && typeof entry === 'object')\n .map((entry) => normalizeDwgEntity(entry, normalizeOptions));\n addBlock(result, {\n name,\n basePoint: pointFromUnknown(record.basePoint ?? record.origin) ?? { x: 0, y: 0 },\n entities,\n raw: options.keepRaw ? record : undefined\n });\n }\n }\n return result;\n}\n\nfunction expandCandidate(candidate: unknown): unknown[] {\n if (!candidate) return [];\n if (Array.isArray(candidate)) return candidate;\n if (typeof candidate !== 'object') return [];\n const record = candidate as Record<string, unknown>;\n const directValues = Object.values(record).filter((value) => value && typeof value === 'object');\n const arrays = ['entries', 'records', 'items', 'values', 'layers', 'blocks'].flatMap((key) => Array.isArray(record[key]) ? record[key] as unknown[] : []);\n if (arrays.length > 0) return arrays;\n return directValues;\n}\n\nfunction normalizeWasmPath(wasmPath: string): string {\n const trimmed = wasmPath.trim() || '/wasm';\n if (trimmed === '/') return getRuntimeOrigin();\n const withoutTrailingSlash = trimmed.replace(/\\/+$/, '');\n if (isAbsoluteUrl(withoutTrailingSlash)) return withoutTrailingSlash;\n if (withoutTrailingSlash.startsWith('/')) return `${getRuntimeOrigin()}${withoutTrailingSlash}`;\n return new URL(withoutTrailingSlash, getRuntimeBaseUrl()).href.replace(/\\/+$/, '');\n}\n\nfunction getLibreDwgWasmUrl(wasmPath: string): string {\n return new URL('libredwg-web.wasm', ensureTrailingSlash(wasmPath)).href;\n}\n\nfunction ensureTrailingSlash(value: string): string {\n return value.endsWith('/') ? value : `${value}/`;\n}\n\nfunction isAbsoluteUrl(value: string): boolean {\n return /^[a-z][a-z0-9+.-]*:/i.test(value);\n}\n\nfunction getRuntimeBaseUrl(): string {\n if (typeof document !== 'undefined' && document.baseURI) return document.baseURI;\n if (typeof location !== 'undefined' && location.href) return location.href;\n return 'http://localhost/';\n}\n\nfunction getRuntimeOrigin(): string {\n if (typeof location !== 'undefined' && location.origin) return location.origin;\n return new URL(getRuntimeBaseUrl()).origin;\n}\n\nasync function fetchWasmBinary(url: string): Promise<Uint8Array> {\n if (typeof fetch !== 'function') {\n throw new Error('fetch() is not available, so the LibreDWG WASM binary cannot be loaded.');\n }\n\n const response = await fetch(url, { credentials: 'same-origin', cache: 'force-cache' });\n if (!response.ok) {\n throw new Error(`WASM asset request failed with HTTP ${response.status} for ${url}.`);\n }\n\n const bytes = new Uint8Array(await response.arrayBuffer());\n if (!hasWasmMagic(bytes)) {\n const preview = decodeAsciiPreview(bytes);\n const contentType = response.headers.get('content-type') ?? 'unknown content-type';\n throw new Error(`Invalid WASM asset at ${url}. Expected bytes 00 61 73 6d, got ${formatFirstBytes(bytes)} (${contentType}). The server probably returned an HTML fallback page instead of libredwg-web.wasm. Response preview: ${preview}`);\n }\n\n return bytes;\n}\n\nfunction hasWasmMagic(bytes: Uint8Array): boolean {\n return bytes.length >= 4 && bytes[0] === 0x00 && bytes[1] === 0x61 && bytes[2] === 0x73 && bytes[3] === 0x6d;\n}\n\nfunction formatFirstBytes(bytes: Uint8Array): string {\n return Array.from(bytes.slice(0, 4)).map((byte) => byte.toString(16).padStart(2, '0')).join(' ');\n}\n\nfunction decodeAsciiPreview(bytes: Uint8Array): string {\n const text = Array.from(bytes.slice(0, 32))\n .map((byte) => byte >= 32 && byte <= 126 ? String.fromCharCode(byte) : '.')\n .join('');\n return JSON.stringify(text);\n}\n","/// <reference lib=\"webworker\" />\n\nimport { createLibreDwg, parseDwgBytes } from './DwgParser';\nimport type { CadLoadOptions, CadLoadProgress } from '../../core/types';\n\ntype DwgWorkerLoadRequest = {\n type: 'load';\n requestId: number;\n bytes: ArrayBuffer;\n fileName?: string;\n options?: CadLoadOptions;\n};\n\ntype DwgWorkerWarmupRequest = {\n type: 'warmup';\n requestId: number;\n options?: CadLoadOptions;\n};\n\ntype DwgWorkerRequest = DwgWorkerLoadRequest | DwgWorkerWarmupRequest;\n\nconst scope = self as DedicatedWorkerGlobalScope;\n\nscope.postMessage({ type: 'ready' });\n\nscope.onmessage = async (event: MessageEvent<DwgWorkerRequest>) => {\n const request = event.data;\n if (!request) return;\n const started = performance.now();\n const emit = (progress: CadLoadProgress) => {\n scope.postMessage({ type: 'progress', requestId: request.requestId, progress });\n };\n\n try {\n if (request.type === 'warmup') {\n emit({ phase: 'wasm-init', format: 'dwg', message: 'Warming LibreDWG WebAssembly instance…' });\n await createLibreDwg(request.options?.wasmPath ?? '/wasm/');\n scope.postMessage({ type: 'warmup-result', requestId: request.requestId, elapsedMs: performance.now() - started });\n return;\n }\n\n if (request.type !== 'load') return;\n emit({ phase: 'worker-ready', format: 'dwg', message: 'DWG worker received file bytes.', total: request.bytes.byteLength });\n const result = await parseDwgBytes(new Uint8Array(request.bytes), {\n ...request.options,\n sourceName: request.fileName,\n keepRaw: Boolean(request.options?.keepRaw),\n onProgress: emit\n });\n result.document.metadata.loaderMode = 'worker';\n result.elapsedMs = performance.now() - started;\n scope.postMessage({ type: 'result', requestId: request.requestId, result });\n } catch (error) {\n const normalized = normalizeWorkerError(error);\n scope.postMessage({ type: 'error', requestId: request.requestId, error: normalized });\n }\n};\n\nfunction normalizeWorkerError(error: unknown): { name?: string; message: string; stack?: string } {\n if (error instanceof Error) return { name: error.name, message: error.message, stack: error.stack };\n return { message: String(error) };\n}\n","export var DwgCodePage;\n(function (DwgCodePage) {\n DwgCodePage[DwgCodePage[\"CP_UTF8\"] = 0] = \"CP_UTF8\";\n DwgCodePage[DwgCodePage[\"CP_US_ASCII\"] = 1] = \"CP_US_ASCII\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_1\"] = 2] = \"CP_ISO_8859_1\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_2\"] = 3] = \"CP_ISO_8859_2\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_3\"] = 4] = \"CP_ISO_8859_3\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_4\"] = 5] = \"CP_ISO_8859_4\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_5\"] = 6] = \"CP_ISO_8859_5\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_6\"] = 7] = \"CP_ISO_8859_6\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_7\"] = 8] = \"CP_ISO_8859_7\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_8\"] = 9] = \"CP_ISO_8859_8\";\n DwgCodePage[DwgCodePage[\"CP_ISO_8859_9\"] = 10] = \"CP_ISO_8859_9\";\n DwgCodePage[DwgCodePage[\"CP_CP437\"] = 11] = \"CP_CP437\";\n DwgCodePage[DwgCodePage[\"CP_CP850\"] = 12] = \"CP_CP850\";\n DwgCodePage[DwgCodePage[\"CP_CP852\"] = 13] = \"CP_CP852\";\n DwgCodePage[DwgCodePage[\"CP_CP855\"] = 14] = \"CP_CP855\";\n DwgCodePage[DwgCodePage[\"CP_CP857\"] = 15] = \"CP_CP857\";\n DwgCodePage[DwgCodePage[\"CP_CP860\"] = 16] = \"CP_CP860\";\n DwgCodePage[DwgCodePage[\"CP_CP861\"] = 17] = \"CP_CP861\";\n DwgCodePage[DwgCodePage[\"CP_CP863\"] = 18] = \"CP_CP863\";\n DwgCodePage[DwgCodePage[\"CP_CP864\"] = 19] = \"CP_CP864\";\n DwgCodePage[DwgCodePage[\"CP_CP865\"] = 20] = \"CP_CP865\";\n DwgCodePage[DwgCodePage[\"CP_CP869\"] = 21] = \"CP_CP869\";\n DwgCodePage[DwgCodePage[\"CP_CP932\"] = 22] = \"CP_CP932\";\n DwgCodePage[DwgCodePage[\"CP_MACINTOSH\"] = 23] = \"CP_MACINTOSH\";\n DwgCodePage[DwgCodePage[\"CP_BIG5\"] = 24] = \"CP_BIG5\";\n DwgCodePage[DwgCodePage[\"CP_CP949\"] = 25] = \"CP_CP949\";\n DwgCodePage[DwgCodePage[\"CP_JOHAB\"] = 26] = \"CP_JOHAB\";\n DwgCodePage[DwgCodePage[\"CP_CP866\"] = 27] = \"CP_CP866\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1250\"] = 28] = \"CP_ANSI_1250\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1251\"] = 29] = \"CP_ANSI_1251\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1252\"] = 30] = \"CP_ANSI_1252\";\n DwgCodePage[DwgCodePage[\"CP_GB2312\"] = 31] = \"CP_GB2312\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1253\"] = 32] = \"CP_ANSI_1253\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1254\"] = 33] = \"CP_ANSI_1254\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1255\"] = 34] = \"CP_ANSI_1255\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1256\"] = 35] = \"CP_ANSI_1256\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1257\"] = 36] = \"CP_ANSI_1257\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_874\"] = 37] = \"CP_ANSI_874\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_932\"] = 38] = \"CP_ANSI_932\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_936\"] = 39] = \"CP_ANSI_936\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_949\"] = 40] = \"CP_ANSI_949\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_950\"] = 41] = \"CP_ANSI_950\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1361\"] = 42] = \"CP_ANSI_1361\";\n DwgCodePage[DwgCodePage[\"CP_UTF16\"] = 43] = \"CP_UTF16\";\n DwgCodePage[DwgCodePage[\"CP_ANSI_1258\"] = 44] = \"CP_ANSI_1258\";\n DwgCodePage[DwgCodePage[\"CP_UNDEFINED\"] = 255] = \"CP_UNDEFINED\"; // mostly R11\n})(DwgCodePage || (DwgCodePage = {}));\nconst encodings = [\n 'utf-8', // 0\n 'utf-8', // US ASCII\n 'iso-8859-1',\n 'iso-8859-2',\n 'iso-8859-3',\n 'iso-8859-4',\n 'iso-8859-5',\n 'iso-8859-6',\n 'iso-8859-7',\n 'iso-8859-8',\n 'iso-8859-9', // 10\n 'utf-8', // DOS English\n 'utf-8', // 12 DOS Latin-1\n 'utf-8', // DOS Central European\n 'utf-8', // DOS Cyrillic\n 'utf-8', // DOS Turkish\n 'utf-8', // DOS Portoguese\n 'utf-8', // DOS Icelandic\n 'utf-8', // DOS Hebrew\n 'utf-8', // DOS Arabic (IBM)\n 'utf-8', // DOS Nordic\n 'utf-8', // DOS Greek\n 'shift-jis', // DOS Japanese (shiftjis)\n 'macintosh', // 23\n 'big5',\n 'utf-8', // Korean (Wansung + Johab)\n 'utf-8', // Johab?\n 'ibm866', // Russian\n 'windows-1250', // Central + Eastern European\n 'windows-1251', // Cyrillic\n 'windows-1252', // Western European\n 'gbk', // EUC-CN Chinese\n 'windows-1253', // Greek\n 'windows-1254', // Turkish\n 'windows-1255', // Hebrew\n 'windows-1256', // Arabic\n 'windows-1257', // Baltic\n 'windows-874', // Thai\n 'shift-jis', // 38 Japanese (extended shiftjis, windows-31j)\n 'gbk', // 39 Simplified Chinese\n 'euc-kr', // 40 Korean Wansung\n 'big5', // 41 Trad Chinese\n 'utf-8', // 42 Korean Wansung\n 'utf-16le',\n 'windows-1258' // Vietnamese\n];\nexport const dwgCodePageToEncoding = (codepage) => {\n return encodings[codepage];\n};\n//# sourceMappingURL=codepage.js.map","export var DwgDimensionType;\n(function (DwgDimensionType) {\n DwgDimensionType[DwgDimensionType[\"Rotated\"] = 0] = \"Rotated\";\n DwgDimensionType[DwgDimensionType[\"Aligned\"] = 1] = \"Aligned\";\n DwgDimensionType[DwgDimensionType[\"Angular\"] = 2] = \"Angular\";\n DwgDimensionType[DwgDimensionType[\"Diameter\"] = 3] = \"Diameter\";\n DwgDimensionType[DwgDimensionType[\"Radius\"] = 4] = \"Radius\";\n DwgDimensionType[DwgDimensionType[\"Angular3Point\"] = 5] = \"Angular3Point\";\n DwgDimensionType[DwgDimensionType[\"Ordinate\"] = 6] = \"Ordinate\";\n DwgDimensionType[DwgDimensionType[\"ReferenceIsExclusive\"] = 32] = \"ReferenceIsExclusive\";\n DwgDimensionType[DwgDimensionType[\"IsOrdinateXTypeFlag\"] = 64] = \"IsOrdinateXTypeFlag\";\n DwgDimensionType[DwgDimensionType[\"IsCustomTextPositionFlag\"] = 128] = \"IsCustomTextPositionFlag\";\n})(DwgDimensionType || (DwgDimensionType = {}));\nexport var DwgAttachmentPoint;\n(function (DwgAttachmentPoint) {\n DwgAttachmentPoint[DwgAttachmentPoint[\"TopLeft\"] = 1] = \"TopLeft\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"TopCenter\"] = 2] = \"TopCenter\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"TopRight\"] = 3] = \"TopRight\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"MiddleRight\"] = 6] = \"MiddleRight\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"BottomLeft\"] = 7] = \"BottomLeft\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"BottomCenter\"] = 8] = \"BottomCenter\";\n DwgAttachmentPoint[DwgAttachmentPoint[\"BottomRight\"] = 9] = \"BottomRight\";\n})(DwgAttachmentPoint || (DwgAttachmentPoint = {}));\nexport var DwgDimensionTextLineSpacing;\n(function (DwgDimensionTextLineSpacing) {\n DwgDimensionTextLineSpacing[DwgDimensionTextLineSpacing[\"AtLeast\"] = 1] = \"AtLeast\";\n DwgDimensionTextLineSpacing[DwgDimensionTextLineSpacing[\"Exact\"] = 2] = \"Exact\";\n})(DwgDimensionTextLineSpacing || (DwgDimensionTextLineSpacing = {}));\nexport var DwgDimensionTextVertical;\n(function (DwgDimensionTextVertical) {\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Center\"] = 0] = \"Center\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Above\"] = 1] = \"Above\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Outside\"] = 2] = \"Outside\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"JIS\"] = 3] = \"JIS\";\n DwgDimensionTextVertical[DwgDimensionTextVertical[\"Below\"] = 4] = \"Below\";\n})(DwgDimensionTextVertical || (DwgDimensionTextVertical = {}));\nexport var DwgDimensionZeroSuppression;\n(function (DwgDimensionZeroSuppression) {\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Feet\"] = 0] = \"Feet\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"None\"] = 1] = \"None\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Inch\"] = 2] = \"Inch\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"FeetAndInch\"] = 3] = \"FeetAndInch\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Leading\"] = 4] = \"Leading\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"Trailing\"] = 8] = \"Trailing\";\n DwgDimensionZeroSuppression[DwgDimensionZeroSuppression[\"LeadingAndTrailing\"] = 12] = \"LeadingAndTrailing\";\n})(DwgDimensionZeroSuppression || (DwgDimensionZeroSuppression = {}));\nexport var DwgDimensionZeroSuppressionAngular;\n(function (DwgDimensionZeroSuppressionAngular) {\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"None\"] = 0] = \"None\";\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"Leading\"] = 1] = \"Leading\";\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"Trailing\"] = 2] = \"Trailing\";\n DwgDimensionZeroSuppressionAngular[DwgDimensionZeroSuppressionAngular[\"LeadingAndTrailing\"] = 3] = \"LeadingAndTrailing\";\n})(DwgDimensionZeroSuppressionAngular || (DwgDimensionZeroSuppressionAngular = {}));\nexport var DwgDimensionTextHorizontal;\n(function (DwgDimensionTextHorizontal) {\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"Center\"] = 0] = \"Center\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"Left\"] = 1] = \"Left\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"Right\"] = 2] = \"Right\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"OverFirst\"] = 3] = \"OverFirst\";\n DwgDimensionTextHorizontal[DwgDimensionTextHorizontal[\"OverSecond\"] = 4] = \"OverSecond\";\n})(DwgDimensionTextHorizontal || (DwgDimensionTextHorizontal = {}));\nexport var DwgDimensionToleranceTextVertical;\n(function (DwgDimensionToleranceTextVertical) {\n DwgDimensionToleranceTextVertical[DwgDimensionToleranceTextVertical[\"Bottom\"] = 0] = \"Bottom\";\n DwgDimensionToleranceTextVertical[DwgDimensionToleranceTextVertical[\"Center\"] = 1] = \"Center\";\n DwgDimensionToleranceTextVertical[DwgDimensionToleranceTextVertical[\"Top\"] = 2] = \"Top\";\n})(DwgDimensionToleranceTextVertical || (DwgDimensionToleranceTextVertical = {}));\n//# sourceMappingURL=dimension.js.map","export var DwgHatchSolidFill;\n(function (DwgHatchSolidFill) {\n DwgHatchSolidFill[DwgHatchSolidFill[\"PatternFill\"] = 0] = \"PatternFill\";\n DwgHatchSolidFill[DwgHatchSolidFill[\"SolidFill\"] = 1] = \"SolidFill\";\n})(DwgHatchSolidFill || (DwgHatchSolidFill = {}));\nexport var DwgHatchAssociativity;\n(function (DwgHatchAssociativity) {\n DwgHatchAssociativity[DwgHatchAssociativity[\"NonAssociative\"] = 0] = \"NonAssociative\";\n DwgHatchAssociativity[DwgHatchAssociativity[\"Associative\"] = 1] = \"Associative\";\n})(DwgHatchAssociativity || (DwgHatchAssociativity = {}));\nexport var DwgHatchStyle;\n(function (DwgHatchStyle) {\n DwgHatchStyle[DwgHatchStyle[\"Normal\"] = 0] = \"Normal\";\n DwgHatchStyle[DwgHatchStyle[\"Outer\"] = 1] = \"Outer\";\n DwgHatchStyle[DwgHatchStyle[\"Ignore\"] = 2] = \"Ignore\";\n})(DwgHatchStyle || (DwgHatchStyle = {}));\nexport var DwgHatchPatternType;\n(function (DwgHatchPatternType) {\n DwgHatchPatternType[DwgHatchPatternType[\"UserDefined\"] = 0] = \"UserDefined\";\n DwgHatchPatternType[DwgHatchPatternType[\"Predefined\"] = 1] = \"Predefined\";\n DwgHatchPatternType[DwgHatchPatternType[\"Custom\"] = 2] = \"Custom\";\n})(DwgHatchPatternType || (DwgHatchPatternType = {}));\nexport var DwgHatchBoundaryAnnotation;\n(function (DwgHatchBoundaryAnnotation) {\n DwgHatchBoundaryAnnotation[DwgHatchBoundaryAnnotation[\"NotAnnotated\"] = 0] = \"NotAnnotated\";\n DwgHatchBoundaryAnnotation[DwgHatchBoundaryAnnotation[\"Annotated\"] = 1] = \"Annotated\";\n})(DwgHatchBoundaryAnnotation || (DwgHatchBoundaryAnnotation = {}));\nexport var DwgHatchGradientFlag;\n(function (DwgHatchGradientFlag) {\n DwgHatchGradientFlag[DwgHatchGradientFlag[\"Solid\"] = 0] = \"Solid\";\n DwgHatchGradientFlag[DwgHatchGradientFlag[\"Gradient\"] = 1] = \"Gradient\";\n})(DwgHatchGradientFlag || (DwgHatchGradientFlag = {}));\nexport var DwgHatchGradientColorFlag;\n(function (DwgHatchGradientColorFlag) {\n DwgHatchGradientColorFlag[DwgHatchGradientColorFlag[\"TwoColor\"] = 0] = \"TwoColor\";\n DwgHatchGradientColorFlag[DwgHatchGradientColorFlag[\"OneColor\"] = 1] = \"OneColor\";\n})(DwgHatchGradientColorFlag || (DwgHatchGradientColorFlag = {}));\nexport var DwgBoundaryPathTypeFlag;\n(function (DwgBoundaryPathTypeFlag) {\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Default\"] = 0] = \"Default\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"External\"] = 1] = \"External\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Polyline\"] = 2] = \"Polyline\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Derived\"] = 4] = \"Derived\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Textbox\"] = 8] = \"Textbox\";\n DwgBoundaryPathTypeFlag[DwgBoundaryPathTypeFlag[\"Outermost\"] = 16] = \"Outermost\";\n})(DwgBoundaryPathTypeFlag || (DwgBoundaryPathTypeFlag = {}));\nexport var DwgBoundaryPathEdgeType;\n(function (DwgBoundaryPathEdgeType) {\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Line\"] = 1] = \"Line\";\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Circular\"] = 2] = \"Circular\";\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Elliptic\"] = 3] = \"Elliptic\";\n DwgBoundaryPathEdgeType[DwgBoundaryPathEdgeType[\"Spline\"] = 4] = \"Spline\";\n})(DwgBoundaryPathEdgeType || (DwgBoundaryPathEdgeType = {}));\n//# sourceMappingURL=hatch.js.map","export var DwgPolylineFlag;\n(function (DwgPolylineFlag) {\n DwgPolylineFlag[DwgPolylineFlag[\"CLOSED_POLYLINE\"] = 1] = \"CLOSED_POLYLINE\";\n DwgPolylineFlag[DwgPolylineFlag[\"CURVE_FIT\"] = 2] = \"CURVE_FIT\";\n DwgPolylineFlag[DwgPolylineFlag[\"SPLINE_FIT\"] = 4] = \"SPLINE_FIT\";\n DwgPolylineFlag[DwgPolylineFlag[\"POLYLINE_3D\"] = 8] = \"POLYLINE_3D\";\n DwgPolylineFlag[DwgPolylineFlag[\"POLYGON_3D\"] = 16] = \"POLYGON_3D\";\n DwgPolylineFlag[DwgPolylineFlag[\"CLOSED_POLYGON\"] = 32] = \"CLOSED_POLYGON\";\n DwgPolylineFlag[DwgPolylineFlag[\"POLYFACE\"] = 64] = \"POLYFACE\";\n DwgPolylineFlag[DwgPolylineFlag[\"CONTINUOUS\"] = 128] = \"CONTINUOUS\";\n})(DwgPolylineFlag || (DwgPolylineFlag = {}));\nexport var DwgSmoothType;\n(function (DwgSmoothType) {\n DwgSmoothType[DwgSmoothType[\"NONE\"] = 0] = \"NONE\";\n DwgSmoothType[DwgSmoothType[\"QUADRATIC\"] = 5] = \"QUADRATIC\";\n DwgSmoothType[DwgSmoothType[\"CUBIC\"] = 6] = \"CUBIC\";\n DwgSmoothType[DwgSmoothType[\"BEZIER\"] = 8] = \"BEZIER\";\n})(DwgSmoothType || (DwgSmoothType = {}));\n//# sourceMappingURL=polyline.js.map","export var DwgTextGenerationFlag;\n(function (DwgTextGenerationFlag) {\n DwgTextGenerationFlag[DwgTextGenerationFlag[\"NONE\"] = 0] = \"NONE\";\n DwgTextGenerationFlag[DwgTextGenerationFlag[\"MIRRORED_X\"] = 2] = \"MIRRORED_X\";\n DwgTextGenerationFlag[DwgTextGenerationFlag[\"MIRRORED_Y\"] = 4] = \"MIRRORED_Y\";\n})(DwgTextGenerationFlag || (DwgTextGenerationFlag = {}));\nexport var DwgTextHorizontalAlign;\n(function (DwgTextHorizontalAlign) {\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"LEFT\"] = 0] = \"LEFT\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"CENTER\"] = 1] = \"CENTER\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"RIGHT\"] = 2] = \"RIGHT\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"ALIGNED\"] = 3] = \"ALIGNED\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"MIDDLE\"] = 4] = \"MIDDLE\";\n DwgTextHorizontalAlign[DwgTextHorizontalAlign[\"FIT\"] = 5] = \"FIT\";\n})(DwgTextHorizontalAlign || (DwgTextHorizontalAlign = {}));\nexport var DwgTextVerticalAlign;\n(function (DwgTextVerticalAlign) {\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"BASELINE\"] = 0] = \"BASELINE\";\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"BOTTOM\"] = 1] = \"BOTTOM\";\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"MIDDLE\"] = 2] = \"MIDDLE\";\n DwgTextVerticalAlign[DwgTextVerticalAlign[\"TOP\"] = 3] = \"TOP\";\n})(DwgTextVerticalAlign || (DwgTextVerticalAlign = {}));\n//# sourceMappingURL=text.js.map","export const HEADER_VARIABLES = Object.freeze([\n 'ACADMAINTVER',\n 'ACADVER',\n 'ANGBASE',\n 'ANGDIR',\n 'ATTMODE',\n 'AUNITS',\n 'AUPREC',\n 'CECOLOR',\n 'CELTSCALE',\n 'CELTYPE',\n 'CELWEIGHT',\n 'CEPSNID',\n 'CEPSNTYPE',\n 'CHAMFERA',\n 'CHAMFERB',\n 'CHAMFERC',\n 'CHAMFERD',\n 'CLAYER',\n 'CMLJUST',\n 'CMLSCALE',\n 'CMLSTYLE',\n 'CSHADOW',\n 'DIMADEC',\n 'DIMALT',\n 'DIMALTD',\n 'DIMALTF',\n 'DIMALTRND',\n 'DIMALTTD',\n 'DIMALTTZ',\n 'DIMALTU',\n 'DIMALTZ',\n 'DIMAPOST',\n 'DIMASO',\n 'DIMASSOC',\n 'DIMASZ',\n 'DIMATFIT',\n 'DIMAUNIT',\n 'DIMAZIN',\n 'DIMBLK',\n 'DIMBLK1',\n 'DIMBLK2',\n 'DIMCEN',\n 'DIMCLRD',\n 'DIMCLRE',\n 'DIMCLRT',\n 'DIMDEC',\n 'DIMDLE',\n 'DIMDLI',\n 'DIMDSEP',\n 'DIMEXE',\n 'DIMEXO',\n 'DIMFAC',\n 'DIMGAP',\n 'DIMJUST',\n 'DIMLDRBLK',\n 'DIMLFAC',\n 'DIMLIM',\n 'DIMLUNIT',\n 'DIMLWD',\n 'DIMLWE',\n 'DIMPOST',\n 'DIMRND',\n 'DIMSAH',\n 'DIMSCALE',\n 'DIMSD1',\n 'DIMSD2',\n 'DIMSE1',\n 'DIMSE2',\n 'DIMSHO',\n 'DIMSOXD',\n 'DIMSTYLE',\n 'DIMTAD',\n 'DIMTDEC',\n 'DIMTFAC',\n 'DIMTIH',\n 'DIMTIX',\n 'DIMTM',\n 'DIMTMOVE',\n 'DIMTOFL',\n 'DIMTOH',\n 'DIMTOL',\n 'DIMTOLJ',\n 'DIMTP',\n 'DIMTSZ',\n 'DIMTVP',\n 'DIMTXSTY',\n 'DIMTXT',\n 'DIMTZIN',\n 'DIMUPT',\n 'DIMZIN',\n 'DISPSILH',\n 'DRAGVS',\n 'DWGCODEPAGE',\n 'ELEVATION',\n 'ENDCAPS',\n 'EXTMAX',\n 'EXTMIN',\n 'EXTNAMES',\n 'FILLETRAD',\n 'FILLMODE',\n 'FINGERPRINTGUID',\n 'HALOGAP',\n 'HANDSEED',\n 'HIDETEXT',\n 'HYPERLINKBASE',\n 'INDEXCTL',\n 'INSBASE',\n 'INSUNITS',\n 'INTERFERECOLOR',\n 'INTERFEREOBJVS',\n 'INTERFEREVPVS',\n 'INTERSECTIONCOLOR',\n 'INTERSECTIONDISPLAY',\n 'JOINSTYLE',\n 'LIMCHECK',\n 'LIMMAX',\n 'LIMMIN',\n 'LTSCALE',\n 'LUNITS',\n 'LUPREC',\n 'LWDISPLAY',\n 'MAXACTVP',\n 'MEASUREMENT',\n 'MENU',\n 'MIRRTEXT',\n 'OBSCOLOR',\n 'OBSLTYPE',\n 'ORTHOMODE',\n 'PDMODE',\n 'PDSIZE',\n 'PELEVATION',\n 'PEXTMAX',\n 'PEXTMIN',\n 'PINSBASE',\n 'PLIMCHECK',\n 'PLIMMAX',\n 'PLIMMIN',\n 'PLINEGEN',\n 'PLINEWID',\n 'PROJECTNAME',\n 'PROXYGRAPHICS',\n 'PSLTSCALE',\n 'PSTYLEMODE',\n 'PSVPSCALE',\n 'PUCSBASE',\n 'PUCSNAME',\n 'PUCSORG',\n 'PUCSORGBACK',\n 'PUCSORGBOTTOM',\n 'PUCSORGFRONT',\n 'PUCSORGLEFT',\n 'PUCSORGRIGHT',\n 'PUCSORGTOP',\n 'PUCSORTHOREF',\n 'PUCSORTHOVIEW',\n 'PUCSXDIR',\n 'PUCSYDIR',\n 'QTEXTMODE',\n 'REGENMODE',\n 'SHADEDGE',\n 'SHADEDIF',\n 'SHADOWPLANELOCATION',\n 'SKETCHINC',\n 'SKPOLY',\n 'SORTENTS',\n 'SPLINESEGS',\n 'SPLINETYPE',\n 'SURFTAB1',\n 'SURFTAB2',\n 'SURFTYPE',\n 'SURFU',\n 'SURFV',\n 'TDCREATE',\n 'TDINDWG',\n 'TDUCREATE',\n 'TDUPDATE',\n 'TDUSRTIMER',\n 'TDUUPDATE',\n 'TEXTSIZE',\n 'TEXTSTYLE',\n 'THICKNESS',\n 'TILEMODE',\n 'TRACEWID',\n 'TREEDEPTH',\n 'UCSBASE',\n 'UCSNAME',\n 'UCSORG',\n 'UCSORGBACK',\n 'UCSORGBOTTOM',\n 'UCSORGFRONT',\n 'UCSORGLEFT',\n 'UCSORGRIGHT',\n 'UCSORGTOP',\n 'UCSORTHOREF',\n 'UCSORTHOVIEW',\n 'UCSXDIR',\n 'UCSYDIR',\n 'UNITMODE',\n 'USERI1',\n 'USERI2',\n 'USERI3',\n 'USERI4',\n 'USERI5',\n 'USERR1',\n 'USERR2',\n 'USERR3',\n 'USERR4',\n 'USERR5',\n 'USRTIMER',\n 'VERSIONGUID',\n 'VISRETAIN',\n 'WORLDVIEW',\n 'XCLIPFRAME',\n 'XEDIT'\n]);\n//# sourceMappingURL=variables.js.map","/**\n * Duplicate record cloning flag (determines how to merge duplicate entries)\n * - 0: Not applicable\n * - 1: Keep existing\n * - 2: Use clone\n * - 3: <xref>$0$<name>\n * - 4: $0$<name>\n * - 5: Unmangle name\n */\nexport var DwgDictionaryCloningFlags;\n(function (DwgDictionaryCloningFlags) {\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"NotApplicable\"] = 0] = \"NotApplicable\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"KeepExisting\"] = 1] = \"KeepExisting\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"UseClone\"] = 2] = \"UseClone\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"XrefName\"] = 3] = \"XrefName\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"Name\"] = 4] = \"Name\";\n DwgDictionaryCloningFlags[DwgDictionaryCloningFlags[\"UnmangleName\"] = 5] = \"UnmangleName\";\n})(DwgDictionaryCloningFlags || (DwgDictionaryCloningFlags = {}));\n//# sourceMappingURL=dictionary.js.map","export const dwgVersions = [\n {\n type: 'invalid',\n hdr: 'INVALI',\n description: 'No DWG',\n version: 0\n },\n {\n type: 'r1.1',\n hdr: 'MC0.0',\n description: 'MicroCAD Release 1.1',\n version: 0\n },\n {\n type: 'r1.2',\n hdr: 'AC1.2',\n description: 'AutoCAD Release 1.2',\n version: 0\n },\n {\n type: 'r1.3',\n hdr: 'AC1.3',\n description: 'AutoCAD Release 1.3',\n version: 1\n },\n {\n type: 'r1.4',\n hdr: 'AC1.40',\n description: 'AutoCAD Release 1.4',\n version: 2\n },\n { type: 'r2.0b', hdr: 'AC1.50', description: 'AutoCAD 2.0 beta', version: 3 }, // not seen\n {\n type: 'r2.0',\n hdr: 'AC1.50',\n description: 'AutoCAD Release 2.0',\n version: 4\n },\n {\n type: 'r2.10',\n hdr: 'AC2.10',\n description: 'AutoCAD Release 2.10',\n version: 5\n },\n {\n type: 'r2.21',\n hdr: 'AC2.21',\n description: 'AutoCAD Release 2.21',\n version: 6\n },\n {\n type: 'r2.22',\n hdr: 'AC2.22',\n description: 'AutoCAD Release 2.22',\n version: 7\n },\n {\n type: 'r2.4',\n hdr: 'AC1001',\n description: 'AutoCAD Release 2.4',\n version: 8\n },\n {\n type: 'r2.5',\n hdr: 'AC1002',\n description: 'AutoCAD Release 2.5',\n version: 9\n },\n {\n type: 'r2.6',\n hdr: 'AC1003',\n description: 'AutoCAD Release 2.6',\n version: 10\n },\n { type: 'r9', hdr: 'AC1004', description: 'AutoCAD Release 9', version: 0xb },\n {\n type: 'r9c1',\n hdr: 'AC1005',\n description: 'AutoCAD Release 9c1',\n version: 0xc\n },\n {\n type: 'r10',\n hdr: 'AC1006',\n description: 'AutoCAD Release 10',\n version: 0xd\n },\n {\n type: 'r11b1',\n hdr: 'AC1007',\n description: 'AutoCAD 11 beta 1',\n version: 0xe\n },\n {\n type: 'r11b2',\n hdr: 'AC1008',\n description: 'AutoCAD 11 beta 2',\n version: 0xf\n },\n {\n type: 'r11',\n hdr: 'AC1009',\n description: 'AutoCAD Release 11/12 (LT R1/R2)',\n version: 0x10\n },\n {\n type: 'r13b1',\n hdr: 'AC1010',\n description: 'AutoCAD pre-R13 a',\n version: 0x11\n },\n {\n type: 'r13b2',\n hdr: 'AC1011',\n description: 'AutoCAD pre-R13 b',\n version: 0x12\n },\n {\n type: 'r13',\n hdr: 'AC1012',\n description: 'AutoCAD Release 13',\n version: 0x13\n },\n {\n type: 'r13c3',\n hdr: 'AC1013',\n description: 'AutoCAD Release 13c3',\n version: 0x14\n },\n {\n type: 'r14',\n hdr: 'AC1014',\n description: 'AutoCAD Release 14',\n version: 0x15\n },\n {\n type: 'r2000b',\n hdr: 'AC1500',\n description: 'AutoCAD 2000 beta',\n version: 0x16\n },\n {\n type: 'r2000',\n hdr: 'AC1015',\n description: 'AutoCAD Release 2000',\n version: 0x17\n },\n {\n type: 'r2000i',\n hdr: 'AC1016',\n description: 'AutoCAD Release 2000i',\n version: 0x17\n },\n {\n type: 'r2002',\n hdr: 'AC1017',\n description: 'AutoCAD Release 2002',\n version: 0x17\n },\n {\n type: 'r2004a',\n hdr: 'AC402a',\n description: 'AutoCAD 2004 alpha a',\n version: 0x18\n },\n {\n type: 'r2004b',\n hdr: 'AC402b',\n description: 'AutoCAD 2004 alpha b',\n version: 0x18\n },\n {\n type: 'r2004c',\n hdr: 'AC1018',\n description: 'AutoCAD 2004 beta',\n version: 0x18\n },\n // (includes versions AC1019/0x19 and AC1020/0x1a)\n {\n type: 'r2004',\n hdr: 'AC1018',\n description: 'AutoCAD Release 2004',\n version: 0x19\n },\n //{ type: \"r2005\", hdr: \"AC1019\", description: \"AutoCAD 2005\", version: 0x19 }, // not seen\n //{ type: \"r2006\", hdr: \"AC1020\", description: \"AutoCAD 2006\", version: 0x19 }, // not seen\n {\n type: 'r2007a',\n hdr: 'AC701a',\n description: 'AutoCAD 2007 alpha',\n version: 0x1a\n },\n {\n type: 'r2007b',\n hdr: 'AC1021',\n description: 'AutoCAD 2007 beta',\n version: 0x1a\n },\n {\n type: 'r2007',\n hdr: 'AC1021',\n description: 'AutoCAD Release 2007',\n version: 0x1b\n },\n //{ type: \"r2008\", hdr: \"AC1022\", description: \"AutoCAD 2008\", version: 0x1b }, // not seen\n //{ type: \"r2009\", hdr: \"AC1023\", description: \"AutoCAD 2009\", version: 0x1b }, // not seen\n {\n type: 'r2010b',\n hdr: 'AC1024',\n description: 'AutoCAD 2010 beta',\n version: 0x1c\n },\n {\n type: 'r2010',\n hdr: 'AC1024',\n description: 'AutoCAD Release 2010',\n version: 0x1d\n },\n //{ type: \"r2011\", hdr: \"AC1025\", description: \"AutoCAD 2011\", version: 0x1d }, // not seen\n //{ type: \"r2012\", hdr: \"AC1026\", description: \"AutoCAD 2012\", version: 0x1e }, // not seen\n {\n type: 'r2013b',\n hdr: 'AC1027',\n description: 'AutoCAD 2013 beta',\n version: 0x1e\n },\n {\n type: 'r2013',\n hdr: 'AC1027',\n description: 'AutoCAD Release 2013',\n version: 0x1f\n },\n //{ type: \"r2014\", hdr: \"AC1028\", description: \"AutoCAD 2014\", version: 0x1f }, // not seen\n //{ type: \"r2015\", hdr: \"AC1029\", description: \"AutoCAD 2015\", version: 0x1f }, // not seen\n //{ type: \"r2016\", hdr: \"AC1030\", description: \"AutoCAD 2016\", version: 0x1f }, // not seen\n //{ type: \"r2017\", hdr: \"AC1031\", description: \"AutoCAD 2017\", version: 0x20 }, // not seen\n {\n type: 'r2018b',\n hdr: 'AC1032',\n description: 'AutoCAD 2018 beta',\n version: 0x20\n },\n {\n type: 'r2018',\n hdr: 'AC1032',\n description: 'AutoCAD Release 2018',\n version: 0x21\n },\n //{ type: \"r2019\", \"AC1033\", description: \"AutoCAD Release 2019\", version: 0x22 }, // not seen\n //{ type: \"r2020\", \"AC1034\", description: \"AutoCAD Release 2020\", version: 0x23 }, // not seen\n //{ type: \"r2021\", \"AC1035\", description: \"AutoCAD Release 2021\", version: 0x23 }, // not seen\n {\n type: 'r2022b',\n hdr: 'AC103-4',\n description: 'AutoCAD 2022 beta',\n version: 0x24\n },\n { type: 'r>2022', hdr: '', description: 'AutoCAD Release >2022', version: 0 }\n];\n//# sourceMappingURL=version.js.map","/**\n * Runtime proxy for @mlightcad/libredwg-web/wasm/libredwg-web.js.\n *\n * The npm package root points Vite at a distribution file that embeds a huge\n * inline wasm data URL. The lean package wrapper imports the wasm glue file\n * directly, but Vite still tries to rewrite its `new URL('libredwg-web.wasm',\n * import.meta.url)` fallback and emits a duplicated .wasm asset.\n *\n * This proxy keeps the application bundle small: the worker loads the official\n * Emscripten glue from the public wasm directory at runtime, and DwgParser\n * provides the real wasm bytes through `wasmBinary`.\n */\nexport default async function createModule(moduleArg: Record<string, unknown> = {}): Promise<any> {\n const runtimeUrl = resolveRuntimeJsUrl(moduleArg);\n const module = await import(/* @vite-ignore */ runtimeUrl);\n const factory = (module as { default?: unknown; createModule?: unknown }).default ?? (module as { createModule?: unknown }).createModule ?? module;\n if (typeof factory !== 'function') {\n throw new Error(`LibreDWG runtime module at ${runtimeUrl} did not export a createModule function.`);\n }\n return (factory as (arg?: Record<string, unknown>) => Promise<any>)(moduleArg);\n}\n\nfunction resolveRuntimeJsUrl(moduleArg: Record<string, unknown>): string {\n const locateFile = moduleArg.locateFile;\n if (typeof locateFile === 'function') {\n try {\n const located = (locateFile as (filename: string, scriptDirectory?: string) => string)('libredwg-web.js', '');\n if (typeof located === 'string' && located.length > 0) return located;\n } catch {\n // Fall back to document-relative /wasm below.\n }\n }\n if (typeof document !== 'undefined' && document.baseURI) return new URL('wasm/libredwg-web.js', document.baseURI).href;\n if (typeof location !== 'undefined' && location.href) return new URL('/wasm/libredwg-web.js', location.origin).href;\n return '/wasm/libredwg-web.js';\n}\n","export var Dwg_Object_Supertype;\n(function (Dwg_Object_Supertype) {\n Dwg_Object_Supertype[Dwg_Object_Supertype[\"DWG_SUPERTYPE_ENTITY\"] = 0] = \"DWG_SUPERTYPE_ENTITY\";\n Dwg_Object_Supertype[Dwg_Object_Supertype[\"DWG_SUPERTYPE_OBJECT\"] = 1] = \"DWG_SUPERTYPE_OBJECT\";\n})(Dwg_Object_Supertype || (Dwg_Object_Supertype = {}));\nexport var Dwg_Object_Type;\n(function (Dwg_Object_Type) {\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UNUSED\"] = 0] = \"DWG_TYPE_UNUSED\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TEXT\"] = 1] = \"DWG_TYPE_TEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ATTRIB\"] = 2] = \"DWG_TYPE_ATTRIB\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ATTDEF\"] = 3] = \"DWG_TYPE_ATTDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCK\"] = 4] = \"DWG_TYPE_BLOCK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ENDBLK\"] = 5] = \"DWG_TYPE_ENDBLK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SEQEND\"] = 6] = \"DWG_TYPE_SEQEND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_INSERT\"] = 7] = \"DWG_TYPE_INSERT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MINSERT\"] = 8] = \"DWG_TYPE_MINSERT\";\n // DWG_TYPE_TRACE_old = 0x09, /* old TRACE r10-r11 only */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_2D\"] = 10] = \"DWG_TYPE_VERTEX_2D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_3D\"] = 11] = \"DWG_TYPE_VERTEX_3D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_MESH\"] = 12] = \"DWG_TYPE_VERTEX_MESH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_PFACE\"] = 13] = \"DWG_TYPE_VERTEX_PFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VERTEX_PFACE_FACE\"] = 14] = \"DWG_TYPE_VERTEX_PFACE_FACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_2D\"] = 15] = \"DWG_TYPE_POLYLINE_2D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_3D\"] = 16] = \"DWG_TYPE_POLYLINE_3D\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ARC\"] = 17] = \"DWG_TYPE_ARC\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CIRCLE\"] = 18] = \"DWG_TYPE_CIRCLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LINE\"] = 19] = \"DWG_TYPE_LINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ORDINATE\"] = 20] = \"DWG_TYPE_DIMENSION_ORDINATE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_LINEAR\"] = 21] = \"DWG_TYPE_DIMENSION_LINEAR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ALIGNED\"] = 22] = \"DWG_TYPE_DIMENSION_ALIGNED\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ANG3PT\"] = 23] = \"DWG_TYPE_DIMENSION_ANG3PT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_ANG2LN\"] = 24] = \"DWG_TYPE_DIMENSION_ANG2LN\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_RADIUS\"] = 25] = \"DWG_TYPE_DIMENSION_RADIUS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMENSION_DIAMETER\"] = 26] = \"DWG_TYPE_DIMENSION_DIAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINT\"] = 27] = \"DWG_TYPE_POINT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_3DFACE\"] = 28] = \"DWG_TYPE_3DFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_PFACE\"] = 29] = \"DWG_TYPE_POLYLINE_PFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLYLINE_MESH\"] = 30] = \"DWG_TYPE_POLYLINE_MESH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SOLID\"] = 31] = \"DWG_TYPE_SOLID\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TRACE\"] = 32] = \"DWG_TYPE_TRACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SHAPE\"] = 33] = \"DWG_TYPE_SHAPE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VIEWPORT\"] = 34] = \"DWG_TYPE_VIEWPORT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ELLIPSE\"] = 35] = \"DWG_TYPE_ELLIPSE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SPLINE\"] = 36] = \"DWG_TYPE_SPLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_REGION\"] = 37] = \"DWG_TYPE_REGION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_3DSOLID\"] = 38] = \"DWG_TYPE_3DSOLID\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BODY\"] = 39] = \"DWG_TYPE_BODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RAY\"] = 40] = \"DWG_TYPE_RAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XLINE\"] = 41] = \"DWG_TYPE_XLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DICTIONARY\"] = 42] = \"DWG_TYPE_DICTIONARY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_OLEFRAME\"] = 43] = \"DWG_TYPE_OLEFRAME\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MTEXT\"] = 44] = \"DWG_TYPE_MTEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LEADER\"] = 45] = \"DWG_TYPE_LEADER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TOLERANCE\"] = 46] = \"DWG_TYPE_TOLERANCE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLINE\"] = 47] = \"DWG_TYPE_MLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCK_CONTROL\"] = 48] = \"DWG_TYPE_BLOCK_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCK_HEADER\"] = 49] = \"DWG_TYPE_BLOCK_HEADER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYER_CONTROL\"] = 50] = \"DWG_TYPE_LAYER_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYER\"] = 51] = \"DWG_TYPE_LAYER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_STYLE_CONTROL\"] = 52] = \"DWG_TYPE_STYLE_CONTROL\"; /* 52 SHAPEFILE_CONTROL */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_STYLE\"] = 53] = \"DWG_TYPE_STYLE\";\n /* DWG_TYPE_<UNKNOWN> = 0x36, */\n /* DWG_TYPE_<UNKNOWN> = 0x37, */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LTYPE_CONTROL\"] = 56] = \"DWG_TYPE_LTYPE_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LTYPE\"] = 57] = \"DWG_TYPE_LTYPE\";\n /* DWG_TYPE_<UNKNOWN> = 0x3a, */\n /* DWG_TYPE_<UNKNOWN> = 0x3b, */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VIEW_CONTROL\"] = 60] = \"DWG_TYPE_VIEW_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VIEW\"] = 61] = \"DWG_TYPE_VIEW\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UCS_CONTROL\"] = 62] = \"DWG_TYPE_UCS_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UCS\"] = 63] = \"DWG_TYPE_UCS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VPORT_CONTROL\"] = 64] = \"DWG_TYPE_VPORT_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VPORT\"] = 65] = \"DWG_TYPE_VPORT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_APPID_CONTROL\"] = 66] = \"DWG_TYPE_APPID_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_APPID\"] = 67] = \"DWG_TYPE_APPID\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMSTYLE_CONTROL\"] = 68] = \"DWG_TYPE_DIMSTYLE_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMSTYLE\"] = 69] = \"DWG_TYPE_DIMSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VX_CONTROL\"] = 70] = \"DWG_TYPE_VX_CONTROL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VX_TABLE_RECORD\"] = 71] = \"DWG_TYPE_VX_TABLE_RECORD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GROUP\"] = 72] = \"DWG_TYPE_GROUP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLINESTYLE\"] = 73] = \"DWG_TYPE_MLINESTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_OLE2FRAME\"] = 74] = \"DWG_TYPE_OLE2FRAME\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DUMMY\"] = 75] = \"DWG_TYPE_DUMMY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LONG_TRANSACTION\"] = 76] = \"DWG_TYPE_LONG_TRANSACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LWPOLYLINE\"] = 77] = \"DWG_TYPE_LWPOLYLINE\"; /* ?? */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_HATCH\"] = 78] = \"DWG_TYPE_HATCH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XRECORD\"] = 79] = \"DWG_TYPE_XRECORD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PLACEHOLDER\"] = 80] = \"DWG_TYPE_PLACEHOLDER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VBA_PROJECT\"] = 81] = \"DWG_TYPE_VBA_PROJECT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYOUT\"] = 82] = \"DWG_TYPE_LAYOUT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PROXY_ENTITY\"] = 498] = \"DWG_TYPE_PROXY_ENTITY\"; /* 498 */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PROXY_OBJECT\"] = 499] = \"DWG_TYPE_PROXY_OBJECT\"; /* 499 */\n /* non-fixed types > 500. not stored as type, but as fixedtype */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACDSRECORD\"] = 500] = \"DWG_TYPE_ACDSRECORD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACDSSCHEMA\"] = 501] = \"DWG_TYPE_ACDSSCHEMA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACMECOMMANDHISTORY\"] = 502] = \"DWG_TYPE_ACMECOMMANDHISTORY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACMESCOPE\"] = 503] = \"DWG_TYPE_ACMESCOPE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACMESTATEMGR\"] = 504] = \"DWG_TYPE_ACMESTATEMGR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_BOOLEAN_CLASS\"] = 505] = \"DWG_TYPE_ACSH_BOOLEAN_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_BOX_CLASS\"] = 506] = \"DWG_TYPE_ACSH_BOX_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_BREP_CLASS\"] = 507] = \"DWG_TYPE_ACSH_BREP_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_CHAMFER_CLASS\"] = 508] = \"DWG_TYPE_ACSH_CHAMFER_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_CONE_CLASS\"] = 509] = \"DWG_TYPE_ACSH_CONE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_CYLINDER_CLASS\"] = 510] = \"DWG_TYPE_ACSH_CYLINDER_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_EXTRUSION_CLASS\"] = 511] = \"DWG_TYPE_ACSH_EXTRUSION_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_FILLET_CLASS\"] = 512] = \"DWG_TYPE_ACSH_FILLET_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_HISTORY_CLASS\"] = 513] = \"DWG_TYPE_ACSH_HISTORY_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_LOFT_CLASS\"] = 514] = \"DWG_TYPE_ACSH_LOFT_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_PYRAMID_CLASS\"] = 515] = \"DWG_TYPE_ACSH_PYRAMID_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_REVOLVE_CLASS\"] = 516] = \"DWG_TYPE_ACSH_REVOLVE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_SPHERE_CLASS\"] = 517] = \"DWG_TYPE_ACSH_SPHERE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_SWEEP_CLASS\"] = 518] = \"DWG_TYPE_ACSH_SWEEP_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_TORUS_CLASS\"] = 519] = \"DWG_TYPE_ACSH_TORUS_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ACSH_WEDGE_CLASS\"] = 520] = \"DWG_TYPE_ACSH_WEDGE_CLASS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ALDIMOBJECTCONTEXTDATA\"] = 521] = \"DWG_TYPE_ALDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ALIGNMENTPARAMETERENTITY\"] = 522] = \"DWG_TYPE_ALIGNMENTPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ANGDIMOBJECTCONTEXTDATA\"] = 523] = \"DWG_TYPE_ANGDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ANNOTSCALEOBJECTCONTEXTDATA\"] = 524] = \"DWG_TYPE_ANNOTSCALEOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ARCALIGNEDTEXT\"] = 525] = \"DWG_TYPE_ARCALIGNEDTEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ARC_DIMENSION\"] = 526] = \"DWG_TYPE_ARC_DIMENSION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOC2DCONSTRAINTGROUP\"] = 527] = \"DWG_TYPE_ASSOC2DCONSTRAINTGROUP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOC3POINTANGULARDIMACTIONBODY\"] = 528] = \"DWG_TYPE_ASSOC3POINTANGULARDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCACTION\"] = 529] = \"DWG_TYPE_ASSOCACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCACTIONPARAM\"] = 530] = \"DWG_TYPE_ASSOCACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCALIGNEDDIMACTIONBODY\"] = 531] = \"DWG_TYPE_ASSOCALIGNEDDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYACTIONBODY\"] = 532] = \"DWG_TYPE_ASSOCARRAYACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYMODIFYACTIONBODY\"] = 533] = \"DWG_TYPE_ASSOCARRAYMODIFYACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYMODIFYPARAMETERS\"] = 534] = \"DWG_TYPE_ASSOCARRAYMODIFYPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYPATHPARAMETERS\"] = 535] = \"DWG_TYPE_ASSOCARRAYPATHPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYPOLARPARAMETERS\"] = 536] = \"DWG_TYPE_ASSOCARRAYPOLARPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCARRAYRECTANGULARPARAMETERS\"] = 537] = \"DWG_TYPE_ASSOCARRAYRECTANGULARPARAMETERS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCASMBODYACTIONPARAM\"] = 538] = \"DWG_TYPE_ASSOCASMBODYACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCBLENDSURFACEACTIONBODY\"] = 539] = \"DWG_TYPE_ASSOCBLENDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCCOMPOUNDACTIONPARAM\"] = 540] = \"DWG_TYPE_ASSOCCOMPOUNDACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCDEPENDENCY\"] = 541] = \"DWG_TYPE_ASSOCDEPENDENCY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCDIMDEPENDENCYBODY\"] = 542] = \"DWG_TYPE_ASSOCDIMDEPENDENCYBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEDGEACTIONPARAM\"] = 543] = \"DWG_TYPE_ASSOCEDGEACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEDGECHAMFERACTIONBODY\"] = 544] = \"DWG_TYPE_ASSOCEDGECHAMFERACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEDGEFILLETACTIONBODY\"] = 545] = \"DWG_TYPE_ASSOCEDGEFILLETACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEXTENDSURFACEACTIONBODY\"] = 546] = \"DWG_TYPE_ASSOCEXTENDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCEXTRUDEDSURFACEACTIONBODY\"] = 547] = \"DWG_TYPE_ASSOCEXTRUDEDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCFACEACTIONPARAM\"] = 548] = \"DWG_TYPE_ASSOCFACEACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCFILLETSURFACEACTIONBODY\"] = 549] = \"DWG_TYPE_ASSOCFILLETSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCGEOMDEPENDENCY\"] = 550] = \"DWG_TYPE_ASSOCGEOMDEPENDENCY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCLOFTEDSURFACEACTIONBODY\"] = 551] = \"DWG_TYPE_ASSOCLOFTEDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCMLEADERACTIONBODY\"] = 552] = \"DWG_TYPE_ASSOCMLEADERACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCNETWORK\"] = 553] = \"DWG_TYPE_ASSOCNETWORK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCNETWORKSURFACEACTIONBODY\"] = 554] = \"DWG_TYPE_ASSOCNETWORKSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCOBJECTACTIONPARAM\"] = 555] = \"DWG_TYPE_ASSOCOBJECTACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCOFFSETSURFACEACTIONBODY\"] = 556] = \"DWG_TYPE_ASSOCOFFSETSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCORDINATEDIMACTIONBODY\"] = 557] = \"DWG_TYPE_ASSOCORDINATEDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCOSNAPPOINTREFACTIONPARAM\"] = 558] = \"DWG_TYPE_ASSOCOSNAPPOINTREFACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPATCHSURFACEACTIONBODY\"] = 559] = \"DWG_TYPE_ASSOCPATCHSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPATHACTIONPARAM\"] = 560] = \"DWG_TYPE_ASSOCPATHACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPERSSUBENTMANAGER\"] = 561] = \"DWG_TYPE_ASSOCPERSSUBENTMANAGER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPLANESURFACEACTIONBODY\"] = 562] = \"DWG_TYPE_ASSOCPLANESURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCPOINTREFACTIONPARAM\"] = 563] = \"DWG_TYPE_ASSOCPOINTREFACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCRESTOREENTITYSTATEACTIONBODY\"] = 564] = \"DWG_TYPE_ASSOCRESTOREENTITYSTATEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCREVOLVEDSURFACEACTIONBODY\"] = 565] = \"DWG_TYPE_ASSOCREVOLVEDSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCROTATEDDIMACTIONBODY\"] = 566] = \"DWG_TYPE_ASSOCROTATEDDIMACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCSWEPTSURFACEACTIONBODY\"] = 567] = \"DWG_TYPE_ASSOCSWEPTSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCTRIMSURFACEACTIONBODY\"] = 568] = \"DWG_TYPE_ASSOCTRIMSURFACEACTIONBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCVALUEDEPENDENCY\"] = 569] = \"DWG_TYPE_ASSOCVALUEDEPENDENCY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCVARIABLE\"] = 570] = \"DWG_TYPE_ASSOCVARIABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ASSOCVERTEXACTIONPARAM\"] = 571] = \"DWG_TYPE_ASSOCVERTEXACTIONPARAM\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BASEPOINTPARAMETERENTITY\"] = 572] = \"DWG_TYPE_BASEPOINTPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLKREFOBJECTCONTEXTDATA\"] = 573] = \"DWG_TYPE_BLKREFOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKALIGNEDCONSTRAINTPARAMETER\"] = 574] = \"DWG_TYPE_BLOCKALIGNEDCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKALIGNMENTGRIP\"] = 575] = \"DWG_TYPE_BLOCKALIGNMENTGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKALIGNMENTPARAMETER\"] = 576] = \"DWG_TYPE_BLOCKALIGNMENTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKANGULARCONSTRAINTPARAMETER\"] = 577] = \"DWG_TYPE_BLOCKANGULARCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKARRAYACTION\"] = 578] = \"DWG_TYPE_BLOCKARRAYACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKBASEPOINTPARAMETER\"] = 579] = \"DWG_TYPE_BLOCKBASEPOINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKDIAMETRICCONSTRAINTPARAMETER\"] = 580] = \"DWG_TYPE_BLOCKDIAMETRICCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKFLIPACTION\"] = 581] = \"DWG_TYPE_BLOCKFLIPACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKFLIPGRIP\"] = 582] = \"DWG_TYPE_BLOCKFLIPGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKFLIPPARAMETER\"] = 583] = \"DWG_TYPE_BLOCKFLIPPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKGRIPLOCATIONCOMPONENT\"] = 584] = \"DWG_TYPE_BLOCKGRIPLOCATIONCOMPONENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKHORIZONTALCONSTRAINTPARAMETER\"] = 585] = \"DWG_TYPE_BLOCKHORIZONTALCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLINEARCONSTRAINTPARAMETER\"] = 586] = \"DWG_TYPE_BLOCKLINEARCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLINEARGRIP\"] = 587] = \"DWG_TYPE_BLOCKLINEARGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLINEARPARAMETER\"] = 588] = \"DWG_TYPE_BLOCKLINEARPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLOOKUPACTION\"] = 589] = \"DWG_TYPE_BLOCKLOOKUPACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLOOKUPGRIP\"] = 590] = \"DWG_TYPE_BLOCKLOOKUPGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKLOOKUPPARAMETER\"] = 591] = \"DWG_TYPE_BLOCKLOOKUPPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKMOVEACTION\"] = 592] = \"DWG_TYPE_BLOCKMOVEACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPARAMDEPENDENCYBODY\"] = 593] = \"DWG_TYPE_BLOCKPARAMDEPENDENCYBODY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOINTPARAMETER\"] = 594] = \"DWG_TYPE_BLOCKPOINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOLARGRIP\"] = 595] = \"DWG_TYPE_BLOCKPOLARGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOLARPARAMETER\"] = 596] = \"DWG_TYPE_BLOCKPOLARPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPOLARSTRETCHACTION\"] = 597] = \"DWG_TYPE_BLOCKPOLARSTRETCHACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPROPERTIESTABLE\"] = 598] = \"DWG_TYPE_BLOCKPROPERTIESTABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKPROPERTIESTABLEGRIP\"] = 599] = \"DWG_TYPE_BLOCKPROPERTIESTABLEGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKRADIALCONSTRAINTPARAMETER\"] = 600] = \"DWG_TYPE_BLOCKRADIALCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKREPRESENTATION\"] = 601] = \"DWG_TYPE_BLOCKREPRESENTATION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKROTATEACTION\"] = 602] = \"DWG_TYPE_BLOCKROTATEACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKROTATIONGRIP\"] = 603] = \"DWG_TYPE_BLOCKROTATIONGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKROTATIONPARAMETER\"] = 604] = \"DWG_TYPE_BLOCKROTATIONPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKSCALEACTION\"] = 605] = \"DWG_TYPE_BLOCKSCALEACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKSTRETCHACTION\"] = 606] = \"DWG_TYPE_BLOCKSTRETCHACTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKUSERPARAMETER\"] = 607] = \"DWG_TYPE_BLOCKUSERPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKVERTICALCONSTRAINTPARAMETER\"] = 608] = \"DWG_TYPE_BLOCKVERTICALCONSTRAINTPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKVISIBILITYGRIP\"] = 609] = \"DWG_TYPE_BLOCKVISIBILITYGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKVISIBILITYPARAMETER\"] = 610] = \"DWG_TYPE_BLOCKVISIBILITYPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKXYGRIP\"] = 611] = \"DWG_TYPE_BLOCKXYGRIP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BLOCKXYPARAMETER\"] = 612] = \"DWG_TYPE_BLOCKXYPARAMETER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CAMERA\"] = 613] = \"DWG_TYPE_CAMERA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CELLSTYLEMAP\"] = 614] = \"DWG_TYPE_CELLSTYLEMAP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CONTEXTDATAMANAGER\"] = 615] = \"DWG_TYPE_CONTEXTDATAMANAGER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CSACDOCUMENTOPTIONS\"] = 616] = \"DWG_TYPE_CSACDOCUMENTOPTIONS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_CURVEPATH\"] = 617] = \"DWG_TYPE_CURVEPATH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DATALINK\"] = 618] = \"DWG_TYPE_DATALINK\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DATATABLE\"] = 619] = \"DWG_TYPE_DATATABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DBCOLOR\"] = 620] = \"DWG_TYPE_DBCOLOR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DETAILVIEWSTYLE\"] = 621] = \"DWG_TYPE_DETAILVIEWSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DGNDEFINITION\"] = 622] = \"DWG_TYPE_DGNDEFINITION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DGNUNDERLAY\"] = 623] = \"DWG_TYPE_DGNUNDERLAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DICTIONARYVAR\"] = 624] = \"DWG_TYPE_DICTIONARYVAR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DICTIONARYWDFLT\"] = 625] = \"DWG_TYPE_DICTIONARYWDFLT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DIMASSOC\"] = 626] = \"DWG_TYPE_DIMASSOC\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DMDIMOBJECTCONTEXTDATA\"] = 627] = \"DWG_TYPE_DMDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DWFDEFINITION\"] = 628] = \"DWG_TYPE_DWFDEFINITION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DWFUNDERLAY\"] = 629] = \"DWG_TYPE_DWFUNDERLAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DYNAMICBLOCKPROXYNODE\"] = 630] = \"DWG_TYPE_DYNAMICBLOCKPROXYNODE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_DYNAMICBLOCKPURGEPREVENTER\"] = 631] = \"DWG_TYPE_DYNAMICBLOCKPURGEPREVENTER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_EVALUATION_GRAPH\"] = 632] = \"DWG_TYPE_EVALUATION_GRAPH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_EXTRUDEDSURFACE\"] = 633] = \"DWG_TYPE_EXTRUDEDSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FCFOBJECTCONTEXTDATA\"] = 634] = \"DWG_TYPE_FCFOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FIELD\"] = 635] = \"DWG_TYPE_FIELD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FIELDLIST\"] = 636] = \"DWG_TYPE_FIELDLIST\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FLIPPARAMETERENTITY\"] = 637] = \"DWG_TYPE_FLIPPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FLIPACTIONENTITY\"] = 638] = \"DWG_TYPE_FLIPACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GEODATA\"] = 639] = \"DWG_TYPE_GEODATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GEOMAPIMAGE\"] = 640] = \"DWG_TYPE_GEOMAPIMAGE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GEOPOSITIONMARKER\"] = 641] = \"DWG_TYPE_GEOPOSITIONMARKER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GRADIENT_BACKGROUND\"] = 642] = \"DWG_TYPE_GRADIENT_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_GROUND_PLANE_BACKGROUND\"] = 643] = \"DWG_TYPE_GROUND_PLANE_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_HELIX\"] = 644] = \"DWG_TYPE_HELIX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IBL_BACKGROUND\"] = 645] = \"DWG_TYPE_IBL_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IDBUFFER\"] = 646] = \"DWG_TYPE_IDBUFFER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGE\"] = 647] = \"DWG_TYPE_IMAGE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGEDEF\"] = 648] = \"DWG_TYPE_IMAGEDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGEDEF_REACTOR\"] = 649] = \"DWG_TYPE_IMAGEDEF_REACTOR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_IMAGE_BACKGROUND\"] = 650] = \"DWG_TYPE_IMAGE_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_INDEX\"] = 651] = \"DWG_TYPE_INDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LARGE_RADIAL_DIMENSION\"] = 652] = \"DWG_TYPE_LARGE_RADIAL_DIMENSION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYERFILTER\"] = 653] = \"DWG_TYPE_LAYERFILTER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYER_INDEX\"] = 654] = \"DWG_TYPE_LAYER_INDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LAYOUTPRINTCONFIG\"] = 655] = \"DWG_TYPE_LAYOUTPRINTCONFIG\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LEADEROBJECTCONTEXTDATA\"] = 656] = \"DWG_TYPE_LEADEROBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LIGHT\"] = 657] = \"DWG_TYPE_LIGHT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LIGHTLIST\"] = 658] = \"DWG_TYPE_LIGHTLIST\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LINEARPARAMETERENTITY\"] = 659] = \"DWG_TYPE_LINEARPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LOFTEDSURFACE\"] = 660] = \"DWG_TYPE_LOFTEDSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MATERIAL\"] = 661] = \"DWG_TYPE_MATERIAL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MENTALRAYRENDERSETTINGS\"] = 662] = \"DWG_TYPE_MENTALRAYRENDERSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MESH\"] = 663] = \"DWG_TYPE_MESH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLEADEROBJECTCONTEXTDATA\"] = 664] = \"DWG_TYPE_MLEADEROBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MLEADERSTYLE\"] = 665] = \"DWG_TYPE_MLEADERSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MOVEACTIONENTITY\"] = 666] = \"DWG_TYPE_MOVEACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MOTIONPATH\"] = 667] = \"DWG_TYPE_MOTIONPATH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MPOLYGON\"] = 668] = \"DWG_TYPE_MPOLYGON\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MTEXTATTRIBUTEOBJECTCONTEXTDATA\"] = 669] = \"DWG_TYPE_MTEXTATTRIBUTEOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MTEXTOBJECTCONTEXTDATA\"] = 670] = \"DWG_TYPE_MTEXTOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_MULTILEADER\"] = 671] = \"DWG_TYPE_MULTILEADER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NAVISWORKSMODEL\"] = 672] = \"DWG_TYPE_NAVISWORKSMODEL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NAVISWORKSMODELDEF\"] = 673] = \"DWG_TYPE_NAVISWORKSMODELDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NPOCOLLECTION\"] = 674] = \"DWG_TYPE_NPOCOLLECTION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_NURBSURFACE\"] = 675] = \"DWG_TYPE_NURBSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_OBJECT_PTR\"] = 676] = \"DWG_TYPE_OBJECT_PTR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ORDDIMOBJECTCONTEXTDATA\"] = 677] = \"DWG_TYPE_ORDDIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PARTIAL_VIEWING_INDEX\"] = 678] = \"DWG_TYPE_PARTIAL_VIEWING_INDEX\";\n //DWG_TYPE_PARTIAL_VIEWING_FILTER,\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PDFDEFINITION\"] = 679] = \"DWG_TYPE_PDFDEFINITION\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PDFUNDERLAY\"] = 680] = \"DWG_TYPE_PDFUNDERLAY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PERSUBENTMGR\"] = 681] = \"DWG_TYPE_PERSUBENTMGR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PLANESURFACE\"] = 682] = \"DWG_TYPE_PLANESURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_PLOTSETTINGS\"] = 683] = \"DWG_TYPE_PLOTSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUD\"] = 684] = \"DWG_TYPE_POINTCLOUD\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDCOLORMAP\"] = 685] = \"DWG_TYPE_POINTCLOUDCOLORMAP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEF\"] = 686] = \"DWG_TYPE_POINTCLOUDDEF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEFEX\"] = 687] = \"DWG_TYPE_POINTCLOUDDEFEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEF_REACTOR\"] = 688] = \"DWG_TYPE_POINTCLOUDDEF_REACTOR\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDDEF_REACTOR_EX\"] = 689] = \"DWG_TYPE_POINTCLOUDDEF_REACTOR_EX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTCLOUDEX\"] = 690] = \"DWG_TYPE_POINTCLOUDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTPARAMETERENTITY\"] = 691] = \"DWG_TYPE_POINTPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POINTPATH\"] = 692] = \"DWG_TYPE_POINTPATH\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_POLARGRIPENTITY\"] = 693] = \"DWG_TYPE_POLARGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RADIMLGOBJECTCONTEXTDATA\"] = 694] = \"DWG_TYPE_RADIMLGOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RADIMOBJECTCONTEXTDATA\"] = 695] = \"DWG_TYPE_RADIMOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RAPIDRTRENDERSETTINGS\"] = 696] = \"DWG_TYPE_RAPIDRTRENDERSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RASTERVARIABLES\"] = 697] = \"DWG_TYPE_RASTERVARIABLES\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERENTRY\"] = 698] = \"DWG_TYPE_RENDERENTRY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERENVIRONMENT\"] = 699] = \"DWG_TYPE_RENDERENVIRONMENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERGLOBAL\"] = 700] = \"DWG_TYPE_RENDERGLOBAL\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RENDERSETTINGS\"] = 701] = \"DWG_TYPE_RENDERSETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_REVOLVEDSURFACE\"] = 702] = \"DWG_TYPE_REVOLVEDSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ROTATIONPARAMETERENTITY\"] = 703] = \"DWG_TYPE_ROTATIONPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ROTATEACTIONENTITY\"] = 704] = \"DWG_TYPE_ROTATEACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_RTEXT\"] = 705] = \"DWG_TYPE_RTEXT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SCALE\"] = 706] = \"DWG_TYPE_SCALE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SCALEACTIONENTITY\"] = 707] = \"DWG_TYPE_SCALEACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTIONOBJECT\"] = 708] = \"DWG_TYPE_SECTIONOBJECT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTIONVIEWSTYLE\"] = 709] = \"DWG_TYPE_SECTIONVIEWSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTION_MANAGER\"] = 710] = \"DWG_TYPE_SECTION_MANAGER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SECTION_SETTINGS\"] = 711] = \"DWG_TYPE_SECTION_SETTINGS\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SKYLIGHT_BACKGROUND\"] = 712] = \"DWG_TYPE_SKYLIGHT_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SOLID_BACKGROUND\"] = 713] = \"DWG_TYPE_SOLID_BACKGROUND\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SORTENTSTABLE\"] = 714] = \"DWG_TYPE_SORTENTSTABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SPATIAL_FILTER\"] = 715] = \"DWG_TYPE_SPATIAL_FILTER\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SPATIAL_INDEX\"] = 716] = \"DWG_TYPE_SPATIAL_INDEX\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_STRETCHACTIONENTITY\"] = 717] = \"DWG_TYPE_STRETCHACTIONENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SUN\"] = 718] = \"DWG_TYPE_SUN\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SUNSTUDY\"] = 719] = \"DWG_TYPE_SUNSTUDY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_SWEPTSURFACE\"] = 720] = \"DWG_TYPE_SWEPTSURFACE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLE\"] = 721] = \"DWG_TYPE_TABLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLECONTENT\"] = 722] = \"DWG_TYPE_TABLECONTENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLEGEOMETRY\"] = 723] = \"DWG_TYPE_TABLEGEOMETRY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TABLESTYLE\"] = 724] = \"DWG_TYPE_TABLESTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TEXTOBJECTCONTEXTDATA\"] = 725] = \"DWG_TYPE_TEXTOBJECTCONTEXTDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_TVDEVICEPROPERTIES\"] = 726] = \"DWG_TYPE_TVDEVICEPROPERTIES\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VISIBILITYGRIPENTITY\"] = 727] = \"DWG_TYPE_VISIBILITYGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VISIBILITYPARAMETERENTITY\"] = 728] = \"DWG_TYPE_VISIBILITYPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_VISUALSTYLE\"] = 729] = \"DWG_TYPE_VISUALSTYLE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_WIPEOUT\"] = 730] = \"DWG_TYPE_WIPEOUT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_WIPEOUTVARIABLES\"] = 731] = \"DWG_TYPE_WIPEOUTVARIABLES\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XREFPANELOBJECT\"] = 732] = \"DWG_TYPE_XREFPANELOBJECT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XYPARAMETERENTITY\"] = 733] = \"DWG_TYPE_XYPARAMETERENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BREAKDATA\"] = 734] = \"DWG_TYPE_BREAKDATA\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_BREAKPOINTREF\"] = 735] = \"DWG_TYPE_BREAKPOINTREF\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FLIPGRIPENTITY\"] = 736] = \"DWG_TYPE_FLIPGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LINEARGRIPENTITY\"] = 737] = \"DWG_TYPE_LINEARGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ROTATIONGRIPENTITY\"] = 738] = \"DWG_TYPE_ROTATIONGRIPENTITY\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_XYGRIPENTITY\"] = 739] = \"DWG_TYPE_XYGRIPENTITY\";\n /* preR13 entities */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE__3DLINE\"] = 740] = \"DWG_TYPE__3DLINE\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_REPEAT\"] = 741] = \"DWG_TYPE_REPEAT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_ENDREP\"] = 742] = \"DWG_TYPE_ENDREP\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_JUMP\"] = 743] = \"DWG_TYPE_JUMP\";\n /* pre2.0 entities */\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_LOAD\"] = 744] = \"DWG_TYPE_LOAD\";\n // after 1.0 add new types here for binary compat\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_FREED\"] = 65533] = \"DWG_TYPE_FREED\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UNKNOWN_ENT\"] = 65534] = \"DWG_TYPE_UNKNOWN_ENT\";\n Dwg_Object_Type[Dwg_Object_Type[\"DWG_TYPE_UNKNOWN_OBJ\"] = 65535] = \"DWG_TYPE_UNKNOWN_OBJ\";\n})(Dwg_Object_Type || (Dwg_Object_Type = {}));\n/**\n * The object created by swapping keys and values of Dwg_Object_Type\n */\nexport const Dwg_Object_Type_Inverted = Object.fromEntries(Object.entries(Dwg_Object_Type).map(([key, value]) => [value, key]));\nexport var Dwg_File_Type;\n(function (Dwg_File_Type) {\n Dwg_File_Type[Dwg_File_Type[\"DWG\"] = 0] = \"DWG\";\n Dwg_File_Type[Dwg_File_Type[\"DXF\"] = 1] = \"DXF\";\n})(Dwg_File_Type || (Dwg_File_Type = {}));\nexport var Dwg_Hatch_Edge_Type;\n(function (Dwg_Hatch_Edge_Type) {\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"Line\"] = 1] = \"Line\";\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"CircularArc\"] = 2] = \"CircularArc\";\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"EllipticArc\"] = 3] = \"EllipticArc\";\n Dwg_Hatch_Edge_Type[Dwg_Hatch_Edge_Type[\"Spline\"] = 4] = \"Spline\";\n})(Dwg_Hatch_Edge_Type || (Dwg_Hatch_Edge_Type = {}));\nexport var Dwg_Color_Method;\n(function (Dwg_Color_Method) {\n Dwg_Color_Method[Dwg_Color_Method[\"ByLayer\"] = 192] = \"ByLayer\";\n Dwg_Color_Method[Dwg_Color_Method[\"ByBlock\"] = 193] = \"ByBlock\";\n Dwg_Color_Method[Dwg_Color_Method[\"Entities\"] = 194] = \"Entities\";\n Dwg_Color_Method[Dwg_Color_Method[\"TrueColor\"] = 195] = \"TrueColor\";\n Dwg_Color_Method[Dwg_Color_Method[\"ForegroundColor\"] = 197] = \"ForegroundColor\";\n Dwg_Color_Method[Dwg_Color_Method[\"None\"] = 200] = \"None\";\n})(Dwg_Color_Method || (Dwg_Color_Method = {}));\n//# sourceMappingURL=enums.js.map","const MODEL_SPACE = '*MODEL_SPACE';\nconst MODEL_SPACE_PREFIX = '*PAPER_SPACE';\nexport const isModelSpace = (name) => {\n return name && name.toUpperCase() == MODEL_SPACE;\n};\nexport const isPaperSpace = (name) => {\n return name && name.toUpperCase().startsWith(MODEL_SPACE_PREFIX);\n};\nexport const idToString = (id) => {\n return id.toString(16).toUpperCase();\n};\n//# sourceMappingURL=utils.js.map","import { DwgBoundaryPathEdgeType, DwgHatchAssociativity, DwgHatchGradientColorFlag, DwgHatchGradientFlag, DwgHatchSolidFill } from '../database';\nimport { Dwg_Hatch_Edge_Type, Dwg_Object_Type } from '../types';\nimport { idToString } from './utils';\nexport class LibreEntityConverter {\n libredwg;\n layers = new Map();\n ltypes = new Map();\n unknownEntityCount;\n constructor(instance) {\n this.libredwg = instance;\n this.unknownEntityCount = 0;\n }\n prepare(db, force = false) {\n if (force || this.layers.size == 0) {\n this.layers.clear();\n db.tables.LAYER.entries.forEach(layer => {\n this.layers.set(layer.handle, layer.name);\n });\n }\n if (force || this.ltypes.size == 0) {\n this.ltypes.clear();\n db.tables.LTYPE.entries.forEach(ltype => {\n this.ltypes.set(ltype.handle, ltype.name);\n });\n }\n this.unknownEntityCount = 0;\n }\n clear() {\n this.layers.clear();\n this.ltypes.clear();\n this.unknownEntityCount = 0;\n }\n convert(object_ptr) {\n const libredwg = this.libredwg;\n // Get values of the common attributes of one entity\n const entity = libredwg.dwg_object_to_entity(object_ptr);\n const entity_tio = libredwg.dwg_object_to_entity_tio(object_ptr);\n if (entity && entity_tio) {\n // Get values of the common attributes of one entity\n const commonAttrs = this.getCommonAttrs(entity);\n const fixedtype = libredwg.dwg_object_get_fixedtype(object_ptr);\n if (fixedtype == Dwg_Object_Type.DWG_TYPE_3DFACE) {\n return this.convert3dFace(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ARC) {\n return this.convertArc(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ATTDEF) {\n return this.convertAttdef(entity_tio, commonAttrs);\n // libredwg stores ATTRIB as children of one INSERT entity.\n // It does not exist in iterator of dwg data.\n // } else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ATTRIB) {\n // return this.convertAttrib(entity_tio, commonAttrs)\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_CIRCLE) {\n return this.convertCircle(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_ALIGNED ||\n fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_LINEAR) {\n return this.convertAlignedDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_ANG3PT) {\n return this.convert3PointAngularDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_DIAMETER) {\n return this.convertDiameterDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_ORDINATE) {\n return this.convertOrdinateDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_DIMENSION_RADIUS) {\n return this.convertRadiusDimension(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_ELLIPSE) {\n return this.convertEllise(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_HATCH) {\n return this.convertHatch(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_IMAGE) {\n return this.convertImage(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_INSERT) {\n return this.convertInsert(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_LEADER) {\n return this.convertLeader(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_LINE) {\n return this.convertLine(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_LWPOLYLINE) {\n return this.convertLWPolyline(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_MLINE) {\n return this.convertMLine(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_MTEXT) {\n return this.convertMText(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_OLE2FRAME) {\n return this.convertOle2Frame(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_OLEFRAME) {\n return this.convertOleFrame(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_POINT) {\n return this.convertPoint(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_POLYLINE_2D) {\n return this.convertPolyline2d(entity_tio, commonAttrs, object_ptr);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_POLYLINE_3D) {\n return this.convertPolyline3d(entity_tio, commonAttrs, object_ptr);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_PROXY_ENTITY) {\n return this.convertProxy(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_RAY) {\n return this.convertRay(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_SECTIONOBJECT) {\n return this.convertSection(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_SOLID) {\n return this.convertSolid(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_SPLINE) {\n return this.convertSpline(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_TABLE) {\n return this.convertTable(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_TEXT) {\n return this.convertText(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_TOLERANCE) {\n return this.convertTolerance(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_VIEWPORT) {\n return this.convertViewport(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_WIPEOUT) {\n return this.convertWipeout(entity_tio, commonAttrs);\n }\n else if (fixedtype == Dwg_Object_Type.DWG_TYPE_XLINE) {\n return this.convertXline(entity_tio, commonAttrs);\n }\n else if (fixedtype === Dwg_Object_Type.DWG_TYPE_UNKNOWN_ENT) {\n this.unknownEntityCount++;\n }\n }\n return undefined;\n }\n convert3dFace(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const corner1 = libredwg.dwg_dynapi_entity_value(entity, 'corner1')\n .data;\n const corner2 = libredwg.dwg_dynapi_entity_value(entity, 'corner2')\n .data;\n const corner3 = libredwg.dwg_dynapi_entity_value(entity, 'corner3')\n .data;\n const corner4 = libredwg.dwg_dynapi_entity_value(entity, 'corner4')\n .data;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'invis_flags')\n .data;\n return {\n type: '3DFACE',\n ...commonAttrs,\n corner1: corner1,\n corner2: corner2,\n corner3: corner3,\n corner4: corner4,\n flag: flag\n };\n }\n convertArc(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const center = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const radius = libredwg.dwg_dynapi_entity_value(entity, 'radius')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const startAngle = libredwg.dwg_dynapi_entity_value(entity, 'start_angle')\n .data;\n const endAngle = libredwg.dwg_dynapi_entity_value(entity, 'end_angle')\n .data;\n return {\n type: 'ARC',\n ...commonAttrs,\n thickness: thickness,\n center: center,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n extrusionDirection: extrusionDirection\n };\n }\n convertEmbeddedMText(entity, subclassName) {\n const libredwg = this.libredwg;\n const attachmentPoint = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'attachment').data;\n const insertionPoint = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'ins_pt').data;\n const direction = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'x_axis_dir').data;\n const rectHeight = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'rect_height').data;\n const rectWidth = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'rect_width').data;\n const extentsHeight = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'extents_height').data;\n const extentsWidth = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'extents_width').data;\n // const columnType = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'column_type')\n // .data as number\n // const columnWidth = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'column_width')\n // .data as number\n // const columnGutter = libredwg.dwg_dynapi_subclass_value(entity, subclassName, 'gutter')\n // .data as number\n // const columnAutoHeight = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'auto_height'\n // ).data as number\n // const columnFlowReversed = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'flow_reversed'\n // ).data as number\n // const columnHeightCount = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'num_column_heights'\n // ).data as number\n // const columnHeights_ptr = libredwg.dwg_dynapi_subclass_value(\n // entity,\n // subclassName,\n // 'column_heights'\n // ).data as number\n // const columnHeights = libredwg.dwg_ptr_to_double_array(\n // columnHeights_ptr,\n // columnHeightCount\n // )\n return {\n insertionPoint: insertionPoint,\n rectHeight: rectHeight,\n rectWidth: rectWidth,\n extentsHeight: extentsHeight,\n extentsWidth: extentsWidth,\n attachmentPoint: attachmentPoint,\n direction: direction\n // columnType: columnType,\n // columnFlowReversed: columnFlowReversed,\n // columnAutoHeight: columnAutoHeight,\n // columnWidth: columnWidth,\n // columnGutter: columnGutter,\n // columnHeightCount: columnHeightCount,\n // columnHeights: columnHeights\n };\n }\n convertAttdef(entity, commonAttrs) {\n const libredwg = this.libredwg;\n // Because the field name of text string in Dwg_Entity_ATTDEF is 'default_value'\n // instead of 'text_value'. So we need to get its value again using the correct\n // field name.\n const textValue = libredwg.dwg_dynapi_entity_value(entity, 'default_value')\n .data;\n const text = this.convertTextBase(entity);\n text.text = textValue;\n const prompt = libredwg.dwg_dynapi_entity_value(entity, 'prompt')\n .data;\n const tag = libredwg.dwg_dynapi_entity_value(entity, 'tag').data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flags')\n .data;\n const fieldLength = libredwg.dwg_dynapi_entity_value(entity, 'field_length')\n .data;\n const lockPositionFlag = libredwg.dwg_dynapi_entity_value(entity, 'lock_position_flag').data;\n const duplicateRecordCloningFlag = libredwg.dwg_dynapi_entity_value(entity, 'keep_duplicate_records').data;\n const isReallyLocked = libredwg.dwg_dynapi_entity_value(entity, 'is_really_locked').data;\n // TODO: double check whether 'mtext_type' is 'mtextFlag'\n const mtextFlag = libredwg.dwg_dynapi_entity_value(entity, 'mtext_type')\n .data;\n const alignmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'alignment_pt').data;\n return {\n type: 'ATTDEF',\n ...commonAttrs,\n text: this.convertTextBase(entity),\n prompt: prompt,\n tag: tag,\n flags: flags,\n fieldLength: fieldLength,\n lockPositionFlag: lockPositionFlag > 0,\n duplicateRecordCloningFlag: duplicateRecordCloningFlag > 0,\n mtextFlag: mtextFlag,\n isReallyLocked: isReallyLocked > 0,\n alignmentPoint: alignmentPoint,\n annotationScale: 1, // TODO: Set the correct value\n attrTag: '', // TODO: Set the correct value\n mtext: this.convertEmbeddedMText(entity, 'ATTDEF_mtext')\n };\n }\n convertAttrib(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const text = this.convertTextBase(entity);\n const tag = libredwg.dwg_dynapi_entity_value(entity, 'tag').data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flags')\n .data;\n const fieldLength = libredwg.dwg_dynapi_entity_value(entity, 'field_length')\n .data;\n const lockPositionFlag = libredwg.dwg_dynapi_entity_value(entity, 'lock_position_flag').data;\n const duplicateRecordCloningFlag = libredwg.dwg_dynapi_entity_value(entity, 'keep_duplicate_records').data;\n // TODO: double check whether 'mtext_type' is 'mtextFlag'\n const mtextFlag = libredwg.dwg_dynapi_entity_value(entity, 'mtext_type')\n .data;\n const isReallyLocked = libredwg.dwg_dynapi_entity_value(entity, 'is_really_locked').data;\n const alignmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'alignment_pt').data;\n return {\n type: 'ATTRIB',\n ...commonAttrs,\n text: text,\n tag: tag,\n flags: flags,\n fieldLength: fieldLength,\n lockPositionFlag: !!lockPositionFlag,\n duplicateRecordCloningFlag: !!duplicateRecordCloningFlag,\n mtextFlag: mtextFlag,\n isReallyLocked: !!isReallyLocked,\n numberOfSecondaryAttrs: 0, // TODO: libredwg doesn't support it yet.\n secondaryAttrsHardId: '0', // TODO: libredwg doesn't support it yet.\n alignmentPoint: { ...alignmentPoint, z: 0 },\n annotationScale: 1, // TODO: Set the correct value\n attrTag: '', // TODO: Set the correct value\n mtext: this.convertEmbeddedMText(entity, 'ATTDEF_mtext')\n };\n }\n convertCircle(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const center = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const radius = libredwg.dwg_dynapi_entity_value(entity, 'radius')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n type: 'CIRCLE',\n ...commonAttrs,\n thickness: thickness,\n center: center,\n radius: radius,\n extrusionDirection: extrusionDirection\n };\n }\n convertAlignedDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'clone_ins_pt' is same as 'insertionPoint'\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'clone_ins_pt').data;\n const subDefinitionPoint1 = libredwg.dwg_dynapi_entity_value(entity, 'xline1_pt').data;\n const subDefinitionPoint2 = libredwg.dwg_dynapi_entity_value(entity, 'xline2_pt').data;\n const rotationAngle = libredwg.dwg_dynapi_entity_value(entity, 'ins_rotation').data;\n const obliqueAngle = libredwg.dwg_dynapi_entity_value(entity, 'oblique_angle').data;\n return {\n subclassMarker: 'AcDbAlignedDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n insertionPoint: insertionPoint,\n subDefinitionPoint1: subDefinitionPoint1,\n subDefinitionPoint2: subDefinitionPoint2,\n rotationAngle: rotationAngle == null ? 0 : rotationAngle,\n obliqueAngle: obliqueAngle\n };\n }\n convert3PointAngularDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n const subDefinitionPoint1 = libredwg.dwg_dynapi_entity_value(entity, 'xline1_pt').data;\n const subDefinitionPoint2 = libredwg.dwg_dynapi_entity_value(entity, 'xline2_pt').data;\n const centerPoint = libredwg.dwg_dynapi_entity_value(entity, 'center_pt')\n .data;\n const arcPoint = libredwg.dwg_dynapi_entity_value(entity, 'xline2end_pt')\n .data;\n return {\n subclassMarker: 'AcDb3PointAngularDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n subDefinitionPoint1: subDefinitionPoint1,\n subDefinitionPoint2: subDefinitionPoint2,\n centerPoint: centerPoint,\n arcPoint: arcPoint\n };\n }\n convertDiameterDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'first_arc_pt' is same as 'centerPoint'\n const centerPoint = libredwg.dwg_dynapi_entity_value(entity, 'first_arc_pt')\n .data;\n const leaderLength = libredwg.dwg_dynapi_entity_value(entity, 'leader_len')\n .data;\n return {\n subclassMarker: 'AcDbDiametricDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n centerPoint: centerPoint,\n leaderLength: leaderLength\n };\n }\n convertOrdinateDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'feature_location_pt' is same as 'subDefinitionPoint1'\n const subDefinitionPoint1 = libredwg.dwg_dynapi_entity_value(entity, 'feature_location_pt').data;\n // TODO: Not sure whether 'leader_endpt' is same as 'subDefinitionPoint2'\n const subDefinitionPoint2 = libredwg.dwg_dynapi_entity_value(entity, 'leader_endpt').data;\n return {\n subclassMarker: 'AcDbOrdinateDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n subDefinitionPoint1: subDefinitionPoint1,\n subDefinitionPoint2: subDefinitionPoint2\n };\n }\n convertRadiusDimension(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const dimensionCommonAttrs = this.getDimensionCommonAttrs(entity);\n // TODO: Not sure whether 'first_arc_pt' is same as 'centerPoint'\n const centerPoint = libredwg.dwg_dynapi_entity_value(entity, 'first_arc_pt')\n .data;\n const leaderLength = libredwg.dwg_dynapi_entity_value(entity, 'leader_len')\n .data;\n return {\n subclassMarker: 'AcDbRadialDimension',\n ...commonAttrs,\n ...dimensionCommonAttrs,\n centerPoint: centerPoint,\n leaderLength: leaderLength\n };\n }\n convertEllise(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const center = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const majorAxisEndPoint = libredwg.dwg_dynapi_entity_value(entity, 'sm_axis').data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const axisRatio = libredwg.dwg_dynapi_entity_value(entity, 'axis_ratio')\n .data;\n const startAngle = libredwg.dwg_dynapi_entity_value(entity, 'start_angle')\n .data;\n const endAngle = libredwg.dwg_dynapi_entity_value(entity, 'end_angle')\n .data;\n return {\n type: 'ELLIPSE',\n ...commonAttrs,\n center: center,\n majorAxisEndPoint: majorAxisEndPoint,\n extrusionDirection: extrusionDirection,\n axisRatio: axisRatio,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n convertHatch(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const patternName = libredwg.dwg_dynapi_entity_value(entity, 'name')\n .data;\n const isSolidFill = libredwg.dwg_dynapi_entity_value(entity, 'is_solid_fill').data;\n const isAssociative = libredwg.dwg_dynapi_entity_value(entity, 'is_associative').data;\n const numberOfBoundaryPaths = libredwg.dwg_dynapi_entity_value(entity, 'num_paths').data;\n const paths_ptr = libredwg.dwg_dynapi_entity_value(entity, 'paths')\n .data;\n const boundaryPaths = libredwg.dwg_ptr_to_hatch_path_array(paths_ptr, numberOfBoundaryPaths);\n const patternStyle = libredwg.dwg_dynapi_entity_value(entity, 'style')\n .data;\n const patternType = libredwg.dwg_dynapi_entity_value(entity, 'pattern_type')\n .data;\n const patternAngle = libredwg.dwg_dynapi_entity_value(entity, 'angle')\n .data;\n const patternScale = libredwg.dwg_dynapi_entity_value(entity, 'scale_spacing').data;\n const numberOfDefinitionLines = libredwg.dwg_dynapi_entity_value(entity, 'num_deflines').data;\n const definitionLines_ptr = libredwg.dwg_dynapi_entity_value(entity, 'deflines').data;\n const definitionLines = libredwg.dwg_ptr_to_hatch_defline_array(definitionLines_ptr, numberOfDefinitionLines);\n const pixelSize = libredwg.dwg_dynapi_entity_value(entity, 'pixel_size')\n .data;\n const numberOfSeedPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_seeds').data;\n const seedPoints_ptr = libredwg.dwg_dynapi_entity_value(entity, 'seeds')\n .data;\n const seedPoints = libredwg.dwg_ptr_to_point2d_array(seedPoints_ptr, numberOfSeedPoints);\n const result = {\n ...commonAttrs,\n // elevationPoint: DwgPoint3D\n extrusionDirection: extrusionDirection,\n patternName: patternName,\n solidFill: isSolidFill\n ? DwgHatchSolidFill.SolidFill\n : DwgHatchSolidFill.PatternFill,\n // patternFillColor: number\n associativity: isAssociative\n ? DwgHatchAssociativity.Associative\n : DwgHatchAssociativity.NonAssociative,\n numberOfBoundaryPaths: numberOfBoundaryPaths,\n boundaryPaths: this.convertHatchBoundaryPaths(boundaryPaths),\n hatchStyle: patternStyle,\n patternType: patternType,\n patternAngle: patternAngle,\n patternScale: patternScale,\n numberOfDefinitionLines: numberOfDefinitionLines,\n definitionLines: definitionLines.map(value => {\n return {\n angle: value.angle,\n base: value.pt0,\n offset: value.offset,\n numberOfDashLengths: value.dashes.length,\n dashLengths: value.dashes\n };\n }),\n pixelSize: pixelSize,\n numberOfSeedPoints: numberOfSeedPoints,\n // offsetVector?: DwgPoint3D\n seedPoints: seedPoints\n // gradientFlag?: DwgHatchGradientFlag\n };\n const gradientFlag = libredwg.dwg_dynapi_entity_value(entity, 'is_gradient_fill')\n .data;\n if (gradientFlag > 0) {\n const gradientName = libredwg.dwg_dynapi_entity_value(entity, 'gradient_name')\n .data;\n const gradientRotation = libredwg.dwg_dynapi_entity_value(entity, 'gradient_angle')\n .data;\n const gradientDefinition = libredwg.dwg_dynapi_entity_value(entity, 'gradient_shift')\n .data;\n const colorTint = libredwg.dwg_dynapi_entity_value(entity, 'gradient_tint')\n .data;\n const gradientColorFlag = libredwg.dwg_dynapi_entity_value(entity, 'single_color_gradient')\n .data;\n // const numberOfColors = libredwg.dwg_dynapi_entity_value(entity, 'num_colors')\n // .data as number\n const gradientColors_ptr = libredwg.dwg_dynapi_entity_value(entity, 'colors')\n .data;\n const gradientColors = libredwg.dwg_ptr_to_hatch_gradient_color_array(gradientColors_ptr, (gradientColorFlag == 1) ? 1 : 2);\n return {\n type: 'HATCH',\n ...result,\n gradientFlag: DwgHatchGradientFlag.Gradient,\n gradientColorFlag: gradientColorFlag == 1 ? DwgHatchGradientColorFlag.OneColor : DwgHatchGradientColorFlag.TwoColor,\n gradientName,\n gradientRotation,\n gradientDefinition,\n colorTint,\n gradientColors\n };\n }\n else {\n return {\n type: 'HATCH',\n ...result\n };\n }\n }\n convertHatchBoundaryPaths(paths) {\n const converted = paths\n .filter(path => path.num_segs_or_paths > 0)\n .map(path => {\n const commonAttrs = {\n boundaryPathTypeFlag: path.flag\n };\n // Check whether it is a polyline\n if (path.flag & 0x02) {\n return {\n ...commonAttrs,\n hasBulge: path.bulges_present,\n isClosed: path.closed,\n numberOfVertices: path.num_segs_or_paths,\n vertices: path.polyline_paths.map(vertex => {\n return {\n x: vertex.point.x,\n y: vertex.point.y,\n bulge: vertex.bulge\n };\n })\n };\n }\n else {\n const edges = path.segs.map(seg => {\n if (seg.curve_type == Dwg_Hatch_Edge_Type.Line) {\n return {\n type: DwgBoundaryPathEdgeType.Line,\n start: seg.first_endpoint,\n end: seg.second_endpoint\n };\n }\n else if (seg.curve_type == Dwg_Hatch_Edge_Type.CircularArc) {\n return {\n type: DwgBoundaryPathEdgeType.Circular,\n center: seg.center,\n radius: seg.radius,\n startAngle: seg.start_angle,\n endAngle: seg.end_angle,\n isCCW: seg.is_ccw\n };\n }\n else if (seg.curve_type == Dwg_Hatch_Edge_Type.EllipticArc) {\n return {\n type: DwgBoundaryPathEdgeType.Elliptic,\n center: seg.center,\n end: seg.endpoint,\n lengthOfMinorAxis: seg.minor_major_ratio,\n startAngle: seg.start_angle,\n endAngle: seg.end_angle,\n isCCW: seg.is_ccw\n };\n }\n else if (seg.curve_type == Dwg_Hatch_Edge_Type.Spline) {\n return {\n type: DwgBoundaryPathEdgeType.Spline,\n degree: seg.degree,\n isRational: seg.is_rational,\n isPeriodic: seg.is_periodic,\n numberOfKnots: seg.num_knots,\n numberOfControlPoints: seg.num_control_points,\n knots: seg.knots,\n controlPoints: seg.control_points,\n numberOfFitData: seg.num_fitpts,\n fitDatum: seg.fitpts,\n startTangent: seg.start_tangent,\n endTangent: seg.end_tangent\n };\n }\n });\n return {\n ...commonAttrs,\n numberOfEdges: path.num_segs_or_paths,\n edges: edges\n };\n }\n });\n return converted;\n }\n convertImage(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const version = libredwg.dwg_dynapi_entity_value(entity, 'class_version')\n .data;\n const position = libredwg.dwg_dynapi_entity_value(entity, 'pt0')\n .data;\n const uPixel = libredwg.dwg_dynapi_entity_value(entity, 'uvec')\n .data;\n const vPixel = libredwg.dwg_dynapi_entity_value(entity, 'vvec')\n .data;\n const imageSize = libredwg.dwg_dynapi_entity_value(entity, 'image_size')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'display_props')\n .data;\n const clipping = libredwg.dwg_dynapi_entity_value(entity, 'clipping')\n .data;\n const brightness = libredwg.dwg_dynapi_entity_value(entity, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(entity, 'contrast')\n .data;\n const fade = libredwg.dwg_dynapi_entity_value(entity, 'fade').data;\n const clipMode = libredwg.dwg_dynapi_entity_value(entity, 'clip_mode')\n .data;\n const clippingBoundaryType = libredwg.dwg_dynapi_entity_value(entity, 'clip_boundary_type').data;\n const countBoundaryPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_clip_verts').data;\n const clip_verts = libredwg.dwg_dynapi_entity_value(entity, 'clip_verts')\n .data;\n const clippingBoundaryPath = libredwg.dwg_ptr_to_point3d_array(clip_verts, countBoundaryPoints);\n const imagedef_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedef')\n .data;\n const imageDefHandle = idToString(libredwg.dwg_ref_get_absref(imagedef_ref));\n const imagedefreactor_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedefreactor').data;\n const imageDefReactorHandle = idToString(libredwg.dwg_ref_get_absref(imagedefreactor_ref));\n return {\n type: 'IMAGE',\n ...commonAttrs,\n version: version,\n position: position,\n uPixel: uPixel,\n vPixel: vPixel,\n imageSize: imageSize,\n imageDefHandle: imageDefHandle,\n flags: flags,\n clipping: clipping,\n brightness: brightness,\n contrast: contrast,\n fade: fade,\n imageDefReactorHandle: imageDefReactorHandle,\n clippingBoundaryType: clippingBoundaryType,\n countBoundaryPoints: countBoundaryPoints,\n clippingBoundaryPath: clippingBoundaryPath,\n clipMode: clipMode\n };\n }\n convertInsert(entity, commonAttrs) {\n const libredwg = this.libredwg;\n // Get block name\n let name = '';\n const block_header_ref = libredwg.dwg_dynapi_entity_value(entity, 'block_header').data;\n if (block_header_ref) {\n const block_header_obj = libredwg.dwg_ref_get_object(block_header_ref);\n if (block_header_obj) {\n const block_header_tio = libredwg.dwg_object_to_object_tio(block_header_obj);\n if (block_header_tio) {\n name =\n libredwg.dwg_entity_block_header_get_block(block_header_tio).name;\n }\n }\n }\n if (!name) {\n /* pre-R2.0 */\n name = libredwg.dwg_dynapi_entity_value(entity, 'block_name')\n .data;\n }\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const scale = libredwg.dwg_dynapi_entity_value(entity, 'scale')\n .data;\n const rotation = libredwg.dwg_dynapi_entity_value(entity, 'rotation')\n .data;\n const columnCount = libredwg.dwg_dynapi_entity_value(entity, 'num_cols')\n .data;\n const rowCount = libredwg.dwg_dynapi_entity_value(entity, 'num_rows')\n .data;\n const columnSpacing = libredwg.dwg_dynapi_entity_value(entity, 'col_spacing').data;\n const rowSpacing = libredwg.dwg_dynapi_entity_value(entity, 'row_spacing')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const attrib_ptr_array = libredwg.dwg_entity_insert_get_attribs(entity);\n const attribs = [];\n attrib_ptr_array.forEach(object_ptr => {\n const entity = libredwg.dwg_object_to_entity(object_ptr);\n const entity_tio = libredwg.dwg_object_to_entity_tio(object_ptr);\n if (entity && entity_tio) {\n // Get values of the common attributes of ATTRIB entity\n const commonAttrs = this.getCommonAttrs(entity);\n const fixedtype = libredwg.dwg_object_get_fixedtype(object_ptr);\n if (fixedtype == Dwg_Object_Type.DWG_TYPE_ATTRIB) {\n attribs.push(this.convertAttrib(entity_tio, commonAttrs));\n }\n }\n });\n // TODO: convert block attributes\n return {\n type: 'INSERT',\n ...commonAttrs,\n name: name,\n insertionPoint: insertionPoint,\n xScale: scale ? scale.x : 1,\n yScale: scale ? scale.y : 1,\n zScale: scale ? scale.z : 1,\n rotation: rotation,\n columnCount: columnCount,\n rowCount: rowCount,\n columnSpacing: columnSpacing,\n rowSpacing: rowSpacing,\n extrusionDirection: extrusionDirection,\n attribs: attribs\n };\n }\n convertLeader(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const styleName = libredwg.dwg_entity_mtext_get_style_name(entity);\n const isArrowheadEnabled = libredwg.dwg_dynapi_entity_value(entity, 'arrowhead_type').data;\n const isSpline = libredwg.dwg_dynapi_entity_value(entity, 'path_type')\n .data;\n const leaderCreationFlag = libredwg.dwg_dynapi_entity_value(entity, 'annot_type').data;\n const isHooklineSameDirection = libredwg.dwg_dynapi_entity_value(entity, 'hookline_dir').data;\n const isHooklineExists = libredwg.dwg_dynapi_entity_value(entity, 'hookline_on').data;\n const textHeight = libredwg.dwg_dynapi_entity_value(entity, 'box_height')\n .data;\n const textWidth = libredwg.dwg_dynapi_entity_value(entity, 'box_width')\n .data;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_points').data;\n const vertices_ptr = libredwg.dwg_dynapi_entity_value(entity, 'points')\n .data;\n const vertices = numberOfVertices > 0\n ? libredwg.dwg_ptr_to_point3d_array(vertices_ptr, numberOfVertices)\n : [];\n const byBlockColor = libredwg.dwg_dynapi_entity_value(entity, 'byblock_color').data;\n const normal = libredwg.dwg_dynapi_entity_value(entity, 'extrusion')\n .data;\n const horizontalDirection = libredwg.dwg_dynapi_entity_value(entity, 'x_direction').data;\n const offsetFromBlock = libredwg.dwg_dynapi_entity_value(entity, 'inspt_offset').data;\n const offsetFromAnnotation = libredwg.dwg_dynapi_entity_value(entity, 'endptproj').data;\n return {\n type: 'LEADER',\n ...commonAttrs,\n styleName: styleName,\n isArrowheadEnabled: isArrowheadEnabled > 0,\n isSpline: isSpline > 0,\n leaderCreationFlag: leaderCreationFlag,\n isHooklineSameDirection: isHooklineSameDirection > 0,\n isHooklineExists: isHooklineExists > 0,\n textHeight: textHeight,\n textWidth: textWidth,\n numberOfVertices: numberOfVertices,\n vertices: vertices,\n byBlockColor: byBlockColor,\n normal: normal,\n horizontalDirection: horizontalDirection,\n offsetFromBlock: offsetFromBlock,\n offsetFromAnnotation: offsetFromAnnotation\n };\n }\n convertLine(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'start')\n .data;\n const endPoint = libredwg.dwg_dynapi_entity_value(entity, 'end')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n type: 'LINE',\n ...commonAttrs,\n thickness: thickness,\n startPoint: startPoint,\n endPoint: endPoint,\n extrusionDirection: extrusionDirection\n };\n }\n convertLWPolyline(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_points').data;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const constantWidth = libredwg.dwg_dynapi_entity_value(entity, 'const_width').data;\n const elevation = libredwg.dwg_dynapi_entity_value(entity, 'elevation')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const vertices = [];\n const num_points = libredwg.dwg_dynapi_entity_value(entity, 'num_points')\n .data;\n const points_ptr = libredwg.dwg_dynapi_entity_value(entity, 'points')\n .data;\n const points = libredwg.dwg_ptr_to_point2d_array(points_ptr, num_points);\n const num_bulges = libredwg.dwg_dynapi_entity_value(entity, 'num_bulges')\n .data;\n const bulges_ptr = libredwg.dwg_dynapi_entity_value(entity, 'bulges')\n .data;\n const bulges = libredwg.dwg_ptr_to_double_array(bulges_ptr, num_bulges);\n points.forEach((point, index) => {\n vertices.push({\n id: index,\n x: point.x,\n y: point.y,\n bulge: bulges.length > index ? bulges[index] : 0\n });\n });\n return {\n type: 'LWPOLYLINE',\n ...commonAttrs,\n numberOfVertices: numberOfVertices,\n flag: flag,\n constantWidth: constantWidth,\n elevation: elevation,\n thickness: thickness,\n extrusionDirection: extrusionDirection,\n vertices: vertices\n };\n }\n convertMLine(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const scale = libredwg.dwg_dynapi_entity_value(entity, 'scale')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flags')\n .data;\n const justification = libredwg.dwg_dynapi_entity_value(entity, 'justification').data;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'base_point')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const numberOfLines = libredwg.dwg_dynapi_entity_value(entity, 'num_lines')\n .data;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_verts').data;\n const verts_ptr = libredwg.dwg_dynapi_entity_value(entity, 'verts')\n .data;\n const verts = libredwg.dwg_ptr_to_mline_vertex_array(verts_ptr, numberOfVertices);\n const vertices = [];\n verts.forEach(vert => {\n vertices.push({\n vertex: vert.vertex,\n vertexDirection: vert.vertex_direction,\n miterDirection: vert.miter_direction,\n numberOfLines: vert.num_lines,\n lines: vert.lines.map(line => {\n return {\n numberOfSegmentParams: line.num_segparms,\n segmentParams: line.segparms,\n numberOfAreaFillParams: line.num_areafillparms,\n areaFillParams: line.areafillparms\n };\n })\n });\n });\n return {\n type: 'MLINE',\n ...commonAttrs,\n scale: scale,\n flags: flags,\n justification: justification,\n startPoint: startPoint,\n extrusionDirection: extrusionDirection,\n numberOfLines: numberOfLines,\n numberOfVertices: numberOfVertices,\n vertices: vertices,\n mlineStyle: '' // TODO: Set the correct value\n };\n }\n convertOle2Frame(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const oleVersion = libredwg.dwg_dynapi_entity_value(entity, 'oleversion')\n .data;\n const oleClient = libredwg.dwg_dynapi_entity_value(entity, 'oleclient')\n .data;\n const dataSize = libredwg.dwg_dynapi_entity_value(entity, 'data_size')\n .data;\n const leftUpPoint = libredwg.dwg_dynapi_entity_value(entity, 'pt1')\n .data;\n const rightDownPoint = libredwg.dwg_dynapi_entity_value(entity, 'pt2')\n .data;\n const lockAspect = libredwg.dwg_dynapi_entity_value(entity, 'lock_aspect')\n .data;\n const oleObjectType = libredwg.dwg_dynapi_entity_value(entity, 'type')\n .data;\n const tileModeDescriptor = libredwg.dwg_dynapi_entity_value(entity, 'mode')\n .data;\n const binaryData = libredwg.dwg_dynapi_entity_value(entity, 'data')\n .data;\n return {\n type: 'OLE2FRAME',\n ...commonAttrs,\n oleVersion: oleVersion,\n oleClient: oleClient,\n dataSize: dataSize,\n leftUpPoint: leftUpPoint,\n rightDownPoint: rightDownPoint,\n lockAspect: lockAspect,\n oleObjectType: oleObjectType,\n tileModeDescriptor: tileModeDescriptor,\n binaryData: binaryData\n };\n }\n convertOleFrame(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const mode = libredwg.dwg_dynapi_entity_value(entity, 'mode').data;\n const dataSize = libredwg.dwg_dynapi_entity_value(entity, 'data_size')\n .data;\n const binaryData = libredwg.dwg_dynapi_entity_value(entity, 'data')\n .data;\n return {\n type: 'OLEFRAME',\n ...commonAttrs,\n flag: flag,\n mode: mode,\n dataSize: dataSize,\n binaryData: binaryData\n };\n }\n convertMText(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const textHeight = libredwg.dwg_dynapi_entity_value(entity, 'text_height')\n .data;\n const rectHeight = libredwg.dwg_dynapi_entity_value(entity, 'rect_height')\n .data;\n const rectWidth = libredwg.dwg_dynapi_entity_value(entity, 'rect_width')\n .data;\n const extentsWidth = libredwg.dwg_dynapi_entity_value(entity, 'extents_width').data;\n const extentsHeight = libredwg.dwg_dynapi_entity_value(entity, 'extents_height').data;\n const attachmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'attachment').data;\n const drawingDirection = libredwg.dwg_dynapi_entity_value(entity, 'flow_dir').data;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'text').data;\n const styleName = libredwg.dwg_entity_mtext_get_style_name(entity);\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const direction = libredwg.dwg_dynapi_entity_value(entity, 'x_axis_dir')\n .data;\n const lineSpacingStyle = libredwg.dwg_dynapi_entity_value(entity, 'linespace_style').data;\n const lineSpacing = libredwg.dwg_dynapi_entity_value(entity, 'linespace_factor').data;\n const backgroundFill = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_flag').data;\n const fillBoxScale = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_scale').data;\n const backgroundFillColor = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_color').data;\n const backgroundFillTransparency = libredwg.dwg_dynapi_entity_value(entity, 'bg_fill_trans').data;\n const columnType = libredwg.dwg_dynapi_entity_value(entity, 'column_type')\n .data;\n const columnFlowReversed = libredwg.dwg_dynapi_entity_value(entity, 'flow_reversed').data;\n const columnAutoHeight = libredwg.dwg_dynapi_entity_value(entity, 'auto_height').data;\n const columnWidth = libredwg.dwg_dynapi_entity_value(entity, 'column_width')\n .data;\n const columnGutter = libredwg.dwg_dynapi_entity_value(entity, 'gutter')\n .data;\n const columnHeightCount = libredwg.dwg_dynapi_entity_value(entity, 'num_column_heights').data;\n const columnHeights_ptr = libredwg.dwg_dynapi_entity_value(entity, 'column_heights').data;\n const columnHeights = libredwg.dwg_ptr_to_double_array(columnHeights_ptr, columnHeightCount);\n return {\n type: 'MTEXT',\n ...commonAttrs,\n insertionPoint: insertionPoint,\n textHeight: textHeight,\n rectHeight: rectHeight,\n rectWidth: rectWidth,\n extentsHeight: extentsHeight,\n extentsWidth: extentsWidth,\n attachmentPoint: attachmentPoint,\n drawingDirection: drawingDirection,\n text: text,\n styleName: styleName,\n extrusionDirection: extrusionDirection,\n direction: direction,\n rotation: 0, // TODO: Didn't find the corresponding field in libredwg\n lineSpacingStyle: lineSpacingStyle,\n lineSpacing: lineSpacing,\n backgroundFill: backgroundFill,\n // backgroundColor: backgroundColor.rgb, // TODO: Double check whether it should be color index\n fillBoxScale: fillBoxScale,\n backgroundFillColor: backgroundFillColor.rgb, // TODO: Double check whether it should be color index\n backgroundFillTransparency: backgroundFillTransparency,\n columnType: columnType,\n // columnCount: columnCount,\n columnFlowReversed: columnFlowReversed,\n columnAutoHeight: columnAutoHeight,\n columnWidth: columnWidth,\n columnGutter: columnGutter,\n columnHeightCount: columnHeightCount,\n columnHeights: columnHeights\n };\n }\n convertPoint(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const x = libredwg.dwg_dynapi_entity_value(entity, 'x').data;\n const y = libredwg.dwg_dynapi_entity_value(entity, 'y').data;\n const z = libredwg.dwg_dynapi_entity_value(entity, 'z').data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const angle = libredwg.dwg_dynapi_entity_value(entity, 'x_ang')\n .data;\n return {\n type: 'POINT',\n ...commonAttrs,\n position: { x, y, z },\n thickness: thickness,\n extrusionDirection: extrusionDirection,\n angle: angle\n };\n }\n convertPolyline2d(entity, commonAttrs, object) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const smoothType = libredwg.dwg_dynapi_entity_value(entity, 'curve_type')\n .data;\n const startWidth = libredwg.dwg_dynapi_entity_value(entity, 'start_width')\n .data;\n const endWidth = libredwg.dwg_dynapi_entity_value(entity, 'end_width')\n .data;\n const elevation = libredwg.dwg_dynapi_entity_value(entity, 'elevation')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const vertices = libredwg.dwg_entity_polyline_2d_get_vertices(object);\n return {\n type: 'POLYLINE2D',\n ...commonAttrs,\n flag: flag,\n smoothType: smoothType,\n startWidth: startWidth,\n endWidth: endWidth,\n elevation: elevation,\n thickness: thickness,\n extrusionDirection: extrusionDirection,\n vertices: vertices.map(vertex => {\n return {\n x: vertex.point.x,\n y: vertex.point.y,\n z: vertex.point.z,\n startWidth: vertex.start_width,\n endWidth: vertex.end_width,\n bulge: vertex.bulge,\n flag: vertex.flag,\n tangentDirection: vertex.tangent_dir\n };\n }),\n meshMVertexCount: 0,\n meshNVertexCount: 0,\n surfaceMDensity: 0,\n surfaceNDensity: 0\n };\n }\n convertPolyline3d(entity, commonAttrs, object) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'flag').data;\n const smoothType = libredwg.dwg_dynapi_entity_value(entity, 'curve_type')\n .data;\n const startWidth = libredwg.dwg_dynapi_entity_value(entity, 'start_width')\n .data;\n const endWidth = libredwg.dwg_dynapi_entity_value(entity, 'end_width')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const vertices = libredwg.dwg_entity_polyline_3d_get_vertices(object);\n return {\n type: 'POLYLINE3D',\n ...commonAttrs,\n flag: flag,\n smoothType: smoothType,\n startWidth: startWidth,\n endWidth: endWidth,\n extrusionDirection: extrusionDirection,\n vertices: vertices.map(vertex => {\n return {\n x: vertex.point.x,\n y: vertex.point.y,\n z: vertex.point.z,\n flag: vertex.flag\n };\n })\n };\n }\n convertProxy(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const classId = libredwg.dwg_dynapi_entity_value(entity, 'class_id')\n .data;\n return {\n type: 'PROXY',\n ...commonAttrs,\n applicationEntityClassId: classId\n };\n }\n convertRay(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const firstPoint = libredwg.dwg_dynapi_entity_value(entity, 'point')\n .data;\n const unitDirection = libredwg.dwg_dynapi_entity_value(entity, 'vector')\n .data;\n return {\n type: 'RAY',\n ...commonAttrs,\n firstPoint: firstPoint,\n unitDirection: unitDirection\n };\n }\n convertSection(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const state = libredwg.dwg_dynapi_entity_value(entity, 'state')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'flag')\n .data;\n const name = libredwg.dwg_dynapi_entity_value(entity, 'name').data;\n const verticalDirection = libredwg.dwg_dynapi_entity_value(entity, 'vert_dir').data;\n const topHeight = libredwg.dwg_dynapi_entity_value(entity, 'top_height')\n .data;\n const bottomHeight = libredwg.dwg_dynapi_entity_value(entity, 'bottom_height').data;\n const indicatorTransparency = libredwg.dwg_dynapi_entity_value(entity, 'indicator_alpha').data;\n const indicatorColor = libredwg.dwg_dynapi_entity_value(entity, 'indicator_color').data;\n const numberOfVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_verts').data;\n const vertices_ptr = libredwg.dwg_dynapi_entity_value(entity, 'verts')\n .data;\n const vertices = numberOfVertices > 0\n ? libredwg.dwg_ptr_to_point3d_array(vertices_ptr, numberOfVertices)\n : [];\n const numberOfBackLineVertices = libredwg.dwg_dynapi_entity_value(entity, 'num_blverts').data;\n const backLineVertices_ptr = libredwg.dwg_dynapi_entity_value(entity, 'blverts').data;\n const backLineVertices = numberOfBackLineVertices > 0\n ? libredwg.dwg_ptr_to_point3d_array(backLineVertices_ptr, numberOfBackLineVertices)\n : [];\n const geometrySettingHandle = libredwg.dwg_dynapi_entity_value(entity, 'geometrySettingHardId').data;\n const geometrySettingHardId = libredwg.dwg_ref_get_handle_absolute_ref(geometrySettingHandle);\n return {\n type: 'SECTION',\n ...commonAttrs,\n state: state,\n flags: flags,\n name: name,\n verticalDirection: verticalDirection,\n topHeight: topHeight,\n bottomHeight: bottomHeight,\n indicatorTransparency: indicatorTransparency,\n indicatorColor: indicatorColor.rgb,\n numberOfVertices: numberOfVertices,\n vertices: vertices,\n numberOfBackLineVertices: numberOfBackLineVertices,\n backLineVertices: backLineVertices,\n geometrySettingHardId: geometrySettingHardId\n };\n }\n convertSolid(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const corner1 = libredwg.dwg_dynapi_entity_value(entity, 'corner1')\n .data;\n const corner2 = libredwg.dwg_dynapi_entity_value(entity, 'corner2')\n .data;\n const corner3 = libredwg.dwg_dynapi_entity_value(entity, 'corner3')\n .data;\n const corner4 = libredwg.dwg_dynapi_entity_value(entity, 'corner4')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n type: 'SOLID',\n ...commonAttrs,\n corner1: corner1,\n corner2: corner2,\n corner3: corner3,\n corner4: corner4,\n thickness: thickness,\n extrusionDirection: extrusionDirection\n };\n }\n convertSpline(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const flag = libredwg.dwg_dynapi_entity_value(entity, 'splineflags')\n .data;\n const degree = libredwg.dwg_dynapi_entity_value(entity, 'degree')\n .data;\n // Convert knots\n const knotTolerance = libredwg.dwg_dynapi_entity_value(entity, 'knot_tol')\n .data;\n const numberOfKnots = libredwg.dwg_dynapi_entity_value(entity, 'num_knots')\n .data;\n const knots_ptr = libredwg.dwg_dynapi_entity_value(entity, 'knots')\n .data;\n const knots = libredwg.dwg_ptr_to_double_array(knots_ptr, numberOfKnots);\n // Convert fit points\n const fitTolerance = libredwg.dwg_dynapi_entity_value(entity, 'fit_tol')\n .data;\n const numberOfFitPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_fit_pts').data;\n const fit_pts_ptr = libredwg.dwg_dynapi_entity_value(entity, 'fit_pts')\n .data;\n const fitPoints = libredwg.dwg_ptr_to_point3d_array(fit_pts_ptr, numberOfFitPoints);\n // Convert control points\n const weighted = libredwg.dwg_dynapi_entity_value(entity, 'weighted')\n .data;\n const controlTolerance = libredwg.dwg_dynapi_entity_value(entity, 'ctrl_tol').data;\n const numberOfControlPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_ctrl_pts').data;\n const ctrl_pts_ptr = libredwg.dwg_dynapi_entity_value(entity, 'ctrl_pts')\n .data;\n const controlPoints = libredwg.dwg_ptr_to_point4d_array(ctrl_pts_ptr, numberOfControlPoints);\n const startTangent = libredwg.dwg_dynapi_entity_value(entity, 'beg_tan_vec')\n .data;\n const endTangent = libredwg.dwg_dynapi_entity_value(entity, 'end_tan_vec')\n .data;\n return {\n type: 'SPLINE',\n ...commonAttrs,\n // normal?: DwgPoint3D\n flag: flag,\n degree: degree,\n numberOfKnots: numberOfKnots,\n numberOfControlPoints: numberOfControlPoints,\n numberOfFitPoints: numberOfFitPoints,\n knotTolerance: knotTolerance,\n controlTolerance: controlTolerance,\n fitTolerance: fitTolerance,\n startTangent: startTangent,\n endTangent: endTangent,\n knots: knots,\n weights: weighted ? controlPoints.map(value => value.w) : undefined,\n controlPoints: controlPoints.map(value => {\n return {\n x: value.x,\n y: value.y,\n z: value.z\n };\n }),\n fitPoints: fitPoints\n };\n }\n convertTable(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const name = libredwg.dwg_dynapi_subclass_value(entity, 'ldata', 'name')\n .data;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const directionVector = libredwg.dwg_dynapi_entity_value(entity, 'horiz_direction').data;\n const tableValue = libredwg.dwg_dynapi_entity_value(entity, 'flag_for_table_value').data;\n const rowCount = libredwg.dwg_dynapi_entity_value(entity, 'num_rows')\n .data;\n const columnCount = libredwg.dwg_dynapi_entity_value(entity, 'num_cols')\n .data;\n const row_heights_ptr = libredwg.dwg_dynapi_entity_value(entity, 'row_heights').data;\n const rowHeightArr = libredwg.dwg_ptr_to_double_array(row_heights_ptr, rowCount);\n const col_widths_ptr = libredwg.dwg_dynapi_entity_value(entity, 'col_widths').data;\n const columnWidthArr = libredwg.dwg_ptr_to_double_array(col_widths_ptr, columnCount);\n const table_style_ref = libredwg.dwg_dynapi_entity_value(entity, 'tablestyle').data;\n const tableStyleId = idToString(libredwg.dwg_ref_get_absref(table_style_ref));\n const block_header_ref = libredwg.dwg_dynapi_entity_value(entity, 'block_header').data;\n const blockRecordHandle = idToString(libredwg.dwg_ref_get_absref(block_header_ref));\n const overrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'table_flag_override').data;\n const borderColorOverrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'border_color_overrides_flag').data;\n const borderLineWeightOverrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'border_lineweight_overrides_flag').data;\n const borderVisibilityOverrideFlag = libredwg.dwg_dynapi_entity_value(entity, 'border_visibility_overrides_flag').data;\n const num_cells = libredwg.dwg_dynapi_entity_value(entity, 'num_cells')\n .data;\n const cells_ptr = libredwg.dwg_dynapi_entity_value(entity, 'cells')\n .data;\n const cells = libredwg.dwg_ptr_to_table_cell_array(cells_ptr, num_cells);\n return {\n type: 'ACAD_TABLE',\n ...commonAttrs,\n name: name,\n startPoint: startPoint,\n directionVector: directionVector,\n // attachmentPoint: DwgAttachmentPoint\n tableValue: tableValue,\n rowCount: rowCount,\n columnCount: columnCount,\n overrideFlag: overrideFlag,\n borderColorOverrideFlag: borderColorOverrideFlag,\n borderLineWeightOverrideFlag: borderLineWeightOverrideFlag,\n borderVisibilityOverrideFlag: borderVisibilityOverrideFlag,\n rowHeightArr: rowHeightArr,\n columnWidthArr: columnWidthArr,\n tableStyleId: tableStyleId,\n blockRecordHandle: blockRecordHandle,\n cells: this.convertTableCells(cells),\n bmpPreview: ''\n };\n }\n convertTableCells(cells) {\n const converted = [];\n cells.forEach(cell => {\n return {\n text: cell.text_value,\n attachmentPoint: cell.cell_alignment,\n textStyle: cell.text_style, // TODO: Set the text style name instead of handle\n rotation: cell.rotation,\n cellType: cell.type,\n flagValue: cell.flags,\n mergedValue: cell.is_merged_value,\n autoFit: cell.is_autofit_flag,\n // borderWidth?: number\n // borderHeight?: number\n topBorderVisibility: cell.top_visibility,\n bottomBorderVisibility: cell.bottom_visibility,\n leftBorderVisibility: cell.left_visibility,\n rightBorderVisibility: cell.right_visibility,\n overrideFlag: cell.cell_flag_override,\n virtualEdgeFlag: cell.virtual_edge_flag,\n // fieldObjetId?: string\n blockTableRecordI: cell.block_handle.absolute_ref,\n blockScale: cell.block_scale,\n blockAttrNum: cell.attr_defs.length,\n attrDefineId: cell.attr_defs.map(value => value.attdef.absolute_ref),\n // attrText?: string\n // textHeight: number\n extendedCellFlags: cell.additional_data_flag\n };\n });\n return converted;\n }\n convertTextBase(entity) {\n const libredwg = this.libredwg;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'text_value')\n .data;\n const thickness = libredwg.dwg_dynapi_entity_value(entity, 'thickness')\n .data;\n const startPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const endPoint = libredwg.dwg_dynapi_entity_value(entity, 'alignment_pt')\n .data;\n const rotation = libredwg.dwg_dynapi_entity_value(entity, 'rotation')\n .data;\n const textHeight = libredwg.dwg_dynapi_entity_value(entity, 'height')\n .data;\n const xScale = libredwg.dwg_dynapi_entity_value(entity, 'width_factor')\n .data;\n const obliqueAngle = libredwg.dwg_dynapi_entity_value(entity, 'oblique_angle').data;\n const styleName = libredwg.dwg_entity_text_get_style_name(entity);\n const generationFlag = libredwg.dwg_dynapi_entity_value(entity, 'generation').data;\n const halign = libredwg.dwg_dynapi_entity_value(entity, 'horiz_alignment')\n .data;\n const valign = libredwg.dwg_dynapi_entity_value(entity, 'vert_alignment')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n return {\n text: text,\n thickness: thickness,\n startPoint: startPoint,\n endPoint: endPoint,\n textHeight: textHeight,\n rotation: rotation,\n xScale: xScale,\n obliqueAngle: obliqueAngle,\n styleName: styleName,\n generationFlag: generationFlag,\n halign: halign,\n valign: valign,\n extrusionDirection: extrusionDirection\n };\n }\n convertText(entity, commonAttrs) {\n return {\n type: 'TEXT',\n ...commonAttrs,\n ...this.convertTextBase(entity)\n };\n }\n convertTolerance(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const insertionPoint = libredwg.dwg_dynapi_entity_value(entity, 'ins_pt')\n .data;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'text_value')\n .data;\n const xAxisDirection = libredwg.dwg_dynapi_entity_value(entity, 'x_direction').data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const dimStyleName = libredwg.dwg_entity_get_dimstyle_name(entity);\n return {\n type: 'TOLERANCE',\n ...commonAttrs,\n styleName: dimStyleName,\n insertionPoint: insertionPoint,\n text: text,\n extrusionDirection: extrusionDirection,\n xAxisDirection: xAxisDirection\n };\n }\n convertViewport(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const viewportCenter = libredwg.dwg_dynapi_entity_value(entity, 'center')\n .data;\n const width = libredwg.dwg_dynapi_entity_value(entity, 'width')\n .data;\n const height = libredwg.dwg_dynapi_entity_value(entity, 'height')\n .data;\n const status = libredwg.dwg_dynapi_entity_value(entity, 'on_off')\n .data;\n const displayCenter = libredwg.dwg_dynapi_entity_value(entity, 'VIEWCTR')\n .data;\n const snapBase = libredwg.dwg_dynapi_entity_value(entity, 'SNAPBASE')\n .data;\n const snapSpacing = libredwg.dwg_dynapi_entity_value(entity, 'SNAPUNIT')\n .data;\n const gridSpacing = libredwg.dwg_dynapi_entity_value(entity, 'GRIDUNIT')\n .data;\n const viewDirection = libredwg.dwg_dynapi_entity_value(entity, 'VIEWDIR')\n .data;\n const targetPoint = libredwg.dwg_dynapi_entity_value(entity, 'view_target')\n .data;\n const perspectiveLensLength = libredwg.dwg_dynapi_entity_value(entity, 'lens_length').data;\n const frontClipZ = libredwg.dwg_dynapi_entity_value(entity, 'front_clip_z')\n .data;\n const backClipZ = libredwg.dwg_dynapi_entity_value(entity, 'back_clip_z')\n .data;\n // TODO: I am not sure whether view size in libredwg represents view height\n const viewHeight = libredwg.dwg_dynapi_entity_value(entity, 'VIEWSIZE')\n .data;\n const snapAngle = libredwg.dwg_dynapi_entity_value(entity, 'SNAPANG')\n .data;\n const viewTwistAngle = libredwg.dwg_dynapi_entity_value(entity, 'twist_angle').data;\n const circleZoomPercent = libredwg.dwg_dynapi_entity_value(entity, 'circle_zoom').data;\n // TODO: convert frozenLayerIds and clippingBoundaryId\n const statusBitFlags = libredwg.dwg_dynapi_entity_value(entity, 'status_flag').data;\n const sheetName = libredwg.dwg_dynapi_entity_value(entity, 'style_sheet')\n .data;\n const renderMode = libredwg.dwg_dynapi_entity_value(entity, 'render_mode')\n .data;\n // TODO: Not sure whether UCSVP in libredwg represents ucsPerViewport\n const ucsPerViewport = libredwg.dwg_dynapi_entity_value(entity, 'UCSVP')\n .data;\n const ucsOrigin = libredwg.dwg_dynapi_entity_value(entity, 'ucsorg')\n .data;\n const ucsXAxis = libredwg.dwg_dynapi_entity_value(entity, 'ucsxdir')\n .data;\n const ucsYAxis = libredwg.dwg_dynapi_entity_value(entity, 'ucsydir')\n .data;\n const named_ucs_ref = libredwg.dwg_dynapi_entity_value(entity, 'named_ucs')\n .data;\n const ucsId = libredwg.dwg_ref_get_absref(named_ucs_ref);\n const base_ucs_ref = libredwg.dwg_dynapi_entity_value(entity, 'base_ucs')\n .data;\n const ucsBaseId = libredwg.dwg_ref_get_absref(base_ucs_ref);\n // TODO: Not sure whether UCSORTHOVIEW represents orthographicType\n const orthographicType = libredwg.dwg_dynapi_entity_value(entity, 'UCSORTHOVIEW').data;\n const elevation = libredwg.dwg_dynapi_entity_value(entity, 'ucs_elevation')\n .data;\n const shadePlotMode = libredwg.dwg_dynapi_entity_value(entity, 'shadeplot_mode').data;\n const isDefaultLighting = libredwg.dwg_dynapi_entity_value(entity, 'use_default_lights').data;\n const defaultLightingType = libredwg.dwg_dynapi_entity_value(entity, 'default_lighting_type').data;\n const brightness = libredwg.dwg_dynapi_entity_value(entity, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(entity, 'contrast')\n .data;\n const majorGridFrequency = libredwg.dwg_dynapi_entity_value(entity, 'grid_major').data;\n const background_ref = libredwg.dwg_dynapi_entity_value(entity, 'background').data;\n const backgroundId = libredwg.dwg_ref_get_absref(background_ref);\n const shadeplot_ref = libredwg.dwg_dynapi_entity_value(entity, 'shadeplot')\n .data;\n const shadePlotId = libredwg.dwg_ref_get_absref(shadeplot_ref);\n const visualstyle_ref = libredwg.dwg_dynapi_entity_value(entity, 'visualstyle').data;\n const visualStyleId = libredwg.dwg_ref_get_absref(visualstyle_ref);\n // TODO: convert ambientLightColor\n const sun_ref = libredwg.dwg_dynapi_entity_value(entity, 'sun')\n .data;\n const sunId = libredwg.dwg_ref_get_absref(sun_ref);\n return {\n type: 'VIEWPORT',\n ...commonAttrs,\n viewportCenter: viewportCenter,\n width: width,\n height: height,\n status: status,\n viewportId: 0, // Will be set later in LibreDwgConverter.convert\n displayCenter: displayCenter,\n snapBase: snapBase,\n snapSpacing: snapSpacing,\n gridSpacing: gridSpacing,\n viewDirection: viewDirection,\n targetPoint: targetPoint,\n perspectiveLensLength: perspectiveLensLength,\n frontClipZ: frontClipZ,\n backClipZ: backClipZ,\n viewHeight: viewHeight,\n snapAngle: snapAngle,\n viewTwistAngle: viewTwistAngle,\n circleZoomPercent: circleZoomPercent,\n statusBitFlags: statusBitFlags,\n sheetName: sheetName,\n renderMode: renderMode,\n ucsPerViewport: ucsPerViewport,\n ucsOrigin: ucsOrigin,\n ucsXAxis: ucsXAxis,\n ucsYAxis: ucsYAxis,\n ucsId: idToString(ucsId),\n ucsBaseId: idToString(ucsBaseId),\n orthographicType: orthographicType,\n elevation: elevation,\n shadePlotMode: shadePlotMode,\n majorGridFrequency: majorGridFrequency,\n backgroundId: idToString(backgroundId),\n shadePlotId: idToString(shadePlotId),\n visualStyleId: idToString(visualStyleId),\n isDefaultLighting: !!isDefaultLighting,\n defaultLightingType: defaultLightingType,\n brightness: brightness,\n contrast: contrast,\n sunId: idToString(sunId)\n };\n }\n convertWipeout(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const version = libredwg.dwg_dynapi_entity_value(entity, 'class_version')\n .data;\n const position = libredwg.dwg_dynapi_entity_value(entity, 'pt0')\n .data;\n const uPixel = libredwg.dwg_dynapi_entity_value(entity, 'uvec')\n .data;\n const vPixel = libredwg.dwg_dynapi_entity_value(entity, 'vvec')\n .data;\n const imageSize = libredwg.dwg_dynapi_entity_value(entity, 'image_size')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(entity, 'display_props')\n .data;\n const clipping = libredwg.dwg_dynapi_entity_value(entity, 'clipping')\n .data;\n const brightness = libredwg.dwg_dynapi_entity_value(entity, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(entity, 'contrast')\n .data;\n const fade = libredwg.dwg_dynapi_entity_value(entity, 'fade').data;\n const clipMode = libredwg.dwg_dynapi_entity_value(entity, 'clip_mode')\n .data;\n const clippingBoundaryType = libredwg.dwg_dynapi_entity_value(entity, 'clip_boundary_type').data;\n const countBoundaryPoints = libredwg.dwg_dynapi_entity_value(entity, 'num_clip_verts').data;\n const clip_verts = libredwg.dwg_dynapi_entity_value(entity, 'clip_verts')\n .data;\n const clippingBoundaryPath = libredwg.dwg_ptr_to_point2d_array(clip_verts, countBoundaryPoints);\n const imagedef_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedef')\n .data;\n const imageDefHandle = libredwg.dwg_ref_get_absref(imagedef_ref);\n const imagedefreactor_ref = libredwg.dwg_dynapi_entity_value(entity, 'imagedefreactor').data;\n const imageDefReactorHandle = libredwg.dwg_ref_get_absref(imagedefreactor_ref);\n return {\n type: 'WIPEOUT',\n ...commonAttrs,\n version: version,\n position: position,\n uPixel: uPixel,\n vPixel: vPixel,\n imageSize: imageSize,\n imageDefHandle: imageDefHandle,\n flags: flags,\n clipping: clipping,\n brightness: brightness,\n contrast: contrast,\n fade: fade,\n imageDefReactorHandle: imageDefReactorHandle,\n clippingBoundaryType: clippingBoundaryType,\n countBoundaryPoints: countBoundaryPoints,\n clippingBoundaryPath: clippingBoundaryPath,\n clipMode: clipMode\n };\n }\n convertXline(entity, commonAttrs) {\n const libredwg = this.libredwg;\n const firstPoint = libredwg.dwg_dynapi_entity_value(entity, 'point')\n .data;\n const unitDirection = libredwg.dwg_dynapi_entity_value(entity, 'vector')\n .data;\n return {\n type: 'XLINE',\n ...commonAttrs,\n firstPoint: firstPoint,\n unitDirection: unitDirection\n };\n }\n getDimensionCommonAttrs(entity) {\n const libredwg = this.libredwg;\n const version = libredwg.dwg_dynapi_entity_value(entity, 'class_version')\n .data;\n const name = libredwg.dwg_entity_get_block_name(entity, 'block');\n const definitionPoint = libredwg.dwg_dynapi_entity_value(entity, 'def_pt')\n .data;\n const textPoint = libredwg.dwg_dynapi_entity_value(entity, 'text_midpt')\n .data;\n const attachmentPoint = libredwg.dwg_dynapi_entity_value(entity, 'attachmentPoint').data;\n const dimensionType = libredwg.dwg_dynapi_entity_value(entity, 'flag')\n .data;\n const textLineSpacingStyle = libredwg.dwg_dynapi_entity_value(entity, 'lspace_factor').data;\n const textLineSpacingFactor = libredwg.dwg_dynapi_entity_value(entity, 'lspace_factor').data;\n const measurement = libredwg.dwg_dynapi_entity_value(entity, 'act_measurement').data;\n const text = libredwg.dwg_dynapi_entity_value(entity, 'user_text')\n .data;\n const textRotation = libredwg.dwg_dynapi_entity_value(entity, 'text_rotation').data;\n // TODO: Not sure whether 'ins_rotation' is 'ocsRotation'.\n const ocsRotation = libredwg.dwg_dynapi_entity_value(entity, 'ins_rotation')\n .data;\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(entity, 'extrusion').data;\n const styleName = libredwg.dwg_entity_get_dimstyle_name(entity);\n return {\n type: 'DIMENSION',\n version: version,\n name: name,\n definitionPoint: definitionPoint,\n textPoint: textPoint,\n dimensionType: dimensionType,\n attachmentPoint: attachmentPoint,\n textLineSpacingStyle: textLineSpacingStyle,\n textLineSpacingFactor: textLineSpacingFactor || 1,\n measurement: measurement,\n text: text,\n textRotation: textRotation,\n ocsRotation: ocsRotation,\n extrusionDirection: extrusionDirection,\n styleName: styleName\n };\n }\n getCommonAttrs(entity) {\n const libredwg = this.libredwg;\n const color = libredwg.dwg_object_entity_get_color_object(entity);\n // - 0xc0 for ByLayer (also c3 and rgb of 0x100)\n // - 0xc1 for ByBlock (also c3 and rgb of 0)\n // - 0xc2 for entities (default), with names with an additional name flag RC\n // - 0xc3 for truecolor\n // - 0xc5 for foreground color\n // - 0xc8 for none (also c3 and rgb of 0x101)\n const method = color.method;\n const colorIndex = color.index;\n let rgbColor = undefined;\n if (method == 0xc2 || ((color.rgb >>> 24) & 0xff) === 0xc2) {\n rgbColor = color.rgb & 0x00ffffff;\n }\n const layer = this.getLayerName(entity);\n const handle = libredwg.dwg_object_entity_get_handle_object(entity);\n const ownerhandle = libredwg.dwg_object_entity_get_ownerhandle_object(entity);\n const ownerDictionaryHardId = libredwg.dwg_object_entity_get_xdicobjhandle_object(entity);\n const lineType = this.getLtypeName(entity);\n const lineweight = libredwg.dwg_object_entity_get_line_weight(entity);\n const lineTypeScale = libredwg.dwg_object_entity_get_ltype_scale(entity);\n const isVisible = !libredwg.dwg_object_entity_get_invisible(entity);\n const xdata = libredwg.dwg_object_entity_get_xdata(entity);\n return {\n handle: idToString(handle.value),\n ownerDictionaryHardId: idToString(ownerDictionaryHardId.absolute_ref),\n ownerBlockRecordSoftId: idToString(ownerhandle.absolute_ref),\n layer: layer,\n color: rgbColor,\n colorIndex: colorIndex,\n colorName: color.name,\n lineType: lineType,\n lineweight: lineweight,\n lineTypeScale: lineTypeScale,\n isVisible: isVisible,\n transparency: color.alpha,\n transparencyType: color.alpha_type,\n xdata: xdata\n };\n }\n getLayerName(entity) {\n const libredwg = this.libredwg;\n const layer = libredwg.dwg_object_entity_get_layer_object_ref(entity);\n const name = this.layers.get(idToString(layer.handleref.value));\n return name ?? '0';\n }\n getLtypeName(entity) {\n const libredwg = this.libredwg;\n const ltype = libredwg.dwg_object_entity_get_ltype_object_ref(entity);\n const name = this.ltypes.get(idToString(ltype.handleref.value));\n return name ?? '';\n }\n}\n//# sourceMappingURL=entityConverter.js.map","import { HEADER_VARIABLES } from '../database';\nimport { Dwg_Object_Type } from '../types';\nimport { LibreEntityConverter } from './entityConverter';\nimport { idToString, isModelSpace, isPaperSpace } from './utils';\n/**\n * Class used to convert Dwg_Data instance to DwgDatabase instance.\n */\nexport class LibreDwgConverter {\n libredwg;\n entityConverter;\n constructor(instance) {\n this.libredwg = instance;\n this.entityConverter = new LibreEntityConverter(instance);\n }\n convert(data) {\n this.entityConverter.clear();\n const db = {\n tables: {\n APPID: {\n entries: []\n },\n BLOCK_RECORD: {\n entries: []\n },\n DIMSTYLE: {\n entries: []\n },\n LAYER: {\n entries: []\n },\n LTYPE: {\n entries: []\n },\n STYLE: {\n entries: []\n },\n VPORT: {\n entries: []\n }\n },\n objects: {\n DICTIONARY: [],\n IMAGEDEF: [],\n LAYOUT: [],\n SPATIAL_FILTER: []\n },\n header: {},\n entities: [],\n classes: []\n };\n const libredwg = this.libredwg;\n this.convertHeader(data, db.header);\n this.convertClasses(data, db.classes);\n const num_objects = libredwg.dwg_get_num_objects(data);\n for (let i = 0; i < num_objects; i++) {\n const obj = libredwg.dwg_get_object(data, i);\n if (obj) {\n const tio = libredwg.dwg_object_to_object_tio(obj);\n if (tio) {\n const fixedtype = libredwg.dwg_object_get_fixedtype(obj);\n switch (fixedtype) {\n case Dwg_Object_Type.DWG_TYPE_LAYER:\n {\n const layer = this.convertLayer(tio, obj);\n db.tables.LAYER.entries.push(layer);\n this.entityConverter.layers.set(layer.handle, layer.name);\n }\n break;\n case Dwg_Object_Type.DWG_TYPE_LTYPE:\n {\n const ltype = this.convertLineType(tio, obj);\n db.tables.LTYPE.entries.push(ltype);\n this.entityConverter.ltypes.set(ltype.handle, ltype.name);\n }\n break;\n default:\n break;\n }\n }\n }\n }\n for (let i = 0; i < num_objects; i++) {\n const obj = libredwg.dwg_get_object(data, i);\n if (obj) {\n const tio = libredwg.dwg_object_to_object_tio(obj);\n if (tio) {\n const fixedtype = libredwg.dwg_object_get_fixedtype(obj);\n switch (fixedtype) {\n case Dwg_Object_Type.DWG_TYPE_APPID:\n db.tables.APPID.entries.push(this.convertAppId(tio));\n break;\n case Dwg_Object_Type.DWG_TYPE_BLOCK_HEADER:\n {\n const btr = this.convertBlockRecord(tio, obj);\n db.tables.BLOCK_RECORD.entries.push(btr);\n // Store entities in model space and paper space to db.entities to keep the\n // the consistent data structure as DXF file\n if (isModelSpace(btr.name) || isPaperSpace(btr.name)) {\n btr.entities.forEach(entity => {\n db.entities.push(entity);\n // Store ATTRIB entity in db.entities to keep the the consistent data\n // structure as DXF file\n if (entity.type === 'INSERT') {\n entity.attribs.forEach(attrib => {\n db.entities.push(attrib);\n });\n }\n });\n }\n }\n break;\n case Dwg_Object_Type.DWG_TYPE_DIMSTYLE:\n db.tables.DIMSTYLE.entries.push(this.convertDimStyle(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_STYLE:\n db.tables.STYLE.entries.push(this.convertStyle(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_VPORT:\n db.tables.VPORT.entries.push(this.convertViewport(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_DICTIONARY:\n db.objects.DICTIONARY.push(this.convertDictionary(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_IMAGEDEF:\n db.objects.IMAGEDEF.push(this.convertImageDef(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_LAYOUT:\n db.objects.LAYOUT.push(this.convertLayout(tio, obj));\n break;\n case Dwg_Object_Type.DWG_TYPE_SPATIAL_FILTER:\n db.objects.SPATIAL_FILTER.push(this.convertSpatialFilter(tio, obj));\n break;\n default:\n break;\n }\n }\n }\n }\n // Process viewport entities: sort by objectId (handle) and assign viewportId\n const viewportEntities = db.entities.filter(entity => entity.type === 'VIEWPORT');\n viewportEntities.sort((a, b) => {\n // Convert handle to hex number for sorting\n const handleA = parseInt(a.handle, 16);\n const handleB = parseInt(b.handle, 16);\n return handleA - handleB;\n });\n // Assign viewportId starting from 1\n viewportEntities.forEach((viewport, index) => {\n viewport.viewportId = index + 1;\n });\n return db;\n }\n getConversionStats() {\n return {\n unknownEntityCount: this.entityConverter.unknownEntityCount\n };\n }\n convertHeader(data, header) {\n const libredwg = this.libredwg;\n HEADER_VARIABLES.forEach(name => {\n let var_name = name;\n if (name == 'DIMBLK' || name == 'DIMBLK1' || name == 'DIMBLK2') {\n var_name = var_name + '_T';\n }\n let value = libredwg.dwg_dynapi_header_value(data, var_name).data;\n // Get object name if the 'value' is one Dwg_Object_Ref instance.\n // TODO: handle 'CMLSTYLE' correctly\n if (name == 'CELTYPE' ||\n name == 'CLAYER' ||\n name == 'CLAYER' ||\n name == 'DIMSTYLE' ||\n name == 'DIMTXSTY' ||\n name == 'TEXTSTYLE') {\n value = !!value ? libredwg.dwg_ref_get_object_name(value) : '';\n }\n else if (name == 'DRAGVS') {\n value = !!value ? libredwg.dwg_ref_get_absref(value) : 2;\n }\n // @ts-expect-error header variable name\n header[name] = value;\n });\n }\n convertClasses(data, classes) {\n const libredwg = this.libredwg;\n const count = libredwg.dwg_get_num_classes(data);\n for (let index = 0; index < count; index++) {\n const cls = libredwg.dwg_get_class(data, index);\n classes.push({\n dxfName: cls.dxfname,\n cppName: cls.cppname,\n appName: cls.appname,\n capabilitiesFlag: cls.proxyflag,\n instanceCount: cls.num_instances,\n wasAProxyFlag: cls.s_zombie,\n // DWG_TYPE_PROXY_ENTITY = 0x1F2 /* 498 */,\n // DWG_TYPE_PROXY_OBJECT = 0x1F3 /* 499 */,\n isAnEntityFlag: cls.item_class_id === 0x1f2\n });\n }\n }\n convertAppId(item) {\n const libredwg = this.libredwg;\n const name = libredwg.dwg_dynapi_entity_value(item, 'name').data;\n const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n return {\n name: name,\n standardFlag: flag\n };\n }\n convertBlockRecord(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n // The BLOCK_HEADER has only the abbrevated name, but we want \"*D30\" instead of \"*D\".\n // So get full name from BLOCK entity.\n const block = libredwg.dwg_entity_block_header_get_block(item);\n if (block.name) {\n commonAttrs.name = block.name;\n }\n // The number of entities\n const num_owned = libredwg.dwg_dynapi_entity_value(item, 'num_owned')\n .data;\n const flags = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n const description = libredwg.dwg_dynapi_entity_value(item, 'description')\n .data;\n const basePoint = libredwg.dwg_dynapi_entity_value(item, 'base_pt')\n .data;\n const insertionUnits = libredwg.dwg_dynapi_entity_value(item, 'insert_units').data;\n const explodability = libredwg.dwg_dynapi_entity_value(item, 'explodable')\n .data;\n const scalability = libredwg.dwg_dynapi_entity_value(item, 'block_scaling')\n .data;\n const layout_ptr = libredwg.dwg_dynapi_entity_value(item, 'layout')\n .data;\n const layout = idToString(libredwg.dwg_ref_get_absref(layout_ptr));\n let bmpPreview = '';\n const uint8ArrayToHexString = (bytes) => {\n const hexChars = new Array(bytes.length);\n for (let i = 0; i < bytes.length; i++) {\n hexChars[i] = bytes[i].toString(16).toUpperCase();\n }\n return hexChars.join('');\n };\n const bmpPreviewBinaryData = libredwg.dwg_entity_block_header_get_preview(item);\n if (bmpPreviewBinaryData && bmpPreviewBinaryData.length > 0) {\n bmpPreview = uint8ArrayToHexString(bmpPreviewBinaryData);\n }\n // Sometimes function get_first_owned_entity returns 0 when trying to iterate entities in one block.\n // I guess it is one bug on libredwg. I logged [one bug](https://github.com/LibreDWG/libredwg/issues/1199)\n // on libredwg too. In this time, I try to use property 'entities' of block header to iterate entities.\n let entities = this.convertEntities(obj, commonAttrs.handle);\n if (!entities || entities.length == 0) {\n entities = [];\n const entities_ptr = libredwg.dwg_dynapi_entity_value(item, 'entities')\n .data;\n if (entities_ptr) {\n const object_ref_ptr_array = libredwg.dwg_ptr_to_object_ref_ptr_array(entities_ptr, num_owned);\n const converter = this.entityConverter;\n for (let index = 0; index < num_owned; index++) {\n const object = libredwg.dwg_ref_get_object(object_ref_ptr_array[index]);\n const entity = converter.convert(object);\n if (entity) {\n entity.ownerBlockRecordSoftId = commonAttrs.handle;\n entities.push(entity);\n }\n }\n }\n }\n return {\n ...commonAttrs,\n flags: flags,\n description: description,\n basePoint: basePoint,\n layout: layout,\n insertionUnits: insertionUnits,\n explodability: explodability,\n scalability: scalability,\n bmpPreview: bmpPreview,\n entities: entities\n };\n }\n convertEntities(obj, ownerHandle) {\n const libredwg = this.libredwg;\n const converter = this.entityConverter;\n const entities = [];\n let next = libredwg.get_first_owned_entity(obj);\n while (next) {\n const entity = converter.convert(next);\n if (entity) {\n entity.ownerBlockRecordSoftId = ownerHandle;\n entities.push(entity);\n }\n next = libredwg.get_next_owned_entity(obj, next);\n }\n return entities;\n }\n convertDimStyle(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const DIMTOL = libredwg.dwg_dynapi_entity_value(item, 'DIMTOL')\n .data;\n const DIMLIM = libredwg.dwg_dynapi_entity_value(item, 'DIMLIM')\n .data;\n const DIMTIH = libredwg.dwg_dynapi_entity_value(item, 'DIMTIH')\n .data;\n const DIMTOH = libredwg.dwg_dynapi_entity_value(item, 'DIMTOH')\n .data;\n const DIMSE1 = libredwg.dwg_dynapi_entity_value(item, 'DIMSE1')\n .data;\n const DIMSE2 = libredwg.dwg_dynapi_entity_value(item, 'DIMSE2')\n .data;\n const DIMALT = libredwg.dwg_dynapi_entity_value(item, 'DIMALT')\n .data;\n const DIMTOFL = libredwg.dwg_dynapi_entity_value(item, 'DIMTOFL')\n .data;\n const DIMSAH = libredwg.dwg_dynapi_entity_value(item, 'DIMSAH')\n .data;\n const DIMTIX = libredwg.dwg_dynapi_entity_value(item, 'DIMTIX')\n .data;\n const DIMSOXD = libredwg.dwg_dynapi_entity_value(item, 'DIMSOXD')\n .data;\n const DIMALTD = libredwg.dwg_dynapi_entity_value(item, 'DIMALTD')\n .data;\n const DIMZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMZIN')\n .data;\n const DIMSD1 = libredwg.dwg_dynapi_entity_value(item, 'DIMSD1')\n .data;\n const DIMSD2 = libredwg.dwg_dynapi_entity_value(item, 'DIMSD2')\n .data;\n const DIMTOLJ = libredwg.dwg_dynapi_entity_value(item, 'DIMTOLJ')\n .data;\n const DIMJUST = libredwg.dwg_dynapi_entity_value(item, 'DIMJUST')\n .data;\n const DIMFIT = libredwg.dwg_dynapi_entity_value(item, 'DIMFIT')\n .data;\n const DIMUPT = libredwg.dwg_dynapi_entity_value(item, 'DIMUPT')\n .data;\n const DIMTZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMTZIN')\n .data;\n const DIMALTZ = libredwg.dwg_dynapi_entity_value(item, 'DIMALTZ')\n .data;\n const DIMALTTZ = libredwg.dwg_dynapi_entity_value(item, 'DIMALTTZ')\n .data;\n const DIMTAD = libredwg.dwg_dynapi_entity_value(item, 'DIMTAD')\n .data;\n const DIMUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMUNIT')\n .data;\n const DIMAUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMAUNIT')\n .data;\n const DIMDEC = libredwg.dwg_dynapi_entity_value(item, 'DIMDEC')\n .data;\n const DIMTDEC = libredwg.dwg_dynapi_entity_value(item, 'DIMTDEC')\n .data;\n const DIMALTU = libredwg.dwg_dynapi_entity_value(item, 'DIMALTU')\n .data;\n const DIMALTTD = libredwg.dwg_dynapi_entity_value(item, 'DIMALTTD')\n .data;\n const DIMSCALE = libredwg.dwg_dynapi_entity_value(item, 'DIMSCALE')\n .data;\n const DIMASZ = libredwg.dwg_dynapi_entity_value(item, 'DIMASZ')\n .data;\n const DIMEXO = libredwg.dwg_dynapi_entity_value(item, 'DIMEXO')\n .data;\n const DIMDLI = libredwg.dwg_dynapi_entity_value(item, 'DIMDLI')\n .data;\n const DIMEXE = libredwg.dwg_dynapi_entity_value(item, 'DIMEXE')\n .data;\n const DIMRND = libredwg.dwg_dynapi_entity_value(item, 'DIMRND')\n .data;\n const DIMDLE = libredwg.dwg_dynapi_entity_value(item, 'DIMDLE')\n .data;\n const DIMTP = libredwg.dwg_dynapi_entity_value(item, 'DIMTP').data;\n const DIMTM = libredwg.dwg_dynapi_entity_value(item, 'DIMTM').data;\n const DIMFXL = libredwg.dwg_dynapi_entity_value(item, 'DIMFXL')\n .data;\n const DIMJOGANG = libredwg.dwg_dynapi_entity_value(item, 'DIMJOGANG')\n .data;\n const DIMTFILL = libredwg.dwg_dynapi_entity_value(item, 'DIMTFILL')\n .data;\n const DIMTFILLCLR = libredwg.dwg_dynapi_entity_value(item, 'DIMTFILLCLR')\n .data;\n const DIMAZIN = libredwg.dwg_dynapi_entity_value(item, 'DIMAZIN')\n .data;\n const DIMARCSYM = libredwg.dwg_dynapi_entity_value(item, 'DIMARCSYM')\n .data;\n const DIMTXT = libredwg.dwg_dynapi_entity_value(item, 'DIMTXT')\n .data;\n const DIMCEN = libredwg.dwg_dynapi_entity_value(item, 'DIMCEN')\n .data;\n const DIMTSZ = libredwg.dwg_dynapi_entity_value(item, 'DIMTSZ')\n .data;\n const DIMALTF = libredwg.dwg_dynapi_entity_value(item, 'DIMALTF')\n .data;\n const DIMLFAC = libredwg.dwg_dynapi_entity_value(item, 'DIMLFAC')\n .data;\n const DIMTVP = libredwg.dwg_dynapi_entity_value(item, 'DIMTVP')\n .data;\n const DIMTFAC = libredwg.dwg_dynapi_entity_value(item, 'DIMTFAC')\n .data;\n const DIMGAP = libredwg.dwg_dynapi_entity_value(item, 'DIMGAP')\n .data;\n const DIMPOST = libredwg.dwg_dynapi_entity_value(item, 'DIMPOST')\n .data;\n const DIMAPOST = libredwg.dwg_dynapi_entity_value(item, 'DIMAPOST')\n .data;\n const DIMBLK_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK_T')\n .data;\n const DIMBLK1_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK1_T')\n .data;\n const DIMBLK2_T = libredwg.dwg_dynapi_entity_value(item, 'DIMBLK2_T')\n .data;\n const DIMALTRND = libredwg.dwg_dynapi_entity_value(item, 'DIMALTRND')\n .data;\n const DIMCLRD_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRD_N')\n .data;\n const DIMCLRE_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRE_N')\n .data;\n const DIMCLRT_N = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRT_N')\n .data;\n const DIMCLRD = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRD')\n .data;\n const DIMCLRE = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRE')\n .data;\n const DIMCLRT = libredwg.dwg_dynapi_entity_value(item, 'DIMCLRT')\n .data;\n const DIMADEC = libredwg.dwg_dynapi_entity_value(item, 'DIMADEC')\n .data;\n const DIMFRAC = libredwg.dwg_dynapi_entity_value(item, 'DIMFRAC')\n .data;\n const DIMLUNIT = libredwg.dwg_dynapi_entity_value(item, 'DIMLUNIT')\n .data;\n const DIMDSEP = libredwg.dwg_dynapi_entity_value(item, 'DIMDSEP')\n .data;\n const DIMTMOVE = libredwg.dwg_dynapi_entity_value(item, 'DIMTMOVE')\n .data;\n const DIMATFIT = libredwg.dwg_dynapi_entity_value(item, 'DIMATFIT')\n .data;\n const DIMFXLON = libredwg.dwg_dynapi_entity_value(item, 'DIMFXLON')\n .data;\n const DIMTXTDIRECTION = libredwg.dwg_dynapi_entity_value(item, 'DIMTXTDIRECTION').data;\n const DIMALTMZF = libredwg.dwg_dynapi_entity_value(item, 'DIMALTMZF')\n .data;\n const DIMALTMZS = libredwg.dwg_dynapi_entity_value(item, 'DIMALTMZS')\n .data;\n const DIMMZF = libredwg.dwg_dynapi_entity_value(item, 'DIMMZF')\n .data;\n const DIMMZS = libredwg.dwg_dynapi_entity_value(item, 'DIMMZS')\n .data;\n const DIMLWD = libredwg.dwg_dynapi_entity_value(item, 'DIMLWD')\n .data;\n const DIMLWE = libredwg.dwg_dynapi_entity_value(item, 'DIMLWE')\n .data;\n const DIMTXSTY_Ptr = libredwg.dwg_dynapi_entity_value(item, 'DIMTXSTY')\n .data;\n const DIMTXSTY = libredwg.dwg_ref_get_absref(DIMTXSTY_Ptr);\n const DIMLDRBLK_Ptr = libredwg.dwg_dynapi_entity_value(item, 'DIMLDRBLK')\n .data;\n const DIMLDRBLK = libredwg.dwg_ref_get_absref(DIMLDRBLK_Ptr);\n return {\n ...commonAttrs,\n DIMPOST: DIMPOST,\n DIMAPOST: DIMAPOST,\n DIMBLK: DIMBLK_T,\n DIMBLK1: DIMBLK1_T,\n DIMBLK2: DIMBLK2_T,\n DIMSCALE: DIMSCALE,\n DIMASZ: DIMASZ,\n DIMEXO: DIMEXO,\n DIMDLI: DIMDLI,\n DIMEXE: DIMEXE,\n DIMRND: DIMRND,\n DIMDLE: DIMDLE,\n DIMTP: DIMTP,\n DIMTM: DIMTM,\n DIMTXT: DIMTXT,\n DIMCEN: DIMCEN,\n DIMTSZ: DIMTSZ,\n DIMALTF: DIMALTF,\n DIMLFAC: DIMLFAC,\n DIMTVP: DIMTVP,\n DIMTFAC: DIMTFAC,\n DIMGAP: DIMGAP,\n DIMALTRND: DIMALTRND,\n DIMTOL: DIMTOL,\n DIMLIM: DIMLIM,\n DIMTIH: DIMTIH,\n DIMTOH: DIMTOH,\n DIMSE1: DIMSE1,\n DIMSE2: DIMSE2,\n DIMTAD: DIMTAD,\n DIMZIN: DIMZIN,\n DIMAZIN: DIMAZIN,\n DIMALT: DIMALT,\n DIMALTD: DIMALTD,\n DIMTOFL: DIMTOFL,\n DIMSAH: DIMSAH,\n DIMTIX: DIMTIX,\n DIMSOXD: DIMSOXD,\n DIMCLRD: DIMCLRD,\n DIMCLRE: DIMCLRE,\n DIMCLRT: DIMCLRT,\n DIMADEC: DIMADEC,\n DIMUNIT: DIMUNIT,\n DIMDEC: DIMDEC,\n DIMTDEC: DIMTDEC,\n DIMALTU: DIMALTU,\n DIMALTTD: DIMALTTD,\n DIMAUNIT: DIMAUNIT,\n DIMFRAC: DIMFRAC,\n DIMLUNIT: DIMLUNIT,\n DIMDSEP: String.fromCharCode(DIMDSEP),\n DIMTMOVE: DIMTMOVE,\n DIMJUST: DIMJUST,\n DIMSD1: DIMSD1,\n DIMSD2: DIMSD2,\n DIMTOLJ: DIMTOLJ,\n DIMTZIN: DIMTZIN,\n DIMALTZ: DIMALTZ,\n DIMALTTZ: DIMALTTZ,\n DIMFIT: DIMFIT,\n DIMUPT: DIMUPT,\n DIMATFIT: DIMATFIT,\n DIMTXSTY: DIMTXSTY,\n DIMLDRBLK: DIMLDRBLK,\n DIMLWD: DIMLWD,\n DIMLWE: DIMLWE,\n DIMFXL: DIMFXL,\n DIMJOGANG: DIMJOGANG,\n DIMTFILL: DIMTFILL,\n DIMTFILLCLR: DIMTFILLCLR,\n DIMARCSYM: DIMARCSYM,\n DIMCLRD_N: DIMCLRD_N,\n DIMCLRE_N: DIMCLRE_N,\n DIMCLRT_N: DIMCLRT_N,\n DIMFXLON: DIMFXLON,\n DIMTXTDIRECTION: DIMTXTDIRECTION,\n DIMALTMZF: DIMALTMZF,\n DIMALTMZS: DIMALTMZS,\n DIMMZF: DIMMZF,\n DIMMZS: DIMMZS\n };\n }\n convertLayer(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n const frozen = libredwg.dwg_dynapi_entity_value(item, 'frozen')\n .data;\n const off = libredwg.dwg_dynapi_entity_value(item, 'off').data;\n const frozenInNew = libredwg.dwg_dynapi_entity_value(item, 'frozen_in_new')\n .data;\n const locked = libredwg.dwg_dynapi_entity_value(item, 'plotflockedlag')\n .data;\n const plotFlag = libredwg.dwg_dynapi_entity_value(item, 'plotflag')\n .data;\n const linewt = libredwg.dwg_dynapi_entity_value(item, 'linewt')\n .data;\n const color = libredwg.dwg_dynapi_entity_value(item, 'color')\n .data;\n const ltypeRef = libredwg.dwg_dynapi_entity_value(item, 'ltype')\n .data;\n let ltypeName = 'Continuous';\n if (ltypeRef) {\n try {\n ltypeName = libredwg.dwg_ref_get_object_name(ltypeRef);\n }\n catch {\n // ref may be invalid in some DWG files\n }\n }\n // - 0xc0 for ByLayer (also c3 and rgb of 0x100)\n // - 0xc1 for ByBlock (also c3 and rgb of 0)\n // - 0xc2 for entities (default), with names with an additional name flag RC\n // - 0xc3 for truecolor\n // - 0xc5 for foreground color\n // - 0xc8 for none (also c3 and rgb of 0x101)\n const method = color.method;\n let colorIndex = 256;\n let rgbColor = 0xffffff;\n // NOTE: Some older DWG formats use method=0x0 and provide the ACI index via color.index.\n if (method === 0xc3 || ((color.rgb >>> 24) & 0xff) === 0xc3) {\n colorIndex = color.rgb & 0x000000ff;\n }\n else if (method == 0xc2 || ((color.rgb >>> 24) & 0xff) === 0xc2) {\n rgbColor = color.rgb & 0x00ffffff;\n }\n else if (color.index >= 1 && color.index <= 255) {\n // Older DWG format: ACI index is directly available in color.index.\n colorIndex = color.index;\n }\n return {\n ...commonAttrs,\n standardFlag: flag,\n colorIndex: colorIndex,\n color: rgbColor,\n colorName: color.name,\n transparency: color.alpha,\n lineType: ltypeName,\n frozen: frozen != 0,\n off: off != 0,\n frozenInNew: frozenInNew != 0,\n locked: locked != 0,\n plotFlag: plotFlag,\n lineweight: linewt,\n plotStyleNameObjectId: '',\n materialObjectId: ''\n };\n }\n convertLineType(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const flag = libredwg.dwg_dynapi_entity_value(item, 'flag').data;\n const description = libredwg.dwg_dynapi_entity_value(item, 'description')\n .data;\n const numDashes = libredwg.dwg_dynapi_entity_value(item, 'numdashes')\n .data;\n const patternLen = libredwg.dwg_dynapi_entity_value(item, 'pattern_len')\n .data;\n const dashes = libredwg.dwg_dynapi_entity_value(item, 'dashes')\n .data;\n const dashArray = dashes\n ? libredwg.dwg_ptr_to_ltype_dash_array(dashes, numDashes)\n : [];\n return {\n ...commonAttrs,\n description: description,\n standardFlag: flag,\n numberOfLineTypes: numDashes,\n totalPatternLength: patternLen,\n pattern: this.convertLineTypePattern(dashArray)\n };\n }\n convertLineTypePattern(dashes) {\n const patterns = [];\n dashes.forEach(dash => {\n patterns.push({\n elementLength: dash.length || 0,\n elementTypeFlag: dash.complex_shapecode,\n shapeNumber: dash.shape_flag,\n // TODO: convert style handle to style object id\n // styleObjectId: dash.style,\n scale: dash.scale,\n rotation: dash.rotation,\n offsetX: dash.x_offset,\n offsetY: dash.y_offset,\n text: dash.text\n });\n });\n return patterns;\n }\n convertStyle(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const standardFlag = libredwg.dwg_dynapi_entity_value(item, 'flag')\n .data;\n const widthFactor = libredwg.dwg_dynapi_entity_value(item, 'width_factor')\n .data;\n const obliqueAngle = libredwg.dwg_dynapi_entity_value(item, 'oblique_angle')\n .data;\n const textGenerationFlag = libredwg.dwg_dynapi_entity_value(item, 'generation').data;\n const lastHeight = libredwg.dwg_dynapi_entity_value(item, 'last_height')\n .data;\n const font = libredwg.dwg_dynapi_entity_value(item, 'font_file')\n .data;\n const bigFont = libredwg.dwg_dynapi_entity_value(item, 'bigfont_file')\n .data;\n return {\n ...commonAttrs,\n standardFlag: standardFlag,\n fixedTextHeight: 0, // TODO: Set the correct value\n widthFactor: widthFactor,\n obliqueAngle: obliqueAngle,\n textGenerationFlag: textGenerationFlag,\n lastHeight: lastHeight,\n font: font,\n bigFont: bigFont\n };\n }\n convertViewport(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonTableEntryAttrs(item, obj);\n const standardFlag = libredwg.dwg_dynapi_entity_value(item, 'flag')\n .data;\n const viewHeight = libredwg.dwg_dynapi_entity_value(item, 'VIEWSIZE')\n .data;\n const aspectRatio = libredwg.dwg_dynapi_entity_value(item, 'aspect_ratio')\n .data;\n const center = libredwg.dwg_dynapi_entity_value(item, 'VIEWCTR')\n .data;\n const viewTarget = libredwg.dwg_dynapi_entity_value(item, 'view_target')\n .data;\n const viewDirectionFromTarget = libredwg.dwg_dynapi_entity_value(item, 'VIEWDIR').data;\n const viewTwistAngle = libredwg.dwg_dynapi_entity_value(item, 'view_twist')\n .data;\n const lensLength = libredwg.dwg_dynapi_entity_value(item, 'lens_length')\n .data;\n const frontClippingPlane = libredwg.dwg_dynapi_entity_value(item, 'front_clip_z').data;\n const backClippingPlane = libredwg.dwg_dynapi_entity_value(item, 'back_clip_z').data;\n const viewMode = libredwg.dwg_dynapi_entity_value(item, 'VIEWMODE')\n .data;\n const renderMode = libredwg.dwg_dynapi_entity_value(item, 'render_mode')\n .data;\n const isDefaultLightingOn = libredwg.dwg_dynapi_entity_value(item, 'use_default_lights')\n .data != 0;\n const defaultLightningType = libredwg.dwg_dynapi_entity_value(item, 'default_lightning_type').data;\n const brightness = libredwg.dwg_dynapi_entity_value(item, 'brightness')\n .data;\n const contrast = libredwg.dwg_dynapi_entity_value(item, 'contrast')\n .data;\n const ambient_color = libredwg.dwg_dynapi_entity_value(item, 'ambient_color').data;\n // ViewportTableRecord\n const lowerLeftCorner = libredwg.dwg_dynapi_entity_value(item, 'lower_left')\n .data;\n const upperRightCorner = libredwg.dwg_dynapi_entity_value(item, 'upper_right').data;\n // TODO: Not sure whether 'circleSides' is equal to 'circle_zoom'\n const circleSides = libredwg.dwg_dynapi_entity_value(item, 'circle_zoom')\n .data;\n const ucsIconSetting = libredwg.dwg_dynapi_entity_value(item, 'UCSICON')\n .data;\n // TODO: Not sure whether 'gridSpacing' is equal to 'GRIDUNIT'\n const gridSpacing = libredwg.dwg_dynapi_entity_value(item, 'GRIDUNIT')\n .data;\n const snapRotationAngle = libredwg.dwg_dynapi_entity_value(item, 'SNAPANG')\n .data;\n const snapBasePoint = libredwg.dwg_dynapi_entity_value(item, 'SNAPBASE')\n .data;\n // TODO: Not sure whether 'snapSpacing' is equal to 'SNAPUNIT'\n const snapSpacing = libredwg.dwg_dynapi_entity_value(item, 'SNAPUNIT')\n .data;\n const ucsOrigin = libredwg.dwg_dynapi_entity_value(item, 'ucsorg')\n .data;\n const ucsXAxis = libredwg.dwg_dynapi_entity_value(item, 'ucsxdir')\n .data;\n const ucsYAxis = libredwg.dwg_dynapi_entity_value(item, 'ucsydir')\n .data;\n const elevation = libredwg.dwg_dynapi_entity_value(item, 'ucs_elevation')\n .data;\n const majorGridLines = libredwg.dwg_dynapi_entity_value(item, 'grid_major')\n .data;\n const background = libredwg.dwg_dynapi_entity_value(item, 'background')\n .data;\n const backgroundObjectId = background\n ? idToString(libredwg.dwg_ref_get_absref(background))\n : undefined;\n const visualstyle = libredwg.dwg_dynapi_entity_value(item, 'visualstyle')\n .data;\n const visualStyleObjectId = visualstyle\n ? idToString(libredwg.dwg_ref_get_absref(visualstyle))\n : undefined;\n // BITCODE_B UCSFOLLOW;\n // BITCODE_B FASTZOOM;\n // BITCODE_B GRIDMODE; /* DXF 76: on or off */\n // BITCODE_B SNAPMODE; /* DXF 75: on or off */\n // BITCODE_B SNAPSTYLE;\n // BITCODE_BS SNAPISOPAIR;\n // BITCODE_B ucs_at_origin;\n // BITCODE_B UCSVP;\n // BITCODE_BS UCSORTHOVIEW;\n // BITCODE_BS grid_flags; /* bit 1: bound to limits, bit 2: adaptive */\n // BITCODE_H sun;\n // BITCODE_H named_ucs;\n // BITCODE_H base_ucs;\n return {\n ...commonAttrs,\n standardFlag: standardFlag,\n lowerLeftCorner: lowerLeftCorner,\n upperRightCorner: upperRightCorner,\n center: center,\n snapBasePoint: snapBasePoint,\n snapSpacing: snapSpacing,\n gridSpacing: gridSpacing,\n viewDirectionFromTarget: viewDirectionFromTarget,\n viewTarget: viewTarget,\n lensLength: lensLength,\n frontClippingPlane: frontClippingPlane,\n backClippingPlane: backClippingPlane,\n viewHeight: viewHeight,\n aspectRatio: aspectRatio,\n snapRotationAngle: snapRotationAngle,\n viewTwistAngle: viewTwistAngle,\n circleSides: circleSides,\n frozenLayers: [], // TODO: Set the correct value\n styleSheet: '', // TODO: Set the correct value\n renderMode: renderMode,\n viewMode: viewMode,\n ucsIconSetting: ucsIconSetting,\n ucsOrigin: ucsOrigin,\n ucsXAxis: ucsXAxis,\n ucsYAxis: ucsYAxis,\n orthographicType: 0, // TODO: Set the correct value\n elevation: elevation,\n shadePlotSetting: 0, // TODO: Set the correct value\n majorGridLines: majorGridLines,\n backgroundObjectId: backgroundObjectId,\n // shadePlotObjectId: undefined,\n visualStyleObjectId: visualStyleObjectId,\n isDefaultLightingOn: isDefaultLightingOn,\n defaultLightingType: defaultLightningType,\n brightness: brightness,\n contrast: contrast,\n // TODO: Not sure whether 'index' or 'rgb' should be used\n ambientColor: ambient_color.index\n };\n }\n getCommonTableEntryAttrs(tio, obj) {\n const libredwg = this.libredwg;\n const object_tio = libredwg.dwg_object_get_tio(obj);\n const ownerhandle = libredwg.dwg_object_object_get_ownerhandle_object(object_tio);\n const handle = libredwg.dwg_object_get_handle_object(obj);\n return {\n handle: idToString(handle.value),\n ownerHandle: idToString(ownerhandle.absolute_ref),\n name: libredwg.dwg_dynapi_entity_value(tio, 'name').data\n };\n }\n convertDictionary(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n const isHardOwner = libredwg.dwg_dynapi_entity_value(item, 'is_hardowner')\n .data;\n const cloningFlag = libredwg.dwg_dynapi_entity_value(item, 'cloning')\n .data;\n const numitems = libredwg.dwg_dynapi_entity_value(item, 'numitems')\n .data;\n const itemhandles_ptr = libredwg.dwg_dynapi_entity_value(item, 'itemhandles').data;\n const itemhandles = libredwg.dwg_ptr_to_object_ref_array(itemhandles_ptr, numitems);\n const texts = libredwg.dwg_object_dictionary_get_texts(obj);\n const entries = {};\n itemhandles.forEach((handle, index) => (entries[texts[index]] = idToString(handle.absolute_ref)));\n return {\n ...commonAttrs,\n isHardOwner: !!isHardOwner,\n cloningFlag: cloningFlag,\n entries: entries\n };\n }\n convertImageDef(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n // const classVersion = libredwg.dwg_dynapi_entity_value(item, 'class_version').data as number\n const size = libredwg.dwg_dynapi_entity_value(item, 'image_size')\n .data;\n const fileName = libredwg.dwg_dynapi_entity_value(item, 'file_path')\n .data;\n const isLoaded = libredwg.dwg_dynapi_entity_value(item, 'is_loaded')\n .data;\n const sizeOfOnePixel = libredwg.dwg_dynapi_entity_value(item, 'pixel_size')\n .data;\n const resolutionUnits = libredwg.dwg_dynapi_entity_value(item, 'resunits')\n .data;\n return {\n ...commonAttrs,\n fileName: fileName,\n size: size,\n sizeOfOnePixel: sizeOfOnePixel,\n isLoaded: isLoaded,\n resolutionUnits: resolutionUnits\n };\n }\n convertLayout(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n // AcDbLayout\n const layoutName = libredwg.dwg_dynapi_entity_value(item, 'layout_name')\n .data;\n const tabOrder = libredwg.dwg_dynapi_entity_value(item, 'tab_order')\n .data;\n const controlFlag = libredwg.dwg_dynapi_entity_value(item, 'layout_flags')\n .data;\n const insertionPoint = libredwg.dwg_dynapi_entity_value(item, 'INSBASE')\n .data;\n const minLimit = libredwg.dwg_dynapi_entity_value(item, 'LIMMIN')\n .data;\n const maxLimit = libredwg.dwg_dynapi_entity_value(item, 'LIMMAX')\n .data;\n const ucsOrigin = libredwg.dwg_dynapi_entity_value(item, 'UCSORG')\n .data;\n const ucsXAxis = libredwg.dwg_dynapi_entity_value(item, 'UCSXDIR')\n .data;\n const ucsYAxis = libredwg.dwg_dynapi_entity_value(item, 'UCSYDIR')\n .data;\n const orthographicType = libredwg.dwg_dynapi_entity_value(item, 'UCSORTHOVIEW').data;\n const minExtent = libredwg.dwg_dynapi_entity_value(item, 'EXTMIN')\n .data;\n const maxExtent = libredwg.dwg_dynapi_entity_value(item, 'EXTMAX')\n .data;\n const elevation = libredwg.dwg_dynapi_entity_value(item, 'ucs_elevation')\n .data;\n const block_header_ref = libredwg.dwg_dynapi_entity_value(item, 'block_header').data;\n const paperSpaceTableId = idToString(libredwg.dwg_ref_get_absref(block_header_ref));\n const active_viewport_ref = libredwg.dwg_dynapi_entity_value(item, 'active_viewport').data;\n const viewportId = idToString(libredwg.dwg_ref_get_absref(active_viewport_ref));\n const named_ucs_ref = libredwg.dwg_dynapi_entity_value(item, 'named_ucs')\n .data;\n const namedUcsId = !!named_ucs_ref\n ? idToString(libredwg.dwg_ref_get_absref(named_ucs_ref))\n : undefined;\n // BITCODE_H base_ucs;\n // BITCODE_BL num_viewports; // r2004+\n // BITCODE_H *viewports; // r2004+\n return {\n ...commonAttrs,\n layoutName: layoutName,\n controlFlag: controlFlag,\n tabOrder: tabOrder,\n minLimit: minLimit,\n maxLimit: maxLimit,\n insertionPoint: insertionPoint,\n minExtent: minExtent,\n maxExtent: maxExtent,\n elevation: elevation,\n ucsOrigin: ucsOrigin,\n ucsXAxis: ucsXAxis,\n ucsYAxis: ucsYAxis,\n orthographicType: orthographicType,\n paperSpaceTableId: paperSpaceTableId,\n viewportId: viewportId,\n namedUcsId: namedUcsId,\n // orthographicUcsId?: string;\n shadePlotId: '' // TODO: Set the correct value\n };\n }\n convertSpatialFilter(item, obj) {\n const libredwg = this.libredwg;\n const commonAttrs = this.getCommonObjectAttrs(obj);\n const origin = libredwg.dwg_dynapi_entity_value(item, 'origin')\n .data;\n const numberOfPointsOnClipBoundary = libredwg.dwg_dynapi_entity_value(item, 'num_clip_verts').data;\n const clip_verts_ptr = libredwg.dwg_dynapi_entity_value(item, 'clip_verts')\n .data;\n const vertices = libredwg.dwg_ptr_to_point2d_array(clip_verts_ptr, numberOfPointsOnClipBoundary);\n const extrusionDirection = libredwg.dwg_dynapi_entity_value(item, 'extrusion').data;\n const clipBoundaryVisible = libredwg.dwg_dynapi_entity_value(item, 'display_boundary_on').data;\n const frontClippingPlaneFlag = libredwg.dwg_dynapi_entity_value(item, 'front_clip_on').data;\n const frontClippingPlaneDistance = libredwg.dwg_dynapi_entity_value(item, 'front_clip_z').data;\n const backClippingPlaneFlag = libredwg.dwg_dynapi_entity_value(item, 'back_clip_on').data;\n const backClippingPlaneDistance = libredwg.dwg_dynapi_entity_value(item, 'back_clip_z').data;\n const transform_ptr = libredwg.dwg_dynapi_entity_value(item, 'transform')\n .data;\n const matrix = libredwg.dwg_ptr_to_double_array(transform_ptr, 12);\n const inverse_transform_ptr = libredwg.dwg_dynapi_entity_value(item, 'inverse_transform').data;\n const invertBlockMatrix = libredwg.dwg_ptr_to_double_array(inverse_transform_ptr, 12);\n return {\n ...commonAttrs,\n origin: origin,\n numberOfPointsOnClipBoundary: numberOfPointsOnClipBoundary,\n vertices: vertices,\n extrusionDirection: extrusionDirection,\n clipBoundaryVisible: !!clipBoundaryVisible,\n frontClippingPlaneFlag: !!frontClippingPlaneFlag,\n frontClippingPlaneDistance: frontClippingPlaneDistance,\n backClippingPlaneFlag: !!backClippingPlaneFlag,\n backClippingPlaneDistance: backClippingPlaneDistance,\n matrix: matrix,\n invertBlockMatrix: invertBlockMatrix\n };\n }\n getCommonObjectAttrs(obj) {\n const libredwg = this.libredwg;\n const object_tio = libredwg.dwg_object_get_tio(obj);\n const ownerhandle = libredwg.dwg_object_object_get_ownerhandle_object(object_tio);\n const handle = libredwg.dwg_object_get_handle_object(obj);\n return {\n handle: idToString(handle.value),\n ownerHandle: idToString(ownerhandle.absolute_ref)\n };\n }\n}\n//# sourceMappingURL=converter.js.map","/**\n * Represents a 2D axis-aligned bounding box.\n */\nexport class Box2D {\n min;\n max;\n valid;\n constructor() {\n this.min = { x: Infinity, y: Infinity };\n this.max = { x: -Infinity, y: -Infinity };\n this.valid = false;\n }\n /**\n * Expands the bounding box to include a given point.\n *\n * @param point - The point to include in the bounding box.\n * @returns This bounding box after expansion.\n */\n expandByPoint(point) {\n this.min.x = Math.min(this.min.x, point.x);\n this.min.y = Math.min(this.min.y, point.y);\n this.max.x = Math.max(this.max.x, point.x);\n this.max.y = Math.max(this.max.y, point.y);\n this.valid = true;\n return this;\n }\n /**\n * Applies a scaling and translation transformation to this bounding box.\n *\n * @param scale - The scaling factors in x and y directions.\n * @param translation - The translation offsets in x and y directions.\n * @returns This bounding box after transformation.\n */\n transform(scale, translation) {\n const corners = this.getCorners().map(p => ({\n x: p.x * scale.x + translation.x,\n y: p.y * scale.y + translation.y\n }));\n this.reset();\n for (const pt of corners) {\n this.expandByPoint(pt);\n }\n return this;\n }\n /**\n * Applies a rotation around a specific point to this bounding box.\n *\n * @param angleInRad - The angle of rotation in radians.\n * @param point - The center of rotation.\n * @returns This bounding box after rotation.\n */\n rotate(angleInRad, point) {\n const cos = Math.cos(angleInRad);\n const sin = Math.sin(angleInRad);\n const corners = this.getCorners().map(p => {\n const dx = p.x - point.x;\n const dy = p.y - point.y;\n return {\n x: point.x + dx * cos - dy * sin,\n y: point.y + dx * sin + dy * cos\n };\n });\n this.reset();\n for (const pt of corners) {\n this.expandByPoint(pt);\n }\n return this;\n }\n /**\n * Creates a deep copy of this bounding box.\n *\n * @returns A new instance of Box2D with the same properties.\n */\n clone() {\n const box = new Box2D();\n box.min = { x: this.min.x, y: this.min.y };\n box.max = { x: this.max.x, y: this.max.y };\n box.valid = this.valid;\n return box;\n }\n /**\n * Resets this bounding box to its initial unbounded state.\n */\n reset() {\n this.min = { x: Infinity, y: Infinity };\n this.max = { x: -Infinity, y: -Infinity };\n this.valid = false;\n }\n /**\n * Retrieves the four corner points of the bounding box.\n *\n * @returns An array of corner points in the order:\n * bottom-left, top-left, bottom-right, top-right.\n */\n getCorners() {\n return [\n { x: this.min.x, y: this.min.y },\n { x: this.min.x, y: this.max.y },\n { x: this.max.x, y: this.min.y },\n { x: this.max.x, y: this.max.y }\n ];\n }\n}\n//# sourceMappingURL=box2d.js.map","/**\n * Copied and ported to code standard as the b-spline library is not maintained any longer.\n * Source:\n * https://github.com/thibauts/b-spline\n * Copyright (c) 2015 Thibaut Séguy <thibaut.seguy@gmail.com>\n *\n * B-spline evaluator with optional weights and knot vector.\n * Returns a point on the curve given parameter t ∈ [0,1].\n */\nexport function evaluateBSpline(t, degree, points, knots, weights) {\n const n = points.length; // Number of control points\n if (n === 0)\n throw new Error('points must not be empty');\n const d = points[0].length; // Dimensionality\n if (t < 0 || t > 1) {\n throw new Error(`t out of bounds [0,1]: ${t}`);\n }\n if (degree < 1) {\n throw new Error('degree must be at least 1 (linear)');\n }\n if (degree > n - 1) {\n throw new Error('degree must be less than or equal to point count - 1');\n }\n const weightsSafe = weights ?? new Array(n).fill(1);\n const knotsSafe = knots ??\n (() => {\n const result = [];\n for (let i = 0; i < n + degree + 1; i++) {\n result.push(i);\n }\n return result;\n })();\n if (knotsSafe.length !== n + degree + 1) {\n throw new Error('bad knot vector length');\n }\n const domain = [degree, knotsSafe.length - 1 - degree];\n const low = knotsSafe[domain[0]];\n const high = knotsSafe[domain[1]];\n t = t * (high - low) + low;\n t = Math.max(t, low);\n t = Math.min(t, high);\n let s = domain[0];\n for (; s < domain[1]; s++) {\n if (t >= knotsSafe[s] && t <= knotsSafe[s + 1]) {\n break;\n }\n }\n // Homogeneous coordinates\n const v = new Array(n);\n for (let i = 0; i < n; i++) {\n v[i] = new Array(d + 1);\n for (let j = 0; j < d; j++) {\n v[i][j] = points[i][j] * weightsSafe[i];\n }\n v[i][d] = weightsSafe[i];\n }\n // De Boor algorithm\n for (let l = 1; l <= degree + 1; l++) {\n for (let i = s; i > s - degree - 1 + l; i--) {\n const denom = knotsSafe[i + degree + 1 - l] - knotsSafe[i];\n const alpha = denom === 0 ? 0 : (t - knotsSafe[i]) / denom;\n for (let j = 0; j < d + 1; j++) {\n v[i][j] = (1 - alpha) * v[i - 1][j] + alpha * v[i][j];\n }\n }\n }\n const result = new Array(d);\n for (let i = 0; i < d; i++) {\n result[i] = round10(v[s][i] / v[s][d], -9);\n }\n return result;\n}\n/**\n * Rounds a number to a specified exponent of 10.\n * Equivalent to shifting the decimal point, rounding, then shifting back.\n *\n * @param value - The number to round.\n * @param exp - The exponent (e.g., -1 for 1 decimal place, -9 for nanometers).\n * @returns The rounded number.\n */\nfunction round10(value, exp) {\n if (exp === 0 || exp === undefined) {\n return Math.round(value);\n }\n if (isNaN(value) || !Number.isInteger(exp)) {\n return NaN;\n }\n // Shift\n const [base, exponent = '0'] = value.toString().split('e');\n const shifted = Math.round(Number(`${base}e${+exponent - exp}`));\n // Shift back\n const [shiftedBase, shiftedExp = '0'] = shifted.toString().split('e');\n return Number(`${shiftedBase}e${+shiftedExp + exp}`);\n}\n//# sourceMappingURL=bspline.js.map","const _colorKeywords = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n/**\n * AutoCAD files sometimes use an indexed color value between 1 and 255 inclusive.\n * Each value corresponds to a color. index 1 is red, that is 16711680 or 0xFF0000.\n * index 0 and 256, while included in this array, are actually reserved for inheritance\n * values in AutoCAD so they should not be used for index color lookups.\n */\nconst AUTO_CAD_COLOR_INDEX = [\n 0, 16711680, 16776960, 65280, 65535, 255, 16711935, 16777215, 8421504,\n 12632256, 16711680, 16744319, 13369344, 13395558, 10027008, 10046540, 8323072,\n 8339263, 4980736, 4990502, 16727808, 16752511, 13382400, 13401958, 10036736,\n 10051404, 8331008, 8343359, 4985600, 4992806, 16744192, 16760703, 13395456,\n 13408614, 10046464, 10056268, 8339200, 8347455, 4990464, 4995366, 16760576,\n 16768895, 13408512, 13415014, 10056192, 10061132, 8347392, 8351551, 4995328,\n 4997670, 16776960, 16777087, 13421568, 13421670, 10000384, 10000460, 8355584,\n 8355647, 5000192, 5000230, 12582656, 14679935, 10079232, 11717734, 7510016,\n 8755276, 6258432, 7307071, 3755008, 4344870, 8388352, 12582783, 6736896,\n 10079334, 5019648, 7510092, 4161280, 6258495, 2509824, 3755046, 4194048,\n 10485631, 3394560, 8375398, 2529280, 6264908, 2064128, 5209919, 1264640,\n 3099686, 65280, 8388479, 52224, 6736998, 38912, 5019724, 32512, 4161343,\n 19456, 2509862, 65343, 8388511, 52275, 6737023, 38950, 5019743, 32543,\n 4161359, 19475, 2509871, 65407, 8388543, 52326, 6737049, 38988, 5019762,\n 32575, 4161375, 19494, 2509881, 65471, 8388575, 52377, 6737074, 39026,\n 5019781, 32607, 4161391, 19513, 2509890, 65535, 8388607, 52428, 6737100,\n 39064, 5019800, 32639, 4161407, 19532, 2509900, 49151, 8380415, 39372,\n 6730444, 29336, 5014936, 24447, 4157311, 14668, 2507340, 32767, 8372223,\n 26316, 6724044, 19608, 5010072, 16255, 4153215, 9804, 2505036, 16383, 8364031,\n 13260, 6717388, 9880, 5005208, 8063, 4149119, 4940, 2502476, 255, 8355839,\n 204, 6710988, 152, 5000344, 127, 4145023, 76, 2500172, 4129023, 10452991,\n 3342540, 8349388, 2490520, 6245528, 2031743, 5193599, 1245260, 3089996,\n 8323327, 12550143, 6684876, 10053324, 4980888, 7490712, 4128895, 6242175,\n 2490444, 3745356, 12517631, 14647295, 10027212, 11691724, 7471256, 8735896,\n 6226047, 7290751, 3735628, 4335180, 16711935, 16744447, 13369548, 13395660,\n 9961624, 9981080, 8323199, 8339327, 4980812, 4990540, 16711871, 16744415,\n 13369497, 13395634, 9961586, 9981061, 8323167, 8339311, 4980793, 4990530,\n 16711807, 16744383, 13369446, 13395609, 9961548, 9981042, 8323135, 8339295,\n 4980774, 4990521, 16711743, 16744351, 13369395, 13395583, 9961510, 9981023,\n 8323103, 8339279, 4980755, 4990511, 3355443, 5987163, 8684676, 11382189,\n 14079702, 16777215, 0\n];\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nexport class Color {\n _colorIndex;\n _color;\n _colorName;\n static NAMES = _colorKeywords;\n constructor() {\n this._colorIndex = 256;\n this._color = null;\n this._colorName = null;\n }\n get color() {\n return this._color;\n }\n set color(value) {\n if (value == null) {\n this._color = null;\n }\n else {\n this._color = Math.round(clamp(value, 0, 256 * 256 * 256 - 1));\n this._colorIndex = this.getColorIndexByValue(this._color);\n this._colorName = this.getColorNameByValue(this._color);\n }\n }\n get hexColor() {\n // Ensure the number is a valid RGB value\n if (this._color && this._color > 0 && this._color <= 0xffffff) {\n let hexString = this._color.toString(16).toUpperCase();\n // Pad the string with leading zeros if necessary\n while (hexString.length < 6) {\n hexString = '0' + hexString;\n }\n return `0x${hexString}`;\n }\n return '';\n }\n get cssColor() {\n return `rgb(${this.red},${this.green},${this.blue})`;\n }\n get red() {\n return this.color != null ? (this.color >> 16) & 255 : null;\n }\n get green() {\n return this.color != null ? (this.color >> 8) & 255 : null;\n }\n get blue() {\n return this.color != null ? this.color & 255 : null;\n }\n /**\n * AutoCAD color index value. The index value will be in the range 0 to 256. 0 and 256 are special values.\n * If value less than 0 is set, 0 will be used. If value greater than 256 is set, 256 will be used.\n * - 0 indicates that the entity uses the color of the BlockReference that's displaying it. If the entity\n * is not displayed through a block reference (for example, it is directly owned by the model space\n * block table record) and its color is 0, then it will display as though its color were 7.\n * - 256 indicates that the entity uses the color specified in the layer table record it references.\n */\n get colorIndex() {\n return this._colorIndex;\n }\n set colorIndex(value) {\n if (value == null) {\n this._colorIndex = null;\n }\n else {\n this._colorIndex = clamp(value, 0, 256);\n this._color = AUTO_CAD_COLOR_INDEX[value];\n this._colorName = this.getColorNameByValue(this._color);\n }\n }\n get colorName() {\n return this._colorName;\n }\n set colorName(value) {\n if (value) {\n const color = _colorKeywords[value.toLowerCase()];\n if (color !== undefined) {\n // red\n this._colorName = value;\n this._color = color;\n this._colorIndex = this.getColorIndexByValue(this._color);\n }\n else {\n // unknown color\n console.warn('Unknown color: ' + value);\n }\n }\n else {\n this._colorName = null;\n }\n }\n get hasColorName() {\n return this._colorName == null;\n }\n get hasColorIndex() {\n return this._colorIndex == null;\n }\n get isByLayer() {\n return this.colorIndex == 256;\n }\n setByLayer() {\n this.colorIndex = 256;\n return this;\n }\n get isByBlock() {\n return this.colorIndex == 0;\n }\n setByBlock() {\n this.colorIndex = 0;\n return this;\n }\n setScalar(scalar) {\n this.setRGB(scalar, scalar, scalar);\n return this;\n }\n setRGB(r, g, b) {\n const red = Math.round(clamp(r, 0, 255));\n const green = Math.round(clamp(g, 0, 255));\n const blue = Math.round(clamp(b, 0, 255));\n this.color = (red << 16) + (green << 8) + blue;\n return this;\n }\n setColorName(style) {\n const color = _colorKeywords[style.toLowerCase()];\n if (color !== undefined) {\n // red\n this.color = color;\n }\n else {\n // unknown color\n console.warn('Unknown color ' + style);\n }\n return this;\n }\n clone() {\n const clonedColor = new Color();\n clonedColor.colorIndex = this.colorIndex;\n clonedColor.color = this.color;\n clonedColor._colorName = this._colorName;\n return this;\n }\n copy(color) {\n this.colorIndex = color.colorIndex;\n this.color = color.color;\n this._colorName = color._colorName;\n return this;\n }\n equals(c) {\n return (c.color == this.color &&\n c.colorIndex == this.colorIndex &&\n c._colorName == this._colorName);\n }\n toString() {\n if (this.isByLayer) {\n return 'ByLayer';\n }\n else if (this.isByBlock) {\n return 'ByBlock';\n }\n else if (this.colorName) {\n return this.colorName;\n }\n else {\n return this.hexColor;\n }\n }\n getColorNameByValue(target) {\n for (const [key, value] of Object.entries(_colorKeywords)) {\n if (value === target) {\n return key;\n }\n }\n return null;\n }\n getColorIndexByValue(target) {\n const length = AUTO_CAD_COLOR_INDEX.length - 1;\n for (let index = 1; index < length; ++index) {\n if (AUTO_CAD_COLOR_INDEX[index] === target) {\n return index;\n }\n }\n return null;\n }\n}\n//# sourceMappingURL=color.js.map","export class Vector2D {\n x;\n y;\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n add(v) {\n return new Vector2D(this.x + v.x, this.y + v.y);\n }\n sub(v) {\n return new Vector2D(this.x - v.x, this.y - v.y);\n }\n multiply(scalar) {\n return new Vector2D(this.x * scalar, this.y * scalar);\n }\n length() {\n return Math.sqrt(this.x ** 2 + this.y ** 2);\n }\n norm() {\n const len = this.length();\n if (len === 0)\n return new Vector2D(0, 0);\n return new Vector2D(this.x / len, this.y / len);\n }\n}\n//# sourceMappingURL=vector.js.map","import { Vector2D } from './vector';\nexport function createPolylineArcPoints(from, to, bulge, resolution = 5) {\n let theta;\n let a;\n let b;\n if (bulge < 0) {\n theta = Math.atan(-bulge) * 4;\n a = new Vector2D(from.x, from.y);\n b = new Vector2D(to.x, to.y);\n }\n else {\n theta = Math.atan(bulge) * 4;\n a = new Vector2D(to.x, to.y);\n b = new Vector2D(from.x, from.y);\n }\n const ab = b.sub(a);\n const lengthAB = ab.length();\n const c = a.add(ab.multiply(0.5));\n const lengthCD = Math.abs(lengthAB / 2 / Math.tan(theta / 2));\n const normAB = ab.norm();\n const rotated = new Vector2D(normAB.x * Math.cos(Math.PI / 2) - normAB.y * Math.sin(Math.PI / 2), normAB.y * Math.cos(Math.PI / 2) + normAB.x * Math.sin(Math.PI / 2));\n const d = theta < Math.PI\n ? c.add(rotated.multiply(-lengthCD))\n : c.add(rotated.multiply(lengthCD));\n const startAngle = (Math.atan2(b.y - d.y, b.x - d.x) / Math.PI) * 180;\n let endAngle = (Math.atan2(a.y - d.y, a.x - d.x) / Math.PI) * 180;\n if (endAngle < startAngle) {\n endAngle += 360;\n }\n const r = b.sub(d).length();\n const startInter = Math.floor(startAngle / resolution) * resolution + resolution;\n const endInter = Math.ceil(endAngle / resolution) * resolution - resolution;\n const points = [];\n for (let i = startInter; i <= endInter; i += resolution) {\n const angleRad = (i / 180) * Math.PI;\n const point = d.add(new Vector2D(Math.cos(angleRad) * r, Math.sin(angleRad) * r));\n points.push(point);\n }\n if (bulge < 0) {\n points.reverse();\n }\n return points;\n}\nexport function interpolatePolyline(entity, closed = false) {\n let points = [];\n const vertices = entity.vertices.map(v => {\n return {\n x: v.x,\n y: v.y,\n bulge: v.bulge\n };\n });\n if (closed) {\n vertices.push(vertices[0]);\n }\n for (let i = 0, len = vertices.length; i < len - 1; ++i) {\n const from = vertices[i];\n const to = vertices[i + 1];\n points.push(from);\n if (vertices[i].bulge) {\n points = points.concat(createPolylineArcPoints(from, to, entity.vertices[i].bulge));\n }\n // The last iteration of the for loop\n if (i === len - 2) {\n points.push(to);\n }\n }\n return points;\n}\n//# sourceMappingURL=polyline.js.map","import { isModelSpace } from '../converter/utils';\nimport { DwgAttachmentPoint, DwgTextHorizontalAlign } from '../database';\nimport { Box2D } from './box2d';\nimport { evaluateBSpline } from './bspline';\nimport { Color } from './color';\nimport { interpolatePolyline } from './polyline';\nexport class SvgConverter {\n blockMap = new Map();\n rotate(point, angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return {\n x: point.x * cos - point.y * sin,\n y: point.x * sin + point.y * cos\n };\n }\n /**\n * Interpolates a B-spline curve and returns the resulting polyline.\n *\n * @param controlPoints The control points of the B-spline.\n * @param degree The degree of the B-spline.\n * @param knots The knot vector.\n * @param interpolationsPerSplineSegment Number of interpolated points per spline segment.\n * @param weights Optional weight vector for rational B-splines.\n * @returns An array of interpolated 2D points representing the polyline.\n */\n interpolateBSpline(controlPoints, degree, knots, interpolationsPerSplineSegment = 25, weights) {\n const polyline = [];\n const controlPointsForLib = controlPoints.map((p) => [p.x, p.y]);\n const segmentTs = [knots[degree]];\n const domain = [\n knots[degree],\n knots[knots.length - 1 - degree]\n ];\n for (let k = degree + 1; k < knots.length - degree; ++k) {\n if (segmentTs[segmentTs.length - 1] !== knots[k]) {\n segmentTs.push(knots[k]);\n }\n }\n for (let i = 1; i < segmentTs.length; ++i) {\n const uMin = segmentTs[i - 1];\n const uMax = segmentTs[i];\n for (let k = 0; k <= interpolationsPerSplineSegment; ++k) {\n const u = (k / interpolationsPerSplineSegment) * (uMax - uMin) + uMin;\n let t = (u - domain[0]) / (domain[1] - domain[0]);\n t = Math.max(0, Math.min(1, t)); // Clamp t to [0, 1]\n const p = evaluateBSpline(t, degree, controlPointsForLib, knots, weights);\n polyline.push({ x: p[0], y: p[1] });\n }\n }\n return polyline;\n }\n addFlipXIfApplicable(entity, { bbox, element }) {\n if ('extrusionDirection' in entity &&\n entity.extrusionDirection.z === -1) {\n return {\n bbox: new Box2D()\n .expandByPoint({ x: -bbox.min.x, y: bbox.min.y })\n .expandByPoint({ x: -bbox.max.x, y: bbox.max.y }),\n element: `<g transform=\"matrix(-1 0 0 1 0 0)\">${element}</g>`\n };\n }\n else {\n return { bbox, element };\n }\n }\n line(entity) {\n const bbox = new Box2D()\n .expandByPoint({ x: entity.startPoint.x, y: entity.startPoint.y })\n .expandByPoint({ x: entity.endPoint.x, y: entity.endPoint.y });\n const element = `<line x1=\"${entity.startPoint.x}\" y1=\"${entity.startPoint.y}\" x2=\"${entity.endPoint.x}\" y2=\"${entity.endPoint.y}\" />`;\n return { bbox, element };\n }\n ray(entity) {\n const scale = 10000;\n const firstPoint = entity.firstPoint;\n const secondPoint = {\n x: firstPoint.x + entity.unitDirection.x * scale,\n y: firstPoint.y + entity.unitDirection.y * scale\n };\n const bbox = new Box2D()\n .expandByPoint(firstPoint)\n .expandByPoint(secondPoint);\n const element = `<line x1=\"${firstPoint.x}\" y1=\"${firstPoint.y}\" x2=\"${secondPoint.x}\" y2=\"${secondPoint.y}\" />`;\n return { bbox, element };\n }\n xline(entity) {\n const scale = 10000;\n const firstPoint = {\n x: entity.firstPoint.x - entity.unitDirection.x * scale,\n y: entity.firstPoint.y - entity.unitDirection.y * scale\n };\n const secondPoint = {\n x: entity.firstPoint.x + entity.unitDirection.x * scale,\n y: entity.firstPoint.y + entity.unitDirection.y * scale\n };\n const bbox = new Box2D()\n .expandByPoint(firstPoint)\n .expandByPoint(secondPoint);\n const element = `<line x1=\"${firstPoint.x}\" y1=\"${firstPoint.y}\" x2=\"${secondPoint.x}\" y2=\"${secondPoint.y}\" />`;\n return { bbox, element };\n }\n extractMTextLines(mtext) {\n return (mtext\n // Convert Unicode codes to characters\n .replace(/\\\\U\\+([0-9A-Fa-f]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))\n // Preserve line breaks: replace \\P with newline placeholder\n .replace(/\\\\P/g, '\\n')\n // Remove underline, overline\n .replace(/\\\\[LOlo]/g, '')\n // Remove font specs like \\FArial|b0|i0|c134|p49;\n .replace(/\\\\[Ff][^;\\\\]*?(?:\\|[^;\\\\]*)*;/g, '')\n // Remove formatting codes like \\H1.0x; \\W0.5; \\C7 etc.\n .replace(/\\\\[KkCcHhWwTtAa][^;\\\\]*;?/g, '')\n // Remove general \\word; style control codes like \\x; \\pxqc;\n .replace(/\\\\[a-zA-Z]+;?/g, '')\n // Remove AutoCAD %% control sequences like %%d, %%p, etc.\n .replace(/%%(d|p|c|%)/gi, '')\n // Replace escaped backslash\n .replace(/\\\\\\\\/g, '\\\\')\n // Replace non-breaking space\n .replace(/\\\\~/g, '\\u00A0')\n // Remove grouping braces\n .replace(/[{}]/g, '')\n // Split by preserved newlines\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0));\n }\n lines(lines, fontsize, insertionPoint, extentsWidth, anchor = 'start') {\n const bbox = new Box2D()\n .expandByPoint({\n x: insertionPoint.x,\n y: insertionPoint.y\n })\n .expandByPoint({\n x: insertionPoint.x + extentsWidth,\n y: insertionPoint.y - lines.length * fontsize * 1.5\n });\n const texts = lines.map((line, index) => {\n const x = insertionPoint.x;\n const y = insertionPoint.y - index * fontsize * 1.5;\n const transform = `translate(${x},${y}) scale(1,-1) translate(${-x},${-y})`;\n return `<text x=\"${x}\" y=\"${y}\" font-size=\"${fontsize}\" text-anchor=\"${anchor}\" transform=\"${transform}\">${line}</text>`;\n });\n return { bbox, element: texts.join('\\n') };\n }\n mtext(entity) {\n const fontsize = entity.textHeight;\n const insertionPoint = entity.insertionPoint;\n const lines = this.extractMTextLines(entity.text);\n const attachmentPoint = entity.attachmentPoint;\n let anchor = 'start';\n if (attachmentPoint == DwgAttachmentPoint.BottomCenter ||\n attachmentPoint == DwgAttachmentPoint.MiddleCenter ||\n attachmentPoint == DwgAttachmentPoint.TopCenter) {\n anchor = 'middle';\n }\n else if (attachmentPoint == DwgAttachmentPoint.BottomRight ||\n attachmentPoint == DwgAttachmentPoint.MiddleRight ||\n attachmentPoint == DwgAttachmentPoint.TopRight) {\n anchor = 'end';\n }\n return this.lines(lines, fontsize, insertionPoint, entity.extentsWidth, anchor);\n }\n table(entity) {\n const { rowCount, columnCount, rowHeightArr, columnWidthArr, startPoint, cells } = entity;\n const originX = startPoint.x;\n const originY = startPoint.y;\n // Compute cell rectangles\n const cellRects = [];\n for (let row = 0, y = originY; row < rowCount; row++) {\n const height = rowHeightArr[row];\n let x = originX;\n for (let col = 0; col < columnCount; col++) {\n const cellIndex = row * columnCount + col;\n const cell = cells[cellIndex];\n const width = columnWidthArr[col];\n cellRects.push({ x, y, width, height, cell, row, col });\n x += width;\n }\n y += height;\n }\n // Create SVG content\n const svgElements = cellRects\n .map(({ x, y, width, height, cell }) => {\n const lines = [];\n if (cell.topBorderVisibility)\n lines.push(`<line x1=\"${x}\" y1=\"${y}\" x2=\"${x + width}\" y2=\"${y}\" stroke=\"black\" />`);\n if (cell.bottomBorderVisibility)\n lines.push(`<line x1=\"${x}\" y1=\"${y + height}\" x2=\"${x + width}\" y2=\"${y + height}\" stroke=\"black\" />`);\n if (cell.leftBorderVisibility)\n lines.push(`<line x1=\"${x}\" y1=\"${y}\" x2=\"${x}\" y2=\"${y + height}\" stroke=\"black\" />`);\n if (cell.rightBorderVisibility)\n lines.push(`<line x1=\"${x + width}\" y1=\"${y}\" x2=\"${x + width}\" y2=\"${y + height}\" stroke=\"black\" />`);\n const textX = x + width / 2;\n const textY = y + height / 2 + cell.textHeight / 3;\n const text = `<text x=\"${textX}\" y=\"${textY}\" font-size=\"${cell.textHeight}\" text-anchor=\"middle\" dominant-baseline=\"middle\">${cell.text}</text>`;\n return [...lines, text].join('\\n');\n })\n .join('\\n');\n const totalWidth = columnWidthArr.reduce((sum, w) => sum + w, 0);\n const totalHeight = rowHeightArr.reduce((sum, h) => sum + h, 0);\n const bbox = new Box2D()\n .expandByPoint({ x: originX, y: originY })\n .expandByPoint({ x: originX + totalWidth, y: originY + totalHeight });\n const svg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${totalWidth}\" height=\"${totalHeight}\" viewBox=\"${originX} ${originY} ${totalWidth} ${totalHeight}\">\n ${svgElements}\n </svg>\n `.trim();\n return {\n bbox,\n element: svg\n };\n }\n text(entity) {\n const fontsize = entity.textHeight;\n const insertionPoint = entity.startPoint;\n const lines = [entity.text];\n let extentsWidth = entity.endPoint.x - entity.endPoint.x;\n if (entity.halign == 0) {\n extentsWidth = entity.text.length * fontsize + entity.startPoint.x;\n }\n let anchor = 'start';\n if (entity.halign == DwgTextHorizontalAlign.CENTER) {\n anchor = 'middle';\n }\n else if (entity.halign == DwgTextHorizontalAlign.RIGHT) {\n anchor = 'end';\n }\n return this.lines(lines, fontsize, insertionPoint, extentsWidth, anchor);\n }\n vertices(vertices, closed = false) {\n const bbox = vertices.reduce((acc, point) => acc.expandByPoint(point), new Box2D());\n let d = vertices.reduce((acc, point, i) => {\n acc += i === 0 ? 'M' : 'L';\n acc += point.x + ',' + point.y;\n return acc;\n }, '');\n if (closed) {\n d += 'Z';\n }\n return { bbox, element: `<path d=\"${d}\" />` };\n }\n circle(entity) {\n const bbox0 = new Box2D()\n .expandByPoint({\n x: entity.center.x + entity.radius,\n y: entity.center.y + entity.radius\n })\n .expandByPoint({\n x: entity.center.x - entity.radius,\n y: entity.center.y - entity.radius\n });\n const element0 = `<circle cx=\"${entity.center.x}\" cy=\"${entity.center.y}\" r=\"${entity.radius}\" />`;\n return {\n bbox: bbox0,\n element: element0\n };\n }\n ellipseOrArc(cx, cy, majorX, majorY, axisRatio, startAngle, endAngle) {\n const rx = Math.sqrt(majorX * majorX + majorY * majorY);\n const ry = axisRatio * rx;\n const rotationAngle = -Math.atan2(-majorY, majorX);\n const bbox = this.bboxEllipseOrArc(cx, cy, majorX, majorY, axisRatio, startAngle, endAngle);\n if (Math.abs(startAngle - endAngle) < 1e-9 ||\n Math.abs(startAngle - endAngle + Math.PI * 2) < 1e-9) {\n const element = `<g transform=\"rotate(${(rotationAngle / Math.PI) * 180} ${cx}, ${cy})\"><ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${rx}\" ry=\"${ry}\" /></g>`;\n return { bbox, element };\n }\n else {\n const startOffset = this.rotate({ x: Math.cos(startAngle) * rx, y: Math.sin(startAngle) * ry }, rotationAngle);\n const startPoint = { x: cx + startOffset.x, y: cy + startOffset.y };\n const endOffset = this.rotate({ x: Math.cos(endAngle) * rx, y: Math.sin(endAngle) * ry }, rotationAngle);\n const endPoint = { x: cx + endOffset.x, y: cy + endOffset.y };\n const adjustedEndAngle = endAngle < startAngle ? endAngle + Math.PI * 2 : endAngle;\n const largeArcFlag = adjustedEndAngle - startAngle < Math.PI ? 0 : 1;\n const d = `M ${startPoint.x} ${startPoint.y} A ${rx} ${ry} ${(rotationAngle / Math.PI) * 180} ${largeArcFlag} 1 ${endPoint.x} ${endPoint.y}`;\n const element = `<path d=\"${d}\" />`;\n return { bbox, element };\n }\n }\n bboxEllipseOrArc(cx, cy, majorX, majorY, axisRatio, startAngle, endAngle) {\n while (startAngle < 0)\n startAngle += Math.PI * 2;\n while (endAngle <= startAngle)\n endAngle += Math.PI * 2;\n const angles = [];\n if (Math.abs(majorX) < 1e-12 || Math.abs(majorY) < 1e-12) {\n for (let i = 0; i < 4; i++) {\n angles.push((i / 2) * Math.PI);\n }\n }\n else {\n angles[0] = Math.atan((-majorY * axisRatio) / majorX) - Math.PI;\n angles[1] = Math.atan((majorX * axisRatio) / majorY) - Math.PI;\n angles[2] = angles[0] - Math.PI;\n angles[3] = angles[1] - Math.PI;\n }\n for (let i = 4; i >= 0; i--) {\n while (angles[i] < startAngle)\n angles[i] += Math.PI * 2;\n if (angles[i] > endAngle) {\n angles.splice(i, 1);\n }\n }\n angles.push(startAngle);\n angles.push(endAngle);\n const pts = angles.map(a => ({ x: Math.cos(a), y: Math.sin(a) }));\n const M = [\n [majorX, -majorY * axisRatio],\n [majorY, majorX * axisRatio]\n ];\n const rotatedPts = pts.map(p => ({\n x: p.x * M[0][0] + p.y * M[0][1] + cx,\n y: p.x * M[1][0] + p.y * M[1][1] + cy\n }));\n const bbox = rotatedPts.reduce((acc, p) => {\n acc.expandByPoint(p);\n return acc;\n }, new Box2D());\n return bbox;\n }\n ellipse(entity) {\n const { bbox: bbox0, element: element0 } = this.ellipseOrArc(entity.center.x, entity.center.y, entity.majorAxisEndPoint.x, entity.majorAxisEndPoint.y, entity.axisRatio, entity.startAngle, entity.endAngle);\n return {\n bbox: bbox0,\n element: element0\n };\n }\n arc(entity) {\n const { bbox: bbox0, element: element0 } = this.ellipseOrArc(entity.center.x, entity.center.y, entity.radius, 0, 1, entity.startAngle, entity.endAngle);\n return {\n bbox: bbox0,\n element: element0\n };\n }\n dimension(entity) {\n const block = this.blockMap.get(entity.name);\n if (block) {\n return {\n bbox: block.bbox,\n element: `<use href=\"#${entity.name}\" />`\n };\n }\n return null;\n }\n insert(entity) {\n const block = this.blockMap.get(entity.name);\n if (block) {\n // In SVG, the unit of rotate is degrees — not radians.\n const insertionPoint = entity.insertionPoint;\n // const basePoint = block.bbox.min\n const rotation = entity.rotation * (180 / Math.PI);\n const transform = `translate(${insertionPoint.x},${insertionPoint.y}) rotate(${rotation}) scale(${entity.xScale},${entity.yScale})`;\n const newBBox = block.bbox\n .clone()\n .transform({ x: entity.xScale, y: entity.yScale }, { x: insertionPoint.x, y: insertionPoint.y })\n .rotate(entity.rotation, insertionPoint);\n return {\n bbox: newBBox,\n element: `<use href=\"#${entity.name}\" transform=\"${transform}\" />`\n };\n }\n return null;\n }\n block(block, dwg) {\n const entities = block.entities;\n const { bbox, elements } = entities.reduce((acc, entity) => {\n const boundsAndElement = this.entityToBoundsAndElement(entity);\n if (boundsAndElement) {\n const { bbox, element } = boundsAndElement;\n if (bbox.valid) {\n acc.bbox.expandByPoint(bbox.min);\n acc.bbox.expandByPoint(bbox.max);\n }\n const color = this.getEntityColor(dwg.tables.LAYER.entries, entity);\n const fill = entity.type == 'TEXT' || entity.type == 'MTEXT'\n ? color.cssColor\n : 'none';\n if (color.isByBlock) {\n acc.elements.push(`<g id=\"${entity.handle}\">${element}</g>`);\n }\n else {\n acc.elements.push(`<g id=\"${entity.handle}\" stroke=\"${color.cssColor}\" fill=\"${fill}\">${element}</g>`);\n }\n }\n return acc;\n }, {\n bbox: new Box2D(),\n elements: []\n });\n if (bbox.valid) {\n return {\n bbox,\n element: `<g id=\"${block.name}\">${elements.join('\\n')}</g>`\n };\n }\n return null;\n }\n entityToBoundsAndElement(entity) {\n let result = null;\n switch (entity.type) {\n case 'ARC':\n result = this.arc(entity);\n break;\n case 'CIRCLE':\n result = this.circle(entity);\n break;\n case 'DIMENSION':\n result = this.dimension(entity);\n break;\n case 'ELLIPSE':\n result = this.ellipse(entity);\n break;\n case 'INSERT':\n result = this.insert(entity);\n break;\n case 'LINE':\n result = this.line(entity);\n break;\n case 'LWPOLYLINE': {\n const lwpolyline = entity;\n const closed = !!(lwpolyline.flag & 0x200);\n const vertices = interpolatePolyline(lwpolyline, closed);\n result = this.vertices(vertices, closed);\n break;\n }\n case 'MTEXT':\n result = this.mtext(entity);\n break;\n case 'SPLINE': {\n const spline = entity;\n result = this.vertices(this.interpolateBSpline(spline.controlPoints, spline.degree, spline.knots, 25, spline.weights));\n break;\n }\n case 'POLYLINE': {\n // const polyline = entity as DwgPolylineEntity\n // const closed = !!(polyline.flag & 0x1)\n // const vertices = interpolatePolyline(polyline, closed)\n // result = this.vertices(vertices, closed)\n break;\n }\n case 'RAY':\n result = this.ray(entity);\n break;\n case 'TABLE':\n result = this.table(entity);\n break;\n case 'TEXT':\n result = this.text(entity);\n break;\n case 'XLINE':\n result = this.xline(entity);\n break;\n default:\n result = null;\n break;\n }\n if (result) {\n return this.addFlipXIfApplicable(entity, result);\n }\n return null;\n }\n getEntityColor(layers, entity) {\n // Get entity color\n const color = new Color();\n if (entity.colorIndex != null) {\n color.colorIndex = entity.colorIndex;\n }\n else if (entity.colorName) {\n color.colorName = entity.colorName;\n }\n else if (entity.color != null) {\n color.color = entity.color;\n }\n // ACI 7 is one background-dependent color\n if (color.colorIndex == 7) {\n color.colorIndex = 256;\n }\n // If color is 'byLayer', use the layer color\n if (color.isByLayer) {\n const layer = layers.find((layer) => layer.name === entity.layer);\n if (layer != null) {\n color.colorIndex = layer.colorIndex;\n }\n }\n if (color.color == null) {\n color.color = 0xffffff;\n }\n return color;\n }\n convert(dwg) {\n let modelSpace = null;\n this.blockMap.clear();\n let blockElements = '';\n dwg.tables.BLOCK_RECORD.entries.forEach(block => {\n if (isModelSpace(block.name)) {\n modelSpace = block;\n }\n else {\n const item = this.block(block, dwg);\n if (item) {\n blockElements += item.element;\n this.blockMap.set(block.name, item);\n }\n }\n });\n const ms = this.block(modelSpace, dwg);\n const viewBox = ms && ms.bbox.valid\n ? {\n x: ms.bbox.min.x,\n y: -ms.bbox.max.y,\n width: ms.bbox.max.x - ms.bbox.min.x,\n height: ms.bbox.max.y - ms.bbox.min.y\n }\n : {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return `<?xml version=\"1.0\"?>\n<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n preserveAspectRatio=\"xMinYMin meet\"\n viewBox=\"${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}\"\n width=\"100%\" height=\"100%\"\n>\n <defs>${blockElements}</defs>\n <g stroke=\"#000000\" stroke-width=\"0.1%\" fill=\"none\" transform=\"matrix(1,0,0,-1,0,0)\">\n ${ms ? ms.element : ''}\n </g>\n</svg>`;\n }\n}\n//# sourceMappingURL=svgConverter.js.map","import createModule from '../wasm/libredwg-web.js';\nimport { LibreDwgConverter } from './converter';\nimport { dwgCodePageToEncoding, dwgVersions } from './database';\nimport { SvgConverter } from './svg';\nimport { Dwg_File_Type, Dwg_Object_Type } from './types';\nexport { createModule };\nexport var DwgThumbnailImageType;\n(function (DwgThumbnailImageType) {\n DwgThumbnailImageType[DwgThumbnailImageType[\"BMP\"] = 2] = \"BMP\";\n DwgThumbnailImageType[DwgThumbnailImageType[\"WMF\"] = 3] = \"WMF\";\n DwgThumbnailImageType[DwgThumbnailImageType[\"PNG\"] = 6] = \"PNG\";\n})(DwgThumbnailImageType || (DwgThumbnailImageType = {}));\nexport class LibreDwg {\n static instance;\n wasmInstance;\n decoder;\n constructor(wasmInstance) {\n this.wasmInstance = wasmInstance;\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Delegate to the wasmInstance for WebAssembly methods\n return Reflect.get(target.wasmInstance, prop, receiver);\n }\n });\n }\n dwg_read_data(fileContent, fileType) {\n if (fileType == Dwg_File_Type.DWG) {\n const fileName = 'tmp.dwg';\n try {\n this.wasmInstance.FS.writeFile(fileName, new Uint8Array(fileContent));\n const result = this.wasmInstance.dwg_read_file(fileName);\n if (result.error != 0) {\n console.log('Open dwg file with error code: ', result.error);\n }\n return result.data;\n }\n finally {\n if (this.wasmInstance.FS.analyzePath(fileName, false).exists) {\n this.wasmInstance.FS.unlink(fileName);\n }\n }\n }\n // else if (fileType == Dwg_File_Type.DXF) {\n // const fileName = \"tmp.dxf\";\n // this.wasmInstance.FS.writeFile(fileName, new Uint8Array(fileContent as ArrayBuffer));\n // const result = this.wasmInstance.dxf_read_file(fileName);\n // if (result.error != 0) {\n // console.log('Open dxf file with error code: ', result.error);\n // }\n // this.wasmInstance.FS.unlink(fileName);\n // return result.data as Dwg_Data_Ptr;\n // }\n }\n /**\n * Converts DWG file content to DXF file content.\n * @param fileContent DWG file content.\n * @returns Returns DXF file content if conversion succeeds. Otherwise returns null.\n */\n dwg_write_dxf(fileContent) {\n const inputFileName = 'tmp.dwg';\n const outputFileName = 'tmp.dxf';\n try {\n this.wasmInstance.FS.writeFile(inputFileName, new Uint8Array(fileContent));\n const error = this.wasmInstance.dwg_write_dxf(inputFileName, outputFileName);\n if (error != 0) {\n console.log('Convert dwg to dxf with error code: ', error);\n return null;\n }\n return this.wasmInstance.FS.readFile(outputFileName);\n }\n finally {\n if (this.wasmInstance.FS.analyzePath(inputFileName, false).exists) {\n this.wasmInstance.FS.unlink(inputFileName);\n }\n if (this.wasmInstance.FS.analyzePath(outputFileName, false).exists) {\n this.wasmInstance.FS.unlink(outputFileName);\n }\n }\n }\n /**\n * Gets the version of the dwg.\n * @param data Pointer to Dwg_Data instance.\n * @returns Return the version of the dwg\n */\n dwg_get_version_type(data) {\n const version = this.wasmInstance.dwg_get_version_type(data);\n return dwgVersions[version];\n }\n /**\n * Gets code page of the dwg.\n * @param data Pointer to Dwg_Data instance.\n * @returns Return code page of the dwg\n */\n dwg_get_codepage(data) {\n const codepage = this.wasmInstance.dwg_get_codepage(data);\n return codepage;\n }\n /**\n * Extracts thumbnail image from dwg.\n * @param data Pointer to Dwg_Data instance.\n * @returns Return thumbnail image data\n */\n dwg_bmp(data) {\n return this.wasmInstance.dwg_bmp(data);\n }\n /**\n * Returns the number of classes in dwg file.\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns the number of classes in dwg file.\n */\n dwg_get_num_classes(data) {\n return this.wasmInstance.dwg_get_num_classes(data);\n }\n /**\n * Returns the nth class in dwg file.\n * @param data Pointer to Dwg_Data instance.\n * @param index Index of the class\n * @returns Returns the nth class in dwg file.\n */\n dwg_get_class(data, index) {\n return this.wasmInstance.dwg_get_class(data, index);\n }\n /**\n * Converts Dwg_Data instance to DwgDatabase instance. DwgDatabase instance doesn't depend on\n * Dwg_Data instance any more after conversion. So you can call function dwg_free to free memory\n * occupied by Dwg_Data.\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns the converted DwgDatabase.\n */\n convert(data) {\n const codepage = this.dwg_get_codepage(data);\n const encoding = dwgCodePageToEncoding(codepage);\n this.decoder = new TextDecoder(encoding);\n const converter = new LibreDwgConverter(this);\n return converter.convert(data);\n }\n /**\n * Converts Dwg_Data instance to DwgDatabase instance and returns conversion statistics.\n * DwgDatabase instance doesn't depend on Dwg_Data instance any more after conversion.\n * So you can call function dwg_free to free memory occupied by Dwg_Data.\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns the converted DwgDatabase and conversion statistics.\n */\n convertEx(data) {\n const codepage = this.dwg_get_codepage(data);\n const encoding = dwgCodePageToEncoding(codepage);\n this.decoder = new TextDecoder(encoding);\n const converter = new LibreDwgConverter(this);\n return {\n database: converter.convert(data),\n stats: converter.getConversionStats()\n };\n }\n /**\n * Converts DwgDatabase instance to svg string.\n * @param data DwgDatabase instance.\n * @returns Returns the converted svg string.\n */\n dwg_to_svg(data) {\n const converter = new SvgConverter();\n return converter.convert(data);\n }\n /**\n * Frees the whole DWG. all tables, sections, objects, ...\n * @param data Pointer to Dwg_Data instance.\n */\n dwg_free(data) {\n this.wasmInstance.dwg_free(data);\n }\n /**\n * Frees the object (all three structs and its fields)\n * @group Dwg_Object Methods\n * @param ptr Pointer to one Dwg_Object instance.\n */\n dwg_free_object(obj_ptr) {\n this.wasmInstance.dwg_free_object(obj_ptr);\n }\n /**\n * Gets an object by its handle.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @returns Returns the object whose handle is equal to the given handle.\n */\n dwg_ref_object(data, ref_ptr) {\n return this.wasmInstance.dwg_ref_object(data, ref_ptr);\n }\n /**\n * Gets an object by its handle without warning message.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @returns Returns the object whose handle is equal to the given handle.\n */\n dwg_ref_object_silent(data, ref_ptr) {\n return this.wasmInstance.dwg_ref_object_silent(data, ref_ptr);\n }\n /**\n * Gets an object given its handle and relative base object.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @param obj_ptr Pointer to the relative base object (Dwg_Object instance).\n * @returns Returns the object given its handle and relative base object.\n */\n dwg_ref_object_relative(data, ref_ptr, obj_ptr) {\n return this.wasmInstance.dwg_ref_object_relative(data, ref_ptr, obj_ptr);\n }\n /**\n * Resolves handle absref value to Dwg_Object instance.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param absref Handle absref value.\n * @returns Returns the object with the given handle absref value.\n */\n dwg_resolve_handle(data, absref) {\n return this.wasmInstance.dwg_resolve_handle(data, absref);\n }\n /**\n * Resolves handle absref value to Dwg_Object instance without warning message.\n * @group Handle Conversion Methods\n * @param data Pointer to Dwg_Data instance.\n * @param absref Handle absref value.\n * @returns Returns the object with the given handle absref value.\n */\n dwg_resolve_handle_silent(data, absref) {\n return this.wasmInstance.dwg_resolve_handle_silent(data, absref);\n }\n /**\n * Sets ref->absolute_ref from the specified obj for a subsequent dwg_resolve_handle\n * @group Handle Conversion Methods\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns 1 if set absref value correctly. Otherwise, return 0.\n */\n dwg_resolve_handleref(ref_ptr, obj_ptr) {\n return this.wasmInstance.dwg_resolve_handleref(ref_ptr, obj_ptr);\n }\n /**\n * Returns object (such as line type, layer name, dimension style, and etc.) name by its handle.\n * @group Handle Conversion Methods\n * @param ref_ptr Pointer to Dwg_Object_Ref instance.\n * @returns Returns object name by its handle.\n */\n dwg_ref_get_object_name(ref_ptr) {\n const wasmInstance = this.wasmInstance;\n const obj = wasmInstance.dwg_ref_get_object(ref_ptr);\n const obj_tio = wasmInstance.dwg_object_to_object_tio(obj);\n const obj_name = this.dwg_dynapi_entity_value(obj_tio, 'name')\n .data;\n return obj_name;\n }\n /**\n * Converts Dwg_Object_Object instance to Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object_Object instance.\n * @returns Returns one pointer to Dwg_Object instance.\n */\n dwg_obj_obj_to_object(obj_obj_ptr) {\n return this.wasmInstance.dwg_obj_obj_to_object(obj_obj_ptr);\n }\n /**\n * Converts Dwg_Object_* instance to Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_generic_ptr Pointer to Dwg_Object_* instance.\n * @returns Returns one pointer to Dwg_Object instance.\n */\n dwg_obj_generic_to_object(obj_generic_ptr) {\n return this.wasmInstance.dwg_obj_generic_to_object(obj_generic_ptr);\n }\n /**\n * Converts Dwg_Object instance to Dwg_Object_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Object instance.\n */\n dwg_object_to_object(obj_ptr) {\n return this.wasmInstance.dwg_object_to_object(obj_ptr);\n }\n /**\n * Gets Dwg_Object_* instance (such as Dwg_Entity_LAYER, Dwg_Entity_STYLE, and etc.)\n * from Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Object_TIO_Ptr instance.\n */\n dwg_object_to_object_tio(obj_ptr) {\n return this.wasmInstance.dwg_object_to_object_tio(obj_ptr);\n }\n /**\n * Converts Dwg_Object instance to Dwg_Object_Entity instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Entity instance.\n */\n dwg_object_to_entity(obj_ptr) {\n return this.wasmInstance.dwg_object_to_entity(obj_ptr);\n }\n /**\n * Gets Dwg_Entity_* instance (such as Dwg_Entity_LINE, Dwg_Entity_SPLINE, and etc.)\n * from Dwg_Object instance.\n * @group Object Conversion Methods\n * @param obj_ptr Pointer to Dwg_Object instance.\n * @returns Returns one pointer to Dwg_Object_Object_TIO_Ptr instance.\n */\n dwg_object_to_entity_tio(obj_ptr) {\n return this.wasmInstance.dwg_object_to_entity_tio(obj_ptr);\n }\n /**\n * Returns all of entities in the model space. Each item in returned array\n * is one Dwg_Object pointer (Dwg_Object*).\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of entities in the model space.\n */\n dwg_getall_entities_in_model_space(data) {\n const wasmInstance = this.wasmInstance;\n const model_space = wasmInstance.dwg_model_space_object(data);\n const entities = [];\n let next = wasmInstance.get_first_owned_entity(model_space);\n while (next) {\n entities.push(next);\n next = wasmInstance.get_next_owned_entity(model_space, next);\n }\n return entities;\n }\n /**\n * Returns all of objects in Dwg_Data instance with the specified type.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @param type Object type.\n * @returns Returns all of objects with the specified type.\n */\n dwg_getall_object_by_type(data, type) {\n const wasmInstance = this.wasmInstance;\n const num_objects = wasmInstance.dwg_get_num_objects(data);\n const results = [];\n for (let i = 0; i < num_objects; i++) {\n const obj = wasmInstance.dwg_get_object(data, i);\n const tio = wasmInstance.dwg_object_to_object_tio(obj);\n if (tio && wasmInstance.dwg_object_get_fixedtype(obj) == type) {\n results.push(tio);\n }\n }\n return results;\n }\n /**\n * Returns all of objects in Dwg_Data instance with the specified type.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @param type Object type.\n * @returns Returns all of objects with the specified type.\n */\n dwg_getall_entity_by_type(data, type) {\n const wasmInstance = this.wasmInstance;\n const num_objects = wasmInstance.dwg_get_num_objects(data);\n const results = [];\n for (let i = 0; i < num_objects; i++) {\n const obj = wasmInstance.dwg_get_object(data, i);\n const tio = wasmInstance.dwg_object_to_entity_tio(obj);\n if (tio && wasmInstance.dwg_object_get_fixedtype(obj) == type) {\n results.push(tio);\n }\n }\n return results;\n }\n /**\n * Returns all of layer objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of layer objects in Dwg_Data instance.\n */\n dwg_getall_LAYER(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_LAYER);\n }\n /**\n * Returns all of line type objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of line type objects in Dwg_Data instance.\n */\n dwg_getall_LTYPE(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_LTYPE);\n }\n /**\n * Returns all of text style objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of text style objects in Dwg_Data instance.\n */\n dwg_getall_STYLE(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_STYLE);\n }\n /**\n * Returns all of dimension style objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of dimension style objects in Dwg_Data instance.\n */\n dwg_getall_DIMSTYLE(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_DIMSTYLE);\n }\n /**\n * Returns all of viewport objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of viewport objects in Dwg_Data instance.\n */\n dwg_getall_VPORT(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_VPORT);\n }\n /**\n * Returns all of layout objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of layout objects in Dwg_Data instance.\n */\n dwg_getall_LAYOUT(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_LAYOUT);\n }\n /**\n * Returns all of block objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of block objects in Dwg_Data instance.\n */\n dwg_getall_BLOCK(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_BLOCK);\n }\n /**\n * Returns all of block header objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of block header objects in Dwg_Data instance.\n */\n dwg_getall_BLOCK_HEADER(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_BLOCK_HEADER);\n }\n /**\n * Returns all of image definition objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of image definition objects in Dwg_Data instance.\n */\n dwg_getall_IMAGEDEF(data) {\n return this.dwg_getall_object_by_type(data, Dwg_Object_Type.DWG_TYPE_IMAGEDEF);\n }\n /**\n * Returns all of 2d vertex objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 2d vertex objects in Dwg_Data instance.\n */\n dwg_getall_VERTEX_2D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_VERTEX_2D);\n }\n /**\n * Returns all of 3d vertex objects in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 3d vertex objects in Dwg_Data instance.\n */\n dwg_getall_VERTEX_3D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_VERTEX_3D);\n }\n /**\n * Returns all of 2d polyline entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 2d polyline entities in Dwg_Data instance.\n */\n dwg_getall_POLYLINE_2D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_POLYLINE_2D);\n }\n /**\n * Returns all of 3d polyline entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of 3d polyline entities in Dwg_Data instance.\n */\n dwg_getall_POLYLINE_3D(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_POLYLINE_3D);\n }\n /**\n * Returns all of image entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of image entities in Dwg_Data instance.\n */\n dwg_getall_IMAGE(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_IMAGE);\n }\n /**\n * Returns all of lwpolyline entities in Dwg_Data instance.\n * @group GetAll Methods\n * @param data Pointer to Dwg_Data instance.\n * @returns Returns all of lwpolyline entities in Dwg_Data instance.\n */\n dwg_getall_LWPOLYLINE(data) {\n return this.dwg_getall_entity_by_type(data, Dwg_Object_Type.DWG_TYPE_LWPOLYLINE);\n }\n /**\n * Converts one C++ handle array to one JavaScript Dwg_Object_Ref array.\n * @group Array Methods\n * @param ptr Pointer to C++ handle array.\n * @param size The size of C++ handle array.\n * @returns Returns one JavaScript Dwg_Object_Ref array from the specified C++ handle array.\n */\n dwg_ptr_to_object_ref_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_object_ref_array(ptr, size);\n }\n /**\n * Converts one C++ handle array to one JavaScript Dwg_Object_Ref_Ptr array.\n * @group Array Methods\n * @param ptr Pointer to C++ handle array.\n * @param size The size of C++ handle array.\n * @returns Returns one JavaScript Dwg_Object_Ref_Ptr array from the specified C++ handle array.\n */\n dwg_ptr_to_object_ref_ptr_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_object_ref_ptr_array(ptr, size);\n }\n /**\n * Converts one C++ wchar_t* array to one JavaScript string array.\n * @group Array Methods\n * @param ptr Pointer to C++ wchar_t* array.\n * @param size The size of C++ wchar_t* array.\n * @returns Returns one JavaScript string array from the specified C++ wchar_t* array.\n */\n dwg_ptr_to_wchar_string_array(ptr, size) {\n // const array = this.wasmInstance.dwg_ptr_to_char_string_array(ptr, size) as Array<Dwg_String>\n // return array.map(item => item.data)\n return this.wasmInstance.dwg_ptr_to_wchar_string_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned char array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned char array.\n * @param size The size of C++ unsigned char array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned char array.\n */\n dwg_ptr_to_unsigned_char_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_unsigned_char_array(ptr, size);\n }\n /**\n * Converts one C++ signed char array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ signed char array.\n * @param size The size of C++ signed char array.\n * @returns Returns one JavaScript number array from the specified C++ signed char array.\n */\n dwg_ptr_to_signed_char_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_signed_char_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned int16 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned int16 array.\n * @param size The size of C++ unsigned int16 array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned int16 array.\n */\n dwg_ptr_to_uint16_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_uint16_t_array(ptr, size);\n }\n /**\n * Converts one C++ int16 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ int16 array.\n * @param size The size of C++ int16 array.\n * @returns Returns one JavaScript number array from the specified C++ int16 array.\n */\n dwg_ptr_to_int16_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_int16_t_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned int32 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned int32 array.\n * @param size The size of C++ unsigned int32 array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned int32 array.\n */\n dwg_ptr_to_uint32_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_uint32_t_array(ptr, size);\n }\n /**\n * Converts one C++ int32 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ int32 array.\n * @param size The size of C++ int32 array.\n * @returns Returns one JavaScript number array from the specified C++ int32 array.\n */\n dwg_ptr_to_int32_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_int32_t_array(ptr, size);\n }\n /**\n * Converts one C++ unsigned int64 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ unsigned int64 array.\n * @param size The size of C++ unsigned int64 array.\n * @returns Returns one JavaScript number array from the specified C++ unsigned int64 array.\n */\n dwg_ptr_to_uint64_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_uint64_t_array(ptr, size);\n }\n /**\n * Converts one C++ int64 array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ int64 array.\n * @param size The size of C++ int64 array.\n * @returns Returns one JavaScript number array from the specified C++ int64 array.\n */\n dwg_ptr_to_int64_t_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_int64_t_array(ptr, size);\n }\n /**\n * Converts one C++ double array to one JavaScript number array.\n * @group Array Methods\n * @param ptr Pointer to C++ double array.\n * @param size The size of C++ double array.\n * @returns Returns one JavaScript number array from the specified C++ double array.\n */\n dwg_ptr_to_double_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_double_array(ptr, size);\n }\n /**\n * Converts one C++ 2d point array to one JavaScript 2d point array.\n * @group Array Methods\n * @param ptr Pointer to C++ 2d point array.\n * @param size The size of C++ 2 point array.\n * @returns Returns one JavaScript 2d point array from the specified C++ 2d point array.\n */\n dwg_ptr_to_point2d_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_point2d_array(ptr, size);\n }\n /**\n * Converts one C++ 3d point array to one JavaScript 3d point array.\n * @group Array Methods\n * @param ptr Pointer to C++ 3d point array.\n * @param size The size of C++ 3d point array.\n * @returns Returns one JavaScript 3d point array from the specified C++ 3d point array.\n */\n dwg_ptr_to_point3d_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_point3d_array(ptr, size);\n }\n /**\n * Converts one C++ 4d point array to one JavaScript 4d point array.\n * @group Array Methods\n * @param ptr Pointer to C++ 4d point array.\n * @param size The size of C++ 4d point array.\n * @returns Returns one JavaScript 4d point array from the specified C++ 4d point array.\n */\n dwg_ptr_to_point4d_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_point4d_array(ptr, size);\n }\n /**\n * Converts one C++ line type array to one JavaScript line type array.\n * @group Array Methods\n * @param ptr Pointer to C++ line type array.\n * @param size The size of C++ line type array.\n * @returns Returns one JavaScript line type array from the specified C++ line type array.\n */\n dwg_ptr_to_ltype_dash_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_ltype_dash_array(ptr, size);\n }\n /**\n * Converts one C++ table cell array to one JavaScript table cell array.\n * @group Array Methods\n * @group Dwg_Entity_TABLE Methods\n * @param ptr Pointer to C++ table cell array.\n * @param size The size of C++ table cell array.\n * @returns Returns one JavaScript table cell array from the specified C++ table cell array.\n */\n dwg_ptr_to_table_cell_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_table_cell_array(ptr, size);\n }\n /**\n * Converts one C++ hatch definition line array to one JavaScript hatch definition line array.\n * @group Array Methods\n * @group Dwg_Entity_HATCH Methods\n * @param ptr Pointer to C++ hatch definition line array.\n * @param size The size of C++ hatch definition line array.\n * @returns Returns one JavaScript hatch definition line array from the specified C++ hatch definition line array.\n */\n dwg_ptr_to_hatch_defline_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_hatch_defline_array(ptr, size);\n }\n /**\n * Converts one C++ hatch path array to one JavaScript hatch path array.\n * @group Array Methods\n * @group Dwg_Entity_HATCH Methods\n * @param ptr Pointer to C++ hatch path array.\n * @param size The size of C++ hatch path array.\n * @returns Returns one JavaScript hatch path array from the specified C++ hatch path array.\n */\n dwg_ptr_to_hatch_path_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_hatch_path_array(ptr, size);\n }\n /**\n * Converts one C++ hatch gradient color array to one JavaScript hatch gradient color array.\n * @group Array Methods\n * @group Dwg_Entity_HATCH Methods\n * @param ptr Pointer to C++ hatch gradient color array.\n * @param size The size of C++ hatch gradient color array.\n * @returns Returns one JavaScript hatch gradient color array from the specified C++ hatch gradient color array.\n */\n dwg_ptr_to_hatch_gradient_color_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_hatch_gradient_color_array(ptr, size);\n }\n /**\n * Converts one C++ mline vertex array to one JavaScript mline vertex array.\n * @group Array Methods\n * @group Dwg_Entity_MLINE Methods\n * @param ptr Pointer to C++ mline vertex array.\n * @param size The size of C++ mline vertex array.\n * @returns Returns one JavaScript mline vertex array from the specified C++ mline vertex array.\n */\n dwg_ptr_to_mline_vertex_array(ptr, size) {\n return this.wasmInstance.dwg_ptr_to_mline_vertex_array(ptr, size);\n }\n /**\n * Generic field value getter. Used to get the field value of one object or entity.\n * @group Dynamic API Methods\n * @param obj Pointer to one object or entity\n * @param field Field name of one object or entity\n * @returns Returns the field value of one object or entity.\n */\n dwg_dynapi_entity_value(obj, field) {\n const value = this.wasmInstance.dwg_dynapi_entity_value(obj, field);\n if (value.bin && this.decoder) {\n value.data = this.decoder.decode(value.bin);\n }\n return value;\n }\n /**\n * Header field value getter. Used to get the field value of dwg/dxf header.\n * @group Dynamic API Methods\n * @param data Pointer to Dwg_Data instance.\n * @param field Field name of header.\n * @returns Returns the field value of dwg/dxf header.\n */\n dwg_dynapi_header_value(data, field) {\n return this.wasmInstance.dwg_dynapi_header_value(data, field);\n }\n /**\n * The common field value getter. Used to get the value of object or entity common fields.\n * @group Dynamic API Methods\n * @param obj Pointer to one object or entity\n * @param field The name of object or entity common fields.\n * @returns Returns the value of object or entity common fields.\n */\n dwg_dynapi_common_value(obj, field) {\n return this.wasmInstance.dwg_dynapi_common_value(obj, field);\n }\n /**\n * The field of one object or entity may not be primitive type. It means one field may consist of\n * multiple sub-fields. This method is used to get the sub-field value of those complex field.\n * @group Dynamic API Methods\n * @param obj Pointer to one object or entity.\n * @param subclass The class name of the field with complex type.\n * @param field The field name of one object or entit.\n * @returns Returns the sub-field value of one complex field.\n */\n dwg_dynapi_subclass_value(obj, subclass, field) {\n return this.wasmInstance.dwg_dynapi_subclass_value(obj, subclass, field);\n }\n /**\n * Returns the handle of one Dwg_Object instance.\n * @group Dwg_Object Methods\n * @param ptr Pointer to one Dwg_Object instance.\n * @returns Returns the handle of one Dwg_Object instance.\n */\n dwg_object_get_handle_object(ptr) {\n return this.wasmInstance.dwg_object_get_handle_object(ptr);\n }\n /**\n * Returns the handle of one Dwg_Object_Object instance.\n * @group Dwg_Object_Object Methods\n * @param ptr Pointer to one Dwg_Object_Object instance.\n * @returns Returns the handle of one Dwg_Object_Object instance.\n */\n dwg_object_object_get_handle_object(ptr) {\n return this.wasmInstance.dwg_object_object_get_handle_object(ptr);\n }\n /**\n * Returns the owner handle of one Dwg_Object_Object instance.\n * @group Dwg_Object_Object Methods\n * @param ptr Pointer to one Dwg_Object_Object instance.\n * @returns Returns the owner handle of one Dwg_Object_Object instance.\n */\n dwg_object_object_get_ownerhandle_object(ptr) {\n return this.wasmInstance.dwg_object_object_get_ownerhandle_object(ptr);\n }\n /**\n * Returns the handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_handle_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_handle_object(ptr);\n }\n /**\n * Returns the owner handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the owner handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_ownerhandle_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_ownerhandle_object(ptr);\n }\n /**\n * Returns hard-owner ID/handle to owner dictionary of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns hard-owner ID/handle to owner dictionary of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_xdicobjhandle_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_xdicobjhandle_object(ptr);\n }\n /**\n * Returns the layer handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the layer handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_layer_object_ref(ptr) {\n return this.wasmInstance.dwg_object_entity_get_layer_object_ref(ptr);\n }\n /**\n * Returns the line type handle of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns the line type handle of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_ltype_object_ref(ptr) {\n return this.wasmInstance.dwg_object_entity_get_ltype_object_ref(ptr);\n }\n /**\n * Returns color value of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns color value of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_color_object(ptr) {\n return this.wasmInstance.dwg_object_entity_get_color_object(ptr);\n }\n /**\n * Returns xdata of one Dwg_Object_Entity instance.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns xdata of one Dwg_Object_Entity instance.\n */\n dwg_object_entity_get_xdata(ptr) {\n return this.wasmInstance.dwg_object_entity_get_xdata(ptr);\n }\n /**\n * Returns pointer to BLOCK_HEADER owner for generic entity from ent->ownerhandle.\n * @group Dwg_Object_Entity Methods\n * @param ptr Pointer to one Dwg_Object_Entity instance.\n * @returns Returns pointer to BLOCK_HEADER owner.\n */\n dwg_entity_owner(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_owner(ptr);\n }\n /**\n * Returns block name of one Dwg_Entity_* instance with one block field. For example,\n * dimension entities have one 'block' field which represents the block that contains\n * the entities that make up the dimension picture.\n * @group Dwg_Entity_* Methods\n * @param ptr Pointer to one Dwg_Entity_* instance with one block field.\n * @param field Field name of the block.\n * @returns Returns block name of one Dwg_Entity_* instance.\n */\n dwg_entity_get_block_name(ptr, field) {\n const wasmInstance = this.wasmInstance;\n const block_header_ref = wasmInstance.dwg_dynapi_entity_value(ptr, field)\n .data;\n const block_header_obj = wasmInstance.dwg_ref_get_object(block_header_ref);\n const block_header_tio = wasmInstance.dwg_object_to_object_tio(block_header_obj);\n const block = this.dwg_entity_block_header_get_block(block_header_tio);\n return block.name;\n }\n /**\n * Returns dimension style name of one Dwg_Entity_* instance with one dimension style\n * field.\n * @group Dwg_Entity_* Methods\n * @param ptr Pointer to one Dwg_Entity_* instance.\n * @param field Field name of the dimension style.\n * @returns Returns dimension style name of one Dwg_Entity_* instance.\n */\n dwg_entity_get_dimstyle_name(ptr, field = 'dimstyle') {\n const wasmInstance = this.wasmInstance;\n const dimstyle_ref = wasmInstance.dwg_dynapi_entity_value(ptr, field)\n .data;\n const dimstyle_obj = wasmInstance.dwg_ref_get_object(dimstyle_ref);\n const dimstyle_tio = wasmInstance.dwg_object_to_object_tio(dimstyle_obj);\n const dimstyle_name = this.dwg_dynapi_entity_value(dimstyle_tio, 'name')\n .data;\n return dimstyle_name;\n }\n /**\n * Returns block entity pointed by the specified block header.\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to one Dwg_Entity_BLOCK_HEADER instance.\n * @returns Returns block entity pointed by the specified block header.\n */\n dwg_entity_block_header_get_block(ptr) {\n const wasmInstance = this.wasmInstance;\n const block_ref = wasmInstance.dwg_dynapi_entity_value(ptr, 'block_entity')\n .data;\n const block_obj = wasmInstance.dwg_ref_get_object(block_ref);\n const block_tio = wasmInstance.dwg_object_to_entity_tio(block_obj);\n const name = wasmInstance.dwg_dynapi_entity_value(block_tio, 'name')\n .data;\n const base_pt = wasmInstance.dwg_dynapi_entity_value(block_tio, 'base_pt')\n .data;\n return {\n name,\n base_pt // preR13 only\n };\n }\n /**\n * Returns preview image of the block pointed by the specified block header.\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to one Dwg_Entity_BLOCK_HEADER instance.\n * @returns Returns preview image of the block pointed by the specified block header.\n */\n dwg_entity_block_header_get_preview(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_block_header_get_preview(ptr)\n .data;\n }\n /**\n * Returns the first entity owned by the block header or null\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to the block header.\n * @returns Returns the first entity owned by the block header or null\n */\n get_first_owned_entity(ptr) {\n return this.wasmInstance.get_first_owned_entity(ptr);\n }\n /**\n * Returns the next entity owned by the block header or null.\n * @group Dwg_Entity_BLOCK_HEADER Methods\n * @param ptr Pointer to the block header.\n * @param current Pointer to the current entity in the block header.\n * @returns Returns the next entity owned by the block header or null.\n */\n get_next_owned_entity(ptr, current) {\n return this.wasmInstance.get_next_owned_entity(ptr, current);\n }\n /**\n * Returns text style name of one Dwg_Entity_MTEXT instance.\n * @group Dwg_Entity_MTEXT Methods\n * @param ptr Pointer to one Dwg_Entity_MTEXT instance.\n * @returns Returns text style name of one Dwg_Entity_MTEXT instance.\n */\n dwg_entity_mtext_get_style_name(ptr) {\n const wasmInstance = this.wasmInstance;\n const style_ref = wasmInstance.dwg_dynapi_entity_value(ptr, 'style')\n .data;\n const style_obj = wasmInstance.dwg_ref_get_object(style_ref);\n const style_tio = wasmInstance.dwg_object_to_object_tio(style_obj);\n const name = wasmInstance.dwg_dynapi_entity_value(style_tio, 'name')\n .data;\n return name;\n }\n /**\n * Returns text style name of one Dwg_Entity_TEXT instance.\n * @group Dwg_Entity_TEXT Methods\n * @param ptr Pointer to one Dwg_Entity_TEXT instance.\n * @returns Returns text style name of one Dwg_Entity_TEXT instance.\n */\n dwg_entity_text_get_style_name(ptr) {\n return this.dwg_entity_mtext_get_style_name(ptr);\n }\n /**\n * Returns the number of points in Dwg_Entity_POLYLINE_2D.\n * @group Dwg_Entity_POLYLINE_2D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_2D) instance.\n * @returns Returns the number of points in one Dwg_Entity_POLYLINE_2D.\n */\n dwg_entity_polyline_2d_get_numpoints(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_2d_get_numpoints(ptr).data;\n }\n /**\n * Returns points in Dwg_Entity_POLYLINE_2D.\n * @group Dwg_Entity_POLYLINE_2D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_2D) instance.\n * @returns Returns points in one Dwg_Entity_POLYLINE_2D.\n */\n dwg_entity_polyline_2d_get_points(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_2d_get_points(ptr)\n .data;\n }\n /**\n * Returns vertices in Dwg_Entity_POLYLINE_2D.\n * @group Dwg_Entity_POLYLINE_2D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_2D) instance.\n * @returns Returns vertices in one Dwg_Entity_POLYLINE_2D.\n */\n dwg_entity_polyline_2d_get_vertices(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_2d_get_vertices(ptr)\n .data;\n }\n /**\n * Returns the number of points in Dwg_Entity_POLYLINE_3D.\n * @group Dwg_Entity_POLYLINE_3D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_3D) instance.\n * @returns Returns the number of points in one Dwg_Entity_POLYLINE_3D.\n */\n dwg_entity_polyline_3d_get_numpoints(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_3d_get_numpoints(ptr).data;\n }\n /**\n * Returns points in Dwg_Entity_POLYLINE_3D.\n * @group Dwg_Entity_POLYLINE_3D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_3D) instance.\n * @returns Returns points in one Dwg_Entity_POLYLINE_3D.\n */\n dwg_entity_polyline_3d_get_points(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_3d_get_points(ptr)\n .data;\n }\n /**\n * Returns vertices in Dwg_Entity_POLYLINE_3D.\n * @group Dwg_Entity_POLYLINE_3D Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_POLYLINE_3D) instance.\n * @returns Returns vertices in one Dwg_Entity_POLYLINE_3D.\n */\n dwg_entity_polyline_3d_get_vertices(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_polyline_3d_get_vertices(ptr)\n .data;\n }\n /**\n * Returns attributes associated with INSERT entity.\n * @group Dwg_Entity_INSERT Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Entity_INSERT) instance.\n * @returns Returns attributes associated with INSERT entity.\n */\n dwg_entity_insert_get_attribs(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_entity_insert_get_attribs(ptr)\n .data;\n }\n /**\n * Returns texts in Dwg_Object_DICTIONARY.\n * @group Dwg_Object_DICTIONARY Methods\n * @param ptr Pointer to one Dwg_Object (not Dwg_Object_DICTIONARY) instance.\n * @returns Returns texts in one Dwg_Object_DICTIONARY.\n */\n dwg_object_dictionary_get_texts(ptr) {\n const wasmInstance = this.wasmInstance;\n return wasmInstance.dwg_object_dictionary_get_texts(ptr)\n .data;\n }\n static createByWasmInstance(wasmInstance) {\n return this.instance == null\n ? new LibreDwg(wasmInstance)\n : this.instance;\n }\n static async create(filepath) {\n const wasmInstance = filepath == null\n ? await createModule()\n : await createModule({\n locateFile: (filename) => {\n return `${filepath}/${filename}`;\n }\n });\n return this.createByWasmInstance(wasmInstance);\n }\n}\n//# sourceMappingURL=libredwg.js.map"],"file":"dwg-worker.js"}