diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c8e69b2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +node_modules +docs/.vitepress/dist +docs/.vitepress/cache + +bin +obj + +.vs +_build +packages diff --git a/README.md b/README.md index 352bc33a..532bb123 100644 --- a/README.md +++ b/README.md @@ -16,15 +16,15 @@ Visual Studio and Visual Studio Code templates can be installed from [NuGet](https://www.nuget.org/packages/Xarial.XCad.Templates/) -~~~ +``` > dotnet new install Xarial.XCad.Templates -~~~ +``` ## SOLIDWORKS Add-in Applications It has never been easier to create SOLIDWORKS add-ins with toolbar and menu commands. -~~~ cs +``` cs [ComVisible(true)] public class XCadAddIn : SwAddInEx { @@ -36,7 +36,7 @@ public class XCadAddIn : SwAddInEx public override void OnConnect() { - this.CommandManager.AddCommandGroup().CommandClick += OnCommandsButtonClick; + this.CommandManager.AddCommandGroup``().CommandClick += OnCommandsButtonClick; } private void OnCommandsButtonClick(Commands_e cmd) @@ -44,13 +44,13 @@ public class XCadAddIn : SwAddInEx //TODO: handle the button click } } -~~~ +``` ## Property Manager Pages Framework reinvents the way you work with Property Manager Pages. No need to code a complex code behind for adding the controls and handling the values. Simply define your data model and the framework will build the suitable Property Manager Page automatically and two-way bind controls to the data model. -~~~ cs +``` cs [ComVisible(true)] public class IntroPmpPageAddIn : SwAddInEx { @@ -74,7 +74,7 @@ public class IntroPmpPageAddIn : SwAddInEx { m_Page = this.CreatePage(); m_Page.Closed += OnPageClosed; - this.CommandManager.AddCommandGroup().CommandClick += ShowPmpPage; + this.CommandManager.AddCommandGroup``().CommandClick += ShowPmpPage; } private void ShowPmpPage(Commands_e cmd) @@ -89,13 +89,13 @@ public class IntroPmpPageAddIn : SwAddInEx Debug.Print($"Selection component name: {m_Data.Component.Name}"); } } -~~~ +``` ## Macro Features Complex macro features became an ease with xCAD.NET -~~~ cs +``` cs [ComVisible(true)] public class IntroMacroFeatureAddIn : SwAddInEx { @@ -130,7 +130,7 @@ public class IntroMacroFeatureAddIn : SwAddInEx public override void OnConnect() { - this.CommandManager.AddCommandGroup().CommandClick += OnCommandsButtonClick; + this.CommandManager.AddCommandGroup``().CommandClick += OnCommandsButtonClick; } private void OnCommandsButtonClick(Commands_e cmd) @@ -143,13 +143,13 @@ public class IntroMacroFeatureAddIn : SwAddInEx } } } -~~~ +``` ## SOLIDWORKS And Document Manager API xCAD.NET allows to write the same code targeting different CAD implementation in a completely agnostic way. Example below demonstrates how to perform opening of assembly, traversing components recursively and closing the assembly via SOLIDWORKS API and [SOLIDWORKS Document Manager API](https://www.codestack.net/solidworks-document-manager-api/) using the same code base. -~~~ cs +``` cs static void Main(string[] args) { var assmFilePath = @"C:\sample-assembly.sldasm"; @@ -181,7 +181,7 @@ private static void IterateComponentsRecursively(IXComponentRepository compsRepo IterateComponentsRecursively(comp.Children, level + 1); } } -~~~ +``` ## Target Frameworks @@ -201,18 +201,18 @@ When building the SOLIDWORKS add-ins see the information below * Run Visual Studio as an Administrator * Install [Xarial.XCad.SolidWorks](https://www.nuget.org/packages/Xarial.XCad.SolidWorks) package from the nuget and create add-in class as shown above * Add the following property into the project file (*.csproj or *.vbproj) -~~~ xml +``` xml true -~~~ +``` * Build the solution. Add-in will be automatically registered. Clean the solution to unregister the add-in. ### .NET Core Only Automatic registration does not work in .NET Core and it needs to be called manually by adding the following code into the add-in (this is not required for .NET6) -~~~ cs +``` cs [ComRegisterFunction] public static void RegisterFunction(Type t) { @@ -224,7 +224,7 @@ public static void UnregisterFunction(Type t) { SwAddInEx.UnregisterFunction(t); } -~~~ +``` Watch the [video demonstrations YouTube playlist](https://www.youtube.com/watch?v=YLFwqTX_V2I&list=PLZ8T-hyutVIEXMFgJ462Ou6Szjk26gPVo) of xCAD in action. diff --git a/build/README.md b/build/README.md index 0c995cbb..6c547c4a 100644 --- a/build/README.md +++ b/build/README.md @@ -4,6 +4,6 @@ * Install [DefaultDocumentation](https://www.nuget.org/packages/DefaultDocumentation.Console) .NET Tool -~~~ +``` dotnet tool install --global --add-source https://api.nuget.org/v3/index.json --ignore-failed-sources DefaultDocumentation.Console -~~~ +``` diff --git a/docs/.vitepress/components/YouTube.vue b/docs/.vitepress/components/YouTube.vue new file mode 100644 index 00000000..379d8ca9 --- /dev/null +++ b/docs/.vitepress/components/YouTube.vue @@ -0,0 +1,29 @@ + + + diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 00000000..7d1d3c9c --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,49 @@ +import { defineConfig } from 'vitepress' +import { generateSidebar } from 'vitepress-sidebar'; + +const vitepressSidebarOptions = { + // debugPrint: true, + documentRootPath: "/docs", + useFolderLinkFromIndexFile: true, + hyphenToSpace: true, + capitalizeFirst: true, + collapsed: true, + excludeFolders:["_assets","_includes","_layouts","_legal","_src", "changelog"], +}; + +export default defineConfig({ + head: [['link', { rel: 'icon', href: '/xcad/favicon.ico' }]], + title: 'XCad', + description: 'SOLIDWORKS API development made easy', + srcDir: "./", + base:"/xcad/", + themeConfig: { + logo: '/logo.svg', + search: { + provider: 'local' + }, + nav:[ + { text: 'Contact', link: 'mailto:support@xcad.net' }, + { text: 'Guide', link: 'https://github.com/xarial/xcad-examples' }, + { text:'Changelog', link:'/changelog/'} + ], + socialLinks: [ + {icon:'discord', link: 'https://discord.gg/gbhABKu3eJ'} , + {icon:'github', link: 'https://github.com/xarial/xcad'} , + {icon:'youtube', link: 'https://www.youtube.com/@Xarial'} , + {icon:{ svg: '' }, link:'https://www.linkedin.com/company/xarial'}, + {icon:{ svg: '' }, link:'https://www.reddit.com/r/xCAD/'}, + {icon:{ svg: '' }, link:'https://www.nuget.org/profiles/Xarial'}, + {icon:{ svg: '' }, link:'https://xcad.xarial.com/feed.xml'}, + {icon:{ svg: '' }, link:'info@xarial.com'} + ], + sidebar: generateSidebar(vitepressSidebarOptions), + footer: { + message: `Terms Of Use + Privacy + Cookies`, + copyright: 'Copyright © 2024 Xarial Pty Limited. All rights reserved.', + } + } +}) + diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css new file mode 100644 index 00000000..d6488205 --- /dev/null +++ b/docs/.vitepress/theme/custom.css @@ -0,0 +1,23 @@ +:root { + --vp-c-brand-1: #1ca7e1; + --vp-c-brand-2: #f7cb20; +} + +.dark .VPHome .text { + background: -webkit-linear-gradient(315deg, var(--vp-c-brand-1) 25%, var(--vp-c-brand-2)); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.sub-links a { + font-weight: 500; + color: var(--vp-c-brand-1); + text-decoration: underline; + text-underline-offset: 2px; + transition: color 0.25s, opacity 0.25s; +} + +.sub-links a:hover { + color: var(--vp-c-brand-2); +} \ No newline at end of file diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js new file mode 100644 index 00000000..3acd7261 --- /dev/null +++ b/docs/.vitepress/theme/index.js @@ -0,0 +1,11 @@ +import DefaultTheme from 'vitepress/theme' +import YouTube from '../components/YouTube.vue' +import './custom.css' + +export default { + extends: DefaultTheme, + enhanceApp({ app }) { + // register your custom global components + app.component('YouTube', YouTube) + } +} \ No newline at end of file diff --git a/docs/_src/CustomFeature/BackwardCompatibility.cs b/docs/_src/CustomFeature/BackwardCompatibility.cs index b931e111..9b0ce8b0 100644 --- a/docs/_src/CustomFeature/BackwardCompatibility.cs +++ b/docs/_src/CustomFeature/BackwardCompatibility.cs @@ -13,19 +13,19 @@ namespace Xarial.XCad.Documentation { namespace V1 { - //--- OldParams + #region OldParams [ParametersVersion("1.0", typeof(MacroFeatureParamsVersionConverter))] public class MacroFeatureParams { public string Param1 { get; set; } public int Param2 { get; set; } } - //--- + #endregion OldParams } namespace V2 { - //--- NewParams + #region NewParams [ParametersVersion("2.0", typeof(MacroFeatureParamsVersionConverter))] public class MacroFeatureParams { @@ -33,15 +33,15 @@ public class MacroFeatureParams public int Param2 { get; set; } public string Param3 { get; set; }//new parameter added } - //--- + #endregion NewParams } - //--- Converter + #region Converter public class MacroFeatureParamsVersionConverter : ParametersVersionConverter { private class VersConv_1_0To2_0 : IParameterConverter { - public void Convert(IXDocument model, IXCustomFeature feat, ref Dictionary parameters, + public void Convert(IXDocument model, IXCustomFeature feat, ref Dictionary parameters, ref CustomFeatureSelectionInfo[] selection, ref IXDimension[] dispDims, ref IXBody[] editBodies) { var paramVal = parameters["Param1"]; @@ -58,5 +58,5 @@ public MacroFeatureParamsVersionConverter() //add more version converters } } - //--- + #endregion Converter } diff --git a/docs/_src/CustomFeature/EditBodies.cs b/docs/_src/CustomFeature/EditBodies.cs index 26e9e3cf..8fe898a3 100644 --- a/docs/_src/CustomFeature/EditBodies.cs +++ b/docs/_src/CustomFeature/EditBodies.cs @@ -11,24 +11,24 @@ namespace Xarial.XCad.Documentation.CustomFeature { public class MacroFeatureEditBodiesParams { - //--- single + #region single public IXBody InputBody { get; set; } - //--- + #endregion single - //--- multiple + #region multiple public IXBody EditBody1 { get; set; } public IXBody EditBody2 { get; set; } - //--- + #endregion multiple - //--- list + #region list public List EditBodies { get; set; } - //--- + #endregion list } [ComVisible(true)] public class EditBodiesMacroFeature : SwMacroFeatureDefinition { - public override CustomFeatureRebuildResult OnRebuild(ISwApplication app, ISwDocument model, + public override CustomFeatureRebuildResult OnRebuild(ISwApplication app, ISwDocument model, ISwMacroFeature feature, out AlignDimensionDelegate alignDim) { alignDim = null; diff --git a/docs/_src/DocMgrAddIn.cs b/docs/_src/DocMgrAddIn.cs index e9b04769..7abb719d 100644 --- a/docs/_src/DocMgrAddIn.cs +++ b/docs/_src/DocMgrAddIn.cs @@ -13,9 +13,9 @@ namespace Xarial.XCad.Documentation { [Title("Document Manager Add-In")] [ComVisible(true), Guid("37728E73-BB74-4430-9FEB-AEC2B97DF861")] - public class DocMgrAddIn : SwAddInEx + public class DocMgrAddIn : SwAddInEx { - //--- DocHandlerDefinition + #region DocHandlerDefinition public class MyDocHandler : SwDocumentHandler { protected override void AttachPartEvents(PartDoc part) @@ -34,13 +34,13 @@ private int OnAddItemNotify(int EntityType, string itemName) return 0; } } - //--- + #endregion DocHandlerDefinition - //--- DocHandlerInit + #region DocHandlerInit public override void OnConnect() { this.Application.Documents.RegisterHandler(); } - //--- + #endregion DocHandlerInit } } diff --git a/docs/_src/EvaluationAddIn.cs b/docs/_src/EvaluationAddIn.cs index 12db0a81..7869dcac 100644 --- a/docs/_src/EvaluationAddIn.cs +++ b/docs/_src/EvaluationAddIn.cs @@ -9,16 +9,16 @@ namespace Xarial.XCad.Documentation [ComVisible(true), Guid("97BB0C2A-7844-4925-9070-E810613D5D0D")] public class EvaluationAddIn : SwAddInEx { + #region BoundingBox private void ReadBoundingBox() { - //---BoundingBox - //--- - } + #endregion BoundingBox + } + #region MassProperties private void ReadMassProperties() { - //---MassProperties - //--- + #endregion MassProperties } } } diff --git a/docs/_src/EventsAddIn.cs b/docs/_src/EventsAddIn.cs index 416fa498..8167e307 100644 --- a/docs/_src/EventsAddIn.cs +++ b/docs/_src/EventsAddIn.cs @@ -11,7 +11,7 @@ namespace Xarial.XCad.Documentation { - //--- EventHandlers + #region EventHandlers public class MyDocumentHandler : IDocumentHandler { private IXDocument m_Model; @@ -27,7 +27,7 @@ public void Init(IXApplication app, IXDocument model) m_Model.Closing += OnModelClosing; m_Model.Selections.NewSelection += OnNewSelection; - + m_DescPrp.ValueChanged += OnPropertyValueChanged; m_D1Dim.ValueChanged += OnDimensionValueChanged; } @@ -61,16 +61,16 @@ public void Dispose() m_D1Dim.ValueChanged -= OnDimensionValueChanged; } } - //--- + #endregion EventHandlers [ComVisible(true), Guid("A57F10A3-D23F-40C9-92DA-D4AE92E4FE8C")] - public class EventsAddIn : SwAddInEx - { + public class EventsAddIn : SwAddInEx + { public override void OnConnect() { - //--- RegisterHandler + #region RegisterHandler Application.Documents.RegisterHandler(); - //--- + #endregion RegisterHandler } } } diff --git a/docs/_src/Extension/CommandsManager/CommandsAddIn.cs b/docs/_src/Extension/CommandsManager/CommandsAddIn.cs index 124cde4e..0442b19a 100644 --- a/docs/_src/Extension/CommandsManager/CommandsAddIn.cs +++ b/docs/_src/Extension/CommandsManager/CommandsAddIn.cs @@ -9,21 +9,21 @@ [ComVisible(true), Guid("9F9AB0BB-549B-4885-BDA2-05AEA702E550")] public class CommandsAddIn : SwAddInEx { - //--- HostingCommands + #region HostingCommands public override void OnConnect() { - //--- CommandGroup + #region CommandGroup this.CommandManager.AddCommandGroup().CommandClick += OnCommandsAButtonClick; this.CommandManager.AddCommandGroup().CommandClick += OnCommandsBButtonClick; this.CommandManager.AddCommandGroup().CommandClick += OnCommandsCButtonClick; - //--- - //--- ContextMenu + #endregion CommandGroup + #region ContextMenu this.CommandManager.AddContextMenu().CommandClick += OnCommandsDContextMenuClick; - this.CommandManager.AddContextMenu().CommandClick+= OnCommandsEContextMenuClick; - //--- + this.CommandManager.AddContextMenu().CommandClick += OnCommandsEContextMenuClick; + #endregion ContextMenu } - //--- CommandGroup + #region CommandGroup2 private void OnCommandsAButtonClick(CommandsA_e cmd) { //handle the button click @@ -38,8 +38,8 @@ private void OnCommandsCButtonClick(CommandsC_e cmd) { //handle the button click } - //--- - //--- ContextMenu + #endregion CommandGroup2 + #region ContextMenu2 private void OnCommandsDContextMenuClick(CommandsD_e cmd) { //handle the context menu click @@ -49,6 +49,6 @@ private void OnCommandsEContextMenuClick(CommandsE_e cmd) { //handle the context menu click } - //--- - //--- + #endregion ContextMenu2 + #endregion HostingCommands } \ No newline at end of file diff --git a/docs/_src/Extension/CommandsManager/CustomEnableAddIn.cs b/docs/_src/Extension/CommandsManager/CustomEnableAddIn.cs index f6623eb5..12442dd2 100644 --- a/docs/_src/Extension/CommandsManager/CustomEnableAddIn.cs +++ b/docs/_src/Extension/CommandsManager/CustomEnableAddIn.cs @@ -11,7 +11,7 @@ namespace Xarial.XCad.Documentation [ComVisible(true), Guid("E02CA015-09D7-4428-A2D8-C2E20E0EA52E")] public class CustomEnableAddIn : SwAddInEx { - //--- CustomEnableState + #region CustomEnableState public enum Commands_e { Command1, @@ -35,6 +35,6 @@ private void OnButtonEnable(Commands_e cmd, CommandState state) break; } } - //--- + #endregion CustomEnableState } } diff --git a/docs/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs b/docs/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs index c7ebef0d..5c74555e 100644 --- a/docs/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs +++ b/docs/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs @@ -9,9 +9,9 @@ [ComVisible(true), Guid("37854E10-C3F8-41AA-AB46-614EC712DF42")] public class SubMenuAndSpacerAddIn : SwAddInEx { - //--- SpacerAndSubMenu + #region SpacerAndSubMenu [Title("AddInEx Commands")] - //--- Spacer + #region Spacer public enum Commands_e { Command1, @@ -19,17 +19,17 @@ public enum Commands_e [CommandSpacer] Command2 } - //--- + #endregion Spacer [Title("Sub Menu Commands")] - //--- SubMenu + #region SubMenu [CommandGroupParent(typeof(Commands_e))] public enum SubCommands_e { SubCommand1, SubCommand2 } - //--- + #endregion SubMenu public override void OnConnect() { @@ -44,6 +44,6 @@ private void OnButtonClick(Commands_e cmd) private void OnButtonClick(SubCommands_e cmd) { } - //--- + #endregion SpacerAndSubMenu } diff --git a/docs/_src/Extension/EntryPoint.cs b/docs/_src/Extension/EntryPoint.cs index 9fa0390e..2c60a331 100644 --- a/docs/_src/Extension/EntryPoint.cs +++ b/docs/_src/Extension/EntryPoint.cs @@ -8,27 +8,27 @@ namespace Xarial.XCad.Documentation [ComVisible(true), Guid("CA8A02D2-802F-46E3-A16A-DE69FADFF5B2")] public class MyAddIn : SwAddInEx { - //--- Connect + #region Connect public override void OnConnect() { // Initialize the add-in, create menu, load data etc. } - //--- + #endregion Connect - //--- Disconnect + #region Disconnect public override void OnDisconnect() { // Dispose the add-in's resources } - //--- + #endregion Disconnect - //--- SwObjects - private void AccessSwObjects() + #region SwObjects + private void AccessSwObjects() { int addInCookie = this.AddInId; ISldWorks swApp = this.Application.Sw; ICommandManager cmdMgr = this.CommandManager.CmdMgr; } - //--- + #endregion SwObjects } } diff --git a/docs/_src/Extension/Overview.cs b/docs/_src/Extension/Overview.cs index cc108a9c..3f889f12 100644 --- a/docs/_src/Extension/Overview.cs +++ b/docs/_src/Extension/Overview.cs @@ -21,17 +21,17 @@ namespace Xarial.XCad.Documentation { - //--- Register + #region Register [ComVisible(true), Guid("736EEACF-B294-40F6-8541-CFC8E7C5AA61")] public class SampleAddIn : SwAddInEx { - //--- - //--- TaskPane + #endregion Register + #region TaskPane public class TaskPaneControl : UserControl { } - //--- - //--- CommandGroup + #endregion TaskPane + #region CommandGroup [Title(typeof(Resources), nameof(Resources.ToolbarTitle)), Description("Toolbar with commands")] [Icon(typeof(Resources), nameof(Resources.commands))] public enum Commands_e @@ -42,14 +42,14 @@ public enum Commands_e Command1, Command2 } - //--- - //--- TaskPane + #endregion CommandGroup + #region TaskPane2 public enum TaskPaneCommands_e { Command1 } - //--- - //--- DocHandler + #endregion TaskPane2 + #region DocHandler public class MyDocumentHandler : SwDocumentHandler { protected override void AttachAssemblyEvents(AssemblyDoc assm) @@ -100,32 +100,32 @@ protected override void DetachDrawingEvents(DrawingDoc draw) draw.RegenNotify -= OnRegen; } } - //--- + #endregion DocHandler public override void OnConnect() { - //--- CommandGroup + #region CommandGroup2 this.CommandManager.AddCommandGroup().CommandClick += OnButtonClick; - //--- - //--- DocHandler + #endregion CommandGroup2 + #region DocHandler Application.Documents.RegisterHandler(); - //--- - //--- TaskPane + #endregion DocHandler + #region TaskPane3 var taskPane = this.CreateTaskPane(); taskPane.ButtonClick += OnTaskPaneCommandClick; TaskPaneControl ctrl = taskPane.Control; - //--- - //--- 3rdParty + #endregion TaskPane3 + #region 3rdParty Application.Documents.Active.StreamWriteAvailable += OnWriteToStream; - //--- + #endregion 3rdParty } - - //--- CommandGroup + + #region CommandGroup3 private void OnButtonClick(Commands_e cmd) { //handle commands } - //--- - //--- 3rdParty + #endregion CommandGroup3 + #region 3rdParty private void OnWriteToStream(IXDocument doc) { const string STREAM_NAME = "CodeStackStream"; @@ -137,8 +137,8 @@ private void OnWriteToStream(IXDocument doc) xmlSer.Serialize(str, new string[] { "A", "B" }); } } - //--- - //--- TaskPane + #endregion 3rdParty + #region TaskPane4 private void OnTaskPaneCommandClick(TaskPaneCommands_e cmd) { switch (cmd) @@ -148,6 +148,6 @@ private void OnTaskPaneCommandClick(TaskPaneCommands_e cmd) break; } } - //--- + #endregion TaskPane4 } } diff --git a/docs/_src/Extension/Panels/PanelsAddIn.cs b/docs/_src/Extension/Panels/PanelsAddIn.cs index a309adbd..5e5564df 100644 --- a/docs/_src/Extension/Panels/PanelsAddIn.cs +++ b/docs/_src/Extension/Panels/PanelsAddIn.cs @@ -18,13 +18,13 @@ namespace Xarial.XCad.Documentation.Extension.Panels [ComVisible(true), Guid("36934A6F-5928-4D92-AC4D-5202A1F491D6")] public class PanelsAddIn : SwAddInEx { - public enum PanelCommands_e + public enum PanelCommands_e { ShowPanels } - //--- TaskPaneCommands - public enum TaskPaneCommands_e + #region TaskPaneCommands + public enum TaskPaneCommands_e { [Title("Task Pane Command")] [Icon(typeof(Resources), nameof(Resources.command1))] @@ -33,57 +33,57 @@ public enum TaskPaneCommands_e [TaskPaneStandardIcon(TaskPaneStandardIcons_e.Close)] Close } - + private IXTaskPane m_TaskPane; - //--- + #endregion TaskPaneCommands public override void OnConnect() { this.CommandManager.AddCommandGroup().CommandClick += OnCommandClick; - //--- TaskPaneSimple + #region TaskPaneSimple var taskPane = CreateTaskPane(); WinFormControl control = taskPane.Control; - //--- + #endregion TaskPaneSimple - //--- TaskPaneCommands + #region TaskPaneCommands2 var cmdTaskPane = this.CreateTaskPane(); cmdTaskPane.ButtonClick += OnTaskPaneButtonClick; m_TaskPane = cmdTaskPane; - //--- + #endregion TaskPaneCommands2 } private void OnCommandClick(PanelCommands_e spec) { - //--- ModelViewTab + #region ModelViewTab var winFormModelViewTab = CreateDocumentTab(Application.Documents.Active); WinFormControl winFormModelViewCtrl = winFormModelViewTab.Control; var wpfModelViewTab = CreateDocumentTab(Application.Documents.Active); WpfControl wpfModelViewTabCtrl = wpfModelViewTab.Control; - //--- + #endregion ModelViewTab - //--- FeatMgrTab + #region FeatMgrTab var winFormFeatMgrTab = CreateFeatureManagerTab(Application.Documents.Active); WinFormControl winFeatMgrFormCtrl = winFormFeatMgrTab.Control; var wpfFeatMgrTab = CreateFeatureManagerTab(Application.Documents.Active); WpfControl wpfFeatMgrTabCtrl = wpfFeatMgrTab.Control; - //--- + #endregion FeatMgrTab - //--- Popup + #region Popup var winFormPopupWnd = this.CreatePopupWindow(); winFormPopupWnd.ShowDialog(); var wpfPopupWnd = this.CreatePopupWindow(); wpfPopupWnd.ShowDialog(); - //--- + #endregion Popup } - //--- TaskPaneCommands + #region TaskPaneCommands3 private void OnTaskPaneButtonClick(TaskPaneCommands_e spec) { - switch (spec) + switch (spec) { case TaskPaneCommands_e.Command: //handle command @@ -94,6 +94,6 @@ private void OnTaskPaneButtonClick(TaskPaneCommands_e spec) break; } } - //--- + #endregion TaskPaneCommands3 } } diff --git a/docs/_src/Extension/Panels/WinForm.Designer.cs b/docs/_src/Extension/Panels/WinForm.Designer.cs index 00b5e59a..db2dfea9 100644 --- a/docs/_src/Extension/Panels/WinForm.Designer.cs +++ b/docs/_src/Extension/Panels/WinForm.Designer.cs @@ -48,8 +48,8 @@ private void InitializeComponent() // // lblMessage // - this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) + this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.lblMessage.BackColor = System.Drawing.SystemColors.Info; this.lblMessage.Location = new System.Drawing.Point(3, 0); diff --git a/docs/_src/Extension/Panels/WinFormControl.Designer.cs b/docs/_src/Extension/Panels/WinFormControl.Designer.cs index 7854c786..666065da 100644 --- a/docs/_src/Extension/Panels/WinFormControl.Designer.cs +++ b/docs/_src/Extension/Panels/WinFormControl.Designer.cs @@ -48,8 +48,8 @@ private void InitializeComponent() // // lblMessage // - this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) + this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.lblMessage.Location = new System.Drawing.Point(3, 0); this.lblMessage.Name = "lblMessage"; diff --git a/docs/_src/Extension/Register.cs b/docs/_src/Extension/Register.cs index 37e6663b..860a3d86 100644 --- a/docs/_src/Extension/Register.cs +++ b/docs/_src/Extension/Register.cs @@ -10,7 +10,7 @@ namespace Xarial.XCad.Documentation.Extension { namespace Framework { - //--- NetFramework + #region NetFramework [ComVisible(true)] public class SampleAddIn : SwAddInEx { @@ -18,21 +18,21 @@ public override void OnConnect() { } } - //--- + #endregion NetFramework } namespace SkipReg { - //--- SkipReg + #region SkipReg [ComVisible(true)] [Extensions.Attributes.SkipRegistration] public class SampleAddIn : SwAddInEx { - //--- + #endregion SkipReg } } - //--- NetCore + #region NetCore [ComVisible(true), Guid("612378E1-C962-468C-9810-AF5AE1245EB7")] public class SampleAddIn : SwAddInEx { @@ -52,5 +52,5 @@ public override void OnConnect() { } } - //--- + #endregion NetCore } diff --git a/docs/_src/Intro.cs b/docs/_src/Intro.cs index 05b7f038..8835d5b5 100644 --- a/docs/_src/Intro.cs +++ b/docs/_src/Intro.cs @@ -88,7 +88,7 @@ private void OnPageClosed(PageCloseReasons_e reason) } [ComVisible(true)] - public class IntroMacroFeatureAddIn : SwAddInEx + public class IntroMacroFeatureAddIn : SwAddInEx { [ComVisible(true)] public class BoxData : SwPropertyManagerPageHandler @@ -126,7 +126,7 @@ public override void OnConnect() private void OnCommandsButtonClick(Commands_e cmd) { - switch (cmd) + switch (cmd) { case Commands_e.InsertMacroFeature: Application.Documents.Active.Features.CreateCustomFeature(); @@ -135,7 +135,7 @@ private void OnCommandsButtonClick(Commands_e cmd) } } - public class InitStandAlone + public class InitStandAlone { static void Main(string[] args) { @@ -151,7 +151,7 @@ static void Main(string[] args) } //CAD-agnostic function to open assembly, print all components and close assembly - private static void PrintAssemblyComponents(IXApplication app, string filePath) + private static void PrintAssemblyComponents(IXApplication app, string filePath) { using (var assm = app.Documents.Open(filePath, DocumentState_e.ReadOnly)) { @@ -159,7 +159,7 @@ private static void PrintAssemblyComponents(IXApplication app, string filePath) } } - private static void IterateComponentsRecursively(IXComponentRepository compsRepo, int level) + private static void IterateComponentsRecursively(IXComponentRepository compsRepo, int level) { foreach (var comp in compsRepo) { diff --git a/docs/_src/LocalizationAddIn.cs b/docs/_src/LocalizationAddIn.cs index c1b5694f..e4c1bf71 100644 --- a/docs/_src/LocalizationAddIn.cs +++ b/docs/_src/LocalizationAddIn.cs @@ -11,7 +11,7 @@ namespace Xarial.XCad.Documentation { - //--- PMPage + #region PMPage [Title(typeof(Resources), nameof(Resources.LocalizedPmPageTitle))] public class LocalizedPmPage { @@ -23,9 +23,9 @@ public class LocalizedPmPage [Summary(typeof(Resources), nameof(Resources.NumericFieldDescription))] public double NumericField { get; set; } } - //--- + #endregion PMPage - //--- MacroFeature + #region MacroFeature [Title(typeof(Resources), nameof(Resources.MacroFeatureBaseName))] [ComVisible(true)] public class LocalizedMacroFeature : SwMacroFeatureDefinition @@ -39,7 +39,7 @@ public override CustomFeatureRebuildResult OnRebuild(ISwApplication app, ISwDocu Result = true }; } - else + else { return new CustomFeatureRebuildResult() { @@ -49,12 +49,12 @@ public override CustomFeatureRebuildResult OnRebuild(ISwApplication app, ISwDocu } } } - //--- + #endregion MacroFeature [ComVisible(true), Guid("CD96ACAE-57E6-400F-927A-27D912407663")] public class LocalizationAddIn : SwAddInEx { - //--- Commands + #region Commands [Title(typeof(Resources), nameof(Resources.ToolbarTitle))] [Summary(typeof(Resources), nameof(Resources.ToolbarHint))] public enum Commands_e @@ -67,7 +67,7 @@ public enum Commands_e [Summary(typeof(Resources), nameof(Resources.CreateMacroFeatureCommandHint))] CreateMacroFeature } - //--- + #endregion Commands [ComVisible(true)] public class PMPageHandler : SwPropertyManagerPageHandler diff --git a/docs/_src/MultiTargetAddIn.cs b/docs/_src/MultiTargetAddIn.cs index f51dc85b..9a8633e9 100644 --- a/docs/_src/MultiTargetAddIn.cs +++ b/docs/_src/MultiTargetAddIn.cs @@ -9,7 +9,7 @@ namespace Xarial.XCad.Documentation [ComVisible(true), Guid("E574D882-4223-4FB3-9160-0F54655FB6D9")] public class MultiTargetAddIn : SwAddInEx { - //--- Major + #region Major public void ReadDescriptionProperty() { var prpMgr = Application.Sw.IActiveDoc2.Extension.CustomPropertyManager[""]; @@ -17,7 +17,7 @@ public void ReadDescriptionProperty() string val; string resVal; - + if (Application.IsVersionNewerOrEqual(SwVersion_e.Sw2018)) { bool wasRes; @@ -33,12 +33,12 @@ public void ReadDescriptionProperty() { prpMgr.Get4(prpName, false, out val, out resVal); } - + Logger.Log($"{prpName} = {resVal} [{val}]"); } - //--- + #endregion Major - //--- Minor + #region Minor public void GetTolerance(IDimension dim) { var dimTol = dim.Tolerance; @@ -57,6 +57,6 @@ public void GetTolerance(IDimension dim) maxTol = dimTol.GetMaxValue(); } } - //--- + #endregion Minor } } diff --git a/docs/_src/Properties/Resources.Designer.cs b/docs/_src/Properties/Resources.Designer.cs index c2f6f791..6914a5a1 100644 --- a/docs/_src/Properties/Resources.Designer.cs +++ b/docs/_src/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -6,12 +6,13 @@ // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- -namespace Xarial.XCad.Documentation.Properties { +namespace Xarial.XCad.Documentation.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,265 +23,321 @@ namespace Xarial.XCad.Documentation.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xarial.XCad.Documentation.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap BitmapSample { - get { + internal static System.Drawing.Bitmap BitmapSample + { + get + { object obj = ResourceManager.GetObject("BitmapSample", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap command1 { - get { + internal static System.Drawing.Bitmap command1 + { + get + { object obj = ResourceManager.GetObject("command1", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap command2 { - get { + internal static System.Drawing.Bitmap command2 + { + get + { object obj = ResourceManager.GetObject("command2", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap command3 { - get { + internal static System.Drawing.Bitmap command3 + { + get + { object obj = ResourceManager.GetObject("command3", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap commands { - get { + internal static System.Drawing.Bitmap commands + { + get + { object obj = ResourceManager.GetObject("commands", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized string similar to . /// - internal static string CreateMacroFeatureCommandHint { - get { + internal static string CreateMacroFeatureCommandHint + { + get + { return ResourceManager.GetString("CreateMacroFeatureCommandHint", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string CreateMacroFeatureCommandTitle { - get { + internal static string CreateMacroFeatureCommandTitle + { + get + { return ResourceManager.GetString("CreateMacroFeatureCommandTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string LocalizedPmPageTitle { - get { + internal static string LocalizedPmPageTitle + { + get + { return ResourceManager.GetString("LocalizedPmPageTitle", resourceCulture); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap macro_feature_icon { - get { + internal static System.Drawing.Bitmap macro_feature_icon + { + get + { object obj = ResourceManager.GetObject("macro_feature_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized string similar to . /// - internal static string MacroFeatureBaseName { - get { + internal static string MacroFeatureBaseName + { + get + { return ResourceManager.GetString("MacroFeatureBaseName", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string MacroFeatureError { - get { + internal static string MacroFeatureError + { + get + { return ResourceManager.GetString("MacroFeatureError", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string NumericFieldDescription { - get { + internal static string NumericFieldDescription + { + get + { return ResourceManager.GetString("NumericFieldDescription", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string NumericFieldTitle { - get { + internal static string NumericFieldTitle + { + get + { return ResourceManager.GetString("NumericFieldTitle", resourceCulture); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap OffsetImage { - get { + internal static System.Drawing.Bitmap OffsetImage + { + get + { object obj = ResourceManager.GetObject("OffsetImage", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized string similar to . /// - internal static string Option2Title { - get { + internal static string Option2Title + { + get + { return ResourceManager.GetString("Option2Title", resourceCulture); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap PageIcon { - get { + internal static System.Drawing.Bitmap PageIcon + { + get + { object obj = ResourceManager.GetObject("PageIcon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized string similar to . /// - internal static string ShowPmpCommandHint { - get { + internal static string ShowPmpCommandHint + { + get + { return ResourceManager.GetString("ShowPmpCommandHint", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string ShowPmpCommandTitle { - get { + internal static string ShowPmpCommandTitle + { + get + { return ResourceManager.GetString("ShowPmpCommandTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string TextFieldDescription { - get { + internal static string TextFieldDescription + { + get + { return ResourceManager.GetString("TextFieldDescription", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string TextFieldTitle { - get { + internal static string TextFieldTitle + { + get + { return ResourceManager.GetString("TextFieldTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string ToolbarHint { - get { + internal static string ToolbarHint + { + get + { return ResourceManager.GetString("ToolbarHint", resourceCulture); } } - + /// /// Looks up a localized string similar to . /// - internal static string ToolbarTitle { - get { + internal static string ToolbarTitle + { + get + { return ResourceManager.GetString("ToolbarTitle", resourceCulture); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap winforms_icon { - get { + internal static System.Drawing.Bitmap winforms_icon + { + get + { object obj = ResourceManager.GetObject("winforms_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap wpf_icon { - get { + internal static System.Drawing.Bitmap wpf_icon + { + get + { object obj = ResourceManager.GetObject("wpf_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } diff --git a/docs/_src/PropertyPage/Controls/Bitmap.cs b/docs/_src/PropertyPage/Controls/Bitmap.cs index fb7499ee..33583b4a 100644 --- a/docs/_src/PropertyPage/Controls/Bitmap.cs +++ b/docs/_src/PropertyPage/Controls/Bitmap.cs @@ -1,13 +1,16 @@ -using System.Drawing; +#region Control +using System.Drawing; using Xarial.XCad.Documentation.Properties; using Xarial.XCad.UI.PropertyPage.Attributes; public class BitmapDataModel { public Image Bitmap { get; set; } = Resources.BitmapSample; - - //--- Size + #endregion Control + #region Size [BitmapOptions(48, 48)] public Image BitmapLarge { get; set; } = Resources.BitmapSample; - //--- + #endregion Size + #region Control2 } +#endregion Control2 \ No newline at end of file diff --git a/docs/_src/PropertyPage/Controls/BitmapButton.cs b/docs/_src/PropertyPage/Controls/BitmapButton.cs index dfd2ec06..15e28021 100644 --- a/docs/_src/PropertyPage/Controls/BitmapButton.cs +++ b/docs/_src/PropertyPage/Controls/BitmapButton.cs @@ -5,29 +5,29 @@ public class BitmapButtonDataModel { - //--- Button + #region Button [BitmapButton(typeof(Resources), nameof(Resources.BitmapSample))] - public Action Button1 { get; set; } = new Action(()=> { }); - //--- + public Action Button1 { get; set; } = new Action(() => { }); + #endregion Button - //--- Toggle + #region Toggle [BitmapButton(typeof(Resources), nameof(Resources.BitmapSample))] public bool Toggle1 { get; set; } = false; [BitmapButton(typeof(Resources), nameof(Resources.BitmapSample))] public bool Toggle2 { get; set; } = true; - //--- + #endregion Toggle - //--- Size + #region Size [BitmapButton(typeof(Resources), nameof(Resources.BitmapSample), 48, 48)] public Action Button2 { get; set; } = new Action(() => { }); - //--- + #endregion Size - //--- Standard + #region Standard [BitmapButton(Xarial.XCad.UI.PropertyPage.Enums.BitmapButtonLabelType_e.AlongZ)] public bool Standard1 { get; set; } [BitmapButton(Xarial.XCad.UI.PropertyPage.Enums.BitmapButtonLabelType_e.Draft)] public bool Standard2 { get; set; } - //--- + #endregion Standard } diff --git a/docs/_src/PropertyPage/Controls/ComboBox.cs b/docs/_src/PropertyPage/Controls/ComboBox.cs index ea4b7d98..70e70bf8 100644 --- a/docs/_src/PropertyPage/Controls/ComboBox.cs +++ b/docs/_src/PropertyPage/Controls/ComboBox.cs @@ -11,7 +11,7 @@ public class ComboBoxDataModel { - //--- Simple + #region Simple public enum Options_e { Option1, @@ -21,8 +21,8 @@ public enum Options_e [ComboBoxOptions(ComboBoxStyle_e.Sorted)] public Options_e Options { get; set; } - //--- - //--- ItemsText + #endregion Simple + #region ItemsText public enum OptionsCustomized_e { [Title("First Option")] //static title @@ -33,8 +33,8 @@ public enum OptionsCustomized_e } public OptionsCustomized_e Options2 { get; set; } - //--- - //--- CustomItemsProvider + #endregion ItemsText + #region CustomItemsProvider public class CustomStringItemsProvider : SwCustomItemsProvider { public override IEnumerable ProvideItems(ISwApplication app, IControl[] dependencies) @@ -54,8 +54,8 @@ public override IEnumerable ProvideItems(ISwApplication app, IControl[] dep [ComboBox(typeof(CustomIntItemsProvider))] [ControlTag(nameof(Options4))] public int Options4 { get; set; } - //--- - //--- CustomItemsProviderDependency + #endregion CustomItemsProvider + #region CustomItemsProviderDependency public class CustomComboBoxItem { public string BaseName { get; } @@ -86,5 +86,5 @@ public override IEnumerable ProvideItems(ISwApplication app, [ComboBox(typeof(CustomDependencyProvider), nameof(Options3), nameof(Options4))] public CustomComboBoxItem Options5 { get; set; } - //--- + #endregion CustomItemsProviderDependency } diff --git a/docs/_src/PropertyPage/Controls/CommonOptions.cs b/docs/_src/PropertyPage/Controls/CommonOptions.cs index b9a72a30..8efc5af4 100644 --- a/docs/_src/PropertyPage/Controls/CommonOptions.cs +++ b/docs/_src/PropertyPage/Controls/CommonOptions.cs @@ -8,19 +8,19 @@ public class DataModelCommonOpts { - //--- Style + #region Style [ControlOptions(backgroundColor: KnownColor.Green, textColor: KnownColor.Yellow)] public string TextField { get; set; } = "Sample Text"; - //--- + #endregion Style - //--- StandardIcon + #region StandardIcon [Description("Depth Value")] [StandardControlIcon(BitmapLabelType_e.Depth)] public string Depth { get; set; } - //--- + #endregion StandardIcon - //--- CustomIcon + #region CustomIcon [Icon(typeof(Resources), nameof(Resources.OffsetImage))] public double Offset { get; set; } - //--- + #endregion CustomIcon } diff --git a/docs/_src/PropertyPage/Controls/CustomControl.cs b/docs/_src/PropertyPage/Controls/CustomControl.cs index b3b9ed72..09a5a6cd 100644 --- a/docs/_src/PropertyPage/Controls/CustomControl.cs +++ b/docs/_src/PropertyPage/Controls/CustomControl.cs @@ -2,8 +2,8 @@ using Xarial.XCad.Documentation.PropertyPage.Controls; using Xarial.XCad.UI.PropertyPage.Attributes; -//--- WinForms -public class CustomControlWinFormsModel +#region WinForms +public class CustomControlWinFormsModel { public string Text { get; set; } = "Custom Control"; } @@ -13,19 +13,19 @@ public class CustomWinFormsControlPage [CustomControl(typeof(CustomWinFormsControl))] public CustomControlWinFormsModel Model { get; set; } = new CustomControlWinFormsModel(); } -//--- +#endregion WinForms -//--- Wpf +#region Wpf public class CustomControlWpfModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string m_Text = "Custom Control"; - public string Text + public string Text { get => m_Text; - set + set { m_Text = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Text))); @@ -38,4 +38,4 @@ public class CustomWpfControlPage [CustomControl(typeof(CustomWpfControl))] public CustomControlWinFormsModel Model { get; set; } = new CustomControlWinFormsModel(); } -//--- \ No newline at end of file +#endregion Wpf \ No newline at end of file diff --git a/docs/_src/PropertyPage/Controls/CustomWinFormsControl.Designer.cs b/docs/_src/PropertyPage/Controls/CustomWinFormsControl.Designer.cs index e03e52f7..e71402db 100644 --- a/docs/_src/PropertyPage/Controls/CustomWinFormsControl.Designer.cs +++ b/docs/_src/PropertyPage/Controls/CustomWinFormsControl.Designer.cs @@ -49,8 +49,8 @@ private void InitializeComponent() // // lblMessage // - this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) + this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.lblMessage.BackColor = System.Drawing.SystemColors.ActiveCaption; this.lblMessage.Location = new System.Drawing.Point(2, 0); diff --git a/docs/_src/PropertyPage/Controls/NumberBox.cs b/docs/_src/PropertyPage/Controls/NumberBox.cs index ce7b2666..011c0500 100644 --- a/docs/_src/PropertyPage/Controls/NumberBox.cs +++ b/docs/_src/PropertyPage/Controls/NumberBox.cs @@ -3,14 +3,14 @@ public class NumberBoxDataModel { - //--- Simple + #region Simple public int Number { get; set; } public double FloatingNumber { get; set; } - //--- + #endregion Simple - //--- Style + #region Style [NumberBoxOptions(NumberBoxUnitType_e.Length, 0, 1000, 0.01, true, 0.02, 0.001, NumberBoxStyle_e.Thumbwheel)] public double Length { get; set; } - //--- + #endregion Style } \ No newline at end of file diff --git a/docs/_src/PropertyPage/Controls/Page.cs b/docs/_src/PropertyPage/Controls/Page.cs index 44ae9153..95fdacb0 100644 --- a/docs/_src/PropertyPage/Controls/Page.cs +++ b/docs/_src/PropertyPage/Controls/Page.cs @@ -4,26 +4,26 @@ using Xarial.XCad.UI.PropertyPage.Attributes; using Xarial.XCad.UI.PropertyPage.Enums; -//--- Options +#region Options [PageOptions(PageOptions_e.CancelButton | PageOptions_e.OkayButton)] public class DataModelPageOpts { } -//--- +#endregion Options -//--- Attribution +#region Attribution [Icon(typeof(Resources), nameof(Resources.PageIcon))] [Message("Sample message for property page", "Sample Page")] [DisplayName("Sample Page")] public class DataModelPageAtts { } -//--- +#endregion Attribution -//--- HelpLinks +#region HelpLinks [Help("", "")] public class DataModelHelpLinks { } -//--- +#endregion HelpLinks diff --git a/docs/_src/PropertyPage/Controls/SelectionBox.cs b/docs/_src/PropertyPage/Controls/SelectionBox.cs index 4d6afea3..a5694111 100644 --- a/docs/_src/PropertyPage/Controls/SelectionBox.cs +++ b/docs/_src/PropertyPage/Controls/SelectionBox.cs @@ -12,7 +12,7 @@ using Xarial.XCad.UI.PropertyPage.Services; using Xarial.XCad.UI.PropertyPage.Structures; -//--- Single +#region Single public class SelectionBoxDataModel { public ISwBody Body { get; set; } @@ -20,9 +20,9 @@ public class SelectionBoxDataModel [SelectionBoxOptions(new Type[] { typeof(IXEdge), typeof(IXNote), typeof(IXCoordinateSystem) })] public ISwSelObject Dispatch { get; set; } } -//--- +#endregion Single -//--- List +#region List public class SelectionBoxListDataModel { public List Bodies { get; set; } = new List(); @@ -30,9 +30,9 @@ public class SelectionBoxListDataModel [SelectionBoxOptions(new Type[] { typeof(IXEdge), typeof(IXNote), typeof(IXCoordinateSystem) })] public List Dispatches { get; set; } = new List(); } -//--- +#endregion List -//--- CustomFilter +#region CustomFilter public class SelectionBoxCustomSelectionFilterDataModel { public class DataGroup @@ -46,16 +46,16 @@ public class PlanarFaceFilter : ISelectionCustomFilter public void Filter(IControl selBox, IXSelObject selection, SelectionCustomFilterArguments args) { args.Filter = (selection as ISwFace).Face.IGetSurface().IsPlane(); //validating the selection and only allowing planar face - + if (args.Filter) { args.ItemText = "Planar Face"; } - else + else { args.Reason = "Only planar faces can be selected"; } } } } -//--- \ No newline at end of file +#endregion CustomFilter \ No newline at end of file diff --git a/docs/_src/PropertyPage/Controls/Tab.cs b/docs/_src/PropertyPage/Controls/Tab.cs index ff54e169..f9d88cc4 100644 --- a/docs/_src/PropertyPage/Controls/Tab.cs +++ b/docs/_src/PropertyPage/Controls/Tab.cs @@ -1,4 +1,5 @@ -using Xarial.XCad.Base.Attributes; +#region WithGroup +using Xarial.XCad.Base.Attributes; using Xarial.XCad.Documentation.Properties; using Xarial.XCad.UI.PropertyPage.Attributes; @@ -12,8 +13,9 @@ public class TabControl1 } public TabControl1 Tab1 { get; set; } + #endregion WithGroup - //--- WithGroup + #region WithGroup2 public class TabControl2 { public class Group1 @@ -27,5 +29,7 @@ public class Group1 [Tab] public TabControl2 Tab2 { get; set; } - //--- + #endregion WithGroup2 + #region WithGroup3 } +#endregion WithGroup3 \ No newline at end of file diff --git a/docs/_src/PropertyPage/Controls/TagsAndDependencies.cs b/docs/_src/PropertyPage/Controls/TagsAndDependencies.cs index c6f9a5e2..4eab11e2 100644 --- a/docs/_src/PropertyPage/Controls/TagsAndDependencies.cs +++ b/docs/_src/PropertyPage/Controls/TagsAndDependencies.cs @@ -14,7 +14,7 @@ namespace Xarial.XCad.Documentation { - //--- CascadingVisibility + #region CascadingVisibility public enum Groups_e { GroupA, @@ -79,9 +79,9 @@ public void UpdateState(IXApplication app, IControl source, IControl[] dependenc source.Visible = (Groups_e)source.Tag == curGrp; } } - //--- + #endregion CascadingVisibility - //--- Enable + #region Enable [ComVisible(true)] public class DataModelEnable : SwPropertyManagerPageHandler { @@ -99,8 +99,8 @@ public void UpdateState(IXApplication app, IControl source, IControl[] dependenc source.Enabled = (bool)dependencies.First().GetValue(); } } - //--- - + #endregion Enable + [ComVisible(true), Guid("D745F780-C031-4A2B-A627-AC8C7C61F421")] public class TagsAndDependencies : SwAddInEx { diff --git a/docs/_src/PropertyPage/Events.cs b/docs/_src/PropertyPage/Events.cs index ba2e36c1..6cba6b3a 100644 --- a/docs/_src/PropertyPage/Events.cs +++ b/docs/_src/PropertyPage/Events.cs @@ -16,7 +16,7 @@ public class DataModel : SwPropertyManagerPageHandler public string Text { get; set; } } - //--- Main + #region Main private DataModel m_Data; @@ -27,25 +27,25 @@ public override void OnConnect() m_Data = new DataModel(); m_Page = this.CreatePage(); - //--- DataChanged + #region DataChanged m_Page.DataChanged += OnDataChanged; - //--- - //--- Closing + #endregion DataChanged + #region Closing m_Page.Closing += OnClosing; - //--- - //--- Closed + #endregion Closing + #region Closed m_Page.Closed += OnClosed; - //--- + #endregion Closed } - //--- DataChanged + #region DataChanged2 private void OnDataChanged() { var text = m_Data.Text; //handle the data changing, e.g. update preview } - //--- - //--- Closing + #endregion DataChanged2 + #region Closing2 private void OnClosing(PageCloseReasons_e reason, PageClosingArg arg) { if (reason == PageCloseReasons_e.Okay) @@ -58,8 +58,8 @@ private void OnClosing(PageCloseReasons_e reason, PageClosingArg arg) } } } - //--- - //--- Closed + #endregion Closing2 + #region Closed2 private void OnClosed(PageCloseReasons_e reason) { if (reason == PageCloseReasons_e.Okay) @@ -71,7 +71,7 @@ private void OnClosed(PageCloseReasons_e reason) //release resources } } - //--- - //--- + #endregion Closed2 + #endregion Main } } diff --git a/docs/_src/PropertyPage/Overview.cs b/docs/_src/PropertyPage/Overview.cs index d8523963..ff8194b9 100644 --- a/docs/_src/PropertyPage/Overview.cs +++ b/docs/_src/PropertyPage/Overview.cs @@ -12,7 +12,7 @@ namespace Xarial.XCad.Documentation [ComVisible(true), Guid("55651FB2-CE56-4904-8FF5-3D5D29BAC34D")] public class PmpPageOverviewAddIn : SwAddInEx { - //--- Ignore + #region Ignore public class DataModelIgnore { public string Text { get; set; } @@ -20,28 +20,28 @@ public class DataModelIgnore [ExcludeControl] public int CalculatedField { get; set; } //control will not be generated for this field } - //--- + #endregion Ignore - //--- Simple + #region Simple public class DataModelSimple { public string Text { get; set; } public int Size { get; set; } = 48; public double Number { get; set; } = 10.5; } - //--- + #endregion Simple - //--- PMPageHandler + #region PMPageHandler [ComVisible(true)] public class MyPMPageData : SwPropertyManagerPageHandler { public DataModelSimple Simple { get; set; } public DataModelIgnore Ignore { get; set; } } - //--- + #endregion PMPageHandler - //--- CreateInstance + #region CreateInstance private ISwPropertyManagerPage m_Page; private MyPMPageData m_Data = new MyPMPageData(); @@ -68,6 +68,6 @@ private void OnPageClosed(PageCloseReasons_e reason) Debug.Print($"Size: {m_Data.Simple.Size}"); Debug.Print($"Number: {m_Data.Simple.Number}"); } - //--- + #endregion CreateInstance } } diff --git a/docs/_src/ThirdPartyData.cs b/docs/_src/ThirdPartyData.cs index b07e8146..79e9d5bf 100644 --- a/docs/_src/ThirdPartyData.cs +++ b/docs/_src/ThirdPartyData.cs @@ -12,7 +12,7 @@ namespace Xarial.XCad.Documentation [ComVisible(true), Guid("64684CEF-131C-4F08-88F7-B3C3BAA7004E")] public class ThirdPartyDataAddIn : SwAddInEx { - //--- Stream + #region Stream private const string STREAM_NAME = "CodeStackStream"; public class StreamData @@ -23,7 +23,7 @@ public class StreamData private StreamData m_StreamData; - //--- StreamLoad + #region StreamLoad private void LoadFromStream(ISwDocument model) { using (var str = model.TryOpenStream(STREAM_NAME, AccessType_e.Read)) @@ -35,8 +35,8 @@ private void LoadFromStream(ISwDocument model) } } } - //--- - //--- StreamSave + #endregion StreamLoad + #region StreamSave private void SaveToStream(ISwDocument model) { using (var str = model.OpenStream(STREAM_NAME, AccessType_e.Write)) @@ -45,9 +45,9 @@ private void SaveToStream(ISwDocument model) xmlSer.Serialize(str, m_StreamData); } } - //--- - //--- - //--- Storage + #endregion StreamSave + #endregion Stream + #region Storage private const string STORAGE_NAME = "CodeStackStorage"; private const string STREAM1_NAME = "CodeStackStream1"; private const string STREAM2_NAME = "CodeStackStream2"; @@ -61,7 +61,7 @@ public class StorageStreamData private StorageStreamData m_StorageData; - //--- StorageLoad + #region StorageLoad private void LoadFromStorageStore(ISwDocument model) { using (var storage = model.TryOpenStorage(STORAGE_NAME, AccessType_e.Read)) @@ -96,8 +96,8 @@ private void LoadFromStorageStore(ISwDocument model) } } } - //--- - //--- StorageSave + #endregion StorageLoad + #region StorageSave private void SaveToStorageStore(ISwDocument model) { using (var storage = model.OpenStorage(STORAGE_NAME, AccessType_e.Write)) @@ -119,9 +119,9 @@ private void SaveToStorageStore(ISwDocument model) } } } - //--- - //--- - + #endregion StorageSave + #endregion Storage + public override void OnConnect() { var doc = this.Application.Documents.Active; @@ -130,8 +130,8 @@ public override void OnConnect() HandleStorage(doc); } - //--- StreamHandler - private void HandleStream(ISwDocument doc) + #region StreamHandler + private void HandleStream(ISwDocument doc) { doc.StreamReadAvailable += OnStreamReadAvailable; doc.StreamWriteAvailable += OnStreamWriteAvailable; @@ -146,10 +146,10 @@ private void OnStreamReadAvailable(IXDocument doc) { LoadFromStream(doc as ISwDocument); } - //--- + #endregion StreamHandler - //--- StorageHandler - private void HandleStorage(ISwDocument doc) + #region StorageHandler + private void HandleStorage(ISwDocument doc) { doc.StorageReadAvailable += OnStorageReadAvailable; doc.StorageWriteAvailable += OnStorageWriteAvailable; @@ -164,6 +164,6 @@ private void OnStorageReadAvailable(IXDocument doc) { LoadFromStorageStore(doc as ISwDocument); } - //--- + #endregion StorageHandler } } diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 9f156281..e36febcc 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -14,10 +14,10 @@ Breaking change is marked with ⚠ symbol * ⚠ Removed **OptionBoxStyle_e** and **OptionBoxOptionsAttribute::Style** * ⚠ SelectType_e enumeration is removed. Use Type to specify the selection filter for the SelectionBoxOptionsAttribute::Filters or use SwSelectionBoxOptionsAttribute::Filters to specify SOLIDWORKS specific filters via swSelectionType_e. Use ContextMenuCommandItemInfoAttribute::Owner to set the Type of the owner entity or use SwContextMenuCommandItemInfoAttribute::Owner to set the SOLIDWORKS specific owner via swSelectionType_e * ⚠ Point::Scale/Vector::Scale are not do not modify the values of the original object rather return new scaled result -* ⚠ IXCustomFeatureDefinition\::OnPageParametersChanged renamed to IXCustomFeatureDefinition\::OnPreviewUpdated -* ⚠ IXCustomFeatureDefinition\::CreateGeometry is split to IXCustomFeatureDefinition\.CreatePreviewGeometry. +* ⚠ IXCustomFeatureDefinition\``::OnPageParametersChanged renamed to IXCustomFeatureDefinition\``::OnPreviewUpdated +* ⚠ IXCustomFeatureDefinition\``::CreateGeometry is split to IXCustomFeatureDefinition\``.CreatePreviewGeometry. * ⚠ ISwMacroFeatureDefinition::ShouldUpdatePreview changed the signature (added the pointer to TPage) -* ⚠ ISwMacroFeatureDefinition::ShouldHidePreviewEditBody, ISwMacroFeatureDefinition::AssignPreviewBodyColor replaced with the delegates of IXCustomFeatureDefinition\. +* ⚠ ISwMacroFeatureDefinition::ShouldHidePreviewEditBody, ISwMacroFeatureDefinition::AssignPreviewBodyColor replaced with the delegates of IXCustomFeatureDefinition\``. CreatePreviewGeometry * ⚠ ISwMacroFeatureDefinition::ConvertParamsToPage added additional parameter for current data * ⚠ IXDocument3D::PreCreateBoundingBox, IXDocument3D::PreCreateMassProperty moved to IXDocumentEvaluation @@ -88,7 +88,7 @@ CreatePreviewGeometry ## 0.7.0 - May 2, 2021 * ⚠ IXPropertyRepository::GetOrPreCreate moved to extension method -* ⚠ IXObject::IsSame replaced with IEquatable.Equals +* ⚠ IXObject::IsSame replaced with IEquatable``.Equals * ⚠ IXCustomControl::DataContextChanged replaced with IXCustomControl::ValueChanged * ⚠ IXCustomControl::DataContext replaced with IXCustomControl::Value * ⚠ ResourceHelper::FromBytes replaced with BaseImage class @@ -189,7 +189,7 @@ CreatePreviewGeometry ## 0.6.0 - September 13, 2020 -* Implemented [#5 - Updating Combobox based on another comboBox selection change](https://github.com/xarial/xcad/issues/5). Refer [help documentation](/property-pages/controls/combo-box#dynamic-items-provider) for more information +* Implemented [#5 - Updating Combobox based on another comboBox selection change](https://github.com/xarial/xcad/issues/5). Refer [help documentation](../property-pages/controls/combo-box/index#dynamic-items-provider) for more information * Implemented [#6 - Add Support to Bitmap Button](https://github.com/xarial/xcad/issues/6) diff --git a/docs/custom-features/data/backward-compatibility/index.md b/docs/custom-features/data/backward-compatibility/index.md index 00545f96..e36077a0 100644 --- a/docs/custom-features/data/backward-compatibility/index.md +++ b/docs/custom-features/data/backward-compatibility/index.md @@ -14,12 +14,12 @@ Implement the **ParametersVersionConverter** to convert from the latest version Old version of parameters -{% code-snippet { file-name: ~CustomFeature\BackwardCompatibility.*, regions: [OldParams] } %} +<<< @/_src/CustomFeature/BackwardCompatibility.cs#OldParams New version of parameters -{% code-snippet { file-name: ~CustomFeature\BackwardCompatibility.*, regions: [NewParams] } %} +<<< @/_src/CustomFeature/BackwardCompatibility.cs#NewParams Converter between version 1 and 2 can be implemented in the following way: -{% code-snippet { file-name: ~CustomFeature\BackwardCompatibility.*, regions: [Converter] } %} \ No newline at end of file +<<< @/_src/CustomFeature/BackwardCompatibility.cs#Converter \ No newline at end of file diff --git a/docs/custom-features/data/dimensions/index.md b/docs/custom-features/data/dimensions/index.md index 01f07c55..11c35dfb 100644 --- a/docs/custom-features/data/dimensions/index.md +++ b/docs/custom-features/data/dimensions/index.md @@ -6,11 +6,11 @@ order: 4 --- Dimensions is an additional source of input for macro feature. Dimensions can be defined in the following way: -{% code-snippet { file-name: ~CustomFeature\DimensionsParameters.* } %} +<<< @/_src/CustomFeature/DimensionsParameters.cs -It is required to arrange the dimensions within rebuild by specifying the *alignDim* delegate. Use **IXCustomFeatureDefinition.AlignDimension** and extension helper methods to align the dimension. +It is required to arrange the dimensions within rebuild by specifying the *alignDim* delegate. Use **IXCustomFeatureDefinition``.AlignDimension** and extension helper methods to align the dimension. -{% code-snippet { file-name: ~CustomFeature\SetDimensions.* } %} +<<< @/_src/CustomFeature/SetDimensions.cs *Origin* is a starting point of the dimension. diff --git a/docs/custom-features/data/edit-bodies/index.md b/docs/custom-features/data/edit-bodies/index.md index 30518705..2921794b 100644 --- a/docs/custom-features/data/edit-bodies/index.md +++ b/docs/custom-features/data/edit-bodies/index.md @@ -6,12 +6,12 @@ order: 3 --- Edit bodies are input bodies which macro feature will acquire. For example when boss-extrude feature is created using the merge bodies option the solid body it is based on became a body of the new boss-extrude. This could be validated by selecting the feature in the tree which will select the body as well. In this case the original body was passed as an edit body to the boss-extrude feature. -{% code-snippet { file-name: ~CustomFeature\EditBodies.*, regions: [single] } %} +<<< @/_src/CustomFeature/EditBodies.cs#single If multiple input bodies are required it could be either specified in different properties -{% code-snippet { file-name: ~CustomFeature\EditBodies.*, regions: [multiple] } %} +<<< @/_src/CustomFeature/EditBodies.cs#multiple or as list -{% code-snippet { file-name: ~CustomFeature\EditBodies.*, regions: [list] } %} \ No newline at end of file +<<< @/_src/CustomFeature/EditBodies.cs#list diff --git a/docs/custom-features/data/index.md b/docs/custom-features/data/index.md index b71414bc..b9d3b113 100644 --- a/docs/custom-features/data/index.md +++ b/docs/custom-features/data/index.md @@ -13,6 +13,6 @@ Macro feature can store additional metadata and entities. The data includes Required data can be defined within the macro feature data model. Special parameters (such as selections, edit bodies or dimensions) should be decorated with appropriate attributes, all other properties will be considered as parameters. -Data model is used both as input and output of macro feature. Parameters can be accessed via **SwMacroFeature.Parameters** property and also passed to **OnRebuild** handler. +Data model is used both as input and output of macro feature. Parameters can be accessed via **SwMacroFeature````.Parameters** property and also passed to **OnRebuild** handler. -{% code-snippet { file-name: ~CustomFeature\MacroFeatureParameters.* } %} \ No newline at end of file +<<< @/_src/CustomFeature/MacroFeatureParameters.cs \ No newline at end of file diff --git a/docs/custom-features/data/parameters/index.md b/docs/custom-features/data/parameters/index.md index 18bea6eb..972c6f14 100644 --- a/docs/custom-features/data/parameters/index.md +++ b/docs/custom-features/data/parameters/index.md @@ -6,4 +6,4 @@ order: 1 --- Parameters are any additional metadata required by the macro feature. Currently only primitive types of parameters are supported (i.e. string, bool, double, int etc.) -{% code-snippet { file-name: ~CustomFeature\PrimitiveParameters.* } %} \ No newline at end of file +<<< @/_src/CustomFeature/PrimitiveParameters.cs \ No newline at end of file diff --git a/docs/custom-features/data/selections/index.md b/docs/custom-features/data/selections/index.md index 3e58bd85..5fbaa9c4 100644 --- a/docs/custom-features/data/selections/index.md +++ b/docs/custom-features/data/selections/index.md @@ -4,7 +4,7 @@ caption: Selections description: Managing selections of SOLIDWORKS macro feature using the xCAD framework order: 2 --- -{% code-snippet { file-name: ~CustomFeature\MacroFeatureSelectionParams.* } %} +<<< @/_src/CustomFeature/MacroFeatureSelectionParams.cs Parameters of **IXSelObject** will be recognized as selection objects and stored appropriately in macro feature. diff --git a/docs/custom-features/index.md b/docs/custom-features/index.md index 030c6cf7..754d7d3a 100644 --- a/docs/custom-features/index.md +++ b/docs/custom-features/index.md @@ -40,7 +40,7 @@ Macro feature class must be com visible. It is recommended to explicitly assign guid and prog id for the macro feature. -{% code-snippet { file-name: ~CustomFeature\DefiningMacroFeature.* } %} +<<< @/_src/CustomFeature/DefiningMacroFeature.cs ## Icon @@ -54,7 +54,7 @@ Macro feature is a COM object which means it needs to be registered in order for User can specify the custom message to be displayed in the *What's Wrong* dialog via **MissingDefinitionErrorMessage** attribute. Specified message will be displayed after the predefined *Add-in not found. Please contact* -{% code-snippet { file-name: ~CustomFeature\UnregisteredMacroFeature.* } %} +<<< @/_src/CustomFeature/UnregisteredMacroFeature.cs ![Rebuild error message for unregistered macro feature](unregistered-macro-feature.png){ width=650 } diff --git a/docs/custom-features/lifecycle/edit-definition/index.md b/docs/custom-features/lifecycle/edit-definition/index.md index 06e8d837..9f44b955 100644 --- a/docs/custom-features/lifecycle/edit-definition/index.md +++ b/docs/custom-features/lifecycle/edit-definition/index.md @@ -8,6 +8,6 @@ Edit definition allows to modify the parameters of an existing feature. Edit def ![Edit Feature Command](menu-edit-feature.png){ width=250 } -Use **ISwMacroFeature.Parameters** property to read and write the parameters of this macro feature. Set the value to **null** to revert changes and rollback the feature. +Use **ISwMacroFeature````.Parameters** property to read and write the parameters of this macro feature. Set the value to **null** to revert changes and rollback the feature. -{% code-snippet { file-name: ~CustomFeature\EditMacroFeatureDefinition.* } %} \ No newline at end of file +<<< @/_src/CustomFeature/EditMacroFeatureDefinition.cs \ No newline at end of file diff --git a/docs/custom-features/lifecycle/regeneration/index.md b/docs/custom-features/lifecycle/regeneration/index.md index 6eb037fd..00dc7b1f 100644 --- a/docs/custom-features/lifecycle/regeneration/index.md +++ b/docs/custom-features/lifecycle/regeneration/index.md @@ -10,6 +10,6 @@ Use **CustomFeatureRebuildResult** class to generate the required output. Feature can generate the following output -{% code-snippet { file-name: ~CustomFeature\RegenerationResults.* } %} +<<< @/_src/CustomFeature/RegenerationResults.cs Use **IXGeometryBuilder** interface if feature needs to create new bodies. Only temp bodies can be returned from the regeneration method. \ No newline at end of file diff --git a/docs/custom-features/lifecycle/state/index.md b/docs/custom-features/lifecycle/state/index.md index 413e7ec9..fe537d73 100644 --- a/docs/custom-features/lifecycle/state/index.md +++ b/docs/custom-features/lifecycle/state/index.md @@ -6,4 +6,4 @@ order: 3 --- This handler is called every time state of the feature is changed. It should be used to provide additional security for macro feature. -{% code-snippet { file-name: ~CustomFeature\UpdateStateMacroFeature.* } %} \ No newline at end of file +<<< @/_src/CustomFeature/UpdateStateMacroFeature.cs \ No newline at end of file diff --git a/docs/deployment/index.md b/docs/deployment/index.md index 559474ac..82be41a3 100644 --- a/docs/deployment/index.md +++ b/docs/deployment/index.md @@ -10,17 +10,17 @@ xCAD.NET automatically registers SOLIDWORKS add-in when add-in dll is registered The simplest way to deploy SOLIDWORKS add-in to other computer is to copy the output of bin directory to the target machine and run regasm tool with **/codebase** switch: -~~~ -"%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" /codebase "PATH TO ADDIN DLL" -~~~ - > It might be required to run this script with administrative previledges +::: code-group -In order to uninstall the add-in it is required to run the following command +``` [Install] +"%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" /codebase "PATH TO ADDIN DLL" +``` -~~~ +``` [Uninstall] "%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" /codebase "PATH TO ADDIN DLL" /u -~~~ +``` +::: ### Adding Command Line Scripts @@ -28,17 +28,19 @@ The process can be improved by creating the .cmd script which can be placed in t ![Run register.cmd script](run-register-cmd.png) -Content of **register.cmd** file +Content of: -~~~ -"%windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /codebase "%~dp0[NAME OF THE ADDIN FILE].dll" -~~~ +::: code-group -Content of **unregister.cmd** file +``` [**register.cmd** file] +"%windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /codebase "%~dp0[NAME OF THE ADDIN FILE].dll" +``` -~~~ +``` [**unregister.cmd** file] "%windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /codebase "%~dp0[NAME OF THE ADDIN FILE].dll" /u -~~~ +``` + +::: ## Creating MSI Installers diff --git a/docs/documents-management/events/index.md b/docs/documents-management/events/index.md index 4a16db25..fb5ed298 100644 --- a/docs/documents-management/events/index.md +++ b/docs/documents-management/events/index.md @@ -8,10 +8,10 @@ xCAD framework exposes the common events via corresponding interfaces, e.g. **IX Although it is possible to subscribe to events from any container, it is usually managed within the **IDocumentHandler** -{% code-snippet { file-name: ~EventsAddIn.*, regions: [RegisterHandler] } %} +<<< @/_src/EventsAddIn.cs#RegisterHandler Explore API reference for more information about the passed parameters. -{% code-snippet { file-name: ~EventsAddIn.*, regions: [EventHandlers] } %} +<<< @/_src/EventsAddIn.cs#EventHandlers Refer [Property As File Name](https://github.com/xarial/xcad-examples/tree/master/PropertyAsFileName) example which demonstrates how to interrupt saving event and supply custom name for the file. \ No newline at end of file diff --git a/docs/documents-management/index.md b/docs/documents-management/index.md index 573d3f58..e714bf45 100644 --- a/docs/documents-management/index.md +++ b/docs/documents-management/index.md @@ -8,11 +8,11 @@ xCAD frameworks provides utility class to manage document life cycle by creating Call **IXDocumentCollection::RegisterHandler** method and pass the type of document handler as a generic argument. Handle [common events](events/) (e.g. saving, selection, rebuilding, [3rd party storage access](/third-party-data-storage/)) or specific event within the handler implementation. -{% code-snippet { file-name: ~DocMgrAddIn.*, regions: [DocHandlerInit] } %} +<<< @/_src/DocMgrAddIn.cs#DocHandlerInit Define the document handler either by implementing the **IDocumentHandler** interface or **SwDocumentHandler** class. -{% code-snippet { file-name: ~DocMgrAddIn.*, regions: [DocHandlerDefinition] } %} +<<< @/_src/DocMgrAddIn.cs#DocHandlerDefinition Override methods of document handler and implement required functionality attached for each specific SOLIDWORKS model (such as handle events, load, write data etc.) diff --git a/docs/extensions/commands/command-states/index.md b/docs/extensions/commands/command-states/index.md index 5e172b64..aafdd41d 100644 --- a/docs/extensions/commands/command-states/index.md +++ b/docs/extensions/commands/command-states/index.md @@ -20,6 +20,6 @@ The value of state will be preassigned based on the workspace and can be changed > This method allows to implement the toggle button in toolbar and menu. To set the checked state use the *Checked*. -{% code-snippet { file-name: ~Extension\CommandsManager\CustomEnableAddIn.*, regions: [CustomEnableState] } %} +<<< @/_src/Extension/CommandsManager/CustomEnableAddIn.cs#CustomEnableState Refer [Toggle Command Example](https://github.com/xarial/xcad-examples/tree/master/ToggleCommand) for the demonstration of how to achieve check box effect for toolbar button in SOLIDWORKS using the command states. \ No newline at end of file diff --git a/docs/extensions/commands/defining-commands/index.md b/docs/extensions/commands/defining-commands/index.md index ab8e2b20..7b0786b0 100644 --- a/docs/extensions/commands/defining-commands/index.md +++ b/docs/extensions/commands/defining-commands/index.md @@ -8,7 +8,7 @@ order: 1 xCAD framework allows defining the commands in the enumeration (enum). In this case the enumeration value become the id of the corresponding command. -{% code-snippet { file-name: ~Extension\CommandsManager\DefiningCommands.* } %} +<<< @/_src/Extension/CommandsManager/DefiningCommands.cs ## Commands Decoration @@ -32,7 +32,7 @@ Transparency is supported. xCAD framework will automatically assign the required Icons can be referenced from any static class. Usually this should be a resource class. It is required to specify the type of the resource class as first parameter, and the resource names as additional parameters. Use *nameof* keyword to load the resource name to avoid usage of 'magic' strings. -{% code-snippet { file-name: ~Extension\CommandsManager\CommandsAttribution.* } %} +<<< @/_src/Extension/CommandsManager/CommandsAttribution.cs Refer [Command Group Icons Example](https://github.com/xarial/xcad-examples/tree/master/CommandGroupIcons) for the demonstration of hosting different icons with various sizes in SOLIDWORKS toolbar. menu and command tab box. @@ -40,13 +40,13 @@ Refer [Command Group Icons Example](https://github.com/xarial/xcad-examples/tree Each command can be assigned with the operation scope (i.e. the environment where this command can be executed, e.g. Part, Assembly etc.). Scope can be assigned with **CommandItemInfoAttribute** attribute by specifying the values in *suppWorkspaces* parameter of the attribute's constructor. The **WorkspaceTypes_e** is a flag enumeration, so it is possible to combine the workspaces. -Framework will automatically disable/enable the commands based on the active environment as per the specified scope. For additional logic for assigning the state visit [Custom Enable Command State](/extension/commands/command-states/) article. +Framework will automatically disable/enable the commands based on the active environment as per the specified scope. For additional logic for assigning the state visit [Custom Enable Command State](../../../extensions/commands/command-states/index) article. -{% code-snippet { file-name: ~Extension\CommandsManager\CommandsScope.* } %} +<<< @/_src/Extension/CommandsManager/CommandsScope.cs ## User Assigned Command Group IDs **CommandGroupInfoAttribute** allows to assign the static command id to the group. This should be applied to the enumerator definition. If this attribute is not used SwEx framework will assign the ids automatically. -{% code-snippet { file-name: ~Extension\CommandsManager\CommandGroupId.* } %} +<<< @/_src/Extension/CommandsManager/CommandGroupId.cs diff --git a/docs/extensions/commands/hosting-commands/index.md b/docs/extensions/commands/hosting-commands/index.md index ceb68e92..8d7c2988 100644 --- a/docs/extensions/commands/hosting-commands/index.md +++ b/docs/extensions/commands/hosting-commands/index.md @@ -5,7 +5,7 @@ description: Hosting options for SOLIDWORKS commands using xCAD (command group, image: commands-toolbar.png order: 2 --- -[Defined commands](/extension/commands/defining-commands/) can be hosted in different locations of SOLIDWORKS commands area: [command group](#command-group), which includes [menu](#menu), [toolbar](#toolbar) and [command tab box (ribbon)](#command-tab-box) as well as in the [context menu](#context-menu) +[Defined commands](../../../extensions/commands/defining-commands/index) can be hosted in different locations of SOLIDWORKS commands area: [command group](#command-group), which includes [menu](#menu), [toolbar](#toolbar) and [command tab box (ribbon)](#command-tab-box) as well as in the [context menu](#context-menu) ## Command Group @@ -13,7 +13,8 @@ In order to add command group it is required to call the **AddCommandGroup** met It is required to provide the void handler function with a parameter of enumerator which will be called by framework when command is clicked. -{% code-snippet { file-name: ~Extension\CommandsManager\CommandsAddIn.*, regions: [CommandGroup] } %} +<<< @/_src/Extension/CommandsManager/CommandsAddIn.cs#CommandGroup +<<< @/_src/Extension/CommandsManager/CommandsAddIn.cs#CommandGroup2 ### Menu @@ -42,7 +43,7 @@ Command item can be added to tab box by setting the *showInCmdTabBox* parameter * Text below icon (TextBelow) * Text to the right to icon, aligned horizontally (TextHorizontal) -{% code-snippet { file-name: ~Extension\CommandsManager\CommandTabBox.* } %} +<<< @/_src/Extension/CommandsManager/CommandTabBox.cs ## Context Menu @@ -54,6 +55,5 @@ It is required to provide the void handler function with a parameter of enumerat It is optionally required to specify the selection type of where this menu should be displayed. -{% code-snippet { file-name: ~Extension\CommandsManager\CommandsAddIn.*, regions: [ContextMenu] } %} - - +<<< @/_src/Extension/CommandsManager/CommandsAddIn.cs#ContextMenu +<<< @/_src/Extension/CommandsManager/CommandsAddIn.cs#ContextMenu2 diff --git a/docs/extensions/commands/sub-menu-and-spacers/index.md b/docs/extensions/commands/sub-menu-and-spacers/index.md index bff0b2a0..0a9df86a 100644 --- a/docs/extensions/commands/sub-menu-and-spacers/index.md +++ b/docs/extensions/commands/sub-menu-and-spacers/index.md @@ -9,7 +9,7 @@ order: 3 Spacer can be added between the commands by decorating the command using the **CommandSpacerAttribute**. Spacer will be added before this command. -{% code-snippet { file-name: ~Extension\CommandsManager\SubMenuAndSpacerAddIn.*, regions: [Spacer] } %} +<<< @/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs#Spacer If command tab tab boxes are created for this command group (i.e. *showInCmdTabBox* parameter is set to *true* in the **CommandItemInfoAttribute**), spacer is not reflected in the corresponding command tab box. @@ -17,13 +17,13 @@ If command tab tab boxes are created for this command group (i.e. *showInCmdTabB Sub-menus for the command groups can be defined by calling the corresponding overload of the **CommandGroupParent** attribute and specifying the type of the parent menu group or the user id -{% code-snippet { file-name: ~Extension\CommandsManager\SubMenuAndSpacerAddIn.*, regions: [SubMenu] } %} +<<< @/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs#SubMenu Sub menus are rendered in separate tab boxes in the command tab. ## Example -{% code-snippet { file-name: ~Extension\CommandsManager\SubMenuAndSpacerAddIn.*, regions: [SpacerAndSubMenu] } %} +<<< @/_src/Extension/CommandsManager/SubMenuAndSpacerAddIn.cs#SpacerAndSubMenu The above commands configuration would result in the following menu and command tab boxes created: diff --git a/docs/extensions/deployment/index.md b/docs/extensions/deployment/index.md index 86a89618..42a36798 100644 --- a/docs/extensions/deployment/index.md +++ b/docs/extensions/deployment/index.md @@ -18,27 +18,31 @@ Registration command differs depending on if the add-in developed using .NET Fra ### .NET Framework -~~~ -> %windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "Full Path To Add-in dll" -~~~ +::: code-group -To unregister add-in use the following command: +``` [Register] +> %windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "Full Path To Add-in dll" +``` -~~~ +``` [unregister] > %windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "Full Path To Add-in dll" /u -~~~ +``` + +::: ### .NET Core -~~~ -> regsvr32 "Full Path To Add-in .comhost.dll" -~~~ +::: code-group -To unregister add-in use the following command: +``` [Register] +> regsvr32 "Full Path To Add-in .comhost.dll" +``` -~~~ +``` [Unregister] > regsvr32 "Full Path To Add-in .comhost.dll" /u -~~~ +``` + +::: If **Xarial.XCad.Extensions.Attributes.SkipRegistrationAttribute** is used then all the required registry information will not be added and it is additionally required to add the registry keys when registering the add-in by running the following .reg file, where @@ -46,7 +50,7 @@ If **Xarial.XCad.Extensions.Attributes.SkipRegistrationAttribute** is used then * ADDIN_TITLE - User friendly name of the add-in * ADDIN_DESCRIPTION - Summary of the add-in -~~~ +``` Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\AddIns\{ADDIN_GUID}] @@ -56,7 +60,7 @@ Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\SolidWorks\AddInsStartup\{ADDIN_GUID}] @=dword:00000001 -~~~ +``` > If the **Xarial.XCad.Extensions.Attributes.SkipRegistrationAttribute** attribute is not set explicitly, registry information will be added automatically upon registration and it is not required to run the .reg file diff --git a/docs/extensions/entry-point/index.md b/docs/extensions/entry-point/index.md index c97b8dfa..ec5ea608 100644 --- a/docs/extensions/entry-point/index.md +++ b/docs/extensions/entry-point/index.md @@ -6,7 +6,7 @@ order: 2 --- ## OnConnect -{% code-snippet { file-name: ~Extension\EntryPoint.*, regions: [Connect] } %} +<<< @/_src/Extension/EntryPoint.cs#Connect This function is called within the ConnectToSw entry point. Override this function to initialize the add-in. @@ -16,7 +16,7 @@ This override should be used to validate license (return false if the validation ## OnDisconnect -{% code-snippet { file-name: ~Extension\EntryPoint.*, regions: [Disconnect] } %} +<<< @/_src/Extension/EntryPoint.cs#Disconnect This function is called within the DisconnectFromSw function. Use the function to release all resources. You do not need to release the com pointers to SOLIDWORKS or command manager as those will be automatically released by xCAD framework. @@ -24,4 +24,4 @@ This function is called within the DisconnectFromSw function. Use the function t xCAD framework provides the access to the SOLIDWORKS specific add-in data and objects which are preassigned by the framework. This includes pointer to SOLIDWORKS application, add-in id, pointer to command manager. -{% code-snippet { file-name: ~Extension\EntryPoint.*, regions: [SwObjects] } %} \ No newline at end of file +<<< @/_src/Extension/EntryPoint.cs#SwObjects \ No newline at end of file diff --git a/docs/extensions/index.md b/docs/extensions/index.md index 63a0ffc7..1ab7d88c 100644 --- a/docs/extensions/index.md +++ b/docs/extensions/index.md @@ -13,7 +13,9 @@ The functionality includes * Events management * Task Panes, Feature Manager Tab, Model View Tab -{% youtube id: IyUkJf7xmLY %} +
+ +
## Features Overview @@ -23,25 +25,27 @@ Although some of the feature below, such as documents and events management, rea To Register add-in just declare a public class and add COMVisible attribute (no need to run custom regasm commands, no need to call any static classes). -{% code-snippet { file-name: ~Extension\Overview.*, regions: [Register] } %} +<<< @/_src/Extension/Overview.cs#Register ### Adding Commands Commands can be defined by creating an enumerations. Commands can be customized by adding attributes to assign title, tooltip, icon etc. Commands can be grouped under sub menus. Simply specify the image (transparency is supported) and framework will create required bitmaps compatible with SOLIDWORKS. No need to assign gray background to enable transparency, no need to scale images to fit the required sizes - simply use any image and framework will do the rest. Use resources to localize the add-in. -{% code-snippet { file-name: ~Extension\Overview.*, regions: [CommandGroup] } %} +<<< @/_src/Extension/Overview.cs#CommandGroup +<<< @/_src/Extension/Overview.cs#CommandGroup2 +<<< @/_src/Extension/Overview.cs#CommandGroup3 ### Managing Documents Lifecycle and Events Framework will manage the lifecycle of documents by wrapping them in the specified class and allows to handle common events: -{% code-snippet { file-name: ~Extension\Overview.*, regions: [DocHandler] } %} +<<< @/_src/Extension/Overview.cs#DocHandler ### Reading and Writing to 3rd Party Storage and Store It has never been easier to read and write data to the internal SOLIDWORKS file storage. Simply override the corresponding event and serialize/deserialize the data using XML, DataContract, Binary etc. serializers: -{% code-snippet { file-name: ~Extension\Overview.*, regions: [3rdParty] } %} +<<< @/_src/Extension/Overview.cs#3rdParty ### Hosting User Controls In SOLIDWORKS Panels @@ -49,4 +53,7 @@ Just specify User Control to host and framework will do the rest: #### Task Pane -{% code-snippet { file-name: ~Extension\Overview.*, regions: [TaskPane] } %} +<<< @/_src/Extension/Overview.cs#TaskPane +<<< @/_src/Extension/Overview.cs#TaskPane2 +<<< @/_src/Extension/Overview.cs#TaskPane3 +<<< @/_src/Extension/Overview.cs#TaskPane4 diff --git a/docs/extensions/panels/feature-manager-tab/index.md b/docs/extensions/panels/feature-manager-tab/index.md index 94efc3b2..22705c2a 100644 --- a/docs/extensions/panels/feature-manager-tab/index.md +++ b/docs/extensions/panels/feature-manager-tab/index.md @@ -12,4 +12,4 @@ This functionality is only available for Part and Assembly documents Decorate the control classes with **TitleAttribute** and **IconAttribute** to assign a tab tooltip and icon. -{% code-snippet { file-name: ~Extension\Panels\PanelsAddIn.*, regions: [FeatMgrTab] } %} \ No newline at end of file +<<< @/_src/Extension/Panels/PanelsAddIn.cs#FeatMgrTab \ No newline at end of file diff --git a/docs/extensions/panels/model-view-tab/index.md b/docs/extensions/panels/model-view-tab/index.md index eefbdb46..02e37777 100644 --- a/docs/extensions/panels/model-view-tab/index.md +++ b/docs/extensions/panels/model-view-tab/index.md @@ -12,4 +12,4 @@ This functionality is only available for Part and Assembly documents Decorate the control classes with **TitleAttribute** to assign a tab name. -{% code-snippet { file-name: ~Extension\Panels\PanelsAddIn.*, regions: [ModelViewTab] } %} \ No newline at end of file +<<< @/_src/Extension/Panels/PanelsAddIn.cs#ModelViewTab \ No newline at end of file diff --git a/docs/extensions/panels/popup/index.md b/docs/extensions/panels/popup/index.md index c4234fbe..4ec05f35 100644 --- a/docs/extensions/panels/popup/index.md +++ b/docs/extensions/panels/popup/index.md @@ -12,4 +12,4 @@ xCAD framework allows to show custom [Windows Form](https://docs.microsoft.com/e Framework will automatically assign SOLIDWORKS window as a parent window for the forms. -{% code-snippet { file-name: ~Extension\Panels\PanelsAddIn.*, regions: [Popup] } %} \ No newline at end of file +<<< @/_src/Extension/Panels/PanelsAddIn.cs#Popup \ No newline at end of file diff --git a/docs/extensions/panels/task-pane/index.md b/docs/extensions/panels/task-pane/index.md index 62d2e8ce..e47be2d6 100644 --- a/docs/extensions/panels/task-pane/index.md +++ b/docs/extensions/panels/task-pane/index.md @@ -12,7 +12,7 @@ Decorate the control classes with **TitleAttribute** and **IconAttribute** to as Taskpane can be created by calling the method below. Pointer to **IXTaskPane** provides an access to underlying properties and the pointer to the created control. -{% code-snippet { file-name: ~Extension\Panels\PanelsAddIn.*, regions: [TaskPaneSimple] } %} +<<< @/_src/Extension/Panels/PanelsAddIn.cs#TaskPaneSimple ## Commands Task Pane @@ -20,4 +20,6 @@ Taskpane can be created by calling the method below. Pointer to **IXTaskPane** p Additionally task pane can contain custom command buttons. -{% code-snippet { file-name: ~Extension\Panels\PanelsAddIn.*, regions: [TaskPaneCommands] } %} \ No newline at end of file +<<< @/_src/Extension/Panels/PanelsAddIn.cs#TaskPaneCommands +<<< @/_src/Extension/Panels/PanelsAddIn.cs#TaskPaneCommands2 +<<< @/_src/Extension/Panels/PanelsAddIn.cs#TaskPaneCommands3 diff --git a/docs/extensions/registering/index.md b/docs/extensions/registering/index.md index 7b0b8bea..3c52a90e 100644 --- a/docs/extensions/registering/index.md +++ b/docs/extensions/registering/index.md @@ -8,15 +8,15 @@ xCAD framework will automatically register the add-in by performing 2 steps (no * Registering the assembly as COM via regasm for .NET Framework add-ins and regsvr32 for .NET Core add-ins. It is however possible to disable this behavior by adding the *XCadRegDll* property into the .csproj *PropertyGroup*. In this case you can manually register the add-in via command line or post build actions. -~~~ xml jagged +``` xml jagged false -~~~ +``` * Adding the required parameters to the Windows Registry. To skip an automatic registration decorate the add-in class with **Xarial.XCad.Extensions.Attributes.SkipRegistrationAttribute**. -{% code-snippet { file-name: ~Extension\Register.*, regions: [SkipReg] } %} +<<< @/_src/Extension/Register.cs#SkipReg > It might be required to run Visual Studio As Administrator to allow the registration of COM object and adding the keys to registry. @@ -26,7 +26,7 @@ To define add-in just add the [ComVisibleAttribute](https://docs.microsoft.com/e Although it is not a essential requirement, it is recommended to assign the GUID to the add-in class via [GuidAttribute](https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.guidattribute?view=netcore-3.1). -{% code-snippet { file-name: ~Extension\Register.*, regions: [NetFramework] } %} +<<< @/_src/Extension/Register.cs#NetFramework ## .NET Core @@ -34,23 +34,23 @@ Unlike .NET Framework registration, COM class must be decorated with [GuidAttrib In addition, it is required to add the *EnableComHosting* property into the *.csproj file and explicitly call the registration due to known limitation of .NET Core as shown below: -~~~ xml jagged +``` xml jagged true -~~~ +``` -{% code-snippet { file-name: ~Extension\Register.*, regions: [NetCore] } %} +<<< @/_src/Extension/Register.cs#NetCore It is also required to change the SDK of the add-in project to *Microsoft.NET.Sdk.WindowsDesktop* and set the *UseWindowsForms* attribute. This would enable the support for resources and other windows specific .NET classes used by framework. -~~~ xml jagged-bottom +``` xml jagged-bottom true -~~~ +``` > Note, .NET Core is a new framework and there were some compatibility issues and conflicts reported with other 3rd party libraries when running as in-process application (i.e. add-in). It is recommended to use .NET Framework for add-ins development where possible until .NET Core is fully supported by SOLIDWORKS host application. diff --git a/docs/index.md b/docs/index.md index acb29f25..9e2e32f4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,39 +1,72 @@ --- -title: xCAD.NET framework for developing applications for CAD systems -caption: xCAD.NET -description: Framework for .NET (C# and VB.NET) to create modern application for CAD systems (SOLIDWORKS, SOLIDWORKS Document Manager, Autodesk Inventor, etc.) -image: logo.svg ---- -![xCAD.NET framework](logo.svg){ width=150 } - -xCAD.NET is a framework which is designed to simplify development of software for SOLIDWORKS in .NET (C# and VB.NET). - -Framework provides utilities for implementation software design principles such as [S.O.L.I.D](https://en.wikipedia.org/wiki/SOLID), [type safety](https://en.wikipedia.org/wiki/Type_safety), **single point of maintenance** for developing maintainable and scalable solutions for SOLIDWORKS and other CAD systems. - -There are 3 main section of CAD functionality which are covered by framework - -* [Extensions](extensions) - add-in skeleton, commands, menus, toolbars, events management, data access -* [Property Pages](property-pages) - building native property pages with data binding -* [Custom Feature](custom-features) - building parametric native features +layout: home -Example projects are published in the [GitHub Repository](https://github.com/xarial/xcad-examples). - -See video below for the demonstration of xCAD.NET capabilities: - -{% youtube id: BuiFfv7-Qig %} +title: xCAD.NET framework for developing applications for CAD systems +titleTemplate: xCAD.NET is a framework which is designed to simplify development of software -Join [xCAD.NET subreddit](https://www.reddit.com/r/xCAD/) or [xCAD Discord Channel](https://discord.gg/gbhABKu3eJ) to discuss xCAD.NET. +hero: + name: xCAD.NET + text: Designed to simplify development of software for SOLIDWORKS + tagline: .NET (C# and VB.NET) + actions: + - theme: brand + text: Getting started + link: /installation/ + - theme: alt + text: Watch video! + link: https://youtu.be/BuiFfv7-Qig + - theme: alt + text: Examples + link: https://github.com/xarial/xcad-examples + - theme: alt + text: GitHub + link: https://github.com/xarial/xcad + - theme: alt + text: MIT + link: license + image: + src: /logo.svg + alt: xCAD.NET -Framework source code is available on [GitHub](https://github.com/xarial/xcad) under [MIT](license) license. +features: + - icon: 🧩 + title: Extensions + details: Add-in skeleton, commands, menus, toolbars, events management, data access. + link: extensions + - icon: 💻 + title: Property Pages + details: Building native property pages with data binding. + link: property-pages + - icon: 🏗 + title: Custom Feature + details: Building parametric native features. + link: custom-features + - icon: 🤝 + title: Hight level interface abstractions + details: | + Use this to develop CAD agnostic applications. All interface names start with *IX*, e.g.

+ IXApplication,
+ IXDocument,
+ IXFace + link: https://www.nuget.org/packages/Xarial.XCad + - icon: 🤝 + title: Custom implementation of CAD interfaces. + details: | + Contain functionality specific to this CAD system.
+ ISwApplication => IXApplication
+ ISwDocument => IXDocument
+ IAiApplication => IAiApplication + - icon: 🛠️ + title: Access to native APIs + details: | + All the xCAD wrapper classes provide access to native (underlying) APIs.

+ ISwApplication.Sw => ISldWorks
+ ISwDocument.Model => IModelDoc2
+ ISwEntity.Entity => IEntity +--- -Refer [Changelog](/changelog/) for release notes. +Framework provides utilities for implementation software design principles such as [S.O.L.I.D](https://en.wikipedia.org/wiki/SOLID), [type safety](https://en.wikipedia.org/wiki/Type_safety), **single point of maintenance** for developing maintainable and scalable solutions for SOLIDWORKS and other CAD systems. ## Architecture -![xCAD.NET architecture diagram](diagram.svg){ width=800 } - -Framework enables the abstraction layers over the CAD API allowing CAD agnostic development. - -* Interfaces defined in the [Xarial.XCad](https://www.nuget.org/packages/Xarial.XCad/) provide highest level of abstraction and completely hide the references to any CAD system, neither reference any interops or namespaces. Use this to develop CAD agnostic applications. All interface names start with *IX*, e.g. IXApplication, IXDocument, IXFace -* Interfaces defined in [Xarial.XCad.SolidWorks](https://www.nuget.org/packages/Xarial.XCad.SolidWorks/), [Xarial.XCad.SwDocumentManager](https://www.nuget.org/packages/Xarial.XCad.SwDocumentManager/), [Xarial.XCad.Inventor](https://www.nuget.org/packages/Xarial.XCad.Inventor/) or other CAD systems (future). This is an implementation of the base interfaces. This library contains references to specific CAD system and might contain functionality specific to this CAD system. For example *ISwApplication* is an implementation of *IXApplication* and *ISwDocument* is an implementation of *IXDocument* in SOLIDWORKS, while *IAiApplication* and *IAiDocument* are corresponding implementations in Autodesk Inventor. Naming convention follows the short name of the CAD system at the start of the name. -* Access to native APIs. All the xCAD wrapper classes provide access to native (underlying) APIs. For example **ISwApplication.Sw** would return the pointer to [ISldWorks](http://help.solidworks.com/2012/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.isldworks.html), **ISwDocument.Model** returns the [IModelDoc2](http://help.solidworks.com/2012/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2.html) and **ISwEntity.Entity** points to [IEntity](http://help.solidworks.com/2012/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ientity.html) \ No newline at end of file +![xCAD.NET architecture diagram](diagram.svg){ width=800, style="margin: 0 auto" } diff --git a/docs/installation/preview-builds/index.md b/docs/installation/preview-builds/index.md index cd858f00..7cce4458 100644 --- a/docs/installation/preview-builds/index.md +++ b/docs/installation/preview-builds/index.md @@ -4,7 +4,7 @@ caption: Preview Builds description: Instructions on installing and updating the preview builds of xCAD.NET framework from development enviro image: selecting-package-source.png --- -All production releases of xCAD.NET framework are automatically published to the [Nuget.org](Nuget.org). +All production releases of xCAD.NET framework are automatically published to the [Nuget.org](https://Nuget.org). All intermediate preview releases (from the dev branch) are published to the separate server in Azure dev ops which is publically available. All users can install the preview build to test new features. @@ -24,7 +24,7 @@ Below are the instructions of settings up the nuget source which points to the p ## Installing the libraries from the preview nuget feed -* Open the package manager as described in [installation](/installation) article +* Open the package manager as described in [installation](../../installation/) article * Select the *Xarial* from the source drop-down ![Selecting Xarial package source](selecting-package-source.png) diff --git a/docs/localization/index.md b/docs/localization/index.md index ee71379e..6224653b 100644 --- a/docs/localization/index.md +++ b/docs/localization/index.md @@ -27,7 +27,7 @@ Two commands in menu are localized for Russian and English versions of the add-i ![Localized menu commands](menu-localized.png) -{% code-snippet { file-name: ~LocalizationAddIn.*, regions: [Commands] } %} +<<< @/_src/LocalizationAddIn.cs#Commands ## Property Manager Page @@ -35,7 +35,7 @@ Property Manager page title and tooltips for the controls are localized for Russ ![Localized Property Manager Page](property-page-localized.png) -{% code-snippet { file-name: ~LocalizationAddIn.*, regions: [PMPage] } %} +<<< @/_src/LocalizationAddIn.cs#PMPage ## Macro Feature @@ -49,4 +49,4 @@ In a similar way it is possible to use strings from the resources to return anot ![Localized macro feature error](macro-feature-error-localized.png) -{% code-snippet { file-name: ~LocalizationAddIn.*, regions: [MacroFeature] } %} +<<< @/_src/LocalizationAddIn.cs#MacroFeature diff --git a/docs/property-pages/controls/bitmap-button/index.md b/docs/property-pages/controls/bitmap-button/index.md index 35c4b6c0..f45d8db0 100644 --- a/docs/property-pages/controls/bitmap-button/index.md +++ b/docs/property-pages/controls/bitmap-button/index.md @@ -18,25 +18,25 @@ This control allows to assign image onto the [button](../button/) or [toggle](.. Decorate the property of type **Action** with **Xarial.XCad.UI.PropertyPage.Attributes.BitmapButtonAttribute** in order to create bitmap button control. -{% code-snippet { file-name: ~PropertyPage\Controls\BitmapButton.*, regions: [Button] } %} +<<< @/_src/PropertyPage/Controls/BitmapButton.cs#Button ## Toggle Decorate the property of type **bool** with **Xarial.XCad.UI.PropertyPage.Attributes.BitmapButtonAttribute** in order to create bitmap toggle control. -{% code-snippet { file-name: ~PropertyPage\Controls\BitmapButton.*, regions: [Toggle] } %} +<<< @/_src/PropertyPage/Controls/BitmapButton.cs#Toggle ## Size Default size of the button is 24x24 pixels. Use the **width** and **height** parameters of the constructor to assign custom size. -{% code-snippet { file-name: ~PropertyPage\Controls\BitmapButton.*, regions: [Size] } %} +<<< @/_src/PropertyPage/Controls/BitmapButton.cs#Size ## Standard Use constructor overload to specify standard bitmap for the button. -{% code-snippet { file-name: ~PropertyPage\Controls\BitmapButton.*, regions: [Standard] } %} +<<< @/_src/PropertyPage/Controls/BitmapButton.cs#Standard ![Standard icons for bitmap button](standard-icons.png) diff --git a/docs/property-pages/controls/bitmap/index.md b/docs/property-pages/controls/bitmap/index.md index 10499d38..75b7cb0e 100644 --- a/docs/property-pages/controls/bitmap/index.md +++ b/docs/property-pages/controls/bitmap/index.md @@ -9,12 +9,13 @@ order: 12 Static bitmap will be created in the property manager page for the properties of [Image](https://docs.microsoft.com/en-us/dotnet/api/system.drawing.image?view=netframework-4.8) type or other types assignable from this type, e.g. [Bitmap](https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap?view=netframework-4.8) -{% code-snippet { file-name: ~PropertyPage\Controls\Bitmap.*, excl-regions: [Size] } %} +<<< @/_src/PropertyPage/Controls/Bitmap.cs#Control +<<< @/_src/PropertyPage/Controls/Bitmap.cs#Control2 ## Bitmap size Default size of the bitmap is 18x18 pixels, however this could be overridden using the **BitmapOptionsAttribute** by providing width and height values in the constructor parameters: -{% code-snippet { file-name: ~PropertyPage\Controls\Bitmap.*, regions: [Size] } %} +<<< @/_src/PropertyPage/Controls/Bitmap.cs#Size > Due to SOLIDWORKS API limitation bitmap cannot be changed as [dynamic value](/property-pages/controls/dynamic-values/) after property manager page is displayed. Assign the image in the data model class constructor or as a default value of the property. diff --git a/docs/property-pages/controls/button/index.md b/docs/property-pages/controls/button/index.md index a464f715..9a3674cd 100644 --- a/docs/property-pages/controls/button/index.md +++ b/docs/property-pages/controls/button/index.md @@ -11,6 +11,6 @@ In order to create a button in the property manager page, it is required to decl The pointer to void function assigned to this property is a handler of the button: -{% code-snippet { file-name: ~PropertyPage\Controls\Button.* } %} +<<< @/_src/PropertyPage/Controls/Button.cs -Visit [bitmap button](../bitmap-button#button) for more information of how to create button with image. +Visit [bitmap button](../bitmap-button/index#button) for more information of how to create button with image. diff --git a/docs/property-pages/controls/check-box/index.md b/docs/property-pages/controls/check-box/index.md index d789f6bd..da689185 100644 --- a/docs/property-pages/controls/check-box/index.md +++ b/docs/property-pages/controls/check-box/index.md @@ -9,6 +9,6 @@ order: 11 CheckBox control (toggle) will be automatically created for all properties of **bool** type. -{% code-snippet { file-name: ~PropertyPage\Controls\CheckBox.* } %} +<<< @/_src/PropertyPage/Controls/CheckBox.cs -Visit [toggle bitmap button](../bitmap-button#toggle) for more information of how to create toggle button with image. +Visit [toggle bitmap button](../bitmap-button/index#toggle) for more information of how to create toggle button with image. diff --git a/docs/property-pages/controls/combo-box/index.md b/docs/property-pages/controls/combo-box/index.md index bc84f7d5..928f3ab0 100644 --- a/docs/property-pages/controls/combo-box/index.md +++ b/docs/property-pages/controls/combo-box/index.md @@ -9,7 +9,7 @@ order: 7 Combo box control will be automatically generated for all the properties of enumerator types. All values of enumerators will be considered as the items in the combo box: -{% code-snippet { file-name: ~PropertyPage\Controls\ComboBox.*, regions: [Simple] } %} +<<< @/_src/PropertyPage/Controls/ComboBox.cs#Simple Additional options and style for combo box control can be specified via **ComboBoxOptionsAttribute** @@ -17,7 +17,7 @@ Additional options and style for combo box control can be specified via **ComboB **TitleAttribute** attribute can be used to specify user friendly title for the items to be shown in the combo box -{% code-snippet { file-name: ~PropertyPage\Controls\ComboBox.*, regions: [ItemsText] } %} +<<< @/_src/PropertyPage/Controls/ComboBox.cs#ItemsText ## Dynamic Items Provider @@ -27,12 +27,12 @@ Framework will call the provider to resolve the items. Make sure that the type o When returning custom class from **ProvideItems** override **ToString** method to provide display name for the item in the combo box. -{% code-snippet { file-name: ~PropertyPage\Controls\ComboBox.*, regions: [CustomItemsProvider] } %} +<<< @/_src/PropertyPage/Controls/ComboBox.cs#CustomItemsProvider In order to assign the control dependencies (i.e. controls which affect the list of values in the combobox), provide the corresponding control tags in the second parameter of **CustomItemsAttribute**. IN this case the **ProvideItems** method will be called when values of parent control change. In this case controls wil lbe passed as **dependencies** parameter of **ProvideItems**. > Note. **dependencies** parameter of **ProvideItems** method will contain null items for the first rendering of the control before the binding is done. This method will be called again once binding is resolved with correct controls. -{% code-snippet { file-name: ~PropertyPage\Controls\ComboBox.*, regions: [CustomItemsProviderDependency] } %} +<<< @/_src/PropertyPage/Controls/ComboBox.cs#CustomItemsProviderDependency Refer [Weldment Profiles Selector](https://github.com/xarial/xcad-examples/tree/master/WeldmentProfilesSelector) example which demonstrates how to create dynamic cascading combo boxes. \ No newline at end of file diff --git a/docs/property-pages/controls/common/index.md b/docs/property-pages/controls/common/index.md index 7b9e1cd8..3f61260a 100644 --- a/docs/property-pages/controls/common/index.md +++ b/docs/property-pages/controls/common/index.md @@ -19,7 +19,7 @@ Common styles can be customized via **ControlOptionsAttribute** by decorating th This attribute allows to define the alignment, position, size as well as background and foreground colours: -{% code-snippet { file-name: ~PropertyPage\Controls\CommonOptions.*, regions: [Style] } %} +<<< @/_src/PropertyPage/Controls/CommonOptions.cs#Style ![Custom background and foreground colours applied to textbox](textbox-foreground-background.png) @@ -35,7 +35,7 @@ Tooltip for controls can be set by applying the [DescriptionAttribute](https://d Standard icon defined in **BitmapLabelType_e** enumeration can be set to control via **StandardControlIconAttribute** attribute. -{% code-snippet { file-name: ~PropertyPage\Controls\CommonOptions.*, regions: [StandardIcon] } %} +<<< @/_src/PropertyPage/Controls/CommonOptions.cs#StandardIcon Use the below map of all available standard icons: @@ -71,4 +71,4 @@ Use the below map of all available standard icons: Custom icon can be set via overloaded constructor of **IconAttribute** attribute -{% code-snippet { file-name: ~PropertyPage\Controls\CommonOptions.*, regions: [CustomIcon] } %} \ No newline at end of file +<<< @/_src/PropertyPage/Controls/CommonOptions.cs#CustomIcon \ No newline at end of file diff --git a/docs/property-pages/controls/custom/index.md b/docs/property-pages/controls/custom/index.md index 209f4b2f..3f272fd7 100644 --- a/docs/property-pages/controls/custom/index.md +++ b/docs/property-pages/controls/custom/index.md @@ -15,11 +15,11 @@ Both [Windows Forms controls](https://docs.microsoft.com/en-us/dotnet/api/system Create a property of any type which will represent data model bound to the control. -{% code-snippet { file-name: ~PropertyPage\Controls\CustomControl.*, regions: [WinForms] } %} +<<< @/_src/PropertyPage/Controls/CustomControl.cs#WinForms In order to properly associate data model with property manager page, it is required to implement the **IXCustomControl** interface in the windows forms control. -{% code-snippet { file-name: ~PropertyPage\Controls\CustomWinFormsControl.* } %} +<<< @/_src/PropertyPage/Controls/CustomWinFormsControl.cs Framework will bind **DataContext** property to the corresponding property in the data model of property manager page. @@ -29,8 +29,8 @@ Framework will bind **DataContext** property to the corresponding property in th Create a property of any type which will represent data model bound to the control. -{% code-snippet { file-name: ~PropertyPage\Controls\CustomControl.*, regions: [Wpf] } %} +<<< @/_src/PropertyPage/Controls/CustomControl.cs#Wpf The value of this property will be automatically assigned to the [FrameworkElemet::DataContext](https://docs.microsoft.com/en-us/dotnet/api/system.windows.frameworkelement.datacontext) property of the control. So it is possible to use WPF binding. -{% code-snippet { file-name: ~PropertyPage\Controls\CustomWpfControl.xaml } %} \ No newline at end of file +<<< @/_src/PropertyPage/Controls/CustomWpfControl.xaml{xml} \ No newline at end of file diff --git a/docs/property-pages/controls/dependencies/index.md b/docs/property-pages/controls/dependencies/index.md index 77f84f44..3c3820e9 100644 --- a/docs/property-pages/controls/dependencies/index.md +++ b/docs/property-pages/controls/dependencies/index.md @@ -20,7 +20,7 @@ Below is a code example demonstrating how to disable/enable selection box contro ![Changing the control enable state based on the check box](enable-control.gif) -{% code-snippet { file-name: ~PropertyPage\Controls\TagsAndDependencies.*, regions: [Enable] } %} +<<< @/_src/PropertyPage/Controls/TagsAndDependencies.cs#Enable ## Cascading Lists @@ -30,4 +30,4 @@ Below code example demonstrates how to implement cascading list. Each value in the dropdown (defined via Enum) has its own nested list of options (also defined by another Enums). Once the value of the drp-down changed the visibility of option groups is changed as well. -{% code-snippet { file-name: ~PropertyPage\Controls\TagsAndDependencies.*, regions: [CascadingVisibility] } %} +<<< @/_src/PropertyPage/Controls/TagsAndDependencies.cs#CascadingVisibility diff --git a/docs/property-pages/controls/dynamic-values/index.md b/docs/property-pages/controls/dynamic-values/index.md index 8397dc14..ce618167 100644 --- a/docs/property-pages/controls/dynamic-values/index.md +++ b/docs/property-pages/controls/dynamic-values/index.md @@ -9,6 +9,6 @@ order: 16 In order to update control values for the properties changed from the code behind dynamically (e.g. on button click or when one property is changing another property), it is required to implement the [INotifyPropertyChanged](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifypropertychanged?view=netframework-4.8) in the data model. Raise the [PropertyChanged](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifypropertychanged.propertychanged?view=netframework-4.8) event for every property which needs to be watched to notify the environment that value has changed and control needs to be updated. -{% code-snippet { file-name: ~PropertyPage\Controls\DynamicValues.* } %} +<<< @/_src/PropertyPage/Controls/DynamicValues.cs Refer [PMPageToggleBitmapButtons](https://github.com/xarial/xcad-examples/PMPageToggleBitmapButtons) example which demonstrates how to implement toggle bitmap buttons in the Property Manager Page diff --git a/docs/property-pages/controls/group/index.md b/docs/property-pages/controls/group/index.md index 36c203ec..004e6935 100644 --- a/docs/property-pages/controls/group/index.md +++ b/docs/property-pages/controls/group/index.md @@ -9,6 +9,6 @@ order: 3 Group box will be automatically created for all complex types in the data model -{% code-snippet { file-name: ~PropertyPage\Controls\Group.* } %} +<<< @/_src/PropertyPage/Controls/Group.cs > SOLIDWORKS doesn't support groups nested into other groups, so all the nested complex types will be added as the groups to the main property manager page. diff --git a/docs/property-pages/controls/number-box/index.md b/docs/property-pages/controls/number-box/index.md index ec1d9ca3..ef3ae191 100644 --- a/docs/property-pages/controls/number-box/index.md +++ b/docs/property-pages/controls/number-box/index.md @@ -9,10 +9,10 @@ order: 6 Number box will be automatically created for the properties of *int* and *double* types. -{% code-snippet { file-name: ~PropertyPage\Controls\NumberBox.*, regions: [Simple] } %} +<<< @/_src/PropertyPage/Controls/NumberBox.cs#Simple Style of the number box can be customized via the **NumberBoxOptionsAttribute** ![Number boxes with additional styles allowing specifying the units and displaying thumbwheel for changing the value](number-box-units-wheel.png) -{% code-snippet { file-name: ~PropertyPage\Controls\NumberBox.*, regions: [Style] } %} +<<< @/_src/PropertyPage/Controls/NumberBox.cs#Style diff --git a/docs/property-pages/controls/option-box/index.md b/docs/property-pages/controls/option-box/index.md index 32db434f..62430344 100644 --- a/docs/property-pages/controls/option-box/index.md +++ b/docs/property-pages/controls/option-box/index.md @@ -10,4 +10,4 @@ order: 9 Options group can be defined by decorating the property of type Enum with **OptionBoxAttribute**. -{% code-snippet { file-name: ~PropertyPage\Controls\OptionBox.* } %} +<<< @/_src/PropertyPage/Controls/OptionBox.cs diff --git a/docs/property-pages/controls/page/index.md b/docs/property-pages/controls/page/index.md index 2cf733fd..8a3c7f24 100644 --- a/docs/property-pages/controls/page/index.md +++ b/docs/property-pages/controls/page/index.md @@ -18,7 +18,7 @@ Property manager page style can be customized by applying the **PageOptionsAttri ![Property page with OK and Cancel button options](pmpage-options.png) -{% code-snippet { file-name: ~PropertyPage\Controls\Page.*, regions: [Options] } %} +<<< @/_src/PropertyPage/Controls/Page.cs#Options Attributes allow to customize the buttons and behaviour of the page @@ -32,7 +32,7 @@ Icon can be set via overloaded constructor of **PageOptionsAttribute** Custom user message to provide additional information can be set via **MessageAttribute** -{% code-snippet { file-name: ~PropertyPage\Controls\Page.*, regions: [Attribution] } %} +<<< @/_src/PropertyPage/Controls/Page.cs#Attribution ## Help Links @@ -40,4 +40,4 @@ Custom user message to provide additional information can be set via **MessageAt **HelpAttribute** allows providing links to help resources for your add-in. Framework will automatically open the specified url when user clicks corresponding help buttons in the property manager page: -{% code-snippet { file-name: ~PropertyPage\Controls\Page.*, regions: [HelpLinks] } %} +<<< @/_src/PropertyPage/Controls/Page.cs#HelpLinks diff --git a/docs/property-pages/controls/selection-box/index.md b/docs/property-pages/controls/selection-box/index.md index 36e4b9af..c735e309 100644 --- a/docs/property-pages/controls/selection-box/index.md +++ b/docs/property-pages/controls/selection-box/index.md @@ -9,7 +9,7 @@ order: 8 Selection box will be generated for the public properties of **IXSelObject** -{% code-snippet { file-name: ~PropertyPage\Controls\SelectionBox.*, regions: [Single] } %} +<<< @/_src/PropertyPage/Controls/SelectionBox.cs#Single ## Multiple Selection @@ -17,7 +17,7 @@ This attribute is also applicable to lists. In this case multiple selections wil ![Multiple entities selected in the selection box](selection-box-multiple.png) -{% code-snippet { file-name: ~PropertyPage\Controls\SelectionBox.*, regions: [List] } %} +<<< @/_src/PropertyPage/Controls/SelectionBox.cs#List Additional selection box options can be specified via **SelectionBoxOptionsAttribute** @@ -29,4 +29,4 @@ Selection marks are used to differentiate the selection in the selection boxes. To provide custom filtering logic for selection box it is required to implement the filter by inheriting the **ISelectionCustomFilter** interface and assign the filter via overloaded constructor of **SelectionBoxAttribute** attribute -{% code-snippet { file-name: ~PropertyPage\Controls\SelectionBox.*, regions: [CustomFilter] } %} \ No newline at end of file +<<< @/_src/PropertyPage/Controls/SelectionBox.cs#CustomFilter \ No newline at end of file diff --git a/docs/property-pages/controls/tab/index.md b/docs/property-pages/controls/tab/index.md index 78edf0aa..3e1fd111 100644 --- a/docs/property-pages/controls/tab/index.md +++ b/docs/property-pages/controls/tab/index.md @@ -9,10 +9,11 @@ order: 3 Tab containers are created for the complex types decorated with **TabAttribute**. -{% code-snippet { file-name: ~PropertyPage\Controls\Tab.*, excl-regions: [WithGroup] } %} +<<< @/_src/PropertyPage/Controls/Tab.cs#WithGroup +<<< @/_src/PropertyPage/Controls/Tab.cs#WithGroup3 ## Tab with nested groups Controls can be added directly to tabs or can reside in the nested groups: -{% code-snippet { file-name: ~PropertyPage\Controls\Tab.*, regions: [WithGroup] } %} +<<< @/_src/PropertyPage/Controls/Tab.cs#WithGroup2 diff --git a/docs/property-pages/controls/text-box/index.md b/docs/property-pages/controls/text-box/index.md index 39018578..6d58f259 100644 --- a/docs/property-pages/controls/text-box/index.md +++ b/docs/property-pages/controls/text-box/index.md @@ -9,6 +9,6 @@ order: 4 Text box control will be automatically generated for all properties of type *string*. -{% code-snippet { file-name: ~PropertyPage\Controls\TextBox.* } %} +<<< @/_src/PropertyPage/Controls/TextBox.cs Additional options can be specified via **TextBoxOptionsAttribute** diff --git a/docs/property-pages/events/closing/index.md b/docs/property-pages/events/closing/index.md index e9ff34f9..f2a1610a 100644 --- a/docs/property-pages/events/closing/index.md +++ b/docs/property-pages/events/closing/index.md @@ -10,7 +10,8 @@ order: 1 Framework passes the reason of close and **closing argument** which allows to cancel property manager page closing and display error to the user as a tooltip. -{% code-snippet { file-name: ~PropertyPage\Events.*, regions: [Closing] } %} +<<< @/_src/PropertyPage/Events.cs#Closing +<<< @/_src/PropertyPage/Events.cs#Closing2 This event is raised when Property Manager Page dialog is still visible. There should be no rebuild operations performed within this handler, it includes the direct rebuilds but also any new features or geometry creation or modification (with an exception of temp bodies). Note that some operations such as saving may also be unsupported. In general if certain operation cannot be performed from the user interface while property page is opened it shouldn't be called from the closing event via API as well. Otherwise this could cause instability including crashes. Use [Post closing event](#post-closing-event) event to perform any rebuild operations. @@ -22,4 +23,5 @@ In some cases it is required to perform this operation while property manager pa Use this handler to perform the required operations. -{% code-snippet { file-name: ~PropertyPage\Events.*, regions: [Closed] } %} \ No newline at end of file +<<< @/_src/PropertyPage/Events.cs#Closed +<<< @/_src/PropertyPage/Events.cs#Closed2 diff --git a/docs/property-pages/events/data-changed/index.md b/docs/property-pages/events/data-changed/index.md index b1566b16..9128a1db 100644 --- a/docs/property-pages/events/data-changed/index.md +++ b/docs/property-pages/events/data-changed/index.md @@ -8,6 +8,7 @@ xCAD framework provides event handlers for the data changes in the controls. Use ## Post data changed event -**Xarial.XCad.SolidWorks.UI.PropertyPage.ISwPropertyManagerPage.DataChanged** event is raised after the user changed the value in the control which has updated the data model. Refer the bound data model for new values. +**Xarial.XCad.SolidWorks.UI.PropertyPage.ISwPropertyManagerPage``.DataChanged** event is raised after the user changed the value in the control which has updated the data model. Refer the bound data model for new values. -{% code-snippet { file-name: ~PropertyPage\Events.*, regions: [DataChanged] } %} \ No newline at end of file +<<< @/_src/PropertyPage/Events.cs#DataChanged +<<< @/_src/PropertyPage/Events.cs#DataChanged2 diff --git a/docs/property-pages/events/index.md b/docs/property-pages/events/index.md index 22158c3f..c1ccd886 100644 --- a/docs/property-pages/events/index.md +++ b/docs/property-pages/events/index.md @@ -4,4 +4,4 @@ caption: Events description: Overview of property manager page events handling order: 3 --- -**Xarial.XCad.SolidWorks.UI.PropertyPage.ISwPropertyManagerPage** interface is responsible for providing the events raised by property manager page to the client \ No newline at end of file +**Xarial.XCad.SolidWorks.UI.PropertyPage.ISwPropertyManagerPage``** interface is responsible for providing the events raised by property manager page to the client \ No newline at end of file diff --git a/docs/property-pages/index.md b/docs/property-pages/index.md index 9208d84c..02e3b62d 100644 --- a/docs/property-pages/index.md +++ b/docs/property-pages/index.md @@ -21,7 +21,7 @@ Explore [Property Manager Page complete example](https://github.com/xarial/xcad- Start by defining the data model required to be filled by property manager page. -{% code-snippet { file-name: ~PropertyPage\Overview.*, regions: [Simple] } %} +<<< @/_src/PropertyPage/Overview.cs#Simple Use properties with public getters and setters @@ -31,7 +31,7 @@ Create handler for property manager page by inheriting the public class from **X This class will be instantiated by the framework and will allow handling the property manager specific events from the add-in. -{% code-snippet { file-name: ~PropertyPage\Overview.*, regions: [PMPageHandler] } %} +<<< @/_src/PropertyPage/Overview.cs#PMPageHandler > Class must be com visible and have public parameterless constructor. @@ -41,7 +41,7 @@ Data model can directly inherit the handler. If it is required to exclude the members in the data model from control generation such members should be decorated with **Xarial.XCad.UI.PropertyPage.Attributes.ExcludeControlAttribute** -{% code-snippet { file-name: ~PropertyPage\Overview.*, regions: [Ignore] } %} +<<< @/_src/PropertyPage/Overview.cs#Ignore ## Creating instance @@ -49,6 +49,6 @@ Create instance of the property manager page by passing the type of the handler > Data model can contain predefined (default) values. Framework will automatically use this values in the corresponding controls. -{% code-snippet { file-name: ~PropertyPage\Overview.*, regions: [CreateInstance] } %} +<<< @/_src/PropertyPage/Overview.cs#CreateInstance > Store instance of the data model and the property page in the class variables. This will allow to reuse the data model in the different page instances. \ No newline at end of file diff --git a/docs/favicon.ico b/docs/public/favicon.ico similarity index 100% rename from docs/favicon.ico rename to docs/public/favicon.ico diff --git a/docs/public/logo.svg b/docs/public/logo.svg new file mode 100644 index 00000000..c165909a --- /dev/null +++ b/docs/public/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/stand-alone/index.md b/docs/stand-alone/index.md index 69f0c42f..6f74a029 100644 --- a/docs/stand-alone/index.md +++ b/docs/stand-alone/index.md @@ -6,7 +6,7 @@ order: 3 --- xCAD framework can be used to create out-of-process (stand-alone) applications, such as Console, Windows Forms, WPF etc. in .NET Framework or .NET Core. -{% youtube id: 0ubF-INE7bg %} + ## SOLIDWORKS @@ -18,7 +18,7 @@ Call **SwApplicationFactory.Create** to connect to SOLIDWORKS instance in one of In order to connect to existing (running process of SOLIDWORKS) use **SwApplicationFactory.FromProcess** method and pass the pointer to [Process](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netcore-3.1) -{% code-snippet { file-name: ~StandAlone.* } %} +<<< @/_src/StandAlone.cs Refer [Console Model Generator](https://github.com/xarial/xcad-examples/tree/master/ModelGeneratorConsole) example which demonstrates how to access xCAD.API from .NET Core console. diff --git a/docs/target-versions/index.md b/docs/target-versions/index.md index 40c7d370..eca34e61 100644 --- a/docs/target-versions/index.md +++ b/docs/target-versions/index.md @@ -19,7 +19,7 @@ Use the **ISwApplication::IsVersionNewerOrEqual** extension method provided by f That means if we want to extract custom properties in our add-in and target all SOLIDWORKS versions starting from the SOLIDWORKS 2012, we need to write the code below: -{% code-snippet { file-name: ~MultiTargetAddIn.*, regions: [Major] } %} +<<< @/_src/MultiTargetAddIn.cs#Major > Note. Although it is possible to simply use the oldest version of the method which corresponds to the minimum required SOLIDWORKS version as SOLIDWORKS supports backward compatibility, it is not recommended practice as newer version of methods might include critical bug fixes. @@ -29,4 +29,4 @@ For example [IDimensionTolerance::GetMinValue2](http://help.solidworks.com/2019/ > Note, that we cannot simply check if current SOLIDWORKS version is 2015 as the method only works in SP3 and we need to explicitly specify the service pack -{% code-snippet { file-name: ~MultiTargetAddIn.*, regions: [Minor] } %} +<<< @/_src/MultiTargetAddIn.cs#Minor diff --git a/docs/third-party-data-storage/index.md b/docs/third-party-data-storage/index.md index 92bd6338..a70f2891 100644 --- a/docs/third-party-data-storage/index.md +++ b/docs/third-party-data-storage/index.md @@ -4,7 +4,7 @@ caption: 3rd Party Data Storage description: Storing 3rd party data (structures and storages) in SOLIDWORKS model stream using xCAD framework order: 5 --- -xCAD framework provides functionality for handling the data (both serializing and deserializing) in SOLIDWORKS 3rd party [storage (stream)](stream) and [storage store](storage). +xCAD framework provides functionality for handling the data (both serializing and deserializing) in SOLIDWORKS 3rd party [storage (stream)](./stream/index) and [storage store](./storage/index). Refer [Data saving in the 3rd party storage using SOLIDWORKS API](https://www.codestack.net/solidworks-api/data-storage/third-party/) for detailed overview of 3rd party storage and store. diff --git a/docs/third-party-data-storage/storage/index.md b/docs/third-party-data-storage/storage/index.md index 7a7be1bb..ed8d4a09 100644 --- a/docs/third-party-data-storage/storage/index.md +++ b/docs/third-party-data-storage/storage/index.md @@ -12,18 +12,18 @@ Use this approach when it is required to store multiple data structures which ne To simplify the handling of the storage lifecycle, use the Documents Manager API from the xCAD framework: -{% code-snippet { file-name: ~ThirdPartyData.*, regions: [StorageHandler] } %} +<<< @/_src/ThirdPartyData.cs#StorageHandler ## Reading data **IXDocument::OpenStorage** method throws an exception when storage does not exist. Use **IXDocument::TryOpenStorage** extension method which returns null for the storage which not exists on reading. -{% code-snippet { file-name: ~ThirdPartyData.*, regions: [StorageLoad] } %} +<<< @/_src/ThirdPartyData.cs#StorageLoad ## Writing data **IXDocument::OpenStorage** method will always return the pointer to the storage (stream is automatically created if it doesn't exist). -{% code-snippet { file-name: ~ThirdPartyData.*, regions: [StorageSave] } %} +<<< @/_src/ThirdPartyData.cs#StorageSave Explore the methods of **IStorage** for information of how to create sub streams or sub storages and enumerate the existing elements. \ No newline at end of file diff --git a/docs/third-party-data-storage/stream/index.md b/docs/third-party-data-storage/stream/index.md index 205b119e..d8e795bf 100644 --- a/docs/third-party-data-storage/stream/index.md +++ b/docs/third-party-data-storage/stream/index.md @@ -12,16 +12,16 @@ Use this approach when it is required to store a single structure at the model. To simplify the handling of the stream lifecycle, use the Documents Manager API from the SwEx.AddIn framework: -{% code-snippet { file-name: ~ThirdPartyData.*, regions: [StreamHandler] } %} +<<< @/_src/ThirdPartyData.cs#StreamHandler ## Reading data **IXDocument::OpenStream** method throws an exception when storage does not exist. Use **IXDocument::TryOpenStream** extension method which returns null for the storage which not exists on reading. -{% code-snippet { file-name: ~ThirdPartyData.*, regions: [StreamLoad] } %} +<<< @/_src/ThirdPartyData.cs#StreamLoad ## Writing data **IXDocument::OpenStream** will always return the pointer to the stream (stream is automatically created if it doesn't exist). -{% code-snippet { file-name: ~ThirdPartyData.*, regions: [StreamSave] } %} +<<< @/_src/ThirdPartyData.cs#StreamSave diff --git a/docs/troubleshooting/index.md b/docs/troubleshooting/index.md index 63738c8b..803a4d2d 100644 --- a/docs/troubleshooting/index.md +++ b/docs/troubleshooting/index.md @@ -44,7 +44,7 @@ Use *eraser* button to clean messages (marked in blue) Custom messages and exceptions can be logged from xCAD module. Log can be accessed from **IXExtension::Logger** property allowing to log custom messages and exception from the module. -{% code-snippet { file-name: ~LogAddIn.* } %} +<<< @/_src/LogAddIn.cs ## Debugging xCAD.NET Source Code @@ -70,4 +70,4 @@ Now it is possible to press F11 or click step into command to debug the source c See below the video demonstration of debugging the xCAD.NET source code using Source Link -{% youtube id: dUzFDly9okA %} \ No newline at end of file + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..0d3514d7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4931 @@ +{ + "name": "xcad", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "xcad", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "vitepress": "^1.3.4", + "vitepress-sidebar": "^1.27.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "dev": true, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", + "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.24.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", + "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", + "dev": true + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", + "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.24.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", + "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", + "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.4.1.tgz", + "integrity": "sha512-IffPD+CETiR8YJMVC1lcjnhETLpJ2L0ORZCbbRvwo/S11D1j/keR7AqKVMn4TseRJCfjmBFOcFrC+m4sXjyQWA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", + "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.4.1.tgz", + "integrity": "sha512-nCgWY2p0tZgBqJKmA5E6B3VW+7uqxi1Orf88zNWOihJBRFeOV932pzG4vGrX9l0+p0o/vJabYxuomO35rEt5dw==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.4.1", + "@algolia/requester-browser-xhr": "5.4.1", + "@algolia/requester-fetch": "5.4.1", + "@algolia/requester-node-http": "5.4.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", + "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", + "dev": true + }, + "node_modules/@algolia/logger-console": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", + "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", + "dev": true, + "dependencies": { + "@algolia/logger-common": "4.24.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", + "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.4.1.tgz", + "integrity": "sha512-J6+YfU+maR0nIbsYRHoq0UpneilX97hrZzPuuvSoBojQmPo8PeCXKGeT/F0D8uFI6G4CMTKEPGmQYrC9IpCbcQ==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.4.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", + "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", + "dev": true + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.4.1.tgz", + "integrity": "sha512-AO/C1pqqpIS8p2IsfM5x92S+UBKkcIen5dHfMEh1rnV0ArWDreeqrtxMD2A+6AjQVwYeZNy56w7o7PVIm6mc8g==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.4.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.4.1.tgz", + "integrity": "sha512-2Y3vffc91egwFxz0SjXFEH4q8nvlNJHcz+0//NaWItRU68AvD+3aI/j66STPjkLQOC0Ku6ckA9ChhbOVfrv+Uw==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.4.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", + "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz", + "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==", + "dev": true + }, + "node_modules/@docsearch/js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.1.tgz", + "integrity": "sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==", + "dev": true, + "dependencies": { + "@docsearch/react": "3.6.1", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz", + "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.1", + "algoliasearch": "^4.19.1" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.6.tgz", + "integrity": "sha512-9ztslig6/YmCg/XwESAXbKjAjOhaq6HVced9NY6qcbDz1X5g/S90Wco2vMjBNX/6V71ASkzri76JewSGPa7kiQ==", + "dev": true, + "dependencies": { + "@shikijs/engine-javascript": "1.17.6", + "@shikijs/engine-oniguruma": "1.17.6", + "@shikijs/types": "1.17.6", + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.2" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.6.tgz", + "integrity": "sha512-5EEZj8tVcierNxm4V0UMS2PVoflb0UJPalWWV8l9rRg+oOfnr5VivqBJbkyq5grltVPvByIXvVbY8GSM/356jQ==", + "dev": true, + "dependencies": { + "@shikijs/types": "1.17.6", + "oniguruma-to-js": "0.4.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.6.tgz", + "integrity": "sha512-NLfWDMXFYe0nDHFbEoyZdz89aIIey3bTfF3zLYSUNTXks5s4uinZVmuPOFf1HfTeGqIn8uErJSBc3VnpJO7Alw==", + "dev": true, + "dependencies": { + "@shikijs/types": "1.17.6", + "@shikijs/vscode-textmate": "^9.2.2" + } + }, + "node_modules/@shikijs/transformers": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.17.6.tgz", + "integrity": "sha512-k2VAfbm19bF0ofPaEdWSQJrzT47ukCQcajWQsiGMwcH9DFBFFpFHzWTuwagmxwywAClCZiBkhP6U3uxngbJgRw==", + "dev": true, + "dependencies": { + "shiki": "1.17.6" + } + }, + "node_modules/@shikijs/types": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.6.tgz", + "integrity": "sha512-ndTFa2TJi2w51ddKQDn3Jy8f6K4E5Q2x3dA3Hmsd3+YmxDQ10UWHjcw7VbVbKzv3VcUvYPLy+z9neqytSzUMUg==", + "dev": true, + "dependencies": { + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz", + "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.3.tgz", + "integrity": "sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.5.tgz", + "integrity": "sha512-ZrxcY8JMoV+kgDrmRwlDufz0SjDZ7jfoNZiIBluAACMBmgr55o/jTbxnyrccH6VSJXnFaDI4Ik1UFCiq9r8i7w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.5", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.5.tgz", + "integrity": "sha512-HSvK5q1gmBbxRse3S0Wt34RcKuOyjDJKDDMuF3i7NC+QkDFrbAqw8NnrEm/z7zFDxWZa4/5eUwsBOMQzm1RHBA==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.5.tgz", + "integrity": "sha512-MzBHDxwZhgQPHrwJ5tj92gdTYRCuPDSZr8PY3+JFv8cv2UD5/WayH5yo0kKCkKfrtJhc39jNSMityHrkMSbfnA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.5", + "@vue/compiler-dom": "3.5.5", + "@vue/compiler-ssr": "3.5.5", + "@vue/shared": "3.5.5", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.44", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.5.tgz", + "integrity": "sha512-oFasHnpv/upubjJEmqiTKQYb4qS3ziJddf4UVWuFw6ebk/QTrTUc+AUoTJdo39x9g+AOQBzhOU0ICCRuUjvkmw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.4.5.tgz", + "integrity": "sha512-PX9uXirHOY2P99kb1cP3DxWZojFW3acNMqd+l4i5nKcqY59trXTOfwDZXt2Qifu0OU1izAQb76Ur6NPVldF2KQ==", + "dev": true, + "dependencies": { + "@vue/devtools-kit": "^7.4.5" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.4.5.tgz", + "integrity": "sha512-Uuki4Z6Bc/ExvtlPkeDNGSAe4580R+HPcVABfTE9TF7BTz3Nntk7vxIRUyWblZkUEcB/x+wn2uofyt5i2LaUew==", + "dev": true, + "dependencies": { + "@vue/devtools-shared": "^7.4.5", + "birpc": "^0.2.17", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.4.5.tgz", + "integrity": "sha512-2XgUOkL/7QDmyYI9J7cm+rz/qBhcGv+W5+i1fhwdQ0HQ1RowhdK66F0QBuJSz/5k12opJY8eN6m03/XZMs7imQ==", + "dev": true, + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.5.tgz", + "integrity": "sha512-V4tTWElZQhT73PSK3Wnax9R9m4qvMX+LeKHnfylZc6SLh4Jc5/BPakp6e3zEhKWi5AN8TDzRkGnLkp8OqycYng==", + "dev": true, + "dependencies": { + "@vue/shared": "3.5.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.5.tgz", + "integrity": "sha512-2/CFaRN17jgsXy4MpigWFBCAMmLkXPb4CjaHrndglwYSra7ajvkH2cat21dscuXaH91G8fXAeg5gCyxWJ+wCRA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.5.tgz", + "integrity": "sha512-0bQGgCuL+4Muz5PsCLgF4Ata9BTdhHi5VjsxtTDyI0Wy4MgoSvBGaA6bDc7W7CGgZOyirf9LNeetMYHQ05pgpw==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.5.5", + "@vue/runtime-core": "3.5.5", + "@vue/shared": "3.5.5", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.5.tgz", + "integrity": "sha512-XjRamLIq5f47cxgy+hiX7zUIY+4RHdPDVrPvvMDAUTdW5RJWX/S0ji/rCbm3LWTT/9Co9bvQME8ZI15ahL4/Qw==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.5.5", + "@vue/shared": "3.5.5" + }, + "peerDependencies": { + "vue": "3.5.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.5.tgz", + "integrity": "sha512-0KyMXyEgnmFAs6rNUL+6eUHtUCqCaNrVd+AW3MX3LyA0Yry5SA0Km03CDKiOua1x1WWnIr+W9+S0GMFoSDWERQ==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-11.0.3.tgz", + "integrity": "sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==", + "dev": true, + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "11.0.3", + "@vueuse/shared": "11.0.3", + "vue-demi": ">=0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-11.0.3.tgz", + "integrity": "sha512-w6CDisaxs19S5Fd+NPPLFaA3GoX5gxuxrbTTBu0EYap7oH13w75L6C/+7e9mcoF9akhcR6GyYajwVMQEjdapJg==", + "dev": true, + "dependencies": { + "@vueuse/core": "11.0.3", + "@vueuse/shared": "11.0.3", + "vue-demi": ">=0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.0.3.tgz", + "integrity": "sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-11.0.3.tgz", + "integrity": "sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==", + "dev": true, + "dependencies": { + "vue-demi": ">=0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/algoliasearch": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", + "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-account": "4.24.0", + "@algolia/client-analytics": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-personalization": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/recommend": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/birpc": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", + "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/focus-trap": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.0.tgz", + "integrity": "sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==", + "dev": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.2.tgz", + "integrity": "sha512-RP5wNpj5nm1Z8cloDv4Sl4RS8jH5HYa0v93YB6Wb4poEzgMo/dAAL0KcT4974dCjcNG5pkLqTImeFHHCwwfY3g==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minisearch": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.0.tgz", + "integrity": "sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==", + "dev": true + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/oniguruma-to-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "dev": true, + "dependencies": { + "regex": "^4.3.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.24.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.0.tgz", + "integrity": "sha512-aK8Cf+jkfyuZ0ZZRG9FbYqwmEiGQ4y/PUO4SuTWoyWL244nZZh7bd5h2APd4rSNDYTBNghg1L+5iJN3Skxtbsw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/regex": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz", + "integrity": "sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==", + "dev": true + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/search-insights": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz", + "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==", + "dev": true, + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.6.tgz", + "integrity": "sha512-RejGugKpDM75vh6YtF9R771acxHRDikC/01kxsUGW+Pnaz3pTY+c8aZB5CnD7p0vuFPs1HaoAIU/4E+NCfS+mQ==", + "dev": true, + "dependencies": { + "@shikijs/core": "1.17.6", + "@shikijs/engine-javascript": "1.17.6", + "@shikijs/engine-oniguruma": "1.17.6", + "@shikijs/types": "1.17.6", + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superjson": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", + "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", + "dev": true, + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.3.4.tgz", + "integrity": "sha512-I1/F6OW1xl3kW4PaIMC6snxjWgf3qfziq2aqsDoFc/Gt41WbcRv++z8zjw8qGRIJ+I4bUW7ZcKFDHHN/jkH9DQ==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.6.1", + "@docsearch/js": "^3.6.1", + "@shikijs/core": "^1.13.0", + "@shikijs/transformers": "^1.13.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.1.2", + "@vue/devtools-api": "^7.3.8", + "@vue/shared": "^3.4.38", + "@vueuse/core": "^11.0.0", + "@vueuse/integrations": "^11.0.0", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.0", + "shiki": "^1.13.0", + "vite": "^5.4.1", + "vue": "^3.4.38" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress-sidebar": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/vitepress-sidebar/-/vitepress-sidebar-1.27.0.tgz", + "integrity": "sha512-12scZxd8XnV7KEWzj+0RnpUuKyuYC0o37sK8A8wHVy0EtqQf8L0vEkqWQ0QFLVBQwoSONdrbBjVD6/l05BgT7A==", + "dev": true, + "dependencies": { + "glob": "10.4.5", + "gray-matter": "4.0.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/vue": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.5.tgz", + "integrity": "sha512-ybC+xn67K4+df1yVeov4UjBGyVcXM0a1g7JVZr+pWVUX3xF6ntXU0wIjkTkduZBUIpxTlsftJSxz2kwhsT7dgA==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.5.5", + "@vue/compiler-sfc": "3.5.5", + "@vue/runtime-dom": "3.5.5", + "@vue/server-renderer": "3.5.5", + "@vue/shared": "3.5.5" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, + "dependencies": { + "@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dev": true, + "requires": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dev": true, + "requires": { + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dev": true, + "requires": { + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "dev": true, + "requires": {} + }, + "@algolia/cache-browser-local-storage": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", + "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", + "dev": true, + "requires": { + "@algolia/cache-common": "4.24.0" + } + }, + "@algolia/cache-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", + "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", + "dev": true + }, + "@algolia/cache-in-memory": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", + "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", + "dev": true, + "requires": { + "@algolia/cache-common": "4.24.0" + } + }, + "@algolia/client-account": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", + "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/transporter": "4.24.0" + }, + "dependencies": { + "@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + } + } + }, + "@algolia/client-analytics": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", + "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + }, + "dependencies": { + "@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + } + } + }, + "@algolia/client-common": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.4.1.tgz", + "integrity": "sha512-IffPD+CETiR8YJMVC1lcjnhETLpJ2L0ORZCbbRvwo/S11D1j/keR7AqKVMn4TseRJCfjmBFOcFrC+m4sXjyQWA==", + "dev": true, + "peer": true + }, + "@algolia/client-personalization": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", + "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + }, + "dependencies": { + "@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + } + } + }, + "@algolia/client-search": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.4.1.tgz", + "integrity": "sha512-nCgWY2p0tZgBqJKmA5E6B3VW+7uqxi1Orf88zNWOihJBRFeOV932pzG4vGrX9l0+p0o/vJabYxuomO35rEt5dw==", + "dev": true, + "peer": true, + "requires": { + "@algolia/client-common": "5.4.1", + "@algolia/requester-browser-xhr": "5.4.1", + "@algolia/requester-fetch": "5.4.1", + "@algolia/requester-node-http": "5.4.1" + } + }, + "@algolia/logger-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", + "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", + "dev": true + }, + "@algolia/logger-console": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", + "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", + "dev": true, + "requires": { + "@algolia/logger-common": "4.24.0" + } + }, + "@algolia/recommend": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", + "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", + "dev": true, + "requires": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" + }, + "dependencies": { + "@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0" + } + }, + "@algolia/requester-node-http": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0" + } + } + } + }, + "@algolia/requester-browser-xhr": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.4.1.tgz", + "integrity": "sha512-J6+YfU+maR0nIbsYRHoq0UpneilX97hrZzPuuvSoBojQmPo8PeCXKGeT/F0D8uFI6G4CMTKEPGmQYrC9IpCbcQ==", + "dev": true, + "peer": true, + "requires": { + "@algolia/client-common": "5.4.1" + } + }, + "@algolia/requester-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", + "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", + "dev": true + }, + "@algolia/requester-fetch": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.4.1.tgz", + "integrity": "sha512-AO/C1pqqpIS8p2IsfM5x92S+UBKkcIen5dHfMEh1rnV0ArWDreeqrtxMD2A+6AjQVwYeZNy56w7o7PVIm6mc8g==", + "dev": true, + "peer": true, + "requires": { + "@algolia/client-common": "5.4.1" + } + }, + "@algolia/requester-node-http": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.4.1.tgz", + "integrity": "sha512-2Y3vffc91egwFxz0SjXFEH4q8nvlNJHcz+0//NaWItRU68AvD+3aI/j66STPjkLQOC0Ku6ckA9ChhbOVfrv+Uw==", + "dev": true, + "peer": true, + "requires": { + "@algolia/client-common": "5.4.1" + } + }, + "@algolia/transporter": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", + "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", + "dev": true, + "requires": { + "@algolia/cache-common": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/requester-common": "4.24.0" + } + }, + "@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true + }, + "@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.25.6" + } + }, + "@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@docsearch/css": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz", + "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==", + "dev": true + }, + "@docsearch/js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.1.tgz", + "integrity": "sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==", + "dev": true, + "requires": { + "@docsearch/react": "3.6.1", + "preact": "^10.0.0" + } + }, + "@docsearch/react": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz", + "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==", + "dev": true, + "requires": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.1", + "algoliasearch": "^4.19.1" + } + }, + "@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "dev": true, + "optional": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "dev": true, + "optional": true + }, + "@shikijs/core": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.6.tgz", + "integrity": "sha512-9ztslig6/YmCg/XwESAXbKjAjOhaq6HVced9NY6qcbDz1X5g/S90Wco2vMjBNX/6V71ASkzri76JewSGPa7kiQ==", + "dev": true, + "requires": { + "@shikijs/engine-javascript": "1.17.6", + "@shikijs/engine-oniguruma": "1.17.6", + "@shikijs/types": "1.17.6", + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.2" + } + }, + "@shikijs/engine-javascript": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.6.tgz", + "integrity": "sha512-5EEZj8tVcierNxm4V0UMS2PVoflb0UJPalWWV8l9rRg+oOfnr5VivqBJbkyq5grltVPvByIXvVbY8GSM/356jQ==", + "dev": true, + "requires": { + "@shikijs/types": "1.17.6", + "oniguruma-to-js": "0.4.3" + } + }, + "@shikijs/engine-oniguruma": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.6.tgz", + "integrity": "sha512-NLfWDMXFYe0nDHFbEoyZdz89aIIey3bTfF3zLYSUNTXks5s4uinZVmuPOFf1HfTeGqIn8uErJSBc3VnpJO7Alw==", + "dev": true, + "requires": { + "@shikijs/types": "1.17.6", + "@shikijs/vscode-textmate": "^9.2.2" + } + }, + "@shikijs/transformers": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.17.6.tgz", + "integrity": "sha512-k2VAfbm19bF0ofPaEdWSQJrzT47ukCQcajWQsiGMwcH9DFBFFpFHzWTuwagmxwywAClCZiBkhP6U3uxngbJgRw==", + "dev": true, + "requires": { + "shiki": "1.17.6" + } + }, + "@shikijs/types": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.6.tgz", + "integrity": "sha512-ndTFa2TJi2w51ddKQDn3Jy8f6K4E5Q2x3dA3Hmsd3+YmxDQ10UWHjcw7VbVbKzv3VcUvYPLy+z9neqytSzUMUg==", + "dev": true, + "requires": { + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4" + } + }, + "@shikijs/vscode-textmate": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz", + "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==", + "dev": true + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true + }, + "@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "requires": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true + }, + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "dev": true + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "@vitejs/plugin-vue": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.3.tgz", + "integrity": "sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==", + "dev": true, + "requires": {} + }, + "@vue/compiler-core": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.5.tgz", + "integrity": "sha512-ZrxcY8JMoV+kgDrmRwlDufz0SjDZ7jfoNZiIBluAACMBmgr55o/jTbxnyrccH6VSJXnFaDI4Ik1UFCiq9r8i7w==", + "dev": true, + "requires": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.5", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "@vue/compiler-dom": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.5.tgz", + "integrity": "sha512-HSvK5q1gmBbxRse3S0Wt34RcKuOyjDJKDDMuF3i7NC+QkDFrbAqw8NnrEm/z7zFDxWZa4/5eUwsBOMQzm1RHBA==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "@vue/compiler-sfc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.5.tgz", + "integrity": "sha512-MzBHDxwZhgQPHrwJ5tj92gdTYRCuPDSZr8PY3+JFv8cv2UD5/WayH5yo0kKCkKfrtJhc39jNSMityHrkMSbfnA==", + "dev": true, + "requires": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.5", + "@vue/compiler-dom": "3.5.5", + "@vue/compiler-ssr": "3.5.5", + "@vue/shared": "3.5.5", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.44", + "source-map-js": "^1.2.0" + } + }, + "@vue/compiler-ssr": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.5.tgz", + "integrity": "sha512-oFasHnpv/upubjJEmqiTKQYb4qS3ziJddf4UVWuFw6ebk/QTrTUc+AUoTJdo39x9g+AOQBzhOU0ICCRuUjvkmw==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "@vue/devtools-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.4.5.tgz", + "integrity": "sha512-PX9uXirHOY2P99kb1cP3DxWZojFW3acNMqd+l4i5nKcqY59trXTOfwDZXt2Qifu0OU1izAQb76Ur6NPVldF2KQ==", + "dev": true, + "requires": { + "@vue/devtools-kit": "^7.4.5" + } + }, + "@vue/devtools-kit": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.4.5.tgz", + "integrity": "sha512-Uuki4Z6Bc/ExvtlPkeDNGSAe4580R+HPcVABfTE9TF7BTz3Nntk7vxIRUyWblZkUEcB/x+wn2uofyt5i2LaUew==", + "dev": true, + "requires": { + "@vue/devtools-shared": "^7.4.5", + "birpc": "^0.2.17", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "@vue/devtools-shared": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.4.5.tgz", + "integrity": "sha512-2XgUOkL/7QDmyYI9J7cm+rz/qBhcGv+W5+i1fhwdQ0HQ1RowhdK66F0QBuJSz/5k12opJY8eN6m03/XZMs7imQ==", + "dev": true, + "requires": { + "rfdc": "^1.4.1" + } + }, + "@vue/reactivity": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.5.tgz", + "integrity": "sha512-V4tTWElZQhT73PSK3Wnax9R9m4qvMX+LeKHnfylZc6SLh4Jc5/BPakp6e3zEhKWi5AN8TDzRkGnLkp8OqycYng==", + "dev": true, + "requires": { + "@vue/shared": "3.5.5" + } + }, + "@vue/runtime-core": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.5.tgz", + "integrity": "sha512-2/CFaRN17jgsXy4MpigWFBCAMmLkXPb4CjaHrndglwYSra7ajvkH2cat21dscuXaH91G8fXAeg5gCyxWJ+wCRA==", + "dev": true, + "requires": { + "@vue/reactivity": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "@vue/runtime-dom": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.5.tgz", + "integrity": "sha512-0bQGgCuL+4Muz5PsCLgF4Ata9BTdhHi5VjsxtTDyI0Wy4MgoSvBGaA6bDc7W7CGgZOyirf9LNeetMYHQ05pgpw==", + "dev": true, + "requires": { + "@vue/reactivity": "3.5.5", + "@vue/runtime-core": "3.5.5", + "@vue/shared": "3.5.5", + "csstype": "^3.1.3" + } + }, + "@vue/server-renderer": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.5.tgz", + "integrity": "sha512-XjRamLIq5f47cxgy+hiX7zUIY+4RHdPDVrPvvMDAUTdW5RJWX/S0ji/rCbm3LWTT/9Co9bvQME8ZI15ahL4/Qw==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "@vue/shared": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.5.tgz", + "integrity": "sha512-0KyMXyEgnmFAs6rNUL+6eUHtUCqCaNrVd+AW3MX3LyA0Yry5SA0Km03CDKiOua1x1WWnIr+W9+S0GMFoSDWERQ==", + "dev": true + }, + "@vueuse/core": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-11.0.3.tgz", + "integrity": "sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==", + "dev": true, + "requires": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "11.0.3", + "@vueuse/shared": "11.0.3", + "vue-demi": ">=0.14.10" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "requires": {} + } + } + }, + "@vueuse/integrations": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-11.0.3.tgz", + "integrity": "sha512-w6CDisaxs19S5Fd+NPPLFaA3GoX5gxuxrbTTBu0EYap7oH13w75L6C/+7e9mcoF9akhcR6GyYajwVMQEjdapJg==", + "dev": true, + "requires": { + "@vueuse/core": "11.0.3", + "@vueuse/shared": "11.0.3", + "vue-demi": ">=0.14.10" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.0.3.tgz", + "integrity": "sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==", + "dev": true + }, + "@vueuse/shared": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-11.0.3.tgz", + "integrity": "sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==", + "dev": true, + "requires": { + "vue-demi": ">=0.14.10" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "requires": {} + } + } + }, + "algoliasearch": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", + "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", + "dev": true, + "requires": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-account": "4.24.0", + "@algolia/client-analytics": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-personalization": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/recommend": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" + }, + "dependencies": { + "@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "requires": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0" + } + }, + "@algolia/requester-node-http": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "dev": true, + "requires": { + "@algolia/requester-common": "4.24.0" + } + } + } + }, + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "birpc": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", + "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true + }, + "character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true + }, + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true + }, + "copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "requires": { + "is-what": "^4.1.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, + "devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "requires": { + "dequal": "^2.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "focus-trap": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.0.tgz", + "integrity": "sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==", + "dev": true, + "requires": { + "tabbable": "^6.2.0" + } + }, + "foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "hast-util-to-html": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.2.tgz", + "integrity": "sha512-RP5wNpj5nm1Z8cloDv4Sl4RS8jH5HYa0v93YB6Wb4poEzgMo/dAAL0KcT4974dCjcNG5pkLqTImeFHHCwwfY3g==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + } + }, + "hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true + }, + "html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true + }, + "mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + } + }, + "micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dev": true, + "requires": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true + }, + "micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dev": true, + "requires": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true + }, + "micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "minisearch": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.0.tgz", + "integrity": "sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==", + "dev": true + }, + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true + }, + "oniguruma-to-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "dev": true, + "requires": { + "regex": "^4.3.2" + } + }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, + "picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + } + }, + "preact": { + "version": "10.24.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.0.tgz", + "integrity": "sha512-aK8Cf+jkfyuZ0ZZRG9FbYqwmEiGQ4y/PUO4SuTWoyWL244nZZh7bd5h2APd4rSNDYTBNghg1L+5iJN3Skxtbsw==", + "dev": true + }, + "property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true + }, + "regex": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz", + "integrity": "sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==", + "dev": true + }, + "rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "search-insights": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz", + "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==", + "dev": true, + "peer": true + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shiki": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.6.tgz", + "integrity": "sha512-RejGugKpDM75vh6YtF9R771acxHRDikC/01kxsUGW+Pnaz3pTY+c8aZB5CnD7p0vuFPs1HaoAIU/4E+NCfS+mQ==", + "dev": true, + "requires": { + "@shikijs/core": "1.17.6", + "@shikijs/engine-javascript": "1.17.6", + "@shikijs/engine-oniguruma": "1.17.6", + "@shikijs/types": "1.17.6", + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true + }, + "space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true + }, + "speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "requires": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true + }, + "superjson": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", + "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", + "dev": true, + "requires": { + "copy-anything": "^3.0.2" + } + }, + "tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + }, + "vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dev": true, + "requires": { + "esbuild": "^0.21.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + } + }, + "vitepress": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.3.4.tgz", + "integrity": "sha512-I1/F6OW1xl3kW4PaIMC6snxjWgf3qfziq2aqsDoFc/Gt41WbcRv++z8zjw8qGRIJ+I4bUW7ZcKFDHHN/jkH9DQ==", + "dev": true, + "requires": { + "@docsearch/css": "^3.6.1", + "@docsearch/js": "^3.6.1", + "@shikijs/core": "^1.13.0", + "@shikijs/transformers": "^1.13.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.1.2", + "@vue/devtools-api": "^7.3.8", + "@vue/shared": "^3.4.38", + "@vueuse/core": "^11.0.0", + "@vueuse/integrations": "^11.0.0", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.0", + "shiki": "^1.13.0", + "vite": "^5.4.1", + "vue": "^3.4.38" + } + }, + "vitepress-sidebar": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/vitepress-sidebar/-/vitepress-sidebar-1.27.0.tgz", + "integrity": "sha512-12scZxd8XnV7KEWzj+0RnpUuKyuYC0o37sK8A8wHVy0EtqQf8L0vEkqWQ0QFLVBQwoSONdrbBjVD6/l05BgT7A==", + "dev": true, + "requires": { + "glob": "10.4.5", + "gray-matter": "4.0.3" + } + }, + "vue": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.5.tgz", + "integrity": "sha512-ybC+xn67K4+df1yVeov4UjBGyVcXM0a1g7JVZr+pWVUX3xF6ntXU0wIjkTkduZBUIpxTlsftJSxz2kwhsT7dgA==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.5.5", + "@vue/compiler-sfc": "3.5.5", + "@vue/runtime-dom": "3.5.5", + "@vue/server-renderer": "3.5.5", + "@vue/shared": "3.5.5" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..3a8c4856 --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "xcad", + "version": "1.0.0", + "description": "docs test", + "type": "module", + "directories": { + "doc": "docs", + "test": "tests" + }, + "scripts": { + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/emersonbottero/xcad.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/emersonbottero/xcad/issues" + }, + "homepage": "https://github.com/emersonbottero/xcad#readme", + "devDependencies": { + "vitepress": "^1.3.4", + "vitepress-sidebar": "^1.27.0" + } +} diff --git a/samples/SwAddIn/Properties/Resources.Designer.cs b/samples/SwAddIn/Properties/Resources.Designer.cs index cbebf397..7c9b82e1 100644 --- a/samples/SwAddIn/Properties/Resources.Designer.cs +++ b/samples/SwAddIn/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -6,12 +6,13 @@ // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- -namespace SwAddInExample.Properties { +namespace SwAddInExample.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,78 +23,94 @@ namespace SwAddInExample.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SwAddInExample.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap horizontal { - get { + internal static System.Drawing.Bitmap horizontal + { + get + { object obj = ResourceManager.GetObject("horizontal", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized string similar to TestTab1. /// - internal static string TabName { - get { + internal static string TabName + { + get + { return ResourceManager.GetString("TabName", resourceCulture); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap vertical { - get { + internal static System.Drawing.Bitmap vertical + { + get + { object obj = ResourceManager.GetObject("vertical", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap xarial { - get { + internal static System.Drawing.Bitmap xarial + { + get + { object obj = ResourceManager.GetObject("xarial", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } diff --git a/samples/SwAddIn/SwAddInSample.cs b/samples/SwAddIn/SwAddInSample.cs index 5077b6ee..56b71615 100644 --- a/samples/SwAddIn/SwAddInSample.cs +++ b/samples/SwAddIn/SwAddInSample.cs @@ -5,66 +5,55 @@ //License: https://xcad.xarial.com/license/ //********************************************************************* +using SwAddInExample.Properties; using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing.Imaging; +using System.IO; using System.Linq; using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using SwAddInExample.Properties; -using SolidWorks.Interop.swconst; -using System.Numerics; -using SolidWorks.Interop.sldworks; -using Xarial.XCad.UI.Commands.Attributes; -using Xarial.XCad.UI.Commands.Enums; +using System.Threading; +using Xarial.XCad; +using Xarial.XCad.Base; using Xarial.XCad.Base.Attributes; -using Xarial.XCad.UI.PropertyPage; -using Xarial.XCad.UI.Commands; -using Xarial.XCad.UI.PropertyPage.Enums; +using Xarial.XCad.Documents; +using Xarial.XCad.Documents.Enums; +using Xarial.XCad.Documents.Extensions; +using Xarial.XCad.Documents.Structures; +using Xarial.XCad.Enums; using Xarial.XCad.Features; +using Xarial.XCad.Features.CustomFeature; +using Xarial.XCad.Geometry; using Xarial.XCad.Geometry.Structures; -using Xarial.XCad.Documents.Structures; -using Xarial.XCad.Documents; -using Xarial.XCad.Base; +using Xarial.XCad.Geometry.Wires; +using Xarial.XCad.Graphics; +using Xarial.XCad.Reflection; +using Xarial.XCad.Sketch; using Xarial.XCad.SolidWorks; using Xarial.XCad.SolidWorks.Annotations; using Xarial.XCad.SolidWorks.Data; -using Xarial.XCad.UI.TaskPane.Attributes; -using Xarial.XCad.SolidWorks.UI; -using Xarial.XCad.SolidWorks.UI.PropertyPage; -using Xarial.XCad.UI.Commands.Structures; -using Xarial.XCad.SolidWorks.Services; -using Xarial.XCad; using Xarial.XCad.SolidWorks.Documents; -using Xarial.XCad.UI.PropertyPage.Base; -using Xarial.XCad.UI; -using System.Collections.Generic; -using Xarial.XCad.Reflection; -using Xarial.XCad.UI.PropertyPage.Attributes; -using Xarial.XCad.Extensions; -using Xarial.XCad.Enums; -using Xarial.XCad.Documents.Enums; using Xarial.XCad.SolidWorks.Features; -using System.Diagnostics; -using Xarial.XCad.Sketch; using Xarial.XCad.SolidWorks.Graphics; -using Xarial.XCad.Graphics; -using Xarial.XCad.Geometry; -using Xarial.XCad.Geometry.Wires; -using Xarial.XToolkit.Wpf.Utils; -using System.Threading; -using Xarial.XCad.Features.CustomFeature; -using System.IO; +using Xarial.XCad.SolidWorks.Services; using Xarial.XCad.SolidWorks.Sketch; -using System.Drawing.Imaging; -using System.Windows.Forms; -using Xarial.XCad.Documents.Extensions; -using System.Windows.Markup; -using Xarial.XCad.SolidWorks.UI.Commands.Attributes; +using Xarial.XCad.SolidWorks.UI; +using Xarial.XCad.SolidWorks.UI.PropertyPage; using Xarial.XCad.Toolkit.Extensions; -using Xarial.XCad.Annotations; +using Xarial.XCad.UI; +using Xarial.XCad.UI.Commands; +using Xarial.XCad.UI.Commands.Attributes; +using Xarial.XCad.UI.Commands.Enums; +using Xarial.XCad.UI.Commands.Structures; using Xarial.XCad.UI.Enums; +using Xarial.XCad.UI.PropertyPage; +using Xarial.XCad.UI.PropertyPage.Attributes; +using Xarial.XCad.UI.PropertyPage.Base; +using Xarial.XCad.UI.PropertyPage.Enums; +using Xarial.XCad.UI.TaskPane.Attributes; using Xarial.XToolkit; -using Xarial.XCad.SolidWorks.Geometry.Primitives; +using Xarial.XToolkit.Wpf.Utils; namespace SwAddInExample { @@ -84,7 +73,7 @@ public class SwDefaultDragArrowHandler : SwDragArrowHandler } [ComVisible(true)] - public class SwDefaultPropertyManagerPageHandler : SwPropertyManagerPageHandler + public class SwDefaultPropertyManagerPageHandler : SwPropertyManagerPageHandler { } @@ -128,8 +117,8 @@ public class DictionaryControl : IControlDescriptor public object GetValue(object context) { var dict = context as Dictionary; - - if (!dict.TryGetValue(Name, out object val)) + + if (!dict.TryGetValue(Name, out object val)) { val = Activator.CreateInstance(DataType); } @@ -145,7 +134,7 @@ public void SetValue(object context, object value) } [Icon(typeof(Resources), nameof(Resources.xarial))] - public enum Commands_e + public enum Commands_e { [Icon(typeof(Resources), nameof(Resources.xarial))] OpenDoc, @@ -228,7 +217,7 @@ internal MyTooltipSpec(string title, string msg, System.Drawing.Point pt, Toolti [Title("Sample Context Menu")] //[ContextMenuCommandGroupInfo(25, typeof(IXSketchPicture))] //[SwContextMenuCommandGroupInfo(25, swSelectType_e.swSelANNOTATIONTABLES)] - public enum ContextMenuCommands_e + public enum ContextMenuCommands_e { Command1, @@ -237,7 +226,7 @@ public enum ContextMenuCommands_e [Icon(typeof(Resources), nameof(Resources.xarial))] [Title("Sample Task Pane")] - public enum TaskPaneButtons_e + public enum TaskPaneButtons_e { [Icon(typeof(Resources), nameof(Resources.xarial))] Button1, @@ -250,7 +239,7 @@ public enum TaskPaneButtons_e } [Title(typeof(Resources), nameof(Resources.TabName))] - public enum Commands3_3 + public enum Commands3_3 { [CommandItemInfo(true, true, WorkspaceTypes_e.AllDocuments, true)] Command1 @@ -270,7 +259,7 @@ public enum Commands3_3 private IXCalloutBase m_Callout; [CommandGroupInfo(1)] - public enum Commands1_e + public enum Commands1_e { Cmd1, //Cmd2, @@ -288,7 +277,7 @@ public enum Commands2_e } [Title("Main Menu")] - public enum MainCommands1_e + public enum MainCommands1_e { } @@ -302,7 +291,7 @@ public enum Commands3_e private readonly Xarial.XToolkit.Helpers.AssemblyResolver m_AssmResolver; - public SwAddInSample() + public SwAddInSample() { m_AssmResolver = new Xarial.XToolkit.Helpers.AssemblyResolver(AppDomain.CurrentDomain, "xCAD.NET"); m_AssmResolver.RegisterAssemblyReferenceResolver( @@ -374,7 +363,7 @@ public override void OnConnect() m_ComboBoxPage = this.CreatePage(); m_ComboBoxPage.Closed += OnComboBoxPageClosed; } - catch + catch { Debug.Assert(false); } @@ -438,7 +427,7 @@ private void OnContextMenuCommandClick(ContextMenuCommands_e spec) private void OnClosed(PageCloseReasons_e reason) { - if (reason == PageCloseReasons_e.Okay) + if (reason == PageCloseReasons_e.Okay) { var feat = Application.Documents.Active.Features.CreateCustomFeature(); //var feat = Application.Documents.Active.Features.CreateCustomFeature(m_MacroFeatPmpData); @@ -450,14 +439,14 @@ private void OnClosed(PageCloseReasons_e reason) private ISwDimension m_WatchedDim; private ISwCustomProperty m_WatchedPrp; - private void WatchDimension() + private void WatchDimension() { if (m_WatchedDim == null) { m_WatchedDim = Application.Documents.Active.Dimensions["D1@Sketch1"]; m_WatchedDim.ValueChanged += OnDimValueChanged; } - else + else { m_WatchedDim.ValueChanged -= OnDimValueChanged; m_WatchedDim = null; @@ -468,7 +457,7 @@ private void OnDimValueChanged(Xarial.XCad.Annotations.IXDimension dim, double n { } - private void WatchCustomProperty() + private void WatchCustomProperty() { m_WatchedPrp = Application.Documents.Active.Properties["Test"]; m_WatchedPrp.ValueChanged += OnPropertyValueChanged; @@ -498,7 +487,7 @@ private void OnCommandClick(Commands_e spec) break; case Commands_e.ShowPmPage: - if (m_Page != null) + if (m_Page != null) { m_Page.Closed -= OnPageClosed; } @@ -582,7 +571,7 @@ private void OnCommandClick(Commands_e spec) m_Window.Closed += OnWindowClosed; m_Window.Show(dock); } - else + else { var winForm = this.CreatePopupWinForm(); winForm.ShowDialog(dock); @@ -672,7 +661,7 @@ private void OnCommandClick(Commands_e spec) m_Callout.Foreground = StandardSelectionColor_e.Primary; m_Callout.Commit(); } - else + else { m_Callout.Visible = false; m_Callout.Dispose(); @@ -690,7 +679,7 @@ private void OnCommandClick(Commands_e spec) m_Triad.Transform = TransformMatrix.Compose(x, y, z, new Xarial.XCad.Geometry.Structures.Point(0.1, 0.1, 0.1)); m_Triad.Commit(); } - else + else { m_Triad.Visible = false; m_Triad.Dispose(); @@ -747,7 +736,7 @@ private void OnCommandClick(Commands_e spec) break; } } - catch + catch { Debug.Assert(false); } @@ -755,7 +744,7 @@ private void OnCommandClick(Commands_e spec) private void OnPageKeystrokeHook(IControl ctrl, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { - + } private void ReplaceCompDoc() @@ -835,7 +824,7 @@ private void InsertPicture() else { var bmp = new System.Drawing.Bitmap(50, 50); - + using (var graph = System.Drawing.Graphics.FromImage(bmp)) { graph.FillRectangle(System.Drawing.Brushes.Red, new System.Drawing.RectangleF(0f, 0f, 50f, 50f)); @@ -845,7 +834,7 @@ private void InsertPicture() { pict = ((IXDrawing)doc).Sheets.Last().Sketch.Entities.PreCreate(); } - else + else { pict = doc.Features.PreCreate(); } @@ -857,11 +846,11 @@ private void InsertPicture() var sketch = pict.OwnerSketch; } } - else + else { if (serialize) { - using (var stream = new MemoryStream()) + using (var stream = new MemoryStream()) { pict.Serialize(stream); @@ -870,7 +859,7 @@ private void InsertPicture() var id = Convert.ToBase64String(stream.GetBuffer()); } } - else + else { doc.Features.Remove(pict); } @@ -887,7 +876,7 @@ private void GetPreview() { SaveImage(filePath); } - else + else { var thread = new Thread(() => SaveImage(filePath)); thread.SetApartmentState(ApartmentState.STA); @@ -906,17 +895,17 @@ private void SaveImage(string filePath) private void CreateDrawing() { var drw = Application.Documents.PreCreateDrawing(); - + var sheet = drw.Sheets.First(); sheet.PaperSize = new PaperSize(0.1, 0.1); sheet.Scale = new Scale(1, 1); var view = sheet.DrawingViews.PreCreate(); - + view.Orientation = new RelativeDrawingViewOrientation( (IXPlanarFace)Application.Documents.Active.Selections.ElementAt(0), StandardViewType_e.Front, (IXPlanarFace)Application.Documents.Active.Selections.ElementAt(1), StandardViewType_e.Bottom); - + view.Bodies = new IXBody[] { ((IXPlanarFace)Application.Documents.Active.Selections.First()).Body }; sheet.DrawingViews.Add(view); @@ -931,18 +920,18 @@ private void GetBoundingBox() var bestFit = true; var bbox = ((ISwDocument3D)Application.Documents.Active).Evaluation.PreCreateBoundingBox(); bbox.Scope = Application.Documents.Active.Selections.OfType().ToArray(); - if (!bbox.Scope.Any()) + if (!bbox.Scope.Any()) { bbox.Scope = null; } bbox.BestFit = bestFit; bbox.RelativeTo = relativeTo; bbox.Commit(); - + var box = bbox.Box; - + var bboxSketch = Application.Documents.Active.Features.PreCreate3DSketch(); - + var centerPt = (IXSketchPoint)bboxSketch.Entities.PreCreatePoint(); centerPt.Coordinate = box.CenterPoint; centerPt.Color = System.Drawing.Color.Yellow; @@ -986,7 +975,7 @@ private void GetBoundingBox() lines[11].Geometry = new Line(box.GetLeftBottomBack(), box.GetRightBottomBack()); var axes = new IXSketchLine[3]; - + axes[0] = (IXSketchLine)bboxSketch.Entities.PreCreateLine(); axes[0].Geometry = new Line(box.CenterPoint, box.CenterPoint.Move(box.AxisX, 0.1)); axes[0].Color = System.Drawing.Color.Red; @@ -1022,11 +1011,11 @@ private void CreateFlatPattern() part = (IXPart)Application.Documents.Active; conf = part.Configurations.Active; } - else + else { throw new NotSupportedException(); } - + var opts = FlatPatternViewOptions_e.BendLines; var sheetMetalBody = Application.Documents.Active.Selections.OfType().FirstOrDefault(); diff --git a/samples/SwAddIn/WinForm.Designer.cs b/samples/SwAddIn/WinForm.Designer.cs index 617bf680..29da8779 100644 --- a/samples/SwAddIn/WinForm.Designer.cs +++ b/samples/SwAddIn/WinForm.Designer.cs @@ -57,7 +57,7 @@ private void InitializeComponent() } - #endregion + #endregion Windows Form Designer generated code private System.Windows.Forms.Label lblMsg; } diff --git a/samples/SwAddIn/WinUserControl.Designer.cs b/samples/SwAddIn/WinUserControl.Designer.cs index 0d36aee5..ddaa9a00 100644 --- a/samples/SwAddIn/WinUserControl.Designer.cs +++ b/samples/SwAddIn/WinUserControl.Designer.cs @@ -60,7 +60,7 @@ private void InitializeComponent() } - #endregion + #endregion Component Designer generated code private System.Windows.Forms.Label lblMessage; private System.Windows.Forms.TextBox textBox1; diff --git a/src/Base/Features/CustomFeature/IXCustomFeature.cs b/src/Base/Features/CustomFeature/IXCustomFeature.cs index 0ff2bf33..78b8faa8 100644 --- a/src/Base/Features/CustomFeature/IXCustomFeature.cs +++ b/src/Base/Features/CustomFeature/IXCustomFeature.cs @@ -11,9 +11,9 @@ namespace Xarial.XCad.Features.CustomFeature { - /// - /// Instance of the custom feature - /// + /// + /// Instance of the custom feature + /// public interface IXCustomFeature : IXFeature { /// @@ -57,7 +57,7 @@ public interface IXCustomFeature : IXCustomFeature /// /// Additional methods for /// - public static class XCustomFeatureExtension + public static class XCustomFeatureExtension { /// /// Gets the actual transformation of the entity in case of the in-context editing diff --git a/src/Base/Features/XFeatureRepositoryExtension.cs b/src/Base/Features/XFeatureRepositoryExtension.cs index 9c405cec..8e1ec562 100644 --- a/src/Base/Features/XFeatureRepositoryExtension.cs +++ b/src/Base/Features/XFeatureRepositoryExtension.cs @@ -94,7 +94,7 @@ public static void CreateCustomFeature(this IXFeatureRepos /// Type of parameters managed by this custom feature /// Instance of custom feature public static IXCustomFeature PreCreateCustomFeature(this IXFeatureRepository feats) - where TParams : class - => feats.PreCreate>(); + where TParams : class + => feats.PreCreate>(); } } \ No newline at end of file diff --git a/src/Base/Properties/Resources.Designer.cs b/src/Base/Properties/Resources.Designer.cs index 7f9f6809..932a8ff9 100644 --- a/src/Base/Properties/Resources.Designer.cs +++ b/src/Base/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -6,12 +6,13 @@ // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- -namespace Xarial.XCad.Properties { +namespace Xarial.XCad.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,49 +23,59 @@ namespace Xarial.XCad.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xarial.XCad.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized resource of type System.Byte[]. /// - internal static byte[] default_icon { - get { + internal static byte[] default_icon + { + get + { object obj = ResourceManager.GetObject("default_icon", resourceCulture); return ((byte[])(obj)); } diff --git a/src/Inventor/Properties/Resources.Designer.cs b/src/Inventor/Properties/Resources.Designer.cs index 400e8f4e..b376e6cd 100644 --- a/src/Inventor/Properties/Resources.Designer.cs +++ b/src/Inventor/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -6,12 +6,13 @@ // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- -namespace Xarial.XCad.Inventor.Properties { +namespace Xarial.XCad.Inventor.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,49 +23,59 @@ namespace Xarial.XCad.Inventor.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xarial.XCad.Inventor.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized resource of type System.Byte[]. /// - internal static byte[] XCadAppToken { - get { + internal static byte[] XCadAppToken + { + get + { object obj = ResourceManager.GetObject("XCadAppToken", resourceCulture); return ((byte[])(obj)); } diff --git a/src/SolidWorks/Data/Helpers/CustomPropertiesEventsHelper.cs b/src/SolidWorks/Data/Helpers/CustomPropertiesEventsHelper.cs index c7df84d8..771a481f 100644 --- a/src/SolidWorks/Data/Helpers/CustomPropertiesEventsHelper.cs +++ b/src/SolidWorks/Data/Helpers/CustomPropertiesEventsHelper.cs @@ -119,9 +119,9 @@ internal PropertiesSet(IModelDoc2 model) : base(StringComparer.CurrentCultureIgn } } - public event CustomPropertyModifyDelegate CustomPropertiesModified + public event CustomPropertyModifyDelegate CustomPropertiesModified { - add + add { Attach(value); } @@ -151,7 +151,7 @@ public event CustomPropertyModifyDelegate CustomPropertiesModified [return: MarshalAs(UnmanagedType.Bool)] private static extern bool IsWindow(IntPtr hWnd); - #endregion + #endregion WinAPI private readonly SldWorks m_App; private readonly ISwDocument m_Doc; @@ -291,7 +291,7 @@ private IntPtr GetSummaryInfoDialogHandle() return m_CurrentSummaryHandle; } - + protected override void SubscribeEvents() { m_App.CommandCloseNotify += OnCommandCloseNotify; diff --git a/src/SolidWorks/Documents/SwSheet.cs b/src/SolidWorks/Documents/SwSheet.cs index 6f45beb7..c9e9b9c0 100644 --- a/src/SolidWorks/Documents/SwSheet.cs +++ b/src/SolidWorks/Documents/SwSheet.cs @@ -81,13 +81,13 @@ public string Name public IXImage Preview { - get + get { if (OwnerApplication.IsInProcess()) { return PictureDispUtils.PictureDispToXImage(OwnerApplication.Sw.GetPreviewBitmap(m_Drawing.Path, Name)); } - else + else { return new XDrawingImage(m_Drawing.GetThumbnailImage()); } @@ -134,9 +134,9 @@ public Scale Scale } } - public PaperSize PaperSize + public PaperSize PaperSize { - get + get { if (IsCommitted) { @@ -149,12 +149,12 @@ public PaperSize PaperSize return new PaperSize(standardPaperSize, width, height); } - else + else { return m_Creator.CachedProperties.Get(); } } - set + set { if (IsCommitted) { @@ -168,9 +168,9 @@ public PaperSize PaperSize } } - public IXSketch2D Sketch + public IXSketch2D Sketch { - get + get { foreach (object[] sheet in m_Drawing.Drawing.GetViews() as object[]) { @@ -217,7 +217,7 @@ private ISheet CreateSheet(CancellationToken arg) throw new Exception("Failed to create new sheet"); } } - else + else { if (!m_Drawing.Drawing.NewSheet3(Name, (int)paperSize, (int)paperSize, scale.Numerator, scale.Denominator, true, "", paperWidth, paperHeight, "")) @@ -242,7 +242,7 @@ internal void SetupSheet(ISheet sheet, string name, PaperSize size, Scale scale) { sheet.SetName(name); - if (!string.Equals(sheet.GetName(), name, StringComparison.CurrentCultureIgnoreCase)) + if (!string.Equals(sheet.GetName(), name, StringComparison.CurrentCultureIgnoreCase)) { throw new Exception("Failed to change sheet name"); } @@ -323,7 +323,7 @@ public IXSheet Clone(IXDrawing targetDrawing) throw new Exception("Failed to get the cloned sheet"); } } - else + else { throw new Exception("Failed to select the sheet for cloning"); } @@ -335,7 +335,7 @@ private void PasteSheet(IXDrawing targetDrawing) var curSheetsCount = targetDrawing.Sheets.Count; - for (int i = 0; i < MAX_ATTEMPTS; i++) + for (int i = 0; i < MAX_ATTEMPTS; i++) { if (((ISwDrawing)targetDrawing).Drawing.PasteSheet( (int)swInsertOptions_e.swInsertOption_MoveToEnd, @@ -345,12 +345,12 @@ private void PasteSheet(IXDrawing targetDrawing) { return; } - else + else { throw new Exception($"Paste sheet has succeeded, but number of sheets has not changed"); } } - else + else { //NOTE: it was observed that in some cases paste command fails on the first attempt if (targetDrawing.Sheets.Count != curSheetsCount) @@ -421,11 +421,11 @@ internal SwSheetSketch(SwSheet sheet, ISketch sketch, SwDrawing drw, SwApplicati protected internal override IEditor CreateSketchEditor(ISketch sketch) => new SwSheetSketchEditor(this, m_Sheet); } - internal static class PaperSizeHelper + internal static class PaperSizeHelper { - internal static void ParsePaperSize(PaperSize paperSize, out swDwgPaperSizes_e dwgPaperSize, out swDwgTemplates_e dwgTemplate, out double dwpPaperWidth, out double dwpPaperHeight) + internal static void ParsePaperSize(PaperSize paperSize, out swDwgPaperSizes_e dwgPaperSize, out swDwgTemplates_e dwgTemplate, out double dwpPaperWidth, out double dwpPaperHeight) { - if (paperSize == null) + if (paperSize == null) { paperSize = new PaperSize(0.1, 0.1); } @@ -437,7 +437,7 @@ internal static void ParsePaperSize(PaperSize paperSize, out swDwgPaperSizes_e d } } - internal class UncommittedPreviewOnlySheet : ISwSelObject, ISwSheet + internal class UncommittedPreviewOnlySheet : ISwSelObject, ISwSheet { #region Not Supported public string Name { get => throw new UnloadedDocumentPreviewOnlySheetException(); set => throw new UnloadedDocumentPreviewOnlySheetException(); } @@ -458,12 +458,12 @@ public void Serialize(Stream stream) public IXSheet Clone(IXDrawing targetDrawing) => throw new NotSupportedException(); public IXSketch2D Sketch => throw new NotSupportedException(); public void Delete() => throw new UnloadedDocumentPreviewOnlySheetException(); - #endregion + #endregion Not Supported private readonly ISwApplication m_App; private readonly SwDrawing m_Drw; - internal UncommittedPreviewOnlySheet(SwDrawing drw, ISwApplication app) + internal UncommittedPreviewOnlySheet(SwDrawing drw, ISwApplication app) { m_Drw = drw; m_App = app; diff --git a/src/SolidWorks/Features/CustomFeature/SwMacroFeature.cs b/src/SolidWorks/Features/CustomFeature/SwMacroFeature.cs index f0146926..a6a58c5e 100644 --- a/src/SolidWorks/Features/CustomFeature/SwMacroFeature.cs +++ b/src/SolidWorks/Features/CustomFeature/SwMacroFeature.cs @@ -11,17 +11,20 @@ using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +using System.Globalization; using System.Linq; -using System.Linq.Expressions; using System.Reflection; +using System.Runtime.InteropServices; using System.Threading; using Xarial.XCad.Annotations; using Xarial.XCad.Base; using Xarial.XCad.Documents; +using Xarial.XCad.Exceptions; using Xarial.XCad.Features; using Xarial.XCad.Features.CustomFeature; using Xarial.XCad.Features.CustomFeature.Attributes; using Xarial.XCad.Features.CustomFeature.Enums; +using Xarial.XCad.Features.CustomFeature.Structures; using Xarial.XCad.Geometry; using Xarial.XCad.Geometry.Structures; using Xarial.XCad.Reflection; @@ -35,10 +38,6 @@ using Xarial.XCad.Toolkit.Exceptions; using Xarial.XCad.Utils.CustomFeature; using Xarial.XCad.Utils.Reflection; -using System.Runtime.InteropServices; -using Xarial.XCad.Exceptions; -using Xarial.XCad.Features.CustomFeature.Structures; -using System.Globalization; namespace Xarial.XCad.SolidWorks.Features.CustomFeature { @@ -124,7 +123,7 @@ public TransformMatrix TargetTransformation { var editComp = ((IXAssembly)OwnerDocument).EditingComponent; - if (editComp != null) + if (editComp != null) { return editComp.Transformation; } @@ -215,7 +214,7 @@ internal class SwMacroFeature : SwMacroFeature, ISwMacroFeature).MakeGenericType(paramType); @@ -226,7 +225,7 @@ internal static SwMacroFeature CreateSpecificInstance(IFeature feat, SwDocument var constr = macroFeatType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(IFeature), typeof(SwDocument), typeof(SwApplication), typeof(bool) }, null); - if (constr == null) + if (constr == null) { Debug.Assert(false, "Modify the parameters above"); throw new Exception("Failed to create instance of the macro feature - incorrect parameters"); @@ -281,7 +280,7 @@ public TransformMatrix GetEntityTransformation(IXSelObject entity) { return transform; } - else + else { if (entity is IXEntity) { @@ -335,26 +334,26 @@ internal TParams ReadParameters(out IXDimension[] dispDims, out string[] dispDim } } - internal void ApplyParametersCache() + internal void ApplyParametersCache() { if (!IsCommitted) { throw new Exception("Feature is not committed"); } - if(!UseCachedParameters) + if (!UseCachedParameters) { throw new Exception("Feature is not editing"); } - if (m_ParametersCache == null) + if (m_ParametersCache == null) { throw new Exception("Feature does not have parameters cache"); } WriteParameters(m_ParametersCache, out _); } - + protected override IFeature InsertFeature(CancellationToken cancellationToken) => InsertComFeatureWithParameters(); @@ -592,7 +591,7 @@ private Version GetVersion(string name) { Version dimsVersion; string versVal; - + FeatureData.GetStringByName(name, out versVal); if (!Version.TryParse(versVal, out dimsVersion)) @@ -608,7 +607,7 @@ private void SeparateParameters(CustomFeatureAttribute[] param, out string[] par if (param != null) { paramNames = new string[param.Length]; - paramTypes = new int[param.Length]; + paramTypes = new int[param.Length]; paramValues = new string[param.Length]; for (int i = 0; i < param.Length; i++) diff --git a/src/SolidWorks/Features/CustomFeature/SwMacroFeatureDefinition.cs b/src/SolidWorks/Features/CustomFeature/SwMacroFeatureDefinition.cs index d53d52de..690dd027 100644 --- a/src/SolidWorks/Features/CustomFeature/SwMacroFeatureDefinition.cs +++ b/src/SolidWorks/Features/CustomFeature/SwMacroFeatureDefinition.cs @@ -14,7 +14,6 @@ using System.ComponentModel; using System.Diagnostics; using System.Linq; -using System.Windows.Controls; using Xarial.XCad.Annotations; using Xarial.XCad.Base; using Xarial.XCad.Base.Attributes; @@ -49,11 +48,10 @@ using Xarial.XCad.Utils.CustomFeature; using Xarial.XCad.Utils.Diagnostics; using Xarial.XCad.Utils.Reflection; -using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; namespace Xarial.XCad.SolidWorks.Features.CustomFeature { - public class MacroFeatureEntityId + public class MacroFeatureEntityId { public int FirstId { get; set; } public int SecondId { get; set; } @@ -63,7 +61,7 @@ public class MacroFeatureEntityId public abstract class SwMacroFeatureDefinition : IXCustomFeatureDefinition, ISwComFeature, IXServiceConsumer { [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] - protected class MacroFeatureRegenerateData + protected class MacroFeatureRegenerateData { internal ISwApplication Application { get; set; } internal ISwDocument Document { get; set; } @@ -107,14 +105,14 @@ private static SwMacroFeature CreateMacroFeatureInstance(SwMacroFeatureDefinitio /// /// Called when macro feature is rebuild /// - public event PostRebuildMacroFeatureDelegate PostRebuild + public event PostRebuildMacroFeatureDelegate PostRebuild { - add + add { m_PostRebuild += value; m_HandlePostRebuild = m_PostRebuild != null; } - remove + remove { m_PostRebuild -= value; m_HandlePostRebuild = m_PostRebuild != null; @@ -163,7 +161,7 @@ public IXLogger Logger private readonly Func m_MacroFeatInstFact; - internal SwMacroFeatureDefinition(Func macroFeatInstFact) + internal SwMacroFeatureDefinition(Func macroFeatInstFact) { m_MacroFeatInstFact = macroFeatInstFact; @@ -243,7 +241,7 @@ public object Edit(object app, object modelDoc, object feature) var doc = (SwDocument)Application.Documents[modelDoc as IModelDoc2]; return OnEditDefinition(Application, doc, m_MacroFeatInstFact.Invoke(this, feature as IFeature, doc, Application)); } - catch(Exception ex) + catch (Exception ex) { m_Logger.Log(ex); return HandleEditException(ex); @@ -275,7 +273,7 @@ public object Regenerate(object app, object modelDoc, object feature) { contextDoc = doc; } - + var macroFeatInst = m_MacroFeatInstFact.Invoke(this, feature as IFeature, contextDoc, Application); var res = OnRebuild(Application, doc, macroFeatInst); @@ -308,7 +306,7 @@ public object Regenerate(object app, object modelDoc, object feature) { return ex.Message; } - else + else { return "Unknown regeneration error"; } @@ -323,7 +321,7 @@ public object Security(object app, object modelDoc, object feature) var doc = (SwDocument)Application.Documents[modelDoc as IModelDoc2]; return (int)OnUpdateState(Application, doc, m_MacroFeatInstFact.Invoke(this, feature as IFeature, doc, Application)); } - catch(Exception ex) + catch (Exception ex) { m_Logger.Log(ex); return HandleStateException(ex); @@ -349,7 +347,7 @@ private int OnIdleNotify() m_IsSubscribedToIdle = false; ((SldWorks)Application.Sw).OnIdleNotify -= OnIdleNotify; - foreach (var data in m_RebuildFeaturesQueue) + foreach (var data in m_RebuildFeaturesQueue) { DispatchPostBuildData(data); } @@ -384,9 +382,9 @@ bool IXCustomFeatureDefinition.OnEditDefinition(IXApplication app, IXDocument mo => OnEditDefinition((ISwApplication)app, (ISwDocument)model, (SwMacroFeature)feature); CustomFeatureRebuildResult IXCustomFeatureDefinition.OnRebuild(IXApplication app, IXDocument model, IXCustomFeature feature) - => OnRebuild((ISwApplication) app, (ISwDocument) model, (ISwMacroFeature)feature); + => OnRebuild((ISwApplication)app, (ISwDocument)model, (ISwMacroFeature)feature); - CustomFeatureState_e IXCustomFeatureDefinition.OnUpdateState(IXApplication app, IXDocument model, IXCustomFeature feature) + CustomFeatureState_e IXCustomFeatureDefinition.OnUpdateState(IXApplication app, IXDocument model, IXCustomFeature feature) => OnUpdateState((ISwApplication)app, (ISwDocument)model, (SwMacroFeature)feature); public virtual bool OnEditDefinition(ISwApplication app, ISwDocument model, ISwMacroFeature feature) @@ -418,19 +416,19 @@ private object ParseMacroFeatureResult(CustomFeatureRebuildResult res, ISldWorks switch (res) { case CustomFeatureBodyRebuildResult bodyRes: - + //TODO: get updateEntityIds from the parameters var bodiesSw = new List(); - if (bodyRes.Bodies != null) + if (bodyRes.Bodies != null) { - foreach (var body in bodyRes.Bodies) + foreach (var body in bodyRes.Bodies) { if (body is ISwBody) { bodiesSw.Add(((ISwBody)body).Body); } - else + else { throw new InvalidCastException($"Only bodies of type '{nameof(ISwBody)}' are supported"); } @@ -441,7 +439,7 @@ private object ParseMacroFeatureResult(CustomFeatureRebuildResult res, ISldWorks { return GetBodyResult(app, model, bodiesSw.ToArray(), featData, true); } - else + else { return GetStatusResult(true, ""); } @@ -496,7 +494,7 @@ private object GetBodyResult(ISldWorks app, IModelDoc2 model, IEnumerable (Face2)x, x => new MacroFeatureEntityId()); - + AssignFaceIds(app, model, faceIds); foreach (var faceId in faceIds) @@ -536,7 +534,7 @@ private object GetBodyResult(ISldWorks app, IModelDoc2 model, IEnumerable faces) + public virtual void AssignFaceIds(ISldWorks app, IModelDoc2 model, IReadOnlyDictionary faces) { int nextId = 0; @@ -649,7 +647,7 @@ public void AlignDimension(IXDimension dim, Point[] pts, Vector dir, Vector extD swDim.ReferencePoints = refPts; var swDispDim = ((SwDimension)dim).DisplayDimension; - if (swDispDim.Type2 == (int)swDimensionType_e.swAngularDimension) + if (swDispDim.Type2 == (int)swDimensionType_e.swAngularDimension) { swDispDim.IGetAnnotation().SetPosition2( (pts[1].X + pts[0].X) / 2, @@ -700,7 +698,7 @@ public override CustomFeatureRebuildResult OnRebuild(ISwApplication app, ISwDocu } /// - public virtual bool OnEditDefinition(ISwApplication app, ISwDocument doc, ISwMacroFeature feature) + public virtual bool OnEditDefinition(ISwApplication app, ISwDocument doc, ISwMacroFeature feature) { return true; } @@ -752,7 +750,7 @@ public SwMacroFeatureDefinition() { m_ParamsParser = new CustomFeatureParametersParser(); - m_Editor = new Lazy>(() => + m_Editor = new Lazy>(() => { var page = new SwPropertyManagerPage(Application, m_SvcProvider, CreatePageHandler(), CreateDynamicControls); @@ -829,8 +827,8 @@ public virtual TPage ConvertParamsToPage(IXApplication app, IXDocument doc, TPar } /// - public virtual ISwBody[] CreateGeometry(ISwApplication app, ISwDocument doc, ISwMacroFeature feat, - out AlignDimensionDelegate alignDim) + public virtual ISwBody[] CreateGeometry(ISwApplication app, ISwDocument doc, ISwMacroFeature feat, + out AlignDimensionDelegate alignDim) { alignDim = null; return CreateGeometry(app, doc, feat); @@ -862,24 +860,24 @@ public IXMemoryBody[] CreatePreviewGeometry(IXApplication app, IXDocument doc, I var data = feat.Parameters; //see the description of SwMacroFeatureEditBody for the explanation - m_ParamsParser.TraverseParametersDefinition(data, (obj, prp) => { }, (dim, obj, prp) => { }, + m_ParamsParser.TraverseParametersDefinition(data, (obj, prp) => { }, (dim, obj, prp) => { }, (obj, prp) => { var objData = prp.GetValue(obj); if (objData is IList) { - for(int i = 0; i < ((IList)objData).Count; i++) + for (int i = 0; i < ((IList)objData).Count; i++) { var body = ((IList)objData)[i]; - if (body is SwBody) + if (body is SwBody) { ((IList)objData)[i] = CreateEditBody(((SwBody)body).Body, (SwDocument)doc, (SwApplication)app, true); } } } - else if(objData is SwBody) + else if (objData is SwBody) { prp.SetValue(obj, CreateEditBody(((SwBody)objData).Body, (SwDocument)doc, (SwApplication)app, true)); } diff --git a/src/SolidWorks/SwAddInEx.cs b/src/SolidWorks/SwAddInEx.cs index 6bc9f3bb..d56f9d09 100644 --- a/src/SolidWorks/SwAddInEx.cs +++ b/src/SolidWorks/SwAddInEx.cs @@ -50,22 +50,22 @@ namespace Xarial.XCad.SolidWorks { - public interface ISwAddInEx : IXExtension + public interface ISwAddInEx : IXExtension { new ISwApplication Application { get; } new ISwCommandManager CommandManager { get; } new ISwPropertyManagerPage CreatePage(CreateDynamicControlsDelegate createDynCtrlHandler = null); - + ISwPropertyManagerPage CreatePage(CreateDynamicControlsDelegate createDynCtrlHandler = null) where THandler : SwPropertyManagerPageHandler, new(); - + ISwModelViewTab CreateDocumentTab(ISwDocument doc); - + new ISwPopupWindow CreatePopupWindow(TWindow window); - + ISwTaskPane CreateTaskPane(); - + new ISwTaskPane CreateTaskPane(TaskPaneSpec spec); ISwFeatureMgrTab CreateFeatureManagerTab(ISwDocument doc); @@ -125,7 +125,7 @@ IXPopupWindow IXExtension.CreatePopupWindow(TWindow window) => CreatePopupWindow(window); IXTaskPane IXExtension.CreateTaskPane(TaskPaneSpec spec) => CreateTaskPane(spec); - IXCustomPanel IXExtension.CreateFeatureManagerTab(IXDocument doc) + IXCustomPanel IXExtension.CreateFeatureManagerTab(IXDocument doc) => CreateFeatureManagerTab((SwDocument)doc); public ISwApplication Application => m_Application; @@ -146,9 +146,9 @@ IXCustomPanel IXExtension.CreateFeatureManagerTab(IXDocument private readonly List m_Disposables; protected IServiceProvider m_SvcProvider; - + public SwAddInEx() - { + { m_Disposables = new List(); } @@ -213,7 +213,7 @@ protected virtual void Validate() } } - protected virtual void HandleException(Exception ex) + protected virtual void HandleException(Exception ex) { var logger = Logger ?? CreateDefaultLogger(); logger.Log(ex); @@ -251,7 +251,7 @@ private IXServiceCollection GetServiceCollection(SwApplication app) return svcCollection; } - protected IXLogger CreateDefaultLogger() + protected IXLogger CreateDefaultLogger() { var addInType = this.GetType(); var title = GetRegistrationHelper(addInType).GetTitle(addInType); @@ -316,7 +316,7 @@ public int OnCommandEnable(string cmdId) { return m_CommandManager.HandleCommandEnable(cmdId); } - catch(Exception ex) + catch (Exception ex) { HandleException(ex); return (int)CommandItemEnableState_e.DeselectDisable; @@ -337,7 +337,7 @@ protected virtual void Dispose(bool disposing) { if (disposing) { - foreach (var dispCtrl in m_Disposables.ToArray()) + foreach (var dispCtrl in m_Disposables.ToArray()) { try { @@ -385,7 +385,7 @@ public ISwPropertyManagerPage CreatePage(CreateDynamicCo where THandler : SwPropertyManagerPageHandler, new() => CreatePropertyManagerPage(typeof(THandler), createDynCtrlHandler); - private ISwPropertyManagerPage CreatePropertyManagerPage(Type handlerType, + private ISwPropertyManagerPage CreatePropertyManagerPage(Type handlerType, CreateDynamicControlsDelegate createDynCtrlHandler) { var handler = m_SvcProvider.GetService().CreateHandler(Application, handlerType); @@ -401,17 +401,17 @@ public ISwModelViewTab CreateDocumentTab(ISwDocument doc) var tab = new SwModelViewTab( new ModelViewTabCreator(doc.Model.ModelViewManager, m_SvcProvider), doc.Model.ModelViewManager, (SwDocument)doc, Application, Logger); - + tab.InitControl(); - + tab.Disposed += OnItemDisposed; m_Disposables.Add(tab); return tab; } - - public ISwPopupWindow CreatePopupWindow(TWindow window) + + public ISwPopupWindow CreatePopupWindow(TWindow window) { var parent = (IntPtr)Application.Sw.IFrameObject().GetHWnd(); @@ -431,7 +431,7 @@ public ISwPopupWindow CreatePopupWindow(TWindow window) public ISwTaskPane CreateTaskPane() => CreateTaskPane(new TaskPaneSpec()); - public ISwTaskPane CreateTaskPane(TaskPaneSpec spec) + public ISwTaskPane CreateTaskPane(TaskPaneSpec spec) { if (spec == null) { @@ -458,7 +458,7 @@ public ISwFeatureMgrTab CreateFeatureManagerTab(ISwDocument return tab; } - + protected virtual void OnConfigureServices(IXServiceCollection svcCollection) { ConfigureServices?.Invoke(this, svcCollection); @@ -516,7 +516,7 @@ protected override void Validate() } } - public static class SwAddInExExtension + public static class SwAddInExExtension { public static ISwModelViewTab CreateDocumentTabWinForm(this ISwAddInEx addIn, ISwDocument doc) where TControl : Control => addIn.CreateDocumentTab(doc); diff --git a/src/SolidWorks/SwApplication.cs b/src/SolidWorks/SwApplication.cs index dfb9610a..dad24a8f 100644 --- a/src/SolidWorks/SwApplication.cs +++ b/src/SolidWorks/SwApplication.cs @@ -58,15 +58,15 @@ TObj CreateObjectFromDispatch(object disp, ISwDocument doc) where TObj : ISwObject; } - public interface ISwApplicationOptions : ISwOptions, IXApplicationOptions + public interface ISwApplicationOptions : ISwOptions, IXApplicationOptions { } - internal class SwApplicationOptions : SwOptions, ISwApplicationOptions + internal class SwApplicationOptions : SwOptions, ISwApplicationOptions { private readonly SwApplication m_App; - internal SwApplicationOptions(SwApplication app) + internal SwApplicationOptions(SwApplication app) { m_App = app; Drawings = new SwDrawingsApplicationOptions(app); @@ -97,7 +97,7 @@ internal class SwApplication : ISwApplication, IXServiceConsumer #region WinApi [DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); - #endregion + #endregion WinApi IXDocumentRepository IXApplication.Documents => Documents; IXMacro IXApplication.OpenMacro(string path) => OpenMacro(path); @@ -295,7 +295,7 @@ public bool IsAlive public SwMaterialsDatabaseRepository MaterialDatabases { get; private set; } - internal SwApplication(ISldWorks app, IXServiceCollection customServices) + internal SwApplication(ISldWorks app, IXServiceCollection customServices) : this(app, default(Action)) { customServices = customServices ?? new ServiceCollection(); @@ -371,7 +371,7 @@ internal void Init(IServiceProvider svcProvider) Services.GetService(), Services.GetService()); } - else + else { Debug.Assert(false, "App has been already initialized. Must be only once"); } @@ -449,7 +449,7 @@ public ISwMacro OpenMacro(string path) var ext = Path.GetExtension(path); - switch (ext.ToLower()) + switch (ext.ToLower()) { case VSTA_FILE_EXT: return new SwVstaMacro(this, path); @@ -476,7 +476,7 @@ private ISldWorks CreateInstance(CancellationToken cancellationToken) { m_HideOnStartup = State.HasFlag(ApplicationState_e.Hidden); - using (var appStarter = new SwApplicationStarter(State, Version)) + using (var appStarter = new SwApplicationStarter(State, Version)) { var logger = Logger ?? new TraceLogger("xCAD.SwApplication"); @@ -486,7 +486,7 @@ private ISldWorks CreateInstance(CancellationToken cancellationToken) } } - private void WatchStartupCompleted(SldWorks sw) + private void WatchStartupCompleted(SldWorks sw) { sw.OnIdleNotify += OnLoadFirstIdleNotify; } @@ -494,7 +494,7 @@ private void WatchStartupCompleted(SldWorks sw) private int OnLoadFirstIdleNotify() { Debug.Assert(!m_IsStartupNotified, "This event shoud only be fired once"); - + if (!m_IsStartupNotified) { if (Sw?.StartupProcessCompleted == true) @@ -525,7 +525,7 @@ private int OnLoadFirstIdleNotify() return HResult.S_OK; } - private ApplicationState_e GetApplicationState() + private ApplicationState_e GetApplicationState() { //TODO: find the state return ApplicationState_e.Default; @@ -537,7 +537,7 @@ public IXProgress CreateProgress() { return new SwProgress(prgBar); } - else + else { throw new Exception("Failed to create progress"); } @@ -551,7 +551,7 @@ public void ShowTooltip(ITooltipSpec spec) var bmpType = icon != null ? swBitMaps.swBitMapUserDefined : swBitMaps.swBitMapNone; - using (var bmp = CreateTooltipIcon(icon)) + using (var bmp = CreateTooltipIcon(icon)) { Sw.HideBubbleTooltip(); @@ -561,7 +561,7 @@ public void ShowTooltip(ITooltipSpec spec) } } - private IImageCollection CreateTooltipIcon(IXImage icon) + private IImageCollection CreateTooltipIcon(IXImage icon) { if (icon != null) { @@ -569,7 +569,7 @@ private IImageCollection CreateTooltipIcon(IXImage icon) return iconsCreator.ConvertIcon(new TooltipIcon(icon)); } - else + else { return null; } @@ -579,7 +579,7 @@ public TObj CreateObjectFromDispatch(object disp, ISwDocument doc) where TObj : ISwObject => SwObjectFactory.FromDispatch(disp, (SwDocument)doc, this); - public IXObjectTracker CreateObjectTracker(string name) + public IXObjectTracker CreateObjectTracker(string name) => new SwObjectTracker(this, name); internal void Release(bool close) @@ -638,7 +638,7 @@ public void Close() /// /// Additional methods of /// - public static class SwApplicationExtension + public static class SwApplicationExtension { /// /// Checks if the current version of the SOLIDWORKS applicating equals or newver than the specified version @@ -649,8 +649,8 @@ public static class SwApplicationExtension /// Revision /// True if current version is newer or equal /// Use this method for forward compatibility - public static bool IsVersionNewerOrEqual(this ISwApplication app, SwVersion_e version, - int? servicePack = null, int? servicePackRev = null) + public static bool IsVersionNewerOrEqual(this ISwApplication app, SwVersion_e version, + int? servicePack = null, int? servicePackRev = null) { return app.Sw.IsVersionNewerOrEqual(version, servicePack, servicePackRev); } @@ -661,13 +661,13 @@ public static bool IsVersionNewerOrEqual(this ISwApplication app, SwVersion_e ve /// Application /// True if in process /// This method also checks the UI thread - public static bool IsInProcess(this ISwApplication app) + public static bool IsInProcess(this ISwApplication app) { if (Process.GetCurrentProcess().Id == app.Process.Id) { return Thread.CurrentThread.ManagedThreadId == 1; } - else + else { return false; } diff --git a/src/SwDocumentManager/Documents/SwDmAssembly.cs b/src/SwDocumentManager/Documents/SwDmAssembly.cs index d594ad96..1ad11062 100644 --- a/src/SwDocumentManager/Documents/SwDmAssembly.cs +++ b/src/SwDocumentManager/Documents/SwDmAssembly.cs @@ -29,7 +29,7 @@ internal class SwDmAssembly : SwDmDocument3D, ISwDmAssembly IXAssemblyEvaluation IXAssembly.Evaluation => throw new NotSupportedException(); IXComponent IXAssembly.EditingComponent => throw new NotSupportedException(); - #endregion + #endregion Not Supported private readonly Lazy m_LazyConfigurations; @@ -54,7 +54,7 @@ internal class SwDmVirtualAssembly : SwDmAssembly private readonly SwDmDocument m_Owner; public SwDmVirtualAssembly(SwDmApplication dmApp, ISwDMDocument doc, SwDmDocument owner, bool isCreated, - Action createHandler, Action closeHandler, bool? isReadOnly) + Action createHandler, Action closeHandler, bool? isReadOnly) : base(dmApp, doc, isCreated, createHandler, closeHandler, isReadOnly) { m_Owner = owner; @@ -69,7 +69,7 @@ private void OnOwnerDisposed(IXDocument owner) public override string Title { get => SwDmVirtualDocumentHelper.GetTitle(base.Title); - set => base.Title = value; + set => base.Title = value; } public override bool IsDirty diff --git a/src/SwDocumentManager/Documents/SwDmComponent.cs b/src/SwDocumentManager/Documents/SwDmComponent.cs index bee82db0..2778e1b4 100644 --- a/src/SwDocumentManager/Documents/SwDmComponent.cs +++ b/src/SwDocumentManager/Documents/SwDmComponent.cs @@ -53,7 +53,7 @@ internal abstract class SwDmComponent : SwDmSelObject, ISwDmComponent public IXDimensionRepository Dimensions => throw new NotSupportedException(); public IEditor Edit() => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXDocument3D IXComponent.ReferencedDocument { get => ReferencedDocument; set => ReferencedDocument = (ISwDmDocument3D)value; } IXConfiguration IXComponent.ReferencedConfiguration { get => ReferencedConfiguration; set => ReferencedConfiguration = (ISwDmConfiguration)value; } @@ -67,17 +67,17 @@ internal abstract class SwDmComponent : SwDmSelObject, ISwDmComponent private readonly Lazy m_PathLazy; private readonly Lazy m_ChildrenLazy; - + internal SwDmComponent(SwDmAssembly parentAssm, ISwDMComponent comp) : base(comp, parentAssm.OwnerApplication, parentAssm) { Component = comp; ParentAssembly = parentAssm; m_FilePathResolver = new SwDmFilePathResolver(); - m_PathLazy = new Lazy(() => + m_PathLazy = new Lazy(() => { var rootDir = Path.GetDirectoryName(ParentAssembly.Path); - + var cachedPath = CachedPath; var changedPath = ParentAssembly.ChangedReferences.EnumerateByFileName(cachedPath).LastOrDefault(); @@ -86,7 +86,7 @@ internal SwDmComponent(SwDmAssembly parentAssm, ISwDMComponent comp) : base(comp { cachedPath = changedPath; } - + try { return m_FilePathResolver.ResolvePath(rootDir, cachedPath); @@ -101,14 +101,14 @@ internal SwDmComponent(SwDmAssembly parentAssm, ISwDMComponent comp) : base(comp { return m_FilePathResolver.ResolvePath(nonVirtRootDir, cachedPath); } - else + else { throw; } } }); - m_ChildrenLazy = new Lazy(() => + m_ChildrenLazy = new Lazy(() => { if (!Component.IsSuppressed() && ReferencedDocument is SwDmAssembly) { @@ -128,7 +128,7 @@ internal SwDmComponent(SwDmAssembly parentAssm, ISwDMComponent comp) : base(comp }); } - private string GetFirstNonVirtualParentDirectry() + private string GetFirstNonVirtualParentDirectry() { var comp = this; @@ -136,7 +136,7 @@ private string GetFirstNonVirtualParentDirectry() { var parentComp = comp.Parent; - if (parentComp == null || !((ISwDMComponent3)parentComp.Component).IsVirtual) + if (parentComp == null || !((ISwDMComponent3)parentComp.Component).IsVirtual) { return Path.GetDirectoryName(comp.ParentAssembly.Path); } @@ -161,10 +161,10 @@ public string FullName { return Parent.FullName + "/" + Name; } - else + else { return Name; - } + } } } @@ -172,7 +172,7 @@ public string FullName private string GetPath() => m_PathLazy.Value; - public ISwDmConfiguration ReferencedConfiguration + public ISwDmConfiguration ReferencedConfiguration { get => GetReferencedConfiguration(Component.ConfigurationName); set => throw new NotSupportedException(); @@ -217,7 +217,7 @@ public ComponentState_e State return state; } - set + set { var isExcludedFromBom = ((ISwDMComponent5)Component).ExcludeFromBOM == (int)swDmExcludeFromBOMResult.swDmExcludeFromBOM_TRUE; @@ -234,7 +234,7 @@ public ComponentState_e State public TransformMatrix Transformation { - get + get { var data = (double[])Component.Transform; @@ -246,34 +246,34 @@ public TransformMatrix Transformation data[8] * scale, data[9] * scale, data[10] * scale, 0, data[12], data[13], data[14], 1); - if (Parent != null) + if (Parent != null) { transform = transform.Multiply(Parent.Transformation); } return transform; } - set => throw new NotSupportedException("Transform of the component cannot be modified"); + set => throw new NotSupportedException("Transform of the component cannot be modified"); } - public string Reference + public string Reference { - get + get { if (ParentAssembly.IsVersionNewerOrEqual(SwDmVersion_e.Sw2018)) { return ((ISwDMComponent10)Component).ComponentReference; } - else + else { throw new NotSupportedException("This property is only supported from SOLIDWORKS 2018 or newer"); } } - set => throw new NotSupportedException(); + set => throw new NotSupportedException(); } private ISwDmDocument3D m_CachedDocument; - + public IXComponentRepository Children => m_ChildrenLazy.Value; protected TDocument GetSpecificReferencedDocument() @@ -380,7 +380,7 @@ protected TDocument GetSpecificReferencedDocument() internal SwDmComponent Parent { get; set; } - public ISwDmDocument3D ReferencedDocument + public ISwDmDocument3D ReferencedDocument { get => GetReferencedDocument(); set => throw new NotSupportedException(); @@ -417,7 +417,7 @@ internal abstract class SwDmComponentConfiguration : SwDmConfiguration { #region Not Supported public IXMaterial Material { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } - #endregion + #endregion Not Supported protected readonly SwDmComponent m_Comp; @@ -428,8 +428,8 @@ internal SwDmComponentConfiguration(SwDmComponent comp, string confName) : base( m_Comp = comp; m_ConfName = confName; } - - public override string Name + + public override string Name { get => m_ConfName; set => throw new NotSupportedException(); @@ -445,7 +445,7 @@ public override IXConfiguration Parent { return m_Comp.GetReferencedConfiguration(parentConfName); } - else + else { return null; } @@ -488,7 +488,7 @@ internal class SwDmSubComponentCollection : SwDmComponentCollection private readonly SwDmComponent m_ParentComp; internal SwDmSubComponentCollection(SwDmComponent parentComp, - SwDmAssembly rootAssm, ISwDmConfiguration conf) + SwDmAssembly rootAssm, ISwDmConfiguration conf) : base(rootAssm, conf) { m_ParentComp = parentComp; @@ -496,7 +496,7 @@ internal SwDmSubComponentCollection(SwDmComponent parentComp, protected override SwDmComponent CreateComponentInstance(ISwDMComponent dmComp) { - var comp = base.CreateComponentInstance(dmComp); + var comp = base.CreateComponentInstance(dmComp); comp.Parent = m_ParentComp; return comp; } @@ -509,7 +509,7 @@ internal class EmptyComponentCollection : IXComponentRepository public void AddRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public void RemoveRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public T PreCreate() where T : IXComponent => throw new NotSupportedException(); - #endregion + #endregion Not Supported public IXComponent this[string name] => throw new Exception("No components"); @@ -519,7 +519,7 @@ internal class EmptyComponentCollection : IXComponentRepository public IEnumerator GetEnumerator() { - yield break; + yield break; } public bool TryGet(string name, out IXComponent ent) diff --git a/src/SwDocumentManager/Documents/SwDmComponentCollection.cs b/src/SwDocumentManager/Documents/SwDmComponentCollection.cs index 11db2149..88dba248 100644 --- a/src/SwDocumentManager/Documents/SwDmComponentCollection.cs +++ b/src/SwDocumentManager/Documents/SwDmComponentCollection.cs @@ -24,7 +24,7 @@ namespace Xarial.XCad.SwDocumentManager.Documents { - public interface ISwDmComponentCollection : IXComponentRepository + public interface ISwDmComponentCollection : IXComponentRepository { } @@ -34,7 +34,7 @@ internal class SwDmComponentCollection : ISwDmComponentCollection public void AddRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public void RemoveRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public T PreCreate() where T : IXComponent => throw new NotSupportedException(); - #endregion + #endregion Not Supported private readonly ISwDmConfiguration m_Conf; private readonly SwDmAssembly m_ParentAssm; @@ -63,9 +63,9 @@ public int Count } } - public int TotalCount + public int TotalCount { - get + get { ValidateSpeedPak(m_Conf.Configuration); @@ -79,21 +79,21 @@ public int TotalCount } } - private object[] GetComponents(ISwDMConfiguration conf) + private object[] GetComponents(ISwDMConfiguration conf) { ValidateSpeedPak(conf); return ((ISwDMConfiguration2)conf).GetComponents() as object[] ?? new object[0]; } - private void ValidateSpeedPak(ISwDMConfiguration conf) + private void ValidateSpeedPak(ISwDMConfiguration conf) { if (((ISwDMConfiguration11)conf).IsSpeedPak()) { throw new SpeedPakConfigurationComponentsException(); } } - - private void CountComponents(ISwDMConfiguration conf, Dictionary cachedCount, ref int totalCount) + + private void CountComponents(ISwDMConfiguration conf, Dictionary cachedCount, ref int totalCount) { foreach (ISwDMComponent6 comp in GetComponents(conf)) { @@ -108,7 +108,7 @@ private void CountComponents(ISwDMConfiguration conf, Dictionary ca var confName = comp.ConfigurationName; var cacheKey = $"{path}:{confName}"; - + if (cachedCount.TryGetValue(cacheKey, out int count)) { totalCount += count; @@ -137,7 +137,7 @@ private void CountComponents(ISwDMConfiguration conf, Dictionary ca totalCount += subTotalCount; cachedCount.Add(cacheKey, subTotalCount); } - finally + finally { subAssm?.CloseDoc(); } @@ -151,7 +151,7 @@ private void CountComponents(ISwDMConfiguration conf, Dictionary ca } } - private IEnumerable IterateDmComponents() + private IEnumerable IterateDmComponents() { if (m_Conf.IsCommitted) { @@ -171,7 +171,7 @@ public IEnumerator GetEnumerator() public IEnumerable Filter(bool reverseOrder, params RepositoryFilterQuery[] filters) => RepositoryHelper.FilterDefault(this, filters, reverseOrder); - protected virtual SwDmComponent CreateComponentInstance(ISwDMComponent dmComp) + protected virtual SwDmComponent CreateComponentInstance(ISwDMComponent dmComp) { var compName = ((ISwDMComponent7)dmComp).Name2; diff --git a/src/SwDocumentManager/Documents/SwDmConfiguration.cs b/src/SwDocumentManager/Documents/SwDmConfiguration.cs index f462c06f..a03dbe7d 100644 --- a/src/SwDocumentManager/Documents/SwDmConfiguration.cs +++ b/src/SwDocumentManager/Documents/SwDmConfiguration.cs @@ -37,12 +37,12 @@ internal abstract class SwDmConfiguration : SwDmSelObject, ISwDmConfiguration { #region Not Supported public IXDimensionRepository Dimensions => throw new NotSupportedException(); - #endregion + #endregion Not Supported internal const string QTY_PROPERTY = "UNIT_OF_MEASURE"; IXPropertyRepository IPropertiesOwner.Properties => Properties; - + private readonly Lazy m_Properties; public virtual ISwDMConfiguration Configuration { get; } @@ -116,7 +116,7 @@ public double Quantity { return qty; } - else + else { return 1; } @@ -142,9 +142,9 @@ public double Quantity } } - public BomChildrenSolving_e BomChildrenSolving + public BomChildrenSolving_e BomChildrenSolving { - get + get { if (Document is ISwDmAssembly) { @@ -174,16 +174,16 @@ public BomChildrenSolving_e BomChildrenSolving throw new NotSupportedException(); } } - else + else { return BomChildrenSolving_e.Show; } } } - public virtual IXConfiguration Parent + public virtual IXConfiguration Parent { - get + get { var parentConf = GetParentConfiguration(); @@ -198,7 +198,7 @@ public virtual IXConfiguration Parent } } - private SwDMConfiguration GetParentConfiguration() + private SwDMConfiguration GetParentConfiguration() { var parentConfName = Configuration.GetParentConfigurationName(); @@ -248,7 +248,7 @@ private string TryGetConfigurationPropertyValue(string prpName) { conf = (ISwDMConfiguration5)Configuration; } - catch (InvalidConfigurationsException) + catch (InvalidConfigurationsException) { throw; } @@ -261,13 +261,13 @@ private string TryGetConfigurationPropertyValue(string prpName) { return conf.GetCustomPropertyValues(prpName, out _, out _); } - catch + catch { return ""; } } - private string GetPartNumber(ISwDmConfiguration conf) + private string GetPartNumber(ISwDmConfiguration conf) { switch ((swDmBOMPartNumberSource)((ISwDMConfiguration11)(conf.Configuration)).BOMPartNoSource) { @@ -309,7 +309,7 @@ internal class SwDmPartConfiguration : SwDmConfiguration, ISwDmPartConfiguration { #region Not Supported public IXMaterial Material { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } - #endregion + #endregion Not Supported internal SwDmPartConfiguration(ISwDMConfiguration conf, SwDmPart part) : base(conf, part) { diff --git a/src/SwDocumentManager/Documents/SwDmConfigurationCollection.cs b/src/SwDocumentManager/Documents/SwDmConfigurationCollection.cs index 2cb50e20..da6048ae 100644 --- a/src/SwDocumentManager/Documents/SwDmConfigurationCollection.cs +++ b/src/SwDocumentManager/Documents/SwDmConfigurationCollection.cs @@ -21,7 +21,7 @@ namespace Xarial.XCad.SwDocumentManager.Documents { - public interface ISwDmConfigurationCollection : IXConfigurationRepository + public interface ISwDmConfigurationCollection : IXConfigurationRepository { new ISwDmConfiguration this[string name] { get; } new ISwDmConfiguration Active { get; } @@ -30,7 +30,7 @@ public interface ISwDmConfigurationCollection : IXConfigurationRepository internal abstract class SwDmConfigurationCollection : ISwDmConfigurationCollection { #region Not Supported - public event ConfigurationActivatedDelegate ConfigurationActivated + public event ConfigurationActivatedDelegate ConfigurationActivated { add => throw new NotSupportedException(); remove => throw new NotSupportedException(); @@ -38,10 +38,10 @@ public event ConfigurationActivatedDelegate ConfigurationActivated public void AddRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public IXConfiguration PreCreate() => throw new NotSupportedException(); public T PreCreate() where T : IXConfiguration => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXConfiguration IXRepository.this[string name] => this[name]; - + IXConfiguration IXConfigurationRepository.Active { get => Active; @@ -50,13 +50,13 @@ IXConfiguration IXConfigurationRepository.Active public ISwDmConfiguration this[string name] => (ISwDmConfiguration)RepositoryHelper.Get(this, name); - public ISwDmConfiguration Active + public ISwDmConfiguration Active { - get + get { var confName = m_Doc.Document.ConfigurationManager.GetActiveConfigurationName(); - if (string.IsNullOrEmpty(confName)) + if (string.IsNullOrEmpty(confName)) { throw new InvalidConfigurationsException("Name of the active configuration cannot be extracted"); } @@ -72,8 +72,8 @@ public int Count if (m_Doc.IsVersionNewerOrEqual(SwDmVersion_e.Sw2019)) { var count = ((ISwDMConfigurationMgr2)m_Doc.Document.ConfigurationManager).GetConfigurationCount2(out SwDMConfigurationError err); - - if (err != SwDMConfigurationError.SwDMConfigurationError_None) + + if (err != SwDMConfigurationError.SwDMConfigurationError_None) { throw new InvalidConfigurationsException(err); } @@ -86,11 +86,11 @@ public int Count } } } - + private readonly SwDmDocument3D m_Doc; private readonly Dictionary m_ConfigurationsCache; - internal SwDmConfigurationCollection(SwDmDocument3D doc) + internal SwDmConfigurationCollection(SwDmDocument3D doc) { m_Doc = doc; m_ConfigurationsCache = new Dictionary(); @@ -128,7 +128,7 @@ public bool TryGet(string name, out IXConfiguration ent) { conf = ((ISwDMConfigurationMgr2)m_Doc.Document.ConfigurationManager).GetConfigurationByName2(name, out SwDMConfigurationError err); - if (err == SwDMConfigurationError.SwDMConfigurationError_NameNotFound) + if (err == SwDMConfigurationError.SwDMConfigurationError_NameNotFound) { ent = null; return false; @@ -155,13 +155,13 @@ public bool TryGet(string name, out IXConfiguration ent) return true; } - public void RemoveRange(IEnumerable ents, CancellationToken cancellationToken) + public void RemoveRange(IEnumerable ents, CancellationToken cancellationToken) { var activeConfName = m_Doc.Document.ConfigurationManager.GetActiveConfigurationName(); - foreach (ISwDmConfiguration conf in ents) + foreach (ISwDmConfiguration conf in ents) { - if (string.Equals(conf.Name, activeConfName, StringComparison.CurrentCultureIgnoreCase)) + if (string.Equals(conf.Name, activeConfName, StringComparison.CurrentCultureIgnoreCase)) { throw new Exception("Cannot delete active configuration"); } @@ -175,7 +175,7 @@ public void RemoveRange(IEnumerable ents, CancellationToken can public IEnumerable Filter(bool reverseOrder, params RepositoryFilterQuery[] filters) => RepositoryHelper.FilterDefault(this, filters, reverseOrder); } - public interface ISwDmAssemblyConfigurationCollection : ISwDmConfigurationCollection, IXAssemblyConfigurationRepository + public interface ISwDmAssemblyConfigurationCollection : ISwDmConfigurationCollection, IXAssemblyConfigurationRepository { new ISwDmAssemblyConfiguration this[string name] { get; } new ISwDmAssemblyConfiguration Active { get; set; } @@ -195,16 +195,16 @@ internal SwDmAssemblyConfigurationCollection(SwDmAssembly assm) : base(assm) { m_Assm = assm; } - + ISwDmAssemblyConfiguration ISwDmAssemblyConfigurationCollection.this[string name] => (ISwDmAssemblyConfiguration)base[name]; - IXAssemblyConfiguration IXAssemblyConfigurationRepository.Active + IXAssemblyConfiguration IXAssemblyConfigurationRepository.Active { get => (ISwDmAssemblyConfiguration)base.Active; set => (this as IXConfigurationRepository).Active = value; } - - ISwDmAssemblyConfiguration ISwDmAssemblyConfigurationCollection.Active + + ISwDmAssemblyConfiguration ISwDmAssemblyConfigurationCollection.Active { get => (ISwDmAssemblyConfiguration)base.Active; set => (this as IXConfigurationRepository).Active = value; @@ -235,7 +235,7 @@ internal SwDmPartConfigurationCollection(SwDmPart part) : base(part) { m_Part = part; } - + ISwDmPartConfiguration ISwDmPartConfigurationCollection.this[string name] => (ISwDmPartConfiguration)base[name]; IXPartConfiguration IXPartConfigurationRepository.Active diff --git a/src/SwDocumentManager/Documents/SwDmDocument.cs b/src/SwDocumentManager/Documents/SwDmDocument.cs index 333c8645..1fa84da4 100644 --- a/src/SwDocumentManager/Documents/SwDmDocument.cs +++ b/src/SwDocumentManager/Documents/SwDmDocument.cs @@ -50,25 +50,25 @@ internal abstract class SwDmDocument : SwDmObject, ISwDmDocument /// returns the last path when file was saved within SOLIDWORKS /// If files were renamed with Pack&Go, SOLIDWORKS File Utilities, PDM or Document Manager cached path will not be changed until opened /// - internal class ChangedReferencesCollection + internal class ChangedReferencesCollection { private readonly string[] m_OriginalReferences; private readonly string[] m_NewReferences; - internal ChangedReferencesCollection(ISwDMDocument doc) + internal ChangedReferencesCollection(ISwDMDocument doc) { ((ISwDMDocument8)doc).GetChangedReferences(out object origRefs, out object newRefs); m_OriginalReferences = (string[])origRefs ?? new string[0]; m_NewReferences = (string[])newRefs ?? new string[0]; - if (m_OriginalReferences.Length != m_NewReferences.Length) + if (m_OriginalReferences.Length != m_NewReferences.Length) { throw new Exception("Count of original references does not match count of new references"); } } - internal IEnumerable EnumerateByFileName(string filePath) + internal IEnumerable EnumerateByFileName(string filePath) { for (int i = 0; i < m_OriginalReferences.Length; i++) { @@ -137,7 +137,7 @@ public event DocumentEventDelegate Rebuilt public IXModelViewRepository ModelViews => throw new NotSupportedException(); public IXAnnotationRepository Annotations => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXVersion IXDocument.Version => Version; IXPropertyRepository IPropertiesOwner.Properties => Properties; @@ -146,9 +146,9 @@ public event DocumentEventDelegate Rebuilt public ISwDmVersion Version => SwDmApplicationFactory.CreateVersion((SwDmVersion_e)Document.GetVersion()); - public virtual string Title + public virtual string Title { - get + get { var path = Path; @@ -163,7 +163,7 @@ public virtual string Title return System.IO.Path.GetFileNameWithoutExtension(path); } } - else + else { return ""; } @@ -171,26 +171,26 @@ public virtual string Title set => throw new NotSupportedException("This property is read-only"); } - public string Path + public string Path { - get + get { if (IsCommitted) { return Document.FullName; } - else + else { return m_Creator.CachedProperties.Get(); } } - set + set { if (IsCommitted) { throw new NotSupportedException("Path cannot be changed for an opened document"); } - else + else { m_Creator.CachedProperties.Set(value); } @@ -201,9 +201,9 @@ public string Path private bool? m_IsReadOnly; - public DocumentState_e State + public DocumentState_e State { - get + get { if (IsCommitted) { @@ -211,25 +211,25 @@ public DocumentState_e State { return DocumentState_e.ReadOnly; } - else + else { return DocumentState_e.Default; } } - else + else { return m_Creator.CachedProperties.Get(); } } - set + set { if (IsCommitted) { throw new Exception("This property is read-only"); } - else + else { - if (value != DocumentState_e.Default && value != DocumentState_e.ReadOnly) + if (value != DocumentState_e.Default && value != DocumentState_e.ReadOnly) { throw new NotSupportedException("Only default and read-only states are supported"); } @@ -238,12 +238,12 @@ public DocumentState_e State } } } - + private bool? m_IsClosed; - public override bool IsAlive + public override bool IsAlive { - get + get { if (m_IsClosed.HasValue) { @@ -276,7 +276,7 @@ public override bool IsAlive public event DataStoreAvailableDelegate StorageReadAvailable; public event DataStoreAvailableDelegate StreamWriteAvailable; public event DataStoreAvailableDelegate StorageWriteAvailable; - + public event DocumentSaveDelegate Saving; public event DocumentCloseDelegate Closing; public event DocumentEventDelegate Destroyed; @@ -291,7 +291,7 @@ public override bool IsAlive private readonly Lazy m_Properties; private readonly Lazy m_ChangedReferencesLazy; - internal SwDmDocument(SwDmApplication dmApp, ISwDMDocument doc, bool isCreated, + internal SwDmDocument(SwDmApplication dmApp, ISwDMDocument doc, bool isCreated, Action createHandler, Action closeHandler, bool? isReadOnly = null) : base(doc, dmApp, null) { @@ -311,7 +311,7 @@ internal SwDmDocument(SwDmApplication dmApp, ISwDMDocument doc, bool isCreated, public override object Dispatch => Document; public int UpdateStamp => Document.GetLastUpdateStamp(); - + public override bool Equals(IXObject other) { if (!object.ReferenceEquals(this, other) @@ -327,7 +327,7 @@ public override bool Equals(IXObject other) } } - private ISwDMDocument OpenDocument(CancellationToken cancellationToken) + private ISwDMDocument OpenDocument(CancellationToken cancellationToken) { m_IsReadOnly = State.HasFlag(DocumentState_e.ReadOnly); @@ -418,11 +418,11 @@ public virtual void Commit(CancellationToken cancellationToken) public IStorage OpenStorage(string name, AccessType_e access) { - if (this.IsVersionNewerOrEqual(SwDmVersion_e.Sw2015)) + if (this.IsVersionNewerOrEqual(SwDmVersion_e.Sw2015)) { return new SwDm3rdPartyStorage((ISwDMDocument19)Document, name, access); } - else + else { throw new NotSupportedException("This API is only available in SOLIDWORKS 2015 or newer"); } @@ -455,7 +455,7 @@ public IXSaveOperation PreCreateSaveAsOperation(string filePath) => new SwDmSaveOperation(this, filePath); internal void PerformSave(DocumentSaveType_e saveType, string path, Func canSave, - Func saveFunc) + Func saveFunc) { var saveArgs = new DocumentSaveArgs(); saveArgs.FileName = path; @@ -547,7 +547,7 @@ internal class SwDmUnknownDocument : SwDmDocument, IXUnknownDocument private SwDmDocument m_SpecificDoc; public SwDmUnknownDocument(SwDmApplication dmApp, SwDMDocument doc, bool isCreated, - Action createHandler, Action closeHandler, bool? isReadOnly = null) + Action createHandler, Action closeHandler, bool? isReadOnly = null) : base(dmApp, doc, isCreated, createHandler, closeHandler, isReadOnly) { if (isCreated) @@ -591,7 +591,7 @@ public IXDocument GetSpecific() throw new Exception("Invalid document type"); } - if (!IsCommitted) + if (!IsCommitted) { //TODO: implement copy cache on ElementCreator m_SpecificDoc.Path = Path; @@ -619,7 +619,7 @@ public SwDmUnknownDocument3D(SwDmApplication dmApp, SwDMDocument doc, bool isCre IXDocument3DSaveOperation IXDocument3D.PreCreateSaveAsOperation(string filePath) => throw new NotSupportedException(); } - public static class SwDmDocumentExtension + public static class SwDmDocumentExtension { public static bool IsVersionNewerOrEqual(this ISwDmDocument doc, SwDmVersion_e version) => doc.Version.IsVersionNewerOrEqual(version); diff --git a/src/SwDocumentManager/Documents/SwDmDocument3D.cs b/src/SwDocumentManager/Documents/SwDmDocument3D.cs index edd86401..8752f8e0 100644 --- a/src/SwDocumentManager/Documents/SwDmDocument3D.cs +++ b/src/SwDocumentManager/Documents/SwDmDocument3D.cs @@ -31,7 +31,7 @@ internal abstract class SwDmDocument3D : SwDmDocument, ISwDmDocument3D public IXDocumentEvaluation Evaluation => throw new NotSupportedException(); public IXDocumentGraphics Graphics => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXConfigurationRepository IXDocument3D.Configurations => Configurations; @@ -55,7 +55,7 @@ internal static string GetTitle(string fileName) { return fileName.Substring(PREFIX.Length); } - else + else { return fileName; } diff --git a/src/SwDocumentManager/Documents/SwDmDocumentCollection.cs b/src/SwDocumentManager/Documents/SwDmDocumentCollection.cs index 379f36da..8fba6d2a 100644 --- a/src/SwDocumentManager/Documents/SwDmDocumentCollection.cs +++ b/src/SwDocumentManager/Documents/SwDmDocumentCollection.cs @@ -21,7 +21,7 @@ namespace Xarial.XCad.SwDocumentManager.Documents { - public interface ISwDmDocumentCollection : IXDocumentRepository, IDisposable + public interface ISwDmDocumentCollection : IXDocumentRepository, IDisposable { bool TryGet(string name, out ISwDmDocument ent); new ISwDmDocument this[string name] { get; } @@ -31,8 +31,8 @@ public interface ISwDmDocumentCollection : IXDocumentRepository, IDisposable internal class SwDmDocumentCollection : ISwDmDocumentCollection { #region NotSupported - - public event DocumentEventDelegate DocumentActivated + + public event DocumentEventDelegate DocumentActivated { add => throw new NotSupportedException(); remove => throw new NotSupportedException(); @@ -56,7 +56,7 @@ public event DocumentEventDelegate NewDocumentCreated remove => throw new NotSupportedException(); } - #endregion + #endregion NotSupported IXDocument IXRepository.this[string name] => this[name]; @@ -143,7 +143,7 @@ public bool TryGet(string name, out ISwDmDocument ent) name, StringComparison.CurrentCultureIgnoreCase)); } - if (ent?.IsAlive == false) + if (ent?.IsAlive == false) { ent.Close(); ent = null; @@ -178,20 +178,20 @@ internal void OnDocumentClosed(ISwDmDocument doc) public void Dispose() { - foreach (var doc in m_Documents) + foreach (var doc in m_Documents) { doc.Close(); } } } - public static class ISwDmDocumentCollectionExtension + public static class ISwDmDocumentCollectionExtension { - public static ISwDmDocument PreCreateFromPath(this ISwDmDocumentCollection docs, string path) + public static ISwDmDocument PreCreateFromPath(this ISwDmDocumentCollection docs, string path) { ISwDmDocument doc; - switch (SwDmDocument.GetDocumentType(path)) + switch (SwDmDocument.GetDocumentType(path)) { case SwDmDocumentType.swDmDocumentPart: doc = docs.PreCreate(); diff --git a/src/SwDocumentManager/Documents/SwDmDrawing.cs b/src/SwDocumentManager/Documents/SwDmDrawing.cs index 1c984ff7..4deab66a 100644 --- a/src/SwDocumentManager/Documents/SwDmDrawing.cs +++ b/src/SwDocumentManager/Documents/SwDmDrawing.cs @@ -23,12 +23,12 @@ public interface ISwDmDrawing : ISwDmDocument, IXDrawing internal class SwDmDrawing : SwDmDocument, ISwDmDrawing { #region Not Supported - + IXDrawingOptions IXDrawing.Options => throw new NotSupportedException(); IXDrawingSaveOperation IXDrawing.PreCreateSaveAsOperation(string filePath) => throw new NotSupportedException(); public IXLayerRepository Layers => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXSheetRepository IXDrawing.Sheets => Sheets; @@ -44,6 +44,6 @@ public SwDmDrawing(SwDmApplication dmApp, ISwDMDocument doc, bool isCreated, public ISwDmSheetCollection Sheets => m_SheetsLazy.Value; - protected override bool IsDocumentTypeCompatible(SwDmDocumentType docType) => docType == SwDmDocumentType.swDmDocumentDrawing; + protected override bool IsDocumentTypeCompatible(SwDmDocumentType docType) => docType == SwDmDocumentType.swDmDocumentDrawing; } } diff --git a/src/SwDocumentManager/Documents/SwDmDrawingView.cs b/src/SwDocumentManager/Documents/SwDmDrawingView.cs index 8ccc7fc2..ae100d1a 100644 --- a/src/SwDocumentManager/Documents/SwDmDrawingView.cs +++ b/src/SwDocumentManager/Documents/SwDmDrawingView.cs @@ -50,19 +50,19 @@ TSelObject IXObjectContainer.ConvertObject(TSelObject obj) public IXEntityRepository VisibleEntities => throw new NotSupportedException(); public ViewPolylineData[] Polylines => throw new NotSupportedException(); public ViewDisplayMode_e? DisplayMode { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } - #endregion + #endregion Not Supported public ISwDMView DrawingView { get; } - public string Name + public string Name { get => DrawingView.Name; - set => throw new NotSupportedException(); + set => throw new NotSupportedException(); } - public IXDocument3D ReferencedDocument + public IXDocument3D ReferencedDocument { - get + get { if (m_CachedDocument == null || !m_CachedDocument.IsAlive) { @@ -72,11 +72,11 @@ public IXDocument3D ReferencedDocument { var refDoc = m_Drw.Dependencies.First(d => string.Equals(Path.GetFileName(d.Path), fileName, StringComparison.CurrentCultureIgnoreCase)); - if (!refDoc.IsCommitted) + if (!refDoc.IsCommitted) { var isReadOnly = m_Drw.State.HasFlag(DocumentState_e.ReadOnly); - if (isReadOnly) + if (isReadOnly) { refDoc.State = DocumentState_e.ReadOnly; } @@ -91,9 +91,9 @@ public IXDocument3D ReferencedDocument set => throw new NotSupportedException(); } - public IXConfiguration ReferencedConfiguration + public IXConfiguration ReferencedConfiguration { - get + get { var confName = DrawingView.ReferencedConfiguration; @@ -107,7 +107,7 @@ public IXConfiguration ReferencedConfiguration return ReferencedDocument.Configurations.FirstOrDefault( c => string.Equals(c.Name, confName, StringComparison.CurrentCultureIgnoreCase)); } - else + else { return null; } diff --git a/src/SwDocumentManager/Documents/SwDmDrawingViewsCollection.cs b/src/SwDocumentManager/Documents/SwDmDrawingViewsCollection.cs index f4fa89bd..d88c2e8d 100644 --- a/src/SwDocumentManager/Documents/SwDmDrawingViewsCollection.cs +++ b/src/SwDocumentManager/Documents/SwDmDrawingViewsCollection.cs @@ -19,7 +19,7 @@ namespace Xarial.XCad.SwDocumentManager.Documents { - public interface ISwDmDrawingViewsCollection : IXDrawingViewRepository + public interface ISwDmDrawingViewsCollection : IXDrawingViewRepository { } @@ -30,7 +30,7 @@ internal class SwDmDrawingViewsCollection : ISwDmDrawingViewsCollection public void AddRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public void RemoveRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public T PreCreate() where T : IXDrawingView => throw new NotSupportedException(); - #endregion + #endregion Not Supported public IXDrawingView this[string name] => RepositoryHelper.Get(this, name); @@ -40,7 +40,7 @@ internal class SwDmDrawingViewsCollection : ISwDmDrawingViewsCollection private readonly SwDmDrawing m_Drw; - internal SwDmDrawingViewsCollection(SwDmSheet sheet, SwDmDrawing drw) + internal SwDmDrawingViewsCollection(SwDmSheet sheet, SwDmDrawing drw) { m_Sheet = sheet; m_Drw = drw; diff --git a/src/SwDocumentManager/Documents/SwDmSheet.cs b/src/SwDocumentManager/Documents/SwDmSheet.cs index 29c946b1..872991d5 100644 --- a/src/SwDocumentManager/Documents/SwDmSheet.cs +++ b/src/SwDocumentManager/Documents/SwDmSheet.cs @@ -28,7 +28,7 @@ internal class SwDmSheet : SwDmSelObject, ISwDmSheet #region Not Supported public IXSheet Clone(IXDrawing targetDrawing) => throw new NotSupportedException(); public IXSketch2D Sketch => throw new NotSupportedException(); - #endregion + #endregion Not Supported public string Name { @@ -38,9 +38,9 @@ public string Name public IXDrawingViewRepository DrawingViews => m_DrawingViewsLazy.Value; - public Scale Scale + public Scale Scale { - get + get { if (((ISwDMDocument13)m_Drawing.Document).GetSheetProperties(Name, out object prps) == (int)swSheetPropertiesResult.swSheetProperties_TRUE) { @@ -48,15 +48,15 @@ public Scale Scale return new Scale(prpsArr[3], prpsArr[4]); } - else + else { throw new Exception("Failed to read sheet properties"); } } - set => throw new NotSupportedException(); + set => throw new NotSupportedException(); } - - public PaperSize PaperSize + + public PaperSize PaperSize { get { @@ -77,12 +77,12 @@ public PaperSize PaperSize throw new Exception("Failed to read sheet properties"); } } - set => throw new NotSupportedException(); + set => throw new NotSupportedException(); } - public IXImage Preview + public IXImage Preview { - get + get { SwDmPreviewError previewErr; var imgBytes = ((ISwDMSheet2)Sheet).GetPreviewPNGBitmapBytes(out previewErr) as byte[]; @@ -99,7 +99,7 @@ public IXImage Preview } public ISwDMSheet Sheet { get; } - + private readonly Lazy m_DrawingViewsLazy; private readonly SwDmDrawing m_Drawing; diff --git a/src/SwDocumentManager/Documents/SwDmSheetCollection.cs b/src/SwDocumentManager/Documents/SwDmSheetCollection.cs index e7385427..a434fb5f 100644 --- a/src/SwDocumentManager/Documents/SwDmSheetCollection.cs +++ b/src/SwDocumentManager/Documents/SwDmSheetCollection.cs @@ -19,7 +19,7 @@ namespace Xarial.XCad.SwDocumentManager.Documents { - public interface ISwDmSheetCollection : IXSheetRepository + public interface ISwDmSheetCollection : IXSheetRepository { } @@ -31,20 +31,20 @@ internal class SwDmSheetCollection : ISwDmSheetCollection public void AddRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public void RemoveRange(IEnumerable ents, CancellationToken cancellationToken) => throw new NotSupportedException(); public T PreCreate() where T : IXSheet => throw new NotSupportedException(); - #endregion + #endregion Not Supported private readonly SwDmDrawing m_Drw; - internal SwDmSheetCollection(SwDmDrawing drw) + internal SwDmSheetCollection(SwDmDrawing drw) { m_Drw = drw; } - public IXSheet this[string name] => RepositoryHelper.Get(this, name); + public IXSheet this[string name] => RepositoryHelper.Get(this, name); - public IXSheet Active + public IXSheet Active { - get + get { var activeSheetName = (m_Drw.Document as ISwDMDocument10).GetActiveSheetName(); return this[activeSheetName]; diff --git a/src/SwDocumentManager/Features/SwDmCutListItem.cs b/src/SwDocumentManager/Features/SwDmCutListItem.cs index e38b8cf8..df9715fe 100644 --- a/src/SwDocumentManager/Features/SwDmCutListItem.cs +++ b/src/SwDocumentManager/Features/SwDmCutListItem.cs @@ -48,10 +48,10 @@ internal class SwDmCutListItem : SwDmSelObject, ISwDmCutListItem public IXEntityRepository AdjacentEntities => throw new NotSupportedException(); public XCad.Geometry.Structures.Point FindClosestPoint(XCad.Geometry.Structures.Point point) => throw new NotSupportedException(); public bool IsUserFeature => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXPropertyRepository IPropertiesOwner.Properties => Properties; - + public ISwDMCutListItem2 CutListItem { get; } private readonly Lazy m_Properties; @@ -62,7 +62,7 @@ internal SwDmCutListItem(ISwDMCutListItem2 cutListItem, SwDmPart doc) : base(cut { CutListItem = cutListItem; m_Part = doc; - + m_Properties = new Lazy( () => new SwDmCutListCustomPropertiesCollection(this, m_Part, m_Conf)); } @@ -72,28 +72,28 @@ internal SwDmCutListItem(ISwDMCutListItem2 cutListItem, SwDmPart doc, ISwDmPartC m_Conf = conf; } - public IEnumerable Bodies + public IEnumerable Bodies { - get + get { - for (int i = 0; i < CutListItem.Quantity; i++) + for (int i = 0; i < CutListItem.Quantity; i++) { yield return new SwDmSolidBody(m_Part); } } } - public string Name + public string Name { - get => CutListItem.Name; - set => CutListItem.Name = value; + get => CutListItem.Name; + set => CutListItem.Name = value; } public ISwDmCustomPropertiesCollection Properties => m_Properties.Value; public CutListStatus_e Status { - get + get { if (m_Part.IsVersionNewerOrEqual(SwDmVersion_e.Sw2021)) { @@ -112,20 +112,20 @@ public CutListStatus_e Status throw new Exception("Failed to extract the BOM status. Save document in SW 2021 or newer"); } } - else + else { throw new NotSupportedException("This API is available in SW 2021 or newer"); } } } - public CutListType_e Type + public CutListType_e Type { - get + get { if (m_Part.IsVersionNewerOrEqual(SwDmVersion_e.Sw2021)) { - switch (((ISwDMCutListItem4)CutListItem).CutlistType) + switch (((ISwDMCutListItem4)CutListItem).CutlistType) { case swDMCutListType_e.swDMCutListType_SolidBody: return CutListType_e.SolidBody; @@ -140,7 +140,7 @@ public CutListType_e Type throw new NotSupportedException("Unrecognized cut-list item type"); } } - else + else { throw new NotSupportedException("This propery is only supported in SOLIDWORKS 2021 or newer"); } diff --git a/src/SwDocumentManager/Features/SwDmCutListItemCollection.cs b/src/SwDocumentManager/Features/SwDmCutListItemCollection.cs index bafc545a..347a0717 100644 --- a/src/SwDocumentManager/Features/SwDmCutListItemCollection.cs +++ b/src/SwDocumentManager/Features/SwDmCutListItemCollection.cs @@ -25,18 +25,18 @@ internal class SwDmCutListItemCollection : IXCutListItemRepository { #region Not Supported - public event CutListRebuildDelegate CutListRebuild + public event CutListRebuildDelegate CutListRebuild { add => throw new NotSupportedException(); remove => throw new NotSupportedException(); } public T PreCreate() where T : IXCutListItem => throw new NotSupportedException(); - #endregion + #endregion Not Supported private readonly ISwDmPartConfiguration m_Conf; private readonly SwDmPart m_Part; - internal SwDmCutListItemCollection(ISwDmPartConfiguration conf, SwDmPart part) + internal SwDmCutListItemCollection(ISwDmPartConfiguration conf, SwDmPart part) { m_Conf = conf; m_Part = part; @@ -74,7 +74,7 @@ public bool TryGet(string name, out IXCutListItem ent) public IEnumerable Filter(bool reverseOrder, params RepositoryFilterQuery[] filters) => RepositoryHelper.FilterDefault(this, filters, reverseOrder); - private IEnumerable IterateCutLists() + private IEnumerable IterateCutLists() { object[] cutListItems = null; diff --git a/src/SwDocumentManager/Geometry/SwDmBody.cs b/src/SwDocumentManager/Geometry/SwDmBody.cs index 4f3fab72..9d05c51b 100644 --- a/src/SwDocumentManager/Geometry/SwDmBody.cs +++ b/src/SwDocumentManager/Geometry/SwDmBody.cs @@ -38,7 +38,7 @@ internal abstract class SwDmBody : SwDmSelObject, ISwDmBody public IXMemoryBody Copy() => throw new NotSupportedException(); public void Transform(TransformMatrix transform) => throw new NotSupportedException(); public IXMaterial Material { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } - #endregion + #endregion Not Supported public SwDmBody(SwDmPart part) : base(null, part.OwnerApplication, part) { diff --git a/src/SwDocumentManager/SwDmApplication.cs b/src/SwDocumentManager/SwDmApplication.cs index 6992a533..66e1fc16 100644 --- a/src/SwDocumentManager/SwDmApplication.cs +++ b/src/SwDocumentManager/SwDmApplication.cs @@ -54,14 +54,14 @@ internal class SwDmApplication : ISwDmApplication public IXObjectTracker CreateObjectTracker(string name) => throw new NotSupportedException(); public IXApplicationOptions Options => throw new NotSupportedException(); public IXMaterialsDatabaseRepository MaterialDatabases => throw new NotSupportedException(); - #endregion + #endregion Not Supported IXDocumentRepository IXApplication.Documents => Documents; IXVersion IXApplication.Version { get => Version; - set => throw new Exception("This property is read-only"); + set => throw new Exception("This property is read-only"); } public ISwDmVersion Version => SwDmApplicationFactory.CreateVersion((SwDmVersion_e)SwDocMgr.GetLatestSupportedFileVersion()); @@ -72,26 +72,26 @@ IXVersion IXApplication.Version public ISwDMApplication SwDocMgr => m_Creator.Element; - public SecureString LicenseKey + public SecureString LicenseKey { - get + get { if (!IsCommitted) { return m_Creator.CachedProperties.Get(); } - else + else { throw new NotSupportedException("This property is only available on creation of application"); } } - set + set { if (!IsCommitted) { m_Creator.CachedProperties.Set(value); } - else + else { throw new NotSupportedException(""); } @@ -103,7 +103,7 @@ public SecureString LicenseKey private readonly IElementCreator m_Creator; - internal SwDmApplication(ISwDMApplication dmApp, bool isCreated) + internal SwDmApplication(ISwDMApplication dmApp, bool isCreated) { m_Creator = new ElementCreator(CreateApplication, dmApp, isCreated); Documents = new SwDmDocumentCollection(this); @@ -155,13 +155,13 @@ public void Dispose() } } - public void Commit(CancellationToken cancellationToken) + public void Commit(CancellationToken cancellationToken) => m_Creator.Create(cancellationToken); } public static class SwDmApplicationExtension { - public static bool IsVersionNewerOrEqual(this ISwDmApplication app, SwDmVersion_e version) + public static bool IsVersionNewerOrEqual(this ISwDmApplication app, SwDmVersion_e version) => app.Version.IsVersionNewerOrEqual(version); } } diff --git a/src/SwDocumentManager/SwDmObject.cs b/src/SwDocumentManager/SwDmObject.cs index 307556f3..2aa4da54 100644 --- a/src/SwDocumentManager/SwDmObject.cs +++ b/src/SwDocumentManager/SwDmObject.cs @@ -25,14 +25,14 @@ public interface ISwDmObject : IXObject internal class SwDmObject : ISwDmObject { - #region NotSuppoted + #region NotSupported public virtual bool IsAlive => throw new NotSupportedException(); public virtual void Serialize(Stream stream) => throw new NotSupportedException(); - #endregion + #endregion NotSupported IXApplication IXObject.OwnerApplication => OwnerApplication; IXDocument IXObject.OwnerDocument => OwnerDocument; @@ -62,14 +62,14 @@ public virtual bool Equals(IXObject other) { return (other as ISwDmObject).Dispatch == Dispatch; } - else + else { return false; } } } - public static class SwDmObjectFactory + public static class SwDmObjectFactory { internal static TObj FromDispatch(object disp, SwDmDocument doc) where TObj : ISwDmObject @@ -79,10 +79,10 @@ internal static TObj FromDispatch(object disp, SwDmDocument doc) private static ISwDmObject FromDispatch(object disp, SwDmDocument doc, SwDmApplication app) { - switch (disp) + switch (disp) { case ISwDMConfiguration conf: - switch (doc) + switch (doc) { case SwDmAssembly assm: return new SwDmAssemblyConfiguration(conf, assm); @@ -99,7 +99,7 @@ private static ISwDmObject FromDispatch(object disp, SwDmDocument doc, SwDmAppli case ISwDMComponent comp: var ext = Path.GetExtension(((ISwDMComponent6)comp).PathName); - switch (ext.ToLower()) + switch (ext.ToLower()) { case ".sldprt": return new SwDmPartComponent((SwDmAssembly)doc, comp); diff --git a/src/SwDocumentManager/SwDmSelObject.cs b/src/SwDocumentManager/SwDmSelObject.cs index 5cb1d357..dbc8b84b 100644 --- a/src/SwDocumentManager/SwDmSelObject.cs +++ b/src/SwDocumentManager/SwDmSelObject.cs @@ -14,20 +14,20 @@ namespace Xarial.XCad.SwDocumentManager { - public interface ISwDmSelObject : ISwDmObject, IXSelObject + public interface ISwDmSelObject : ISwDmObject, IXSelObject { - + } internal class SwDmSelObject : SwDmObject, ISwDmSelObject { #region Not Supported - + public virtual void Commit(CancellationToken cancellationToken) => throw new NotSupportedException(); public void Delete() => throw new NotSupportedException(); public void Select(bool append) => throw new NotSupportedException(); - #endregion + #endregion Not Supported public SwDmSelObject(object disp, SwDmApplication ownerApp, SwDmDocument ownerDoc) : base(disp, ownerApp, ownerDoc) { diff --git a/src/Toolkit/Data/ComStorage.cs b/src/Toolkit/Data/ComStorage.cs index ec31ec57..ee31f977 100644 --- a/src/Toolkit/Data/ComStorage.cs +++ b/src/Toolkit/Data/ComStorage.cs @@ -7,12 +7,10 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; -using System.Text; using Xarial.XCad.Data; namespace Xarial.XCad.Toolkit.Data @@ -92,7 +90,7 @@ public interface IComStorage void Stat(out System.Runtime.InteropServices.ComTypes.STATSTG pstatstg, uint grfStatFlag); } - #endregion + #endregion WinAPI /// /// Represents the implementation of Storage in .NET @@ -108,12 +106,12 @@ public ComStorage(IComStorage storage, bool writable) : this(writable) Load(storage); } - protected ComStorage(bool writable) + protected ComStorage(bool writable) { m_IsWritable = writable; } - protected void Load(IComStorage storage) + protected void Load(IComStorage storage) { if (storage == null) { diff --git a/src/Toolkit/Data/StreamWrapper.cs b/src/Toolkit/Data/StreamWrapper.cs index 665a0100..d7efdb9a 100644 --- a/src/Toolkit/Data/StreamWrapper.cs +++ b/src/Toolkit/Data/StreamWrapper.cs @@ -6,10 +6,8 @@ //********************************************************************* using System; -using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices.ComTypes; -using System.Text; namespace Xarial.XCad.Toolkit.Data { @@ -27,7 +25,7 @@ public void Clone(out IStream ppstm) public void Commit(int grfCommitFlags) => m_Stream.Flush(); - + public void Read(byte[] pv, int cb, IntPtr pcbRead) => System.Runtime.InteropServices.Marshal.WriteInt64(pcbRead, m_Stream.Read(pv, 0, cb)); @@ -107,6 +105,6 @@ public void Revert() public void UnlockRegion(long libOffset, long cb, int dwLockType) => throw new NotImplementedException(); - #endregion + #endregion NotSupported } } diff --git a/src/Toolkit/Utils/ShellThumbnail.cs b/src/Toolkit/Utils/ShellThumbnail.cs index ab52d67b..cef3ec3e 100644 --- a/src/Toolkit/Utils/ShellThumbnail.cs +++ b/src/Toolkit/Utils/ShellThumbnail.cs @@ -6,19 +6,15 @@ //********************************************************************* using System; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; namespace Xarial.XCad.Toolkit.Utils { /// /// Represents the thumbnai /// - public interface IShellThumbnail : IDisposable + public interface IShellThumbnail : IDisposable { /// /// hBitmap of the thumbnail image @@ -70,9 +66,9 @@ public SIZE(int cx, int cy) [return: MarshalAs(UnmanagedType.Bool)] private static extern bool DeleteObject([In] IntPtr hObject); - #endregion + #endregion Windows API - public ShellThumbnail(string filePath, int width = 1024, int height = 1024) + public ShellThumbnail(string filePath, int width = 1024, int height = 1024) { if (!File.Exists(filePath)) { @@ -99,7 +95,7 @@ public void Dispose() DeleteObject(BitmapHandle); } } - catch + catch { } } diff --git a/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/MainSwAddIn.cs b/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/MainSwAddIn.cs index 977f2031..28ebf7d4 100644 --- a/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/MainSwAddIn.cs +++ b/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/MainSwAddIn.cs @@ -72,7 +72,7 @@ public override void OnConnect() { #if (_AddCommandManager_ || _AddPropertyPage_ || _AddMacroFeature_) //creating command manager based on enum - CommandManager.AddCommandGroup().CommandClick += OnButtonClick; + CommandManager.AddCommandGroup``().CommandClick += OnButtonClick; #if _AddPropertyPage_ //property page will be created based on the data model and this model will be automatically bound (two-ways) m_BoxPage = CreatePage(); diff --git a/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/Properties/Resources.Designer.cs b/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/Properties/Resources.Designer.cs index 45ec4643..6842241a 100644 --- a/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/Properties/Resources.Designer.cs +++ b/templates/SwAddIn/__TemplateNamePlaceholderSwAddIn__/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -6,12 +6,13 @@ // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- -namespace __TemplateNamePlaceholderSwAddIn__.Sw.Properties { +namespace __TemplateNamePlaceholderSwAddIn__.Sw.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,99 +23,119 @@ namespace __TemplateNamePlaceholderSwAddIn__.Sw.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("__TemplateNamePlaceholderSwAddIn__.Sw.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap about_icon { - get { + internal static System.Drawing.Bitmap about_icon + { + get + { object obj = ResourceManager.GetObject("about_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap box_icon { - get { + internal static System.Drawing.Bitmap box_icon + { + get + { object obj = ResourceManager.GetObject("box-icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap height_icon { - get { + internal static System.Drawing.Bitmap height_icon + { + get + { object obj = ResourceManager.GetObject("height_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap length_icon { - get { + internal static System.Drawing.Bitmap length_icon + { + get + { object obj = ResourceManager.GetObject("length_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap parametric_box_icon { - get { + internal static System.Drawing.Bitmap parametric_box_icon + { + get + { object obj = ResourceManager.GetObject("parametric-box-icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap width_icon { - get { + internal static System.Drawing.Bitmap width_icon + { + get + { object obj = ResourceManager.GetObject("width_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } diff --git a/templates/SwMacroFeatureAddIn/__TemplateNamePlaceholderSwMacroFeature__/Properties/Resources.Designer.cs b/templates/SwMacroFeatureAddIn/__TemplateNamePlaceholderSwMacroFeature__/Properties/Resources.Designer.cs index a7294ff5..a0ced8c0 100644 --- a/templates/SwMacroFeatureAddIn/__TemplateNamePlaceholderSwMacroFeature__/Properties/Resources.Designer.cs +++ b/templates/SwMacroFeatureAddIn/__TemplateNamePlaceholderSwMacroFeature__/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -6,12 +6,13 @@ // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // -//------------------------------------------------------------------------------ +//--------------------------------------------------------------------------- -namespace __TemplateNamePlaceholderSwMacroFeature__.Sw.Properties { +namespace __TemplateNamePlaceholderSwMacroFeature__.Sw.Properties +{ using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -22,59 +23,71 @@ namespace __TemplateNamePlaceholderSwMacroFeature__.Sw.Properties { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - + internal class Resources + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { + internal Resources() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("__TemplateNamePlaceholderSwMacroFeature__.Sw.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap cylinder_icon { - get { + internal static System.Drawing.Bitmap cylinder_icon + { + get + { object obj = ResourceManager.GetObject("cylinder_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap height_icon { - get { + internal static System.Drawing.Bitmap height_icon + { + get + { object obj = ResourceManager.GetObject("height_icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } diff --git a/tests/SolidWorks.Tests/CommandManagerTest.cs b/tests/SolidWorks.Tests/CommandManagerTest.cs index d9eaecca..237040da 100644 --- a/tests/SolidWorks.Tests/CommandManagerTest.cs +++ b/tests/SolidWorks.Tests/CommandManagerTest.cs @@ -39,7 +39,7 @@ public enum CommandsMock_2 Cmd1, } - #endregion + #endregion Mocks private SwAddInEx CreateMockCommandGroup(string rev, Dictionary> grps) { @@ -105,7 +105,7 @@ public void AddCommandGroupBaseTest() //var cmds1 = new Dictionary>(); //var addInMock1 = CreateMockCommandGroup("23.0.0", cmds1); //var grp1 = addInMock1.CommandManager.AddCommandGroup(); - + //var cmds2 = new Dictionary>(); //var addInMock2 = CreateMockCommandGroup("24.0.0", cmds2); //var grp2 = addInMock2.CommandManager.AddCommandGroup(); diff --git a/tests/Toolkit.Tests/PageBuilderTests.cs b/tests/Toolkit.Tests/PageBuilderTests.cs index 56857e10..e0fa5485 100644 --- a/tests/Toolkit.Tests/PageBuilderTests.cs +++ b/tests/Toolkit.Tests/PageBuilderTests.cs @@ -103,7 +103,7 @@ protected override ControlMock Create(IGroup parentGroup, IAttributeSet atts, IM numberOfUsedIds = m_IdRangeSelector.Invoke(); } - switch (parentGroup) + switch (parentGroup) { case PageMock page: var ctrl = new ControlMock(atts.Id, atts.Tag); @@ -131,7 +131,7 @@ public class PageBuilderMock : Xarial.XCad.Utils.PageBuilder.PageBuilderBase idRangeSelector = null) : base(new Moq.Mock().Object, - new TypeDataBinder(new Mock().Object), + new TypeDataBinder(new Mock().Object), new PageMockConstructor(), new ControlMockConstructor(idRangeSelector)) { @@ -145,7 +145,7 @@ public class DataModel1 public string Prp3 { get; set; } } - #endregion + #endregion Mocks [Test] public void CreatePageIdsTest() @@ -163,7 +163,7 @@ public void CreatePageIdsTest() public void CreatePageIdsRangeTest() { int ctrlIndex = 0; - var builder = new PageBuilderMock(()=> + var builder = new PageBuilderMock(() => { int idRange = 1; @@ -171,7 +171,7 @@ public void CreatePageIdsRangeTest() { idRange = 3; } - + ctrlIndex++; return idRange; }); diff --git a/tests/Toolkit.Tests/TypeDataBinderTests.cs b/tests/Toolkit.Tests/TypeDataBinderTests.cs index 7998489e..f911ac0e 100644 --- a/tests/Toolkit.Tests/TypeDataBinderTests.cs +++ b/tests/Toolkit.Tests/TypeDataBinderTests.cs @@ -45,7 +45,7 @@ public class DataModelMock3 public DataModelMock2 Group2 { get; set; } } - #endregion + #endregion Mocks [Test] public void TestBindSimple() @@ -71,7 +71,7 @@ public void TestBindSimple() var d3 = (bindings.ElementAt(2) as PropertyInfoBinding).ControlDescriptor; Assert.AreEqual(3, bindings.Count()); - + Assert.AreEqual("Field1", d1.Name); Assert.AreEqual(typeof(string), d1.DataType); @@ -212,7 +212,7 @@ public void TestBindIds() IEnumerable bindings; IPage page = null; - + IRawDependencyGroup dependencies; binder.Bind(