make property
({T Function<T extends Adornment>(Make cls, [Iterable? initializers]) $1, T Function<T extends Panel>(MakeOptions cls, [Iterable? initializers]) $2, T Function<T extends GraphObject>(String cls, [Iterable? initializers]) $3, dynamic Function<CT extends ConstructorType<CT> >(CT cls, [Iterable? initializers]) $4})
get
make
Overload accessor: $1, $2, $3, $4
Implementation
static ({
/// This static function builds an object given its class and additional arguments
/// providing initial properties or GraphObjects that become Panel elements.
///
/// The first argument must be the class type or the name of a class or the name of a predefined kind of Panel.
/// This function will construct a new instance of that type and use the rest of the arguments to initialize the object.
/// The first argument cannot be a regular Object (such as a GraphObject) that you are trying to initialize;
/// for that you can call #setProperties or Diagram#setProperties, although that would
/// be less efficient than setting properties directly.
///
/// If an initializer argument is an enumerated value, this tries to set the property that seems most appropriate.
///
/// If an initializer argument is a string, this sets a particular property depending on the type of object being built.
/// - If the object is a TextBlock, it sets TextBlock#text.
/// - If the object is a Shape, it sets Shape#figure.
/// - If the object is a Picture, it sets Picture#source.
/// - If the object is a Panel (including Part, Node, or Group), it sets Panel#type.
///
/// If an initializer argument is a particular kind of object, this can add that object to the object being built.
/// - GraphObjects and RowColumnDefinitions can only be added as elements of Panels.
/// - Bindings can only be applied to GraphObjects and RowColumnDefinitions.
/// - PathFigures can only be added to Geometry objects.
/// - PathSegments can only be added to PathFigure objects.
/// - Regular JavaScript Arrays provide a sequence of initializer arguments.
/// - Regular JavaScript objects provide property/value pairs that are set on the object being built.
///
/// When the initializer argument is a plain JavaScript Object, there are several ways that that object's properties are applied.
/// If the property name is a string with a period inside it, this has a special meaning if the object is a Panel or a Diagram.
/// At the current time only a single period separator is valid syntax for a property string, and it is valid only on Panels and Diagrams.
///
/// For Panels, the substring before the period is used as the name passed to Panel#findObject
/// to get the actual object on which to set the property, which is the substring after the period.
/// This is normally useful only on the predefined Panels:
/// - a **"Button"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
/// - a **"TreeExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"SubGraphExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"ContextMenuButton"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
///
/// But you can define your own names that GraphObject.make can build by calling the static function GraphObject.defineBuilder.
///
/// For Diagrams, the substring before the period is used as the name of a property on the Diagram itself
/// to get the actual object on which to set the property.
/// As a special case, if such a property value does not exist on the Diagram, it looks on the Diagram#toolManager.
/// See some examples below.
///
/// Also for Diagrams, and only for Diagrams, if the property name is the name of a DiagramEvent,
/// the property value must be a DiagramEvent listener function, and Diagram#addDiagramListener is called
/// using that DiagramEvent name and that function.
/// Note that all DiagramEvent names are capitalized and do not contain any periods,
/// so there cannot be any name conflicts with any properties on Diagram or ToolManager.
/// Although you can register multiple listeners for the same DiagramEvent names, due to JavaScript limitations
/// those need to be declared using separate JavaScript objects, because JavaScript does not permit duplicate property names
/// in an Object literal.
///
/// Furthermore for Diagrams, if the property name is `"Changed"` or `"ModelChanged"`,
/// the property value must be a ChangedEvent listener function, which is called with a ChangedEvent argument.
/// When the property name is `"Changed"`, it calls Diagram#addChangedListener,
/// notifying about changes to the Diagram or its Layers or GraphObjects.
/// When the property name is `"ModelChanged"`, it calls Model#addChangedListener on the Diagram#model,
/// resulting in notifications about changes to the Model or its data.
/// This is handy because the Diagram#model property setter will automatically call
/// Model#removeChangedListener on the old model, thereby avoiding any overhead if there are any
/// more changes to the old model and also avoiding a reference to the listener which might cause garbage collection retention.
/// It also will call Model#addChangedListener on the new model, helping implement the same behavior with the new model.
///
/// If the property name is a number and if the object being constructed is a Brush,
/// the number and value are added to the Brush by calling Brush#addColorStop.
///
/// Otherwise the property name is used as a regular property name on the object being built.
/// This tries to do some property name and value checking:
/// when a property is not defined on the object being built, it will signal an error.
/// Many typos can be found this way that would be ignored by JavaScript code.
///
/// If the property name begins with an underscore, this will not complain about the property being undefined.
/// Not only is that underscore property set on the object being built, but calls to #copy
/// will also copy the values of such named properties to the new objects.
///
/// In the samples and in the intro pages this function is called using the alias `$`.
/// You can use a different short name if you would like to preserve the use of `$` for another JavaScript library.
/// ```js
/// var $ = go.GraphObject.make;
///
/// var diagram =
/// $(go.Diagram, "myDiagramDiv",
/// {
/// // don't initialize some properties until after a new model has been loaded
/// "InitialLayoutCompleted": loadDiagramProperties,
/// allowZoom: false, // don't allow the user to change the diagram's scale
/// "grid.visible": true, // display a background grid for the whole diagram
/// "grid.gridCellSize": new go.Size(20, 20),
/// // allow double-click in background to create a new node
/// "clickCreatingTool.archetypeNodeData": { text: "Node" },
/// // allow Ctrl-G to call the groupSelection command
/// "commandHandler.archetypeGroupData":
/// { text: "Group", isGroup: true, color: "blue" },
/// "toolManager.hoverDelay": 100, // how quickly tooltips are shown
/// // mouse wheel zooms instead of scrolls
/// "toolManager.mouseWheelBehavior": go.ToolManager.WheelZoom,
/// "commandHandler.copiesTree": true, // for the copy command
/// "commandHandler.deletesTree": true, // for the delete command
/// "draggingTool.dragsTree": true, // dragging for both move and copy
/// "draggingTool.isGridSnapEnabled": true,
/// layout: $(go.TreeLayout,
/// { angle: 90, sorting: go.TreeLayout.SortingAscending })
/// });
///
/// diagram.nodeTemplate =
/// $(go.Node, "Auto", // or go.Panel.Auto
/// new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
/// $(go.Shape, "RoundedRectangle",
/// {
/// fill: $(go.Brush, "Linear", { 0: "#FEC901", 1: "#FEA200" }),
/// stroke: "gray",
/// strokeWidth: 2,
/// strokeDashArray: [3, 3]
/// }),
/// $(go.TextBlock,
/// { margin: 5, font: "bold 12pt sans-serif" },
/// new go.Binding("text", "key"))
/// );
/// ```
/// <p class="boxread">
/// See <a href="../../intro/buildingObjects.html">the Introduction page on building objects</a>
/// for usage information and examples of GraphObject.make.
T Function<T extends _i3.Adornment>(
_i3.Make cls, [
_i2.Iterable<_i2.dynamic>? initializers,
]) $1,
/// This static function builds an object given its class and additional arguments
/// providing initial properties or GraphObjects that become Panel elements.
///
/// The first argument must be the class type or the name of a class or the name of a predefined kind of Panel.
/// This function will construct a new instance of that type and use the rest of the arguments to initialize the object.
/// The first argument cannot be a regular Object (such as a GraphObject) that you are trying to initialize;
/// for that you can call #setProperties or Diagram#setProperties, although that would
/// be less efficient than setting properties directly.
///
/// If an initializer argument is an enumerated value, this tries to set the property that seems most appropriate.
///
/// If an initializer argument is a string, this sets a particular property depending on the type of object being built.
/// - If the object is a TextBlock, it sets TextBlock#text.
/// - If the object is a Shape, it sets Shape#figure.
/// - If the object is a Picture, it sets Picture#source.
/// - If the object is a Panel (including Part, Node, or Group), it sets Panel#type.
///
/// If an initializer argument is a particular kind of object, this can add that object to the object being built.
/// - GraphObjects and RowColumnDefinitions can only be added as elements of Panels.
/// - Bindings can only be applied to GraphObjects and RowColumnDefinitions.
/// - PathFigures can only be added to Geometry objects.
/// - PathSegments can only be added to PathFigure objects.
/// - Regular JavaScript Arrays provide a sequence of initializer arguments.
/// - Regular JavaScript objects provide property/value pairs that are set on the object being built.
///
/// When the initializer argument is a plain JavaScript Object, there are several ways that that object's properties are applied.
/// If the property name is a string with a period inside it, this has a special meaning if the object is a Panel or a Diagram.
/// At the current time only a single period separator is valid syntax for a property string, and it is valid only on Panels and Diagrams.
///
/// For Panels, the substring before the period is used as the name passed to Panel#findObject
/// to get the actual object on which to set the property, which is the substring after the period.
/// This is normally useful only on the predefined Panels:
/// - a **"Button"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
/// - a **"TreeExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"SubGraphExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"ContextMenuButton"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
///
/// But you can define your own names that GraphObject.make can build by calling the static function GraphObject.defineBuilder.
///
/// For Diagrams, the substring before the period is used as the name of a property on the Diagram itself
/// to get the actual object on which to set the property.
/// As a special case, if such a property value does not exist on the Diagram, it looks on the Diagram#toolManager.
/// See some examples below.
///
/// Also for Diagrams, and only for Diagrams, if the property name is the name of a DiagramEvent,
/// the property value must be a DiagramEvent listener function, and Diagram#addDiagramListener is called
/// using that DiagramEvent name and that function.
/// Note that all DiagramEvent names are capitalized and do not contain any periods,
/// so there cannot be any name conflicts with any properties on Diagram or ToolManager.
/// Although you can register multiple listeners for the same DiagramEvent names, due to JavaScript limitations
/// those need to be declared using separate JavaScript objects, because JavaScript does not permit duplicate property names
/// in an Object literal.
///
/// Furthermore for Diagrams, if the property name is `"Changed"` or `"ModelChanged"`,
/// the property value must be a ChangedEvent listener function, which is called with a ChangedEvent argument.
/// When the property name is `"Changed"`, it calls Diagram#addChangedListener,
/// notifying about changes to the Diagram or its Layers or GraphObjects.
/// When the property name is `"ModelChanged"`, it calls Model#addChangedListener on the Diagram#model,
/// resulting in notifications about changes to the Model or its data.
/// This is handy because the Diagram#model property setter will automatically call
/// Model#removeChangedListener on the old model, thereby avoiding any overhead if there are any
/// more changes to the old model and also avoiding a reference to the listener which might cause garbage collection retention.
/// It also will call Model#addChangedListener on the new model, helping implement the same behavior with the new model.
///
/// If the property name is a number and if the object being constructed is a Brush,
/// the number and value are added to the Brush by calling Brush#addColorStop.
///
/// Otherwise the property name is used as a regular property name on the object being built.
/// This tries to do some property name and value checking:
/// when a property is not defined on the object being built, it will signal an error.
/// Many typos can be found this way that would be ignored by JavaScript code.
///
/// If the property name begins with an underscore, this will not complain about the property being undefined.
/// Not only is that underscore property set on the object being built, but calls to #copy
/// will also copy the values of such named properties to the new objects.
///
/// In the samples and in the intro pages this function is called using the alias `$`.
/// You can use a different short name if you would like to preserve the use of `$` for another JavaScript library.
/// ```js
/// var $ = go.GraphObject.make;
///
/// var diagram =
/// $(go.Diagram, "myDiagramDiv",
/// {
/// // don't initialize some properties until after a new model has been loaded
/// "InitialLayoutCompleted": loadDiagramProperties,
/// allowZoom: false, // don't allow the user to change the diagram's scale
/// "grid.visible": true, // display a background grid for the whole diagram
/// "grid.gridCellSize": new go.Size(20, 20),
/// // allow double-click in background to create a new node
/// "clickCreatingTool.archetypeNodeData": { text: "Node" },
/// // allow Ctrl-G to call the groupSelection command
/// "commandHandler.archetypeGroupData":
/// { text: "Group", isGroup: true, color: "blue" },
/// "toolManager.hoverDelay": 100, // how quickly tooltips are shown
/// // mouse wheel zooms instead of scrolls
/// "toolManager.mouseWheelBehavior": go.ToolManager.WheelZoom,
/// "commandHandler.copiesTree": true, // for the copy command
/// "commandHandler.deletesTree": true, // for the delete command
/// "draggingTool.dragsTree": true, // dragging for both move and copy
/// "draggingTool.isGridSnapEnabled": true,
/// layout: $(go.TreeLayout,
/// { angle: 90, sorting: go.TreeLayout.SortingAscending })
/// });
///
/// diagram.nodeTemplate =
/// $(go.Node, "Auto", // or go.Panel.Auto
/// new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
/// $(go.Shape, "RoundedRectangle",
/// {
/// fill: $(go.Brush, "Linear", { 0: "#FEC901", 1: "#FEA200" }),
/// stroke: "gray",
/// strokeWidth: 2,
/// strokeDashArray: [3, 3]
/// }),
/// $(go.TextBlock,
/// { margin: 5, font: "bold 12pt sans-serif" },
/// new go.Binding("text", "key"))
/// );
/// ```
/// <p class="boxread">
/// See <a href="../../intro/buildingObjects.html">the Introduction page on building objects</a>
/// for usage information and examples of GraphObject.make.
T Function<T extends _i3.Panel>(
_i3.MakeOptions cls, [
_i2.Iterable<_i2.dynamic>? initializers,
]) $2,
/// This static function builds an object given its class and additional arguments
/// providing initial properties or GraphObjects that become Panel elements.
///
/// The first argument must be the class type or the name of a class or the name of a predefined kind of Panel.
/// This function will construct a new instance of that type and use the rest of the arguments to initialize the object.
/// The first argument cannot be a regular Object (such as a GraphObject) that you are trying to initialize;
/// for that you can call #setProperties or Diagram#setProperties, although that would
/// be less efficient than setting properties directly.
///
/// If an initializer argument is an enumerated value, this tries to set the property that seems most appropriate.
///
/// If an initializer argument is a string, this sets a particular property depending on the type of object being built.
/// - If the object is a TextBlock, it sets TextBlock#text.
/// - If the object is a Shape, it sets Shape#figure.
/// - If the object is a Picture, it sets Picture#source.
/// - If the object is a Panel (including Part, Node, or Group), it sets Panel#type.
///
/// If an initializer argument is a particular kind of object, this can add that object to the object being built.
/// - GraphObjects and RowColumnDefinitions can only be added as elements of Panels.
/// - Bindings can only be applied to GraphObjects and RowColumnDefinitions.
/// - PathFigures can only be added to Geometry objects.
/// - PathSegments can only be added to PathFigure objects.
/// - Regular JavaScript Arrays provide a sequence of initializer arguments.
/// - Regular JavaScript objects provide property/value pairs that are set on the object being built.
///
/// When the initializer argument is a plain JavaScript Object, there are several ways that that object's properties are applied.
/// If the property name is a string with a period inside it, this has a special meaning if the object is a Panel or a Diagram.
/// At the current time only a single period separator is valid syntax for a property string, and it is valid only on Panels and Diagrams.
///
/// For Panels, the substring before the period is used as the name passed to Panel#findObject
/// to get the actual object on which to set the property, which is the substring after the period.
/// This is normally useful only on the predefined Panels:
/// - a **"Button"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
/// - a **"TreeExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"SubGraphExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"ContextMenuButton"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
///
/// But you can define your own names that GraphObject.make can build by calling the static function GraphObject.defineBuilder.
///
/// For Diagrams, the substring before the period is used as the name of a property on the Diagram itself
/// to get the actual object on which to set the property.
/// As a special case, if such a property value does not exist on the Diagram, it looks on the Diagram#toolManager.
/// See some examples below.
///
/// Also for Diagrams, and only for Diagrams, if the property name is the name of a DiagramEvent,
/// the property value must be a DiagramEvent listener function, and Diagram#addDiagramListener is called
/// using that DiagramEvent name and that function.
/// Note that all DiagramEvent names are capitalized and do not contain any periods,
/// so there cannot be any name conflicts with any properties on Diagram or ToolManager.
/// Although you can register multiple listeners for the same DiagramEvent names, due to JavaScript limitations
/// those need to be declared using separate JavaScript objects, because JavaScript does not permit duplicate property names
/// in an Object literal.
///
/// Furthermore for Diagrams, if the property name is `"Changed"` or `"ModelChanged"`,
/// the property value must be a ChangedEvent listener function, which is called with a ChangedEvent argument.
/// When the property name is `"Changed"`, it calls Diagram#addChangedListener,
/// notifying about changes to the Diagram or its Layers or GraphObjects.
/// When the property name is `"ModelChanged"`, it calls Model#addChangedListener on the Diagram#model,
/// resulting in notifications about changes to the Model or its data.
/// This is handy because the Diagram#model property setter will automatically call
/// Model#removeChangedListener on the old model, thereby avoiding any overhead if there are any
/// more changes to the old model and also avoiding a reference to the listener which might cause garbage collection retention.
/// It also will call Model#addChangedListener on the new model, helping implement the same behavior with the new model.
///
/// If the property name is a number and if the object being constructed is a Brush,
/// the number and value are added to the Brush by calling Brush#addColorStop.
///
/// Otherwise the property name is used as a regular property name on the object being built.
/// This tries to do some property name and value checking:
/// when a property is not defined on the object being built, it will signal an error.
/// Many typos can be found this way that would be ignored by JavaScript code.
///
/// If the property name begins with an underscore, this will not complain about the property being undefined.
/// Not only is that underscore property set on the object being built, but calls to #copy
/// will also copy the values of such named properties to the new objects.
///
/// In the samples and in the intro pages this function is called using the alias `$`.
/// You can use a different short name if you would like to preserve the use of `$` for another JavaScript library.
/// ```js
/// var $ = go.GraphObject.make;
///
/// var diagram =
/// $(go.Diagram, "myDiagramDiv",
/// {
/// // don't initialize some properties until after a new model has been loaded
/// "InitialLayoutCompleted": loadDiagramProperties,
/// allowZoom: false, // don't allow the user to change the diagram's scale
/// "grid.visible": true, // display a background grid for the whole diagram
/// "grid.gridCellSize": new go.Size(20, 20),
/// // allow double-click in background to create a new node
/// "clickCreatingTool.archetypeNodeData": { text: "Node" },
/// // allow Ctrl-G to call the groupSelection command
/// "commandHandler.archetypeGroupData":
/// { text: "Group", isGroup: true, color: "blue" },
/// "toolManager.hoverDelay": 100, // how quickly tooltips are shown
/// // mouse wheel zooms instead of scrolls
/// "toolManager.mouseWheelBehavior": go.ToolManager.WheelZoom,
/// "commandHandler.copiesTree": true, // for the copy command
/// "commandHandler.deletesTree": true, // for the delete command
/// "draggingTool.dragsTree": true, // dragging for both move and copy
/// "draggingTool.isGridSnapEnabled": true,
/// layout: $(go.TreeLayout,
/// { angle: 90, sorting: go.TreeLayout.SortingAscending })
/// });
///
/// diagram.nodeTemplate =
/// $(go.Node, "Auto", // or go.Panel.Auto
/// new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
/// $(go.Shape, "RoundedRectangle",
/// {
/// fill: $(go.Brush, "Linear", { 0: "#FEC901", 1: "#FEA200" }),
/// stroke: "gray",
/// strokeWidth: 2,
/// strokeDashArray: [3, 3]
/// }),
/// $(go.TextBlock,
/// { margin: 5, font: "bold 12pt sans-serif" },
/// new go.Binding("text", "key"))
/// );
/// ```
/// <p class="boxread">
/// See <a href="../../intro/buildingObjects.html">the Introduction page on building objects</a>
/// for usage information and examples of GraphObject.make.
T Function<T extends _i3.GraphObject>(
_i2.String cls, [
_i2.Iterable<_i2.dynamic>? initializers,
]) $3,
/// This static function builds an object given its class and additional arguments
/// providing initial properties or GraphObjects that become Panel elements.
///
/// The first argument must be the class type or the name of a class or the name of a predefined kind of Panel.
/// This function will construct a new instance of that type and use the rest of the arguments to initialize the object.
/// The first argument cannot be a regular Object (such as a GraphObject) that you are trying to initialize;
/// for that you can call #setProperties or Diagram#setProperties, although that would
/// be less efficient than setting properties directly.
///
/// If an initializer argument is an enumerated value, this tries to set the property that seems most appropriate.
///
/// If an initializer argument is a string, this sets a particular property depending on the type of object being built.
/// - If the object is a TextBlock, it sets TextBlock#text.
/// - If the object is a Shape, it sets Shape#figure.
/// - If the object is a Picture, it sets Picture#source.
/// - If the object is a Panel (including Part, Node, or Group), it sets Panel#type.
///
/// If an initializer argument is a particular kind of object, this can add that object to the object being built.
/// - GraphObjects and RowColumnDefinitions can only be added as elements of Panels.
/// - Bindings can only be applied to GraphObjects and RowColumnDefinitions.
/// - PathFigures can only be added to Geometry objects.
/// - PathSegments can only be added to PathFigure objects.
/// - Regular JavaScript Arrays provide a sequence of initializer arguments.
/// - Regular JavaScript objects provide property/value pairs that are set on the object being built.
///
/// When the initializer argument is a plain JavaScript Object, there are several ways that that object's properties are applied.
/// If the property name is a string with a period inside it, this has a special meaning if the object is a Panel or a Diagram.
/// At the current time only a single period separator is valid syntax for a property string, and it is valid only on Panels and Diagrams.
///
/// For Panels, the substring before the period is used as the name passed to Panel#findObject
/// to get the actual object on which to set the property, which is the substring after the period.
/// This is normally useful only on the predefined Panels:
/// - a **"Button"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
/// - a **"TreeExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"SubGraphExpanderButton"** has a "ButtonBorder" Shape and a "ButtonIcon" Shape that is the plus-or-minus sign.
/// - a **"ContextMenuButton"** has a Shape named "ButtonBorder" surrounding the content of the Panel.
///
/// But you can define your own names that GraphObject.make can build by calling the static function GraphObject.defineBuilder.
///
/// For Diagrams, the substring before the period is used as the name of a property on the Diagram itself
/// to get the actual object on which to set the property.
/// As a special case, if such a property value does not exist on the Diagram, it looks on the Diagram#toolManager.
/// See some examples below.
///
/// Also for Diagrams, and only for Diagrams, if the property name is the name of a DiagramEvent,
/// the property value must be a DiagramEvent listener function, and Diagram#addDiagramListener is called
/// using that DiagramEvent name and that function.
/// Note that all DiagramEvent names are capitalized and do not contain any periods,
/// so there cannot be any name conflicts with any properties on Diagram or ToolManager.
/// Although you can register multiple listeners for the same DiagramEvent names, due to JavaScript limitations
/// those need to be declared using separate JavaScript objects, because JavaScript does not permit duplicate property names
/// in an Object literal.
///
/// Furthermore for Diagrams, if the property name is `"Changed"` or `"ModelChanged"`,
/// the property value must be a ChangedEvent listener function, which is called with a ChangedEvent argument.
/// When the property name is `"Changed"`, it calls Diagram#addChangedListener,
/// notifying about changes to the Diagram or its Layers or GraphObjects.
/// When the property name is `"ModelChanged"`, it calls Model#addChangedListener on the Diagram#model,
/// resulting in notifications about changes to the Model or its data.
/// This is handy because the Diagram#model property setter will automatically call
/// Model#removeChangedListener on the old model, thereby avoiding any overhead if there are any
/// more changes to the old model and also avoiding a reference to the listener which might cause garbage collection retention.
/// It also will call Model#addChangedListener on the new model, helping implement the same behavior with the new model.
///
/// If the property name is a number and if the object being constructed is a Brush,
/// the number and value are added to the Brush by calling Brush#addColorStop.
///
/// Otherwise the property name is used as a regular property name on the object being built.
/// This tries to do some property name and value checking:
/// when a property is not defined on the object being built, it will signal an error.
/// Many typos can be found this way that would be ignored by JavaScript code.
///
/// If the property name begins with an underscore, this will not complain about the property being undefined.
/// Not only is that underscore property set on the object being built, but calls to #copy
/// will also copy the values of such named properties to the new objects.
///
/// In the samples and in the intro pages this function is called using the alias `$`.
/// You can use a different short name if you would like to preserve the use of `$` for another JavaScript library.
/// ```js
/// var $ = go.GraphObject.make;
///
/// var diagram =
/// $(go.Diagram, "myDiagramDiv",
/// {
/// // don't initialize some properties until after a new model has been loaded
/// "InitialLayoutCompleted": loadDiagramProperties,
/// allowZoom: false, // don't allow the user to change the diagram's scale
/// "grid.visible": true, // display a background grid for the whole diagram
/// "grid.gridCellSize": new go.Size(20, 20),
/// // allow double-click in background to create a new node
/// "clickCreatingTool.archetypeNodeData": { text: "Node" },
/// // allow Ctrl-G to call the groupSelection command
/// "commandHandler.archetypeGroupData":
/// { text: "Group", isGroup: true, color: "blue" },
/// "toolManager.hoverDelay": 100, // how quickly tooltips are shown
/// // mouse wheel zooms instead of scrolls
/// "toolManager.mouseWheelBehavior": go.ToolManager.WheelZoom,
/// "commandHandler.copiesTree": true, // for the copy command
/// "commandHandler.deletesTree": true, // for the delete command
/// "draggingTool.dragsTree": true, // dragging for both move and copy
/// "draggingTool.isGridSnapEnabled": true,
/// layout: $(go.TreeLayout,
/// { angle: 90, sorting: go.TreeLayout.SortingAscending })
/// });
///
/// diagram.nodeTemplate =
/// $(go.Node, "Auto", // or go.Panel.Auto
/// new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
/// $(go.Shape, "RoundedRectangle",
/// {
/// fill: $(go.Brush, "Linear", { 0: "#FEC901", 1: "#FEA200" }),
/// stroke: "gray",
/// strokeWidth: 2,
/// strokeDashArray: [3, 3]
/// }),
/// $(go.TextBlock,
/// { margin: 5, font: "bold 12pt sans-serif" },
/// new go.Binding("text", "key"))
/// );
/// ```
/// <p class="boxread">
/// See <a href="../../intro/buildingObjects.html">the Introduction page on building objects</a>
/// for usage information and examples of GraphObject.make.
_i2.dynamic Function<CT extends _i3.ConstructorType<CT>>(
CT cls, [
_i2.Iterable<_i2.dynamic>? initializers,
]) $4,
}) get make => (
$1: _make$1,
$2: _make$2,
$3: _make$3,
$4: _make$4,
);