diff --git a/.cliffignore b/.cliffignore new file mode 100644 index 0000000..e69de29 diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 5c0d8fa..4f34058 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -8,6 +8,13 @@ "fable" ], "rollForward": false + }, + "fantomas": { + "version": "7.0.3", + "commands": [ + "fantomas" + ], + "rollForward": false } } } \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..28a25fe --- /dev/null +++ b/.editorconfig @@ -0,0 +1,23 @@ +; EditorConfig helps developers define and maintain consistent +; coding styles between different editors and IDEs. + +; For more visit http://editorconfig.org. +root = true + +; Choose between lf or rf on "end_of_line" property +[*] +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[{*.fs,*.fsx}] +indent_size = 4 +max_line_length=150 +fsharp_max_infix_operator_expression=10 +fsharp_keep_max_number_of_blank_lines=3 +fsharp_max_function_binding_width=10 +fsharp_multiline_block_brackets_on_same_column=true +fsharp_experimental_stroustrup_style=true +fsharp_space_before_uppercase_invocation=true diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 17df08b..8355677 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -18,29 +18,16 @@ concurrency: cancel-in-progress: true jobs: -# fantomas-check: -# runs-on: ubuntu-22.04 -# steps: -# - name: Checkout repository -# uses: actions/checkout@v4 - -# - name: Setup .NET -# uses: actions/setup-dotnet@v3 -# with: -# dotnet-version: ${{ env.DOTNET_VERSION }} - -# - name: Tool Restore -# run: dotnet tool restore - -# - name: Lint -# run: dotnet fantomas -r --check . - build: runs-on: ubuntu-22.04 - # needs: ['fantomas-check'] steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up git-cliff + uses: kenji-miyake/setup-git-cliff@v1 # workaround for https://github.com/actions/runner/issues/2033 - name: ownership workaround @@ -51,17 +38,5 @@ jobs: with: dotnet-version: ${{ env.DOTNET_VERSION }} - - name: Restore nuget dependencies - run: dotnet restore Partas.Solid.sln - - - name: Compile the main solution - run: dotnet build Partas.Solid.sln --no-restore - - - name: Test the main solution - run: dotnet test Partas.Solid.sln --no-restore --no-build - - - name: Restore Solid nuget dependencies - run: dotnet restore Partas.Solid.sln - - - name: Compile Solid solution - run: dotnet build Partas.Solid.sln --no-restore + - name: Run test script + run: dotnet fsi ./build.fsx diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000..31cf5fc --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,36 @@ +name: package.yml +on: + release: + types: + - published + workflow_dispatch: + +env: + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + DOTNET_CLI_TELEMETRY_OPTOUT: true + DOTNET_VERSION: 9.0.101 + NUGET_API_KEY: ${{ secrets.NUGET_KEY }} + +jobs: + package: + runs-on: ubuntu-22.04 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up git-cliff + uses: kenji-miyake/setup-git-cliff@v1 + + # workaround for https://github.com/actions/runner/issues/2033 + - name: ownership workaround + run: git config --global --add safe.directory '*' + + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Publish nuget package + run: dotnet fsi ./build.fsx target publish --nuget-api-key ${{ env.NUGET_API_KEY }} diff --git a/.gitignore b/.gitignore index dbc78d8..cfe97df 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,8 @@ obj/ /packages/ riderModule.iml /_ReSharper.Caches/ -/Partas.Solid.sln -/ScratchTests .fake *.fs.jsx *.fs.js -.idea \ No newline at end of file +.idea +/ScratchTests/ diff --git a/Common/AssemblyInfo.fs b/Common/AssemblyInfo.fs new file mode 100644 index 0000000..6378de7 --- /dev/null +++ b/Common/AssemblyInfo.fs @@ -0,0 +1,15 @@ +// Auto-Generated by FAKE; do not edit +namespace System +open System.Reflection + +[] +[] +[] +[] +do () + +module internal AssemblyVersionInformation = + let [] AssemblyTitle = "Partas.Solid" + let [] AssemblyProduct = "Partas.Solid" + let [] AssemblyVersion = "1.1.5" + let [] AssemblyFileVersion = "1.1.5" diff --git a/Partas.Solid.FablePlugin/Partas.Solid.FablePlugin.fsproj b/Partas.Solid.FablePlugin/Partas.Solid.FablePlugin.fsproj index e78a23b..79d0611 100644 --- a/Partas.Solid.FablePlugin/Partas.Solid.FablePlugin.fsproj +++ b/Partas.Solid.FablePlugin/Partas.Solid.FablePlugin.fsproj @@ -16,9 +16,11 @@ 1.1.5 1.1.5 - + + AssemblyInfo.fs + diff --git a/Partas.Solid.FablePlugin/Spec.fs b/Partas.Solid.FablePlugin/Spec.fs index 7e3b507..93e4695 100644 --- a/Partas.Solid.FablePlugin/Spec.fs +++ b/Partas.Solid.FablePlugin/Spec.fs @@ -4,20 +4,24 @@ open System open Fable open Fable.AST open Fable.AST.Fable + /// Defines patterns for the PluginHelper which establishes whether the plugin is available /// for use in the environment based on the language target etc [] module internal FableRequirements = // Fable 4 does not detect the plugin - let [] version = "5.0" + [] + let version = "5.0" + let (|Language|_|) (input: PluginHelper) = match input.Options.Language with - | Language.JavaScript -> Some() + | Language.JavaScript -> Some () | _ -> None + let (|FileExtension|_|) (input: PluginHelper) = match input.Options.FileExtension with - | s when s.EndsWith ".jsx" -> Some() - | s when s.EndsWith ".js" -> Some() // Temporary allowance + | s when s.EndsWith ".jsx" -> Some () + | s when s.EndsWith ".js" -> Some () // Temporary allowance | _ -> None /// Patterns which specify whether certain members are valid for the attribute to @@ -36,22 +40,34 @@ module internal SchemaRules = /// let (|ValidMemberRef|_|) (ctx: PluginContext) (memberDecl: MemberDecl) = match memberDecl with - | { MemberRef = MemberRef( - ({ FullName = Utils.StartsWith "Partas.Solid" } as declaringEntity), - ({ IsInstance = true; NonCurriedArgTypes = Some([Type.Unit]) } as entityRef) - ) } -> + | { MemberRef = MemberRef (({ FullName = Utils.StartsWith "Partas.Solid" } as declaringEntity), + ({ IsInstance = true + NonCurriedArgTypes = Some ([ Type.Unit ]) } as entityRef)) } -> match memberDecl.Args with - | [ - {Name = "props"; IsThisArgument = true} - {Name = Utils.StartsWith "unitVar"} - ] -> declaringEntity.DisplayName |> Some + | [ { Name = "props" + IsThisArgument = true } + { Name = Utils.StartsWith "unitVar" } ] -> + declaringEntity.DisplayName + |> Some | _ -> PluginContext.helper ctx - |> _.LogWarning("The self identifier must be named `props`, and no arguments must be provided", memberDecl.Args |> List.randomChoice |> _.Range.Value) - None + |> _.LogWarning( + "The self identifier must be named `props`, and no arguments must be provided", + memberDecl.Args + |> List.randomChoice + |> _.Range.Value + ) + + None | _ -> PluginContext.helper ctx - |> _.LogWarning("This is an invalid member declaration for this attribute. Ensure it follows the following pattern: `member props.typeDef =`. Ensure it is declared within a namespace starting with `Partas.Solid`", memberDecl.Args |> List.randomChoice |> _.Range.Value) + |> _.LogWarning( + "This is an invalid member declaration for this attribute. Ensure it follows the following pattern: `member props.typeDef =`. Ensure it is declared within a namespace starting with `Partas.Solid`", + memberDecl.Args + |> List.randomChoice + |> _.Range.Value + ) + None /// Prebaked expression constructors. Most @@ -59,37 +75,41 @@ module internal SchemaRules = /// be lifted into this module. module internal Baked = let private importMergeProps = - Import( + Import ( { Selector = "mergeProps" Path = "solid-js" Kind = UserImport false }, Type.Any, None ) + let private importSplitProps = - Import( - { - Selector = "splitProps" - Path = "solid-js" - Kind = UserImport false - }, + Import ( + { Selector = "splitProps" + Path = "solid-js" + Kind = UserImport false }, Type.Any, None ) + let jsxElementType = - Type.DeclaredType( + Type.DeclaredType ( ref = { FullName = "Fable.Core.JSX.Element" Path = EntityPath.CoreAssemblyName "Fable.Core" }, genericArgs = [] ) - + let spreadPropertyExpression = - IdentExpr({ - Name = "PARTAS_OTHERS" - Type = jsxElementType - IsMutable = false; IsThisArgument = false; IsCompilerGenerated = true; Range = None - }) + IdentExpr ( + { Name = "PARTAS_OTHERS" + Type = jsxElementType + IsMutable = false + IsThisArgument = false + IsCompilerGenerated = true + Range = None } + ) + /// Converts property setters into a sugar for setting their defaults by /// converting them into a mergeProps, which merges an object with the key,value pairs /// against the given props (ie overwritting any double ups). @@ -97,101 +117,127 @@ module internal Baked = match values with | [] -> rest | _ -> - Sequential [ - Expr.Set( - expr = IdentExpr({ - Name = "props" - Type = jsxElementType - IsMutable = false; IsThisArgument = false; IsCompilerGenerated = true; Range = None - }), - kind = SetKind.ValueSet, - typ = Type.Any, - value = Call( - callee = importMergeProps, - info = CallInfo.Create( args = [ - Value( - kind = ValueKind.NewAnonymousRecord( - values = (values |> List.map snd), - fieldNames = (values |> List.map (fst >> Utils.trimReservedIdentifiers) |> List.toArray), - genArgs = [], - isStruct = false - ), - range = None - ) - IdentExpr({ - Name = "props" - Type = jsxElementType - IsMutable = false; IsThisArgument = false; IsCompilerGenerated = true; Range = None - }) - ]), - typ = Type.Any, - range = None - ), - range = None - ) - rest - ] + Sequential + [ Expr.Set ( + expr = + IdentExpr ( + { Name = "props" + Type = jsxElementType + IsMutable = false + IsThisArgument = false + IsCompilerGenerated = true + Range = None } + ), + kind = SetKind.ValueSet, + typ = Type.Any, + value = + Call ( + callee = importMergeProps, + info = + CallInfo.Create ( + args = + [ Value ( + kind = + ValueKind.NewAnonymousRecord ( + values = + (values + |> List.map snd), + fieldNames = + (values + |> List.map ( + fst + >> Utils.trimReservedIdentifiers + ) + |> List.toArray), + genArgs = [], + isStruct = false + ), + range = None + ) + IdentExpr ( + { Name = "props" + Type = jsxElementType + IsMutable = false + IsThisArgument = false + IsCompilerGenerated = true + Range = None } + ) ] + ), + typ = Type.Any, + range = None + ), + range = None + ) + rest ] + /// It renders the JSX splitProps, with the given values split into PARTAS_LOCAL, and the rest /// into PARTAS_OTHERS let convertGettersToObject (values: string list) (rest: Expr) = - Expr.Let( + Expr.Let ( ident = - { - Name = "[PARTAS_LOCAL, PARTAS_OTHERS]" - Type = Type.Any - IsMutable = false - IsThisArgument = false - IsCompilerGenerated = false - Range = None - }, + { Name = "[PARTAS_LOCAL, PARTAS_OTHERS]" + Type = Type.Any + IsMutable = false + IsThisArgument = false + IsCompilerGenerated = false + Range = None }, value = - Expr.Call( + Expr.Call ( callee = importSplitProps, info = - CallInfo.Create( - args = [ - IdentExpr({ - Name = "props" - Type = jsxElementType - IsMutable = false; IsThisArgument = false; IsCompilerGenerated = true; Range = None - }) - Value( - kind = - ValueKind.NewArray( - newKind = NewArrayKind.ArrayValues([ - for value in values do - Value(StringConstant(value), None) - ]), - typ = Type.Any, - kind = ArrayKind.ImmutableArray - ), - range = None - ) - ] + CallInfo.Create ( + args = + [ IdentExpr ( + { Name = "props" + Type = jsxElementType + IsMutable = false + IsThisArgument = false + IsCompilerGenerated = true + Range = None } + ) + Value ( + kind = + ValueKind.NewArray ( + newKind = + NewArrayKind.ArrayValues ( + [ for value in values do + Value (StringConstant (value), None) ] + ), + typ = Type.Any, + kind = ArrayKind.ImmutableArray + ), + range = None + ) ] ), typ = Type.Any, range = None ), body = rest ) - let importJsxCreate = Import( - info = { - Selector = "create" - Path = "@fable-org/fable-library-js/JSX.js" - Kind = ImportKind.UserImport false - }, + + let importJsxCreate = + Import ( + info = + { Selector = "create" + Path = "@fable-org/fable-library-js/JSX.js" + Kind = ImportKind.UserImport false }, typ = Type.Any, range = None ) - let listItemType = Type.Tuple(genericArgs = [ Type.String; Type.Any ], isStruct = false) - let emptyList = Value(kind = NewList(headAndTail = None, typ = listItemType), range = None) + + let listItemType = + Type.Tuple (genericArgs = [ Type.String; Type.Any ], isStruct = false) + + let emptyList = + Value (kind = NewList (headAndTail = None, typ = listItemType), range = None) + let flattenExpressions (exprs: Expr list) = (emptyList, exprs) - ||> List.fold (fun acc prop -> - Value(kind = NewList(headAndTail = Some(prop, acc), typ = listItemType), range = None)) + ||> List.fold (fun acc prop -> Value (kind = NewList (headAndTail = Some (prop, acc), typ = listItemType), range = None)) + /// Renders a identifier getter in the JSX of `PARTAS_LOCAL.{getter-target}` let propGetter (getTarget: string) = - Get( + Get ( IdentExpr { Name = "PARTAS_LOCAL" Type = jsxElementType @@ -199,60 +245,78 @@ module internal Baked = IsThisArgument = true IsCompilerGenerated = true Range = None }, - GetKind.ExprGet(Value(StringConstant(Utils.trimReservedIdentifiers getTarget), None)), + GetKind.ExprGet (Value (StringConstant (Utils.trimReservedIdentifiers getTarget), None)), Type.Any, None ) + let wrapChildrenExpression childrenExpression = - Value( + Value ( kind = - NewTuple( + NewTuple ( values = - [ Value(kind = StringConstant "children", range = None) - TypeCast(childrenExpression, Type.Any) + [ Value (kind = StringConstant "children", range = None) + TypeCast (childrenExpression, Type.Any) ], isStruct = false ), range = None ) + /// Renders an ElementBuilder into the final Expr. Performs ONE final transformation; it will /// pattern match the tagname "Fragment" and remove it to render `<> `. let renderElement (ctx: PluginContext) (builder: ElementBuilder) = - let renderProp ((name: string, expr: Expr): PropInfo) = Value(NewTuple([ Value(StringConstant name, None); TypeCast(expr, Type.Any) ], false), None) + let renderProp ((name: string, expr: Expr): PropInfo) = + Value (NewTuple ([ Value (StringConstant name, None); TypeCast (expr, Type.Any) ], false), None) + let renderPropList = List.map renderProp - let renderTagName = function - | TagSource.AutoImport "Fragment" -> Value(StringConstant "", None) + + let renderTagName = + function + | TagSource.AutoImport "Fragment" -> Value (StringConstant "", None) | TagSource.LibraryImport imp -> imp - | TagSource.AutoImport name -> Value(StringConstant name, None) + | TagSource.AutoImport name -> Value (StringConstant name, None) + let internalCollection = - (builder.Children |> List.rev |> flattenExpressions |> wrapChildrenExpression) + (builder.Children + |> List.rev + |> flattenExpressions + |> wrapChildrenExpression) :: renderPropList builder.Properties |> flattenExpressions - Call( - callee = importJsxCreate, - info = - { ThisArg = None - Args = [ renderTagName builder.TagSource ; internalCollection ] - SignatureArgTypes = [] - GenericArgs = [] - MemberRef = None - Tags = [ "jsx" ] }, - typ = jsxElementType, - range = None - ) + + Call ( + callee = importJsxCreate, + info = + { ThisArg = None + Args = [ renderTagName builder.TagSource; internalCollection ] + SignatureArgTypes = [] + GenericArgs = [] + MemberRef = None + Tags = [ "jsx" ] }, + typ = jsxElementType, + range = None + ) + module internal MemberRef = - let (|MemberRefIs|) (ctx: PluginContext): MemberRef -> MemberRefType = function - | MemberRef({FullName = Utils.StartsWith "Partas.Solid"}, _) as memberRef -> - let mref = memberRef |> PluginContext.getMember ctx + let (|MemberRefIs|) (ctx: PluginContext) : MemberRef -> MemberRefType = + function + | MemberRef ({ FullName = Utils.StartsWith "Partas.Solid" }, _) as memberRef -> + let mref = + memberRef + |> PluginContext.getMember ctx + if mref.IsConstructor then MemberRefType.Constructor elif mref.IsSetter then MemberRefType.Setter elif mref.IsGetter then MemberRefType.Getter else MemberRefType.None - | GeneratedMemberRef(_) -> MemberRefType.Generated + | GeneratedMemberRef (_) -> MemberRefType.Generated | _ -> MemberRefType.None - let (|PartasName|_|) (ctx: PluginContext): MemberRef -> string option = function - | MemberRef(_, { CompiledName = compiledName }) -> + + let (|PartasName|_|) (ctx: PluginContext) : MemberRef -> string option = + function + | MemberRef (_, { CompiledName = compiledName }) -> compiledName |> _.Split('.') |> Array.rev @@ -261,113 +325,108 @@ module internal MemberRef = | Utils.StartsWithTrimmed "set_" memberName | Utils.StartsWithTrimmed "get_" memberName | Utils.EndsWithTrimmed "_$ctor" memberName - | memberName -> memberName |> Utils.trimReservedIdentifiers |> Some - | GeneratedMemberRef(_) -> None + | memberName -> + memberName + |> Utils.trimReservedIdentifiers + |> Some + | GeneratedMemberRef (_) -> None + /// /// Used for POJO constructors to extract the prop names from the constructor /// - let (|ParameterNames|) (ctx: PluginContext): MemberRef -> _ = + let (|ParameterNames|) (ctx: PluginContext) : MemberRef -> _ = PluginContext.getMember ctx >> _.CurriedParameterGroups - >> ( - fun lst -> - if lst.Length > 1 then - "This member has more than one parameter group which may cause undefined behaviour with the plugin. Please monitor and report any issues." - |> PluginContext.logWarning ctx - lst - ) + >> (fun lst -> + if lst.Length > 1 then + "This member has more than one parameter group which may cause undefined behaviour with the plugin. Please monitor and report any issues." + |> PluginContext.logWarning ctx + + lst) >> List.collect id >> List.distinctBy (fun x -> x.Name, x.Type) >> List.map _.Name + module internal Option = - let (|PartasName|_|) (ctx: PluginContext): MemberRef option -> string option = function - | Some(PartasName ctx name) -> Some name + let (|PartasName|_|) (ctx: PluginContext) : MemberRef option -> string option = + function + | Some (PartasName ctx name) -> Some name | _ -> None + /// Contains active patterns to match expressions against common patterns such as an imported constructor, /// or a setter of an imported property etc. /// Consider the Expr.ImportedConstructor as an example. /// They do not recognize constructors in the sense of TagConstructors. They will recognize any constructor which /// is library imported, or module imported. module internal Expr = - let (|ImportedConstructor|_|) (ctx: PluginContext) = function - | Import({ - Kind = UserImport _ - }, Any, _) -> Some() - | Import( - { - Kind = MemberImport(MemberRef.MemberRefIs ctx MemberRefType.Constructor) - }, - _, - _ ) -> Some() + let (|ImportedConstructor|_|) (ctx: PluginContext) = + function + | Import ({ Kind = UserImport _ }, Any, _) -> Some () + | Import ({ Kind = MemberImport (MemberRef.MemberRefIs ctx MemberRefType.Constructor) }, _, _) -> Some () | _ -> None - let (|NativeImportedConstructor|_|) (ctx: PluginContext) = function - | Import({Kind = MemberImport(MemberRef({ FullName = Utils.StartsWith "Partas.Solid.Tags" | Utils.StartsWith "Partas.Solid.Svg" }, _))}, _, _) - & ImportedConstructor ctx -> - Some() + + let (|NativeImportedConstructor|_|) (ctx: PluginContext) = + function + | Import ({ Kind = MemberImport (MemberRef ({ FullName = Utils.StartsWith "Partas.Solid.Tags" | Utils.StartsWith "Partas.Solid.Svg" }, _)) }, + _, + _) & ImportedConstructor ctx -> Some () | _ -> None - let (|ImportedSetter|_|) (ctx: PluginContext) = function - | Import( - { - Selector = Utils.StartsWith "Partas_Solid" - Kind = MemberImport( MemberRef.MemberRefIs ctx MemberRefType.Setter ) - }, - _, - _ ) -> - Some() + + let (|ImportedSetter|_|) (ctx: PluginContext) = + function + | Import ({ Selector = Utils.StartsWith "Partas_Solid" + Kind = MemberImport (MemberRef.MemberRefIs ctx MemberRefType.Setter) }, + _, + _) -> Some () | _ -> None - let (|ImportedGetter|_|) (ctx: PluginContext) = function - | Import( - { - Selector = Utils.StartsWith "Partas_Solid" - Kind = MemberImport( MemberRef.MemberRefIs ctx MemberRefType.Getter) - }, - _, - _) -> Some() + + let (|ImportedGetter|_|) (ctx: PluginContext) = + function + | Import ({ Selector = Utils.StartsWith "Partas_Solid" + Kind = MemberImport (MemberRef.MemberRefIs ctx MemberRefType.Getter) }, + _, + _) -> Some () | _ -> None - let (|ImportedExtensionName|_|) (ctx: PluginContext) = function - | Import( - { - Selector = Utils.StartsWith "HtmlElementExtensions_" - Kind = MemberImport( - ( MemberRef.MemberRefIs ctx MemberRefType.Setter - & MemberRef(_, { CompiledName = compiledName })) - ) - }, - _, - _ - ) -> Some compiledName + + let (|ImportedExtensionName|_|) (ctx: PluginContext) = + function + | Import ({ Selector = Utils.StartsWith "HtmlElementExtensions_" + Kind = MemberImport ((MemberRef.MemberRefIs ctx MemberRefType.Setter & MemberRef (_, { CompiledName = compiledName }))) }, + _, + _) -> Some compiledName | _ -> None - let (|ImportedContainerExtensionName|_|) (ctx: PluginContext) = function - | Import( - { - Selector = Utils.StartsWith "HtmlContainerExtensions_" | Utils.StartsWith "BindingsModule_Extensions" - Kind = MemberImport(MemberRef.PartasName ctx _ & MemberRef(_, { CompiledName = compiledName })) - }, - _, - _ - ) -> Some compiledName + + let (|ImportedContainerExtensionName|_|) (ctx: PluginContext) = + function + | Import ({ Selector = Utils.StartsWith "HtmlContainerExtensions_" | Utils.StartsWith "BindingsModule_Extensions" + Kind = MemberImport (MemberRef.PartasName ctx _ & MemberRef (_, { CompiledName = compiledName })) }, + _, + _) -> Some compiledName | _ -> None - + /// Elucidates the first expr that is not a type cast. - let rec (|TypeCastDrill|) (ctx: PluginContext): Expr -> Expr = function - | TypeCast(TypeCastDrill ctx expr,_) + let rec (|TypeCastDrill|) (ctx: PluginContext) : Expr -> Expr = + function + | TypeCast (TypeCastDrill ctx expr, _) | expr -> expr + module internal Type = - let rec private (|GetDeclaredType|_|) (ctx: PluginContext): Type -> Type option = function - | Type.DeclaredType(_) as typ -> Some typ - | Type.Array(GetDeclaredType ctx typ, _) -> Some typ - | Type.List(GetDeclaredType ctx typ) -> Some typ - | Type.Option(GetDeclaredType ctx typ, _) -> Some typ - | Type.Tuple(GetDeclaredType ctx typ :: _, _) -> Some typ - | Type.DelegateType(_, GetDeclaredType ctx typ) -> Some typ - | Type.LambdaType(_, GetDeclaredType ctx typ) -> Some typ + let rec private (|GetDeclaredType|_|) (ctx: PluginContext) : Type -> Type option = + function + | Type.DeclaredType (_) as typ -> Some typ + | Type.Array (GetDeclaredType ctx typ, _) -> Some typ + | Type.List (GetDeclaredType ctx typ) -> Some typ + | Type.Option (GetDeclaredType ctx typ, _) -> Some typ + | Type.Tuple (GetDeclaredType ctx typ :: _, _) -> Some typ + | Type.DelegateType (_, GetDeclaredType ctx typ) -> Some typ + | Type.LambdaType (_, GetDeclaredType ctx typ) -> Some typ | _ -> None + /// Recursively explores a `Type` AST node until either returning the tail part of a DeclaredType fullname, /// or none. It can therefor also be used to ensure the type starts with `Partas.Solid` - let rec (|PartasName|_|) (ctx: PluginContext): Type -> string option = function - | GetDeclaredType ctx ( - Type.DeclaredType({ FullName = Utils.StartsWith "Partas.Solid" as fullName }, _) - ) -> + let rec (|PartasName|_|) (ctx: PluginContext) : Type -> string option = + function + | GetDeclaredType ctx (Type.DeclaredType ({ FullName = Utils.StartsWith "Partas.Solid" as fullName }, _)) -> fullName |> _.Split('.') |> Array.rev @@ -375,20 +434,26 @@ module internal Type = |> Utils.trimReservedIdentifiers |> Some | _ -> None + /// Digs into a type to see if it can find a DeclaredType node; if so, it matches the provided attribute name /// and then emits the attribute - let (|HasAttribute|_|) (ctx: PluginContext) (attrName: string): Type -> Attribute option = function - | GetDeclaredType ctx ( - Type.DeclaredType(entityRef, _) - ) -> + let (|HasAttribute|_|) (ctx: PluginContext) (attrName: string) : Type -> Attribute option = + function + | GetDeclaredType ctx (Type.DeclaredType (entityRef, _)) -> entityRef |> PluginContext.getEntity ctx |> _.Attributes - |> Seq.tryFind(_.Entity >> _.FullName >> (=) attrName) + |> Seq.tryFind ( + _.Entity + >> _.FullName + >> (=) attrName + ) | _ -> None + /// Digs into a type to see if it can find a DeclaredType node; if so, it extracts the attribute key,value pair for /// PartasImportAttribute if it is present and returns them - let (|HasPartasImport|_|) (ctx: PluginContext): Type -> (string * string) option = function + let (|HasPartasImport|_|) (ctx: PluginContext) : Type -> (string * string) option = + function | HasAttribute ctx "Partas.Solid.PartasImportAttribute" attr -> attr |> _.ConstructorArgs @@ -397,33 +462,45 @@ module internal Type = |> List.head |> Some | _ -> None + /// Digs into a type to see if it can find a DeclaredType node; if so, it extracts the attribute key,selector,path for /// PartasProxyImportAttribute if it is present and returns them - let (|HasPartasProxyImport|_|) (ctx: PluginContext): Type -> (string * string * string) option = function + let (|HasPartasProxyImport|_|) (ctx: PluginContext) : Type -> (string * string * string) option = + function | HasAttribute ctx "Partas.Solid.PartasProxyImportAttribute" attr -> attr |> _.ConstructorArgs |> List.map _.ToString() - |> function [p1;p2;p3] -> Some(p1,p2,p3) | _ -> None + |> function + | [ p1; p2; p3 ] -> Some (p1, p2, p3) + | _ -> None | _ -> None + /// Determines if type has POJO attribute - let (|HasPojo|_|) (ctx: PluginContext): Type -> unit option = function + let (|HasPojo|_|) (ctx: PluginContext) : Type -> unit option = + function | HasAttribute ctx "Fable.Core.JS.PojoAttribute" _ -> Some () | _ -> None + /// /// Pattern matches for EntityRef expr nodes /// module internal EntityRef = /// - let (|HasAttribute|_|) (ctx: PluginContext) (attrName: string): EntityRef -> Attribute option = + let (|HasAttribute|_|) (ctx: PluginContext) (attrName: string) : EntityRef -> Attribute option = PluginContext.getEntity ctx >> _.Attributes - >> Seq.tryFind( - _.Entity >> _.FullName >> (=) attrName - ) - let (|HasPojo|_|) (ctx: PluginContext): EntityRef -> unit option = function + >> Seq.tryFind ( + _.Entity + >> _.FullName + >> (=) attrName + ) + + let (|HasPojo|_|) (ctx: PluginContext) : EntityRef -> unit option = + function | HasAttribute ctx "Fable.Core.JS.PojoAttribute" _ -> Some () | _ -> None + module internal Ident = /// where we can, we use ridiculous names in computations so that the chance of user AST /// accidentally being transformed as one of these patterns is almost nil. It also simplifies @@ -432,10 +509,15 @@ module internal Ident = // The Import attribute causes the builders to produce default names for functions and just generally // ruins the vibe. If this causes issue with native bindings etc, then either the plugin will have to // take all cases and inject them manually, or tackle matching the generated names and identifiers. - let (|IdentIs|) (ctx: PluginContext): Ident -> IdentType = function - | { Name = Utils.StartsWith "returnVal"; Type = Type.PartasName ctx _ } -> IdentType.ReturnVal - | { Name = Utils.EndsWith "_$ctor"; Type = Type.PartasName ctx _ } -> IdentType.Constructor - | { Name = "props"; IsThisArgument = true; Type = Type.PartasName ctx _ } -> IdentType.Props + let (|IdentIs|) (ctx: PluginContext) : Ident -> IdentType = + function + | { Name = Utils.StartsWith "returnVal" + Type = Type.PartasName ctx _ } -> IdentType.ReturnVal + | { Name = Utils.EndsWith "_$ctor" + Type = Type.PartasName ctx _ } -> IdentType.Constructor + | { Name = "props" + IsThisArgument = true + Type = Type.PartasName ctx _ } -> IdentType.Props // | { Name = "enumerator"; IsCompilerGenerated = true } -> IdentType.Enumerator(EnumType.Enumerator) // | { Name = ( // Helpers.StartsWithTrimmed "System.Collections.Generic.IEnumerator`1." value @@ -449,52 +531,65 @@ module internal Ident = // |> PluginContext.logError ctx // EnumType.Enumerator // |> IdentType.Enumerator - | { Name = Utils.StartsWith "PARTAS_YIELD"; Type = Type.PartasName ctx _ } -> IdentType.Yield + | { Name = Utils.StartsWith "PARTAS_YIELD" + Type = Type.PartasName ctx _ } -> IdentType.Yield | { Name = Utils.StartsWith "PARTAS_FIRST" } -> IdentType.First | { Name = Utils.StartsWith "PARTAS_SECOND" } -> IdentType.Second | { Name = Utils.StartsWith "PARTAS_ELEMENT" } -> IdentType.Element - | { Name = Utils.StartsWith "PARTAS_BUILDER"; Type = Type.PartasName ctx _ } -> IdentType.Builder + | { Name = Utils.StartsWith "PARTAS_BUILDER" + Type = Type.PartasName ctx _ } -> IdentType.Builder | { Name = Utils.StartsWith "PARTAS_DELAY" } -> IdentType.Delay | { Name = Utils.StartsWith "PARTAS_CONT" } -> IdentType.Cont | { Name = Utils.StartsWith "PARTAS_VALUE" } -> IdentType.Value | { Name = Utils.StartsWith "PARTAS_TEXT" } -> IdentType.Text | _ -> IdentType.Other - - let (|HasPojo|_|) (ctx: PluginContext): Ident -> unit option = function + + let (|HasPojo|_|) (ctx: PluginContext) : Ident -> unit option = + function | { Type = Type.HasPojo ctx } -> Some () | _ -> None - + /// Contains patterns to match CallInfo's with common member ref or thisarg patterns. /// Honestly, they're only used probably once each in current iterations, but I think /// it helps with the readability of the more complicated patterns. module internal CallInfo = - let (|PropertySetter|_|) (ctx: PluginContext) = function - | { ThisArg = Some(IdentExpr(Ident.IdentIs ctx IdentType.Props)) } -> - Some() + let (|PropertySetter|_|) (ctx: PluginContext) = + function + | { ThisArg = Some (IdentExpr (Ident.IdentIs ctx IdentType.Props)) } -> Some () | _ -> None - let (|Constructor|_|) (ctx: PluginContext) = function - | { MemberRef = Some(MemberRef.MemberRefIs ctx MemberRefType.Constructor) } -> - Some() + + let (|Constructor|_|) (ctx: PluginContext) = + function + | { MemberRef = Some (MemberRef.MemberRefIs ctx MemberRefType.Constructor) } -> Some () | _ -> None - let (|Pojo|_|) (ctx: PluginContext) = function - | { MemberRef = Some(MemberRef(EntityRef.HasPojo ctx, _)) } -> - Some() + + let (|Pojo|_|) (ctx: PluginContext) = + function + | { MemberRef = Some (MemberRef (EntityRef.HasPojo ctx, _)) } -> Some () | _ -> None + /// Matches a constructor which has the Pojo attribute. It extracts the parameter names and matches /// them to the values in the call and emits them. - let (|PojoConstructorArgs|_|) (ctx: PluginContext): CallInfo -> PropList option = function - | { MemberRef = Some( - MemberRef(EntityRef.HasPojo ctx, _) - & MemberRef.MemberRefIs ctx MemberRefType.Constructor - & MemberRef.ParameterNames ctx argNames - ) - Args = args} -> + let (|PojoConstructorArgs|_|) (ctx: PluginContext) : CallInfo -> PropList option = + function + | { MemberRef = Some (MemberRef (EntityRef.HasPojo ctx, _) & MemberRef.MemberRefIs ctx MemberRefType.Constructor & MemberRef.ParameterNames ctx argNames) + Args = args } -> let length = - [ argNames.Length ; args.Length ] + [ argNames.Length; args.Length ] |> List.min - (argNames |> List.truncate length, args |> List.truncate length) + + (argNames + |> List.truncate length, + args + |> List.truncate length) ||> List.zip - |> List.filter ( fst >> Option.exists (String.IsNullOrWhiteSpace >> not)) - |> List.map (fun (key,value) -> key.Value,value) + |> List.filter ( + fst + >> Option.exists ( + String.IsNullOrWhiteSpace + >> not + ) + ) + |> List.map (fun (key, value) -> key.Value, value) |> Some | _ -> None diff --git a/Partas.Solid.FablePlugin/Types.fs b/Partas.Solid.FablePlugin/Types.fs index 00c62b4..46b999b 100644 --- a/Partas.Solid.FablePlugin/Types.fs +++ b/Partas.Solid.FablePlugin/Types.fs @@ -4,6 +4,7 @@ open System open Fable open Fable.AST open Fable.AST.Fable + /// Identifies what type of member the transformation sequence originated from /// Currently ?unutilised [] @@ -11,6 +12,7 @@ type internal TransformationKind = | MemberDecl | MemberCall | TypeMemberDecl + /// Used in Active Pattern Matches to identify if a MemberRef is one of these [] type internal MemberRefType = @@ -30,10 +32,10 @@ type internal IdentType = // identifies props identifier | Props // identifies ContextProviders - | ContextProvider + | ContextProvider // Identifies for loops // | Enumerator of EnumType - + // Builders - PARTAS_{...} | Yield | First @@ -44,7 +46,7 @@ type internal IdentType = | Cont | Value | Text - + // Special cases // Unknown @@ -76,24 +78,28 @@ module ComponentFlag = /// Minimal transformations. Any optimisations that are skippable are skipped. [] let None = - ComponentFlag.SkipPojoOptimisation ||| ComponentFlag.SkipCEOptimisation + ComponentFlag.SkipPojoOptimisation + ||| ComponentFlag.SkipCEOptimisation [] - let VerboseDebugMode = ComponentFlag.DebugMode ||| ComponentFlag.PrintDisposals + let VerboseDebugMode = + ComponentFlag.DebugMode + ||| ComponentFlag.PrintDisposals + /// A record which is passed through almost all transformation patterns and methods. /// It can therefor be used to pass contextual information, or access the plugin helper /// from within the transformation tree (to shoot out a warning or something) type internal PluginContext = - { - Helper: PluginHelper - Kind: TransformationKind - SetterArray: ResizeArray - GetterArray: ResizeArray - SetterCollector: (string * Expr) -> unit - GetterCollector: string -> unit - Flags: ComponentFlag - } - member this.HasFlag flag = this.Flags.HasFlag flag + { Helper: PluginHelper + Kind: TransformationKind + SetterArray: ResizeArray + GetterArray: ResizeArray + SetterCollector: (string * Expr) -> unit + GetterCollector: string -> unit + Flags: ComponentFlag } + + member this.HasFlag flag = + this.Flags.HasFlag flag /// Container for Funcs of the PluginContext type [] @@ -113,84 +119,96 @@ module internal PluginContext = /// let ctx = PluginContext.create pluginHelper TransformationKind.MemberDecl /// let create helper kind flags = - let ctx = { - Helper = helper - Kind = kind - SetterArray = new ResizeArray [||] - GetterArray = new ResizeArray [||] - SetterCollector = fun _ -> () - GetterCollector = fun _ -> () - Flags = flags - } - { ctx with SetterCollector = ctx.SetterArray.Add; GetterCollector = ctx.GetterArray.Add } - + let ctx = + { Helper = helper + Kind = kind + SetterArray = new ResizeArray [||] + GetterArray = new ResizeArray [||] + SetterCollector = fun _ -> () + GetterCollector = fun _ -> () + Flags = flags } + + { ctx with + SetterCollector = ctx.SetterArray.Add + GetterCollector = ctx.GetterArray.Add } + /// Condition. Check if flags contains enum - let hasFlag flag (ctx: PluginContext)= ctx.HasFlag flag - - /// Get the PluginHelper from the context + let hasFlag flag (ctx: PluginContext) = + ctx.HasFlag flag + + /// Get the PluginHelper from the context let helper = _.Helper - + /// Get the Entity from an EntityRef let getEntity = _.Helper.GetEntity - + /// Get the MemberFunctionOrValue from a MemberRef let getMember = _.Helper.GetMember - + /// Emit a msg on Fable compilation as a warning let logWarning = _.Helper.LogWarning - + /// Emit a msg on Fable compilation as an error. /// This will complete the transformation before emitting all collected errors. let logError = _.Helper.LogError - + /// Access the setter array without clearing it - let peekSetters = _.SetterArray.ToArray() >> Array.toList - + let peekSetters = + _.SetterArray.ToArray() + >> Array.toList + /// Access the getter array without clearing it - let peekGetters = _.GetterArray.ToArray() >> Array.toList - + let peekGetters = + _.GetterArray.ToArray() + >> Array.toList + /// Logs a warning if a setter key has already been provided a value. let checkDuplicateSetter (ctx: PluginContext) (setter: string * Expr) = ctx |> _.SetterArray - |> _.Exists(fst >> (=) (fst setter)) + |> _.Exists( + fst + >> (=) (fst setter) + ) |> function - | true -> $"Multiple defaults for the same property in a `SolidTypeComponent` are not allowed: '{fst setter}' was set more than once" |> logError ctx + | true -> + $"Multiple defaults for the same property in a `SolidTypeComponent` are not allowed: '{fst setter}' was set more than once" + |> logError ctx | false -> () - + /// /// Adds an attribute (or more precise to say the element props) property set name and the value /// it is being set to. This is lifted at the end of the transformations to produce a solid-js mergeProps. /// - let addSetter ctx setter= + let addSetter ctx setter = checkDuplicateSetter ctx setter ctx.SetterCollector setter - + /// /// Adds an attribute (or more precise to say the element props) property access selector to the context. /// This is lifted at the end of the transformations to produce a solid-js splitProps. /// let addGetter = _.GetterCollector - - + + /// /// Lift the getter array values. This clears the context values for the array. Use peekGetters to observe /// the elements without clearing them. /// let getGetters (ctx: PluginContext) = let getters = peekGetters ctx - ctx.GetterArray.Clear() + ctx.GetterArray.Clear () getters - + /// /// Lift the setter array values. This clears the context values for the array. Use peekSetters to observe /// the elements without clearing them. /// let getSetters (ctx: PluginContext) = let setters = peekSetters ctx - ctx.SetterArray.Clear() + ctx.SetterArray.Clear () setters - + /// /// When disposing of an expression (ie not including it in the final transformation tree), you can apply this /// func with a PluginContext and a context string (such as in what process this is occuring, eg: 'property @@ -200,18 +218,24 @@ module internal PluginContext = /// /// /// - let debugDisposal (ctx: PluginContext) (disposalContext: string) (expr: Expr)= - if ctx|> hasFlag ComponentFlag.PrintDisposals then + let debugDisposal (ctx: PluginContext) (disposalContext: string) (expr: Expr) = + if + ctx + |> hasFlag ComponentFlag.PrintDisposals + then match expr with - | Value(UnitConstant, _) - | IdentExpr({ Name = "returnVal" }) -> () + | Value (UnitConstant, _) + | IdentExpr ({ Name = "returnVal" }) -> () | expr -> - let helper = ctx |> helper + let helper = + ctx + |> helper + let msg = $"An expression was disposed of during {disposalContext}:\n{expr}" + match expr.Range with - | Some range -> - helper.LogWarning(msg, range) - | _ -> helper.LogWarning(msg) + | Some range -> helper.LogWarning (msg, range) + | _ -> helper.LogWarning (msg) /// DU which holds a string of the name for the Tag, or an expression containing the name of the tag, and where it /// should be imported from on compilation. @@ -231,10 +255,13 @@ type internal PropList = PropInfo list /// The intermediary object that clearly categorizes expressions for rendering, irregardless of whether the /// types like TagInfo are refactored type internal ElementBuilder = - { - TagSource: TagSource - Properties: PropList - Children: Expr list - Range: SourceLocation option - } - static member create tagSource properties range = { TagSource = tagSource; Properties = properties; Children = []; Range = range } + { TagSource: TagSource + Properties: PropList + Children: Expr list + Range: SourceLocation option } + + static member create tagSource properties range = + { TagSource = tagSource + Properties = properties + Children = [] + Range = range } diff --git a/Partas.Solid.FablePlugin/Utils.fs b/Partas.Solid.FablePlugin/Utils.fs index 57f9d4c..5a41a94 100644 --- a/Partas.Solid.FablePlugin/Utils.fs +++ b/Partas.Solid.FablePlugin/Utils.fs @@ -2,26 +2,51 @@ [] module internal Partas.Solid.Utils -let (|StartsWith|_|) (value: string) = function - | (s: string) when s.StartsWith(value) -> Some() +let (|StartsWith|_|) (value: string) = + function + | (s: string) when s.StartsWith (value) -> Some () | _ -> None -let (|EndsWith|_|) (value: string) = function - | (s: string) when s.EndsWith(value) -> Some() + +let (|EndsWith|_|) (value: string) = + function + | (s: string) when s.EndsWith (value) -> Some () | _ -> None -let (|StartsWithTrimmed|_|) (value: string) = function + +let (|StartsWithTrimmed|_|) (value: string) = + function | StartsWith value as s -> - s.Substring(value.Length) + s.Substring (value.Length) |> Some | _ -> None -let (|EndsWithTrimmed|_|) (value: string) = function + +let (|EndsWithTrimmed|_|) (value: string) = + function | EndsWith value as s -> - s.Substring(0, s.Length - value.Length) + s.Substring ( + 0, + s.Length + - value.Length + ) |> Some | _ -> None -let rec trimReservedIdentifiers = function + +let rec trimReservedIdentifiers = + function | EndsWithTrimmed "'" s -> trimReservedIdentifiers s | EndsWithTrimmed "`1" s -> trimReservedIdentifiers s - | s when s.Length > 2 && s.Substring(s.Length - 2).StartsWith('`') -> - s.Substring(0, s.Length - 2) + | s when + s.Length > 2 + && s + .Substring( + s.Length + - 2 + ) + .StartsWith ('`') + -> + s.Substring ( + 0, + s.Length + - 2 + ) |> trimReservedIdentifiers | s -> s diff --git a/Partas.Solid.Tests.Core/Partas.Solid.Tests.Core.fsproj b/Partas.Solid.Tests.Core/Partas.Solid.Tests.Core.fsproj new file mode 100644 index 0000000..4482080 --- /dev/null +++ b/Partas.Solid.Tests.Core/Partas.Solid.Tests.Core.fsproj @@ -0,0 +1,23 @@ + + + + net9.0 + latest + false + false + + + + + + + + + + + + + + + + diff --git a/Partas.Solid.Tests.Core/Program.fs b/Partas.Solid.Tests.Core/Program.fs new file mode 100644 index 0000000..31dc4f7 --- /dev/null +++ b/Partas.Solid.Tests.Core/Program.fs @@ -0,0 +1,4 @@ +module Program + +[] +let main _ = 0 diff --git a/Partas.Solid.Tests.Core/UnitTest1.fs b/Partas.Solid.Tests.Core/UnitTest1.fs new file mode 100644 index 0000000..16d73bf --- /dev/null +++ b/Partas.Solid.Tests.Core/UnitTest1.fs @@ -0,0 +1,10 @@ +module Partas.Solid.Tests.Core + +open NUnit.Framework + +[] +let Setup () = () + +[] +let Test1 () = + Assert.Pass () diff --git a/Partas.Solid.Tests.Plugin/Common.fs b/Partas.Solid.Tests.Plugin/Common.fs new file mode 100644 index 0000000..507482d --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Common.fs @@ -0,0 +1,39 @@ +module Partas.Solid.Tests.Plugin.Common + +open Fli +open System +open System.IO +open FsUnitTyped + +let platformShell = + match Environment.OSVersion.Platform with + | PlatformID.Unix -> BASH + | PlatformID.MacOSX -> ZSH + | _ -> CMD + +let buildCases () = + let dir = $"{__SOURCE_DIRECTORY__}/Compiled/" + + cli { + Shell platformShell + WorkingDirectory dir + Command "dotnet fable --exclude Partas.Solid.FablePlugin --noCache -e .fs.jsx" + } + |> Command.execute + |> fun output -> + shouldEqual output.Error None + shouldEqual output.ExitCode 0 + +let runCase folderName caseName = + let dir = $"{__SOURCE_DIRECTORY__}/Compiled/{folderName}" + + let readLinesOf = + fun (s: string) -> + File.ReadAllLines ($"{dir}/{caseName}/{caseName}{s}") + |> Array.filter ((<>) "") + + let result = readLinesOf ".fs.jsx" + let expected = readLinesOf ".expected" + + result + |> shouldEqual expected diff --git a/Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.expected b/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/PartasImportAttr/PartasImportAttr.expected similarity index 100% rename from Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.expected rename to Partas.Solid.Tests.Plugin/Compiled/AttributeCases/PartasImportAttr/PartasImportAttr.expected diff --git a/Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.fs b/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/PartasImportAttr/PartasImportAttr.fs similarity index 76% rename from Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.fs rename to Partas.Solid.Tests.Plugin/Compiled/AttributeCases/PartasImportAttr/PartasImportAttr.fs index 774f519..5f643ac 100644 --- a/Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/PartasImportAttr/PartasImportAttr.fs @@ -8,8 +8,6 @@ open Fable.Core [] type PartasImportAttr() = interface VoidNode + [] - member props.constructor = - Router() { - Route() - } + member props.constructor = Router () { Route () } diff --git a/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.expected b/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/Pojo/Pojo.expected similarity index 100% rename from Partas.Solid.Tests/AttributeCases/Pojo/Pojo.expected rename to Partas.Solid.Tests.Plugin/Compiled/AttributeCases/Pojo/Pojo.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/Pojo/Pojo.fs b/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/Pojo/Pojo.fs new file mode 100644 index 0000000..b2ec6ef --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/AttributeCases/Pojo/Pojo.fs @@ -0,0 +1,17 @@ +module Partas.Solid.Tests.AttributeCases.Pojo + +open Partas.Solid +open Fable.Core + +[] +type Poj(?testAttr: string, ?otherAttr: string) = + member val testAttr: string = JS.undefined with get, set + member val testGrok: string = JS.undefined with get, set + member val testBok: string = JS.undefined with get, set + +[] +let Bock () = + let tog = Poj (testGrok = "test", testBok = "bok", testAttr = "chok") + let bop = Poj (testAttr = "tes") + let chog = Poj (testGrok = "dfs", otherAttr = "sdf") + Poj (testGrok = "dfs", otherAttr = "sdf") diff --git a/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CharArrayMapping/CharArrayMapping.expected similarity index 73% rename from Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/CharArrayMapping/CharArrayMapping.expected index 650c2e2..44b6ba4 100644 --- a/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CharArrayMapping/CharArrayMapping.expected @@ -1,5 +1,5 @@ import { For, splitProps } from "solid-js"; -import { map } from "./fable_modules/fable-library-js.5.0.0-alpha.13/Array.js"; +import { map } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/Array.js"; export function WordRotate(props) { const [PARTAS_LOCAL, PARTAS_OTHERS] = splitProps(props, ["words"]); diff --git a/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CharArrayMapping/CharArrayMapping.fs similarity index 51% rename from Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/CharArrayMapping/CharArrayMapping.fs index 9dc9cda..9970df6 100644 --- a/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CharArrayMapping/CharArrayMapping.fs @@ -6,8 +6,14 @@ open Fable.Core [] type WordRotate() = inherit div() - [] member val words: string = unbox null with get,set + + [] + member val words: string = unbox null with get, set + [] member props.constructor = - For(each = (props.words.ToCharArray() |> Array.map string)) - + For ( + each = + (props.words.ToCharArray () + |> Array.map string) + ) diff --git a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.expected similarity index 83% rename from Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.expected index e1dceb2..93000b3 100644 --- a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.expected @@ -1,5 +1,5 @@ import { Match, createSignal } from "solid-js"; -import { defaultOf } from "./fable_modules/fable-library-js.5.0.0-alpha.13/Util.js"; +import { defaultOf } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/Util.js"; import { fakeTag } from "fakeLibrary"; import { FakeImport } from "FakeLibrary"; diff --git a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fs similarity index 59% rename from Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fs index f3c52bd..da3d0ee 100644 --- a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fs @@ -14,24 +14,25 @@ type MenuItem(title: string, url: string, icon: RegularNode) = member val title = title member val url = url member val icon = icon + module App = [] - type [] MyItemizer() = + [] + type MyItemizer() = interface RegularNode - member val items: MenuItem array = unbox null with get,set + member val items: MenuItem array = unbox null with get, set + [] - member props.constructor = - div() - + member props.constructor = div () + [] - let App() = - let initialItems = [| - MenuItem("Home", "#", div()) - |] - let (items, setItems) = createSignal(initialItems) - let (item, addItem) = createSignal(Unchecked.defaultof<_>) - div() { - MyItemizer(items = items()) - Imported() - Match() + let App () = + let initialItems = [| MenuItem ("Home", "#", div ()) |] + let (items, setItems) = createSignal (initialItems) + let (item, addItem) = createSignal (Unchecked.defaultof<_>) + + div () { + MyItemizer (items = items ()) + Imported () + Match () } diff --git a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructorTypes.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructorTypes.fs similarity index 84% rename from Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructorTypes.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructorTypes.fs index 309af77..09026f9 100644 --- a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructorTypes.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructorTypes.fs @@ -4,5 +4,6 @@ open Partas.Solid open Fable.Core [] -type [] Imported() = +[] +type Imported() = interface RegularNode diff --git a/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/EmptyCE/EmptyCE.expected similarity index 71% rename from Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/EmptyCE/EmptyCE.expected index 5ea7778..581ad3e 100644 --- a/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/EmptyCE/EmptyCE.expected @@ -1,5 +1,5 @@ -import { fold } from "./fable_modules/fable-library-js.5.0.0-alpha.13/List.js"; -import { uncurry2 } from "./fable_modules/fable-library-js.5.0.0-alpha.13/Util.js"; +import { fold } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/List.js"; +import { uncurry2 } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/Util.js"; import { For } from "solid-js"; export function cn(listofclasses) { diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/EmptyCE/EmptyCE.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/EmptyCE/EmptyCE.fs new file mode 100644 index 0000000..bf085b6 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/EmptyCE/EmptyCE.fs @@ -0,0 +1,40 @@ +module Partas.Solid.Tests.IssueCases.EmptyCE + +open Partas.Solid +open Fable.Core +open Fable.Core.JsInterop + +let cn (listofclasses: string list) = + listofclasses + |> List.fold ((+) >> id) "" + +[] +let Compponent (show: bool) = + div ( + class' = + cn + [ "testcase" + if show then + "showthis" + "i'm always here" ] + ) { + if show then + "I show sometimes!" + + "I show always!" + + For ( + each = + !![ 1 + 2 + 3 + if show then + 4 + 5 ] + ) { + + + + + } + } diff --git a/Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexAccess/IndexAccess.expected similarity index 74% rename from Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexAccess/IndexAccess.expected index 2ae3398..ea358ec 100644 --- a/Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexAccess/IndexAccess.expected @@ -1,5 +1,5 @@ import { splitProps } from "solid-js"; -import { defaultOf } from "./fable_modules/fable-library-js.5.0.0-alpha.13/Util.js"; +import { defaultOf } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/Util.js"; export function TestStringAccess(props) { const [PARTAS_LOCAL, PARTAS_OTHERS] = splitProps(props, ["index"]); diff --git a/Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexAccess/IndexAccess.fs similarity index 100% rename from Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexAccess/IndexAccess.fs diff --git a/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexedPropSpreading/IndexedPropSpreading.expected similarity index 100% rename from Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexedPropSpreading/IndexedPropSpreading.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fs new file mode 100644 index 0000000..fd3b6c6 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fs @@ -0,0 +1,18 @@ +module Partas.Solid.Tests.IssueCases.IndexedPropSpreading + +open Partas.Solid +open Fable.Core + +[] +let splitProps (o: 'T, arr1: string[], arr2: string[]) : 'T * 'T = jsNative + +[] +type Select() = + inherit select() + + [] + member props.__ = + let rootProps, selectProps = + splitProps (props, [| "name"; "placeholder"; "required"; "disabled" |], [| "placeholder"; "ref"; "onInput"; "onChange"; "onBlur" |]) + + div().spread rootProps { select().spread selectProps } diff --git a/Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/InheritedProperty/InheritedProperty.expected similarity index 100% rename from Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/InheritedProperty/InheritedProperty.expected diff --git a/Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/InheritedProperty/InheritedProperty.fs similarity index 74% rename from Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/InheritedProperty/InheritedProperty.fs index f56486b..b730293 100644 --- a/Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/InheritedProperty/InheritedProperty.fs @@ -5,25 +5,36 @@ open Partas.Solid.Aria open Fable.Core open Fable.Core.JsInterop -type [] Lib = +[] +type Lib = [] - static member twMerge (classes: string) : string = jsNative + static member twMerge(classes: string) : string = jsNative + [] - static member clsx(classes: obj): string = jsNative - static member cn (classes: string array): string = classes |> Lib.clsx |> Lib.twMerge + static member clsx(classes: obj) : string = jsNative + + static member cn(classes: string array) : string = + classes + |> Lib.clsx + |> Lib.twMerge + open Partas.Solid open Fable.Core open Browser.Types + module Spec = - let [] checkbox = "@kobalte/core/checkbox" + [] + let checkbox = "@kobalte/core/checkbox" + module Kobalte = [] type CheckboxRenderProp = abstract checked': Accessor //v0.13.9 abstract indeterminate: Accessor //v0.13.9 + /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -37,21 +48,41 @@ module Kobalte = interface HtmlTag interface Polymorph interface ChildLambdaProvider - [] val mutable checked' : bool //v0.13.9 - [] val mutable defaultChecked : bool //v0.13.9 - [] val mutable onChange : bool -> unit //v0.13.9 - [] val mutable indeterminate : bool //v0.13.9 - [] val mutable name : string //v0.13.9 - [] val mutable value : string //v0.13.9 - [] val mutable required : bool //v0.13.9 - [] val mutable disabled : bool //v0.13.9 - [] val mutable readOnly : bool //v0.13.9 - [] val mutable children : CheckboxRenderProp -> HtmlElement //v0.13.9 + + [] + val mutable checked': bool //v0.13.9 + + [] + val mutable defaultChecked: bool //v0.13.9 + + [] + val mutable onChange: bool -> unit //v0.13.9 + + [] + val mutable indeterminate: bool //v0.13.9 + + [] + val mutable name: string //v0.13.9 + + [] + val mutable value: string //v0.13.9 + + [] + val mutable required: bool //v0.13.9 + + [] + val mutable disabled: bool //v0.13.9 + + [] + val mutable readOnly: bool //v0.13.9 + + [] + val mutable children: CheckboxRenderProp -> HtmlElement //v0.13.9 [] module Checkbox = //v0.13.9 /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -64,9 +95,12 @@ module Kobalte = type Indicator() = //v0.13.9 inherit div() interface Polymorph - [] val mutable forceMount : bool //v0.13.9 + + [] + val mutable forceMount: bool //v0.13.9 + /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -79,9 +113,12 @@ module Kobalte = type ErrorMessage() = //v0.13.9 inherit div() interface Polymorph - [] val mutable forceMount : bool //v0.13.9 + + [] + val mutable forceMount: bool //v0.13.9 + /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -94,8 +131,9 @@ module Kobalte = type Label() = //v0.13.9 inherit label() interface Polymorph + /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -108,8 +146,9 @@ module Kobalte = type Description() = inherit div() //v0.13.9 interface Polymorph + /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -122,8 +161,9 @@ module Kobalte = type Control() = //v0.13.9 inherit div() interface Polymorph + /// - /// + /// /// /// Present when the checkbox is valid according to validation rules /// Present when the checkbox is invalid according to the validation rules @@ -142,7 +182,13 @@ module Kobalte = [] type CheckboxContext = abstract member value: Accessor with get - abstract member dataset: Accessor<{|``data-checked``:string option; ``data-indeterminate``: string option|}> with get + + abstract member dataset: + Accessor< + {| ``data-checked``: string option + ``data-indeterminate``: string option |} + > with get + abstract member ``checked``: Accessor with get abstract member indeterminate: Accessor with get abstract member inputRef: Accessor with get @@ -151,54 +197,52 @@ module Kobalte = abstract member setIsChecked: (bool -> unit) with get abstract member setIsFocused: (bool -> unit) with get abstract member setInputRef: (HTMLInputElement -> unit) with get + [] - let useCheckboxContext (): CheckboxContext = jsNative + let useCheckboxContext () : CheckboxContext = jsNative [] type Checkbox() = inherit Kobalte.Checkbox() + [] member props.checkbox = - Kobalte.Checkbox( - indeterminate = props.indeterminate, - class' = Lib.cn [| "items-top group relative flex space-x-2"; props.class' |] - ).spread(props) { yield fun _ -> Fragment() { - - Kobalte.Checkbox.Input(class'="peer") - Kobalte.Checkbox.Control( - class' = "size-4 shrink-0 rounded-sm border border-primary + Kobalte + .Checkbox(indeterminate = props.indeterminate, class' = Lib.cn [| "items-top group relative flex space-x-2"; props.class' |]) + .spread (props) { + yield + fun _ -> + Fragment () { + + Kobalte.Checkbox.Input (class' = "peer") + + Kobalte.Checkbox.Control ( + class' = + "size-4 shrink-0 rounded-sm border border-primary ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 data-[checked]:border-none data-[indeterminate]:border-none data-[checked]:bg-primary data-[indeterminate]:bg-primary data-[checked]:text-primary-foreground data-[indeterminate]:text-primary-foreground" - ) { - Kobalte.Checkbox.Indicator() { - if props.indeterminate then - "😐" - // Minus(class' = "size-4", strokeWidth = 2) - else - "😀" - // Check(class' = "size-4", strokeWidth = 2) - } - } - } + ) { + Kobalte.Checkbox.Indicator () { + if props.indeterminate then + "😐" + // Minus(class' = "size-4", strokeWidth = 2) + else + "😀" + // Check(class' = "size-4", strokeWidth = 2) + } + } + } } -[] -let selectColumn: obj = - Checkbox(checked' = true) - +[] +let selectColumn: obj = Checkbox (checked' = true) + [] let selectColumn2: obj = - {| - header = fun headerProps -> - Checkbox( - checked' = true, - indeterminate = true - ) - |} - + {| header = fun headerProps -> Checkbox (checked' = true, indeterminate = true) |} diff --git a/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ObjectExpressions/ObjectExpressions.expected similarity index 81% rename from Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/ObjectExpressions/ObjectExpressions.expected index 5191a5e..640f3a7 100644 --- a/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ObjectExpressions/ObjectExpressions.expected @@ -1,5 +1,5 @@ import { For, createSignal, splitProps } from "solid-js"; -import { split } from "./fable_modules/fable-library-js.5.0.0-alpha.13/String.js"; +import { split } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/String.js"; export function WordRotate(props) { const [PARTAS_LOCAL, PARTAS_OTHERS] = splitProps(props, ["duration", "words"]); diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ObjectExpressions/ObjectExpressions.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ObjectExpressions/ObjectExpressions.fs new file mode 100644 index 0000000..5debae5 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ObjectExpressions/ObjectExpressions.fs @@ -0,0 +1,32 @@ +module Partas.Solid.Tests.IssueCases.ObjectExpressions + +open Partas.Solid +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +type AbstractInterface = + abstract member delay: int with get, set + +[] +type WordRotate() = + inherit div() + + [] + member val words: string = unbox null with get, set + + [] + member val duration: int = unbox null with get, set + + [] + member props.constructor = + let index, setIndex = createSignal (0) + + let transition = + jsOptions (fun o -> + o.delay <- + props.duration + * index ()) + + For (each = props.words.Split (' ')) diff --git a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransforms.expected similarity index 100% rename from Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransforms.expected diff --git a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransforms.fs similarity index 65% rename from Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransforms.fs index d5227f8..500dc0e 100644 --- a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransforms.fs @@ -9,12 +9,12 @@ open Fable.Core.JS [] type PartasTable<'Data>() = interface RegularNode + [] - member val dataStack: DataStack<'Data> = undefined with get,set - [] + member val dataStack: DataStack<'Data> = undefined with get, set + + [] member props.__ = - - let options = - TableOptions<'Data>( - ) .data(fun () -> props.dataStack.data) - div() + + let options = TableOptions<'Data>().data (fun () -> props.dataStack.data) + div () diff --git a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransformsTypes.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransformsTypes.fs similarity index 61% rename from Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransformsTypes.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransformsTypes.fs index d0e71ab..46316e6 100644 --- a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransformsTypes.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ThisArgTransforms/ThisArgTransformsTypes.fs @@ -6,50 +6,57 @@ open Fable.Core.JsInterop open Fable.Core.JS open System.Runtime.CompilerServices -type private ChangeStack<'T> = { - data: SolidResource<'T[]> - resource: SolidResourceManager<'T[]> - source: Signal<'T[] option> -} +type private ChangeStack<'T> = + { data: SolidResource<'T[]> + resource: SolidResourceManager<'T[]> + source: Signal<'T[] option> } + type private AddStack<'T> = - { - data: SolidResource[]> - resource: SolidResourceManager[]> - source: Signal<'T[] option> - } -type private EditStack<'T> = { - data: SolidResource - resource: SolidResourceManager - source: Signal<'T[] option> -} + { data: SolidResource[]> + resource: SolidResourceManager[]> + source: Signal<'T[] option> } + +type private EditStack<'T> = + { data: SolidResource + resource: SolidResourceManager + source: Signal<'T[] option> } + type DataStack<'T> = - private { - changeStack: ChangeStack<'T> - editStack: EditStack<'T> - addStack: AddStack<'T> - } - member this.data with get() = this.changeStack.data.latest + private + { changeStack: ChangeStack<'T> + editStack: EditStack<'T> + addStack: AddStack<'T> } + + member this.data = this.changeStack.data.latest [] -type TableOptions<'Data> - ( - ?data: 'Data[] - ) = +type TableOptions<'Data>(?data: 'Data[]) = /// /// The data for the table to display. This array should match the type you provided to table.setRowType[...], but in theory could be an array of anything. It's common for each item in the array to be an object of key/values but this is not required. Columns can access this data via string/index or a functional accessor to return anything they want.

/// When the data option changes reference (compared via Object.is), the table will reprocess the data. Any other data processing that relies on the core data model (such as grouping, sorting, filtering, etc) will also be reprocessed.

/// 🧠 Make sure your data option is only changing when you want the table to reprocess. Providing an inline [] or constructing the data array as a new object every time you want to render the table will result in a lot of unnecessary re-processing. This can easily go unnoticed in smaller tables, but you will likely notice it in larger tables. ///
/// For reactivity, you should use the helper function TableOptions.dataGetter to set a `get` property - member val data: 'Data[] option = data with get,set - + member val data: 'Data[] option = data with get, set + let inline private mkProperty this name getter = - Constructors.Object.defineProperty(this, name, unbox (createObj [ "get" ==> getter ])) + Constructors.Object.defineProperty ( + this, + name, + unbox ( + createObj + [ "get" + ==> getter ] + ) + ) |> ignore + this + [] type TableOptionsExtensions = /// Properly provides reactivity by making the data key a property [] - static member inline data (this: TableOptions<'Data>, value: unit -> 'Data[]) = mkProperty this "data" value + static member inline data(this: TableOptions<'Data>, value: unit -> 'Data[]) = + mkProperty this "data" value diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnFaceting.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnFaceting.fs new file mode 100644 index 0000000..b3d2c96 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnFaceting.fs @@ -0,0 +1,16 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +module mt = + type Column<'Data> with + member _.getFacetedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getFacetedUniqueValues: (unit -> Map) = unbox null + member _.getFacetedMinMaxValues: (unit -> Map) = unbox null + + type Table<'Data> with + member _.getColumnFacetedRowModel + with set (columnId: string -> RowModel<'Data>) = () diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnFiltering.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnFiltering.fs similarity index 59% rename from Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnFiltering.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnFiltering.fs index 39b668e..f74f148 100644 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnFiltering.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnFiltering.fs @@ -8,10 +8,10 @@ open Fable.Core.JsInterop module rec ColumnFilteringTypes = [] type ColumnFiltersTableState = - abstract member columnFilters: ColumnFiltersState with get,set - + abstract member columnFilters: ColumnFiltersState with get, set + type ColumnFiltersState = ColumnFilter[] - + [] type ColumnFilter = abstract member id: string with get @@ -19,6 +19,7 @@ module rec ColumnFilteringTypes = type FilterFn = interface end type BuiltInFilterFn = FilterFn + /// /// Every filter function receives: ///
    @@ -51,9 +52,9 @@ module rec ColumnFilteringTypes = abstract member weakEquals: BuiltInFilterFn with get /// Number range inclusion abstract member inNumberRange: BuiltInFilterFn with get - - type ColumnDef<'Data> with + + type ColumnDef<'Data> with /// /// The filter function to use with this column.
    /// Options: @@ -62,37 +63,56 @@ module rec ColumnFilteringTypes = ///
  • A custom filter function
  • ///
///
- member _.filterFn with set(value: FilterFn) = () and get(): FilterFn = unbox null + member _.filterFn + with set (value: FilterFn) = () + and get (): FilterFn = unbox null + /// Enables/disables the column filter for this column. - member _.enableColumnFilter with set(value: bool) = () and get(): bool = unbox null + member _.enableColumnFilter + with set (value: bool) = () + and get (): bool = unbox null type Column<'Data> with - member _.getCanFilter with get(): (unit -> bool) = unbox null - member _.getFilterIndex with get(): (unit -> int) = unbox null - member _.getIsFiltered with get(): (unit -> bool) = unbox null - member _.getFilterValue with get(): (unit -> obj) = unbox null - member _.setFilterValue with get(): (Updater -> unit) = unbox null - member _.getAutoFilterFn with get(): (string -> FilterFn) = unbox null - member _.getFilterFn with get(): (string -> FilterFn) = unbox null + member _.getCanFilter: (unit -> bool) = unbox null + member _.getFilterIndex: (unit -> int) = unbox null + member _.getIsFiltered: (unit -> bool) = unbox null + member _.getFilterValue: (unit -> obj) = unbox null + member _.setFilterValue: (Updater -> unit) = unbox null + member _.getAutoFilterFn: (string -> FilterFn) = unbox null + member _.getFilterFn: (string -> FilterFn) = unbox null type Row<'Data> with - member _.columnFilters with get(): JS.Object = unbox null - member _.columnFiltersMeta with get(): JS.Object = unbox null + member _.columnFilters: JS.Object = unbox null + member _.columnFiltersMeta: JS.Object = unbox null type TableOptions<'Data> with - member _.filterFns with set(value: obj) = () - member _.filterFromLeafRows with set(value: bool) = () - member _.maxLeafRowFilterDepth with set(value: int) = () - member _.enableFilters with set(value: bool) = () - member _.manualFiltering with set(value: bool) = () - member _.onColumnFiltersChange with set(value: OnChangeFn) = () - member _.enableColumnFilters with set(value: bool) = () - member _.getFilteredRowModel with set(fn: Table<'Data> -> (unit -> RowModel<'Data>)) = () - + member _.filterFns + with set (value: obj) = () + + member _.filterFromLeafRows + with set (value: bool) = () + + member _.maxLeafRowFilterDepth + with set (value: int) = () + + member _.enableFilters + with set (value: bool) = () + + member _.manualFiltering + with set (value: bool) = () + + member _.onColumnFiltersChange + with set (value: OnChangeFn) = () + + member _.enableColumnFilters + with set (value: bool) = () + + member _.getFilteredRowModel + with set (fn: Table<'Data> -> (unit -> RowModel<'Data>)) = () + type Table<'Data> with - member _.setColumnFilters with get(): Updater -> unit = unbox null - member _.resetColumnFilters with get(): bool -> unit = unbox null - member _.getPreFilteredRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getFilteredRowModel with get(): (unit -> RowModel<'Data>) = unbox null - \ No newline at end of file + member _.setColumnFilters: Updater -> unit = unbox null + member _.resetColumnFilters: bool -> unit = unbox null + member _.getPreFilteredRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getFilteredRowModel: (unit -> RowModel<'Data>) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnOrdering.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnOrdering.fs new file mode 100644 index 0000000..a1c3f98 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnOrdering.fs @@ -0,0 +1,31 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +type ColumnOrderTableState = interface end + +type ColumnOrderState = string[] + +[] +module ordrr = + type ColumnOrderTableState with + member _.columnOrder + with set (columnOrder: ColumnOrderState) = () + and get (): ColumnOrderState = unbox null + + type TableOptions<'Data> with + member _.onColumnOrderChange + with set (value: OnChangeFn) = () + and get () = unbox null + + type Table<'Data> with + member _.setColumnOrder: Updater -> unit = unbox null + member _.resetColumnOrder: bool -> unit = unbox null + + type Column<'Data> with + member _.getIndex: ColumnPinningPosition -> int = unbox null + member _.getIsFirstColumn: ColumnPinningPosition -> bool = unbox null + member _.getIsLastColumn: ColumnPinningPosition -> bool = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnPinning.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnPinning.fs new file mode 100644 index 0000000..9be3958 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnPinning.fs @@ -0,0 +1,49 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +module aaaaaa = + type TableOptions<'Data> with + member _.enableColumnPinning + with set (value: bool) = () + + member _.onColumnPinningChange + with set (value: OnChangeFn) = () + + type Table<'Data> with + member _.setColumnPinning: Updater -> unit = unbox null + member _.resetColumnPinning: bool -> unit = unbox null + member _.getIsSomeColumnPinned: ColumnPinningState -> unit = unbox null + member _.getLeftHeaderGroups: HeaderGroup<'Data>[] = unbox null + member _.getCenterHeaderGroups: HeaderGroup<'Data>[] = unbox null + member _.getRightHeaderGroups: HeaderGroup<'Data>[] = unbox null + member _.getLeftFooterGroups: HeaderGroup<'Data>[] = unbox null + member _.getCenterFooterGroups: HeaderGroup<'Data>[] = unbox null + member _.getRightFooterGroups: HeaderGroup<'Data>[] = unbox null + member _.getLeftFlatHeaders: Header<'Data>[] = unbox null + member _.getCenterFlatHeaders: Header<'Data>[] = unbox null + member _.getRightFlatHeaders: Header<'Data>[] = unbox null + member _.getLeftLeafHeaders: Header<'Data>[] = unbox null + member _.getCenterLeafHeaders: Header<'Data>[] = unbox null + member _.getRightLeafHeaders: Header<'Data>[] = unbox null + member _.getLeftLeafColumns: Column<'Data>[] = unbox null + member _.getCenterLeafColumns: Column<'Data>[] = unbox null + member _.getRightLeafColumns: Column<'Data>[] = unbox null + + type ColumnDef<'Data> with + member _.onColumnPinningChange + with set (value: OnChangeFn) = () + + type Column<'Data> with + member _.getCanPin: (unit -> bool) = unbox null + member _.getPinnedIndex: (unit -> int) = unbox null + member _.getIsPinned: (unit -> ColumnPinningPosition) = unbox null + member _.pin: ColumnPinningPosition -> unit = unbox null + + type Row<'Data> with + member _.getLeftVisibleCells: (unit -> Cell<'Data>[]) = unbox null + member _.getRightVisibleCells: (unit -> Cell<'Data>[]) = unbox null + member _.getCenterVisibleCells: (unit -> Cell<'Data>[]) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnSizing.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnSizing.fs new file mode 100644 index 0000000..6064633 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnSizing.fs @@ -0,0 +1,70 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +module aaa = + type ColumnDef<'Data> with + member _.enableResizing + with set (value: bool) = () + + member _.size + with set (value: int) = () + + member _.minSize + with set (value: int) = () + + member _.maxSize + with set (value: int) = () + + type Column<'Data> with + member _.getSize: (unit -> int) = unbox null + member _.getStart: ColumnPinningPosition option -> int = unbox null + member _.getAfter: ColumnPinningPosition option -> int = unbox null + member _.getCanResize: (unit -> bool) = unbox null + member _.getIsResizing: (unit -> bool) = unbox null + member _.resetSize: (unit -> unit) = unbox null + + type Header<'Data> with + member _.getSize: (unit -> int) = unbox null + member _.getStart: ColumnPinningPosition option -> int = unbox null + member _.getResizeHandler: (unit -> (MouseEvent -> unit)) = unbox null + + [] + type ColumnResizingMode = + | OnChange + | OnEnd + + [] + type ColumnResizingDirection = + | Ltr + | Rtl + + type TableOptions<'Data> with + member _.enableColumnResizing + with set (value: bool) = () + + member _.columnResizeMode + with set (value: ColumnResizingMode) = () + + member _.columnResizeDirection + with set (value: ColumnResizingDirection) = () + + member _.onColumnSizingChange + with set (value: OnChangeFn) = () + + member _.onColumnSizingInfoChange + with set (value: OnChangeFn) = () + + type Table<'Data> with + member _.setColumnSizing: Updater -> unit = unbox null + member _.setColumnSizingInfo: bool -> unit = unbox null + member _.resetColumnSizing: bool -> unit = unbox null + member _.resetHeaderSizeInfo: bool -> unit = unbox null + member _.getTotalSize: (unit -> int) = unbox null + member _.getLeftTotalSize: (unit -> int) = unbox null + member _.getCenterTotalSize: (unit -> int) = unbox null + member _.getRightTotalSize: (unit -> int) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnVisibility.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnVisibility.fs new file mode 100644 index 0000000..21d7ef1 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/ColumnVisibility.fs @@ -0,0 +1,43 @@ +namespace Partas.Solid.TanStack.Table + +open System.Runtime.CompilerServices +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +module aa = + type ColumnDef<'Data> with + member _.enableHiding + with set (value: bool) = () + + type Column<'Data> with + member _.getCanHide: (unit -> bool) = unbox null + member _.getIsVisible: (unit -> bool) = unbox null + member _.toggleVisibility: (bool -> unit) = unbox null + member _.getToggleVisibilityHandler: (unit -> (Event -> unit)) = unbox null + + + type TableOptions<'Data> with + member _.onColumnVisibilityChange + with set (value: OnChangeFn) = () + + member _.enableHiding + with set (value: bool) = () + + type Table<'Data> with + member _.getVisibleFlatColumns: (unit -> Column<'Data>[]) = unbox null + member _.getVisibleLeafColumns: (unit -> Column<'Data>[]) = unbox null + member _.getLeftVisibleLeafColumns: (unit -> Column<'Data>[]) = unbox null + member _.getRightVisibleLeafColumns: (unit -> Column<'Data>[]) = unbox null + member _.getCenterVisibleLeafColumns: (unit -> Column<'Data>[]) = unbox null + member _.setColumnVisibility: (Updater -> unit) = unbox null + member _.resetColumnVisibility: bool -> unit = unbox null + member _.toggleAllColumnsVisible: bool -> unit = unbox null + member _.getIsAllColumnsVisible: (unit -> bool) = unbox null + member _.getIsSomeColumnsVisible: (unit -> bool) = unbox null + member _.getToggleAllColumnsVisibilityHandler: (unit -> (Event -> unit)) = unbox null + + type Row<'Data> with + member _.getVisibleCells: (unit -> Cell<'Data>[]) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Expanding.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Expanding.fs new file mode 100644 index 0000000..917f1ae --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Expanding.fs @@ -0,0 +1,52 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +module oooo = + type Row<'Data> with + member _.toggleExpanded: (bool -> unit) = unbox null + member _.getIsExpanded: (unit -> bool) = unbox null + member _.getIsAllParentsExpanded: (unit -> bool) = unbox null + member _.getCanExpand: (unit -> bool) = unbox null + member _.getToggleExpandedHandler: (unit -> (unit -> unit)) = unbox null + + type TableOptions<'Data> with + member _.manualExpanding + with set (value: bool) = () + + member _.onExpandedChange + with set (value: OnChangeFn) = () + + member _.autoResetExpanded + with set (value: bool) = () + + member _.enableExpanding + with set (value: bool) = () + + member _.getExpandedRowModel + with set (value: Table<'Data> -> (unit -> RowModel<'Data>)) = () + + member _.getIsRowExpanded + with set (value: Row<'Data> -> bool) = () + + member _.getRowCanExpand + with set (value: Row<'Data> -> bool) = () + + member _.paginateExpandedRows + with set (value: bool) = () + + type Table<'Data> with + member _.setExpanded: Updater -> unit = unbox null + member _.toggleAllRowsExpanded: bool -> unit = unbox null + member _.resetExpanded: bool -> unit = unbox null + member _.getCanSomeRowsExpand: (unit -> bool) = unbox null + member _.getToggleAllRowsExpandedHandler: (unit -> (Event -> unit)) = unbox null + member _.getIsSomeRowsExpanded: (unit -> bool) = unbox null + member _.getIsAllRowsExpanded: (unit -> bool) = unbox null + member _.getExpandedDepth: (unit -> int) = unbox null + member _.getExpandedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getPreExpandedRowModel: (unit -> RowModel<'Data>) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/GlobalFaceting.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/GlobalFaceting.fs new file mode 100644 index 0000000..7794441 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/GlobalFaceting.fs @@ -0,0 +1,12 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +module uu = + type Table<'Data> with + member _.getGlobalFacetedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getGlobalFacetedUniqueValues: (unit -> Map) = unbox null + member _.getGlobalFacetedMinMaxValues: (unit -> int * int) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/GlobalFiltering.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/GlobalFiltering.fs new file mode 100644 index 0000000..7ad6b17 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/GlobalFiltering.fs @@ -0,0 +1,57 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +module uuuu = + type ColumnDef<'Data> with + member _.enableGlobalFilter + with set (value: bool) = () + + type Column<'Data> with + member _.getCanGlobalFilter: (unit -> bool) = unbox null + + type Row<'Data> with + member _.columnFiltersMeta: Map = unbox null + + + type TableOptions<'Data> with + member _.filterFns + with set (value: Map) = () + + member _.filterFromLeafRows + with set (value: bool) = () + + member _.maxLeafRowFilterDepth + with set (value: int) = () + + member _.enableFilters + with set (value: bool) = () + + member _.manualFiltering + with set (value: bool) = () + + member _.getFilteredRowModel + with set (value: Table<'Data> -> (unit -> RowModel<'Data>)) = () + + member _.globalFilterFn + with set (value: FilterFn) = () + + member _.onGlobalFilterChange + with set (value: OnChangeFn) = () + + member _.enableGlobalFilter + with set (value: bool) = () + + member _.getColumnCanGlobalFilter + with set (value: Column<'Data> -> bool) = () + + type Table<'Data> with + member _.getPreFilteredRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getFilteredRowModel: (unit -> RowModel<'Data>) = unbox null + member _.setGlobalFilter: (Updater -> unit) = unbox null + member _.resetGlobalFilter: bool -> unit = unbox null + member _.getGlobalAutoFilterFn: string -> FilterFn option = unbox null + member _.getGlobalFilterFn: string -> FilterFn option = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Grouping.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Grouping.fs new file mode 100644 index 0000000..cc53dc9 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Grouping.fs @@ -0,0 +1,83 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +type Renderable<'Data> + (table: Table<'Data>, row: Row<'Data>, column: Column<'Data>, cell: Cell<'Data>, getValue: (unit -> obj), renderValue: (unit -> obj)) = + member val table = table with get, set + member val row = row with get, set + member val column = column with get, set + member val cell = cell with get, set + member val getValue = getValue with get, set + member val renderValue = renderValue with get, set + +[] +module ouo = + type ColumnDef<'Data> with + member _.aggregationFn + with set (value: AggregationFn) = () + + member _.aggregatedCell + with set (value: Renderable<'Data>) = () + + member _.enableGrouping + with set (value: bool) = () + + member _.getGroupingValue + with set (value: 'Data -> obj) = () + + type Column<'Data> with + member _.aggregationFn: AggregationFn = unbox null + member _.getCanGroup: (unit -> bool) = unbox null + member _.getIsGrouped: (unit -> bool) = unbox null + member _.getGroupedIndex: (unit -> int) = unbox null + member _.toggleGrouping: (unit -> unit) = unbox null + member _.getToggleGroupingHandler: (unit -> (unit -> unit)) = unbox null + member _.getAutoAggregationFn: (unit -> AggregationFn option) = unbox null + member _.getAggregationFn: (unit -> AggregationFn option) = unbox null + + type Row<'Data> with + member _.groupingColumnId: string = unbox null + member _.groupingValue: obj = unbox null + member _.getIsGrouped: (unit -> bool) = unbox null + member _.getGroupingValue: (string -> obj) = unbox null + + [] + type GroupedColumnMode = + | [] False + | Reorder + | Remove + + type TableOptions<'Data> with + member _.aggregationFns + with set (value: Map) = () + + member _.manualGrouping + with set (value: bool) = () + + member _.onGroupingChange + with set (value: OnChangeFn) = () + + member _.enableGrouping + with set (value: bool) = () + + member _.getGroupedRowModel + with set (value: Table<'Data> -> (unit -> RowModel<'Data>)) = () + + member _.groupedColumnMode + with set (value: GroupedColumnMode) = () + + type Table<'Data> with + member _.setGrouping: Updater -> unit = unbox null + member _.resetGrouping: bool -> unit = unbox null + member _.getPreGroupedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getGroupedRowModel: (unit -> RowModel<'Data>) = unbox null + + type Cell<'Data> with + member _.getIsAggregated: (unit -> bool) = unbox null + member _.getIsGrouped: (unit -> bool) = unbox null + member _.getIsPlaceholder: (unit -> bool) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Pagination.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Pagination.fs new file mode 100644 index 0000000..4148d66 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Pagination.fs @@ -0,0 +1,45 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +module ppp = + type TableOptions<'Data> with + member _.manualPagination + with set (value: bool) = () + + member _.pageCount + with set (value: int) = () + + member _.rowCount + with set (value: int) = () + + member _.autoResetPageIndex + with set (value: bool) = () + + member _.onPaginationChange + with set (value: OnChangeFn) = () + + member _.getPaginationRowModel + with set (value: Table<'Data> -> (unit -> RowModel<'Data>)) = () + + type Table<'Data> with + member _.setPagination: Updater -> unit = unbox null + member _.resetPagination: bool -> unit = unbox null + member _.setPageIndex: Updater -> unit = unbox null + member _.resetPageIndex: bool -> unit = unbox null + member _.setPageSize: Updater -> unit = unbox null + member _.resetPageSize: bool -> unit = unbox null + member _.getPageOptions: (unit -> int[]) = unbox null + member _.getCanPreviousPage: (unit -> bool) = unbox null + member _.getCanNextPage: (unit -> bool) = unbox null + member _.previousPage: (unit -> unit) = unbox null + member _.nextPage: (unit -> unit) = unbox null + member _.firstPage: (unit -> unit) = unbox null + member _.lastPage: (unit -> unit) = unbox null + member _.getPageCount: (unit -> int) = unbox null + member _.getPrePaginationRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getPaginationRowModel: (unit -> RowModel<'Data>) = unbox null diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Program.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Program.fs similarity index 77% rename from Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Program.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Program.fs index 2851e37..453cdc0 100644 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Program.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Program.fs @@ -15,7 +15,7 @@ module rec Types = [] type TableRenderProp<'Data> = interface end - + [] type ColumnRenderProp<'Data> = interface end @@ -39,14 +39,14 @@ module rec Types = inherit ColumnRenderProp<'Data> [] - type CellRenderProps<'Data> = + type CellRenderProps<'Data> = inherit TableRenderProp<'Data> inherit RowRenderProp<'Data> inherit ColumnRenderProp<'Data> inherit CellRenderProp<'Data> abstract member getValue: ((unit -> obj)) with get abstract member renderValue: ((unit -> obj)) with get - + [] type ColumnDef<'Data> ( @@ -67,13 +67,13 @@ module rec Types = /// An accessor column is created with an object key accessor
/// The column header is defined as a string
///
- member val id: string = id.Value with get,set + member val id: string = id.Value with get, set /// The key of the row object to use when extracting the value for the column. - member val accessorKey: string = accessorKey.Value with get,set + member val accessorKey: string = accessorKey.Value with get, set /// The accessor function to use when extracting the value for the column from each row. - member val accessorFn: ('Data * int -> obj) = accessorFn.Value with get,set + member val accessorFn: ('Data * int -> obj) = accessorFn.Value with get, set /// The child column defs to include in a group column. - member val columns: 'Data[] = columns.Value with get,set + member val columns: 'Data[] = columns.Value with get, set /// /// The header to display for the column. If a string is passed, it can be used as a default for the column ID. If a function is passed, it will be passed a props object for the header and should return the rendered header value (the exact type depends on the adapter being used). /// @@ -86,7 +86,7 @@ module rec Types = /// }) => unknown) /// /// - member val header: HeaderRenderProps<'Data> -> obj = header.Value with get,set + member val header: HeaderRenderProps<'Data> -> obj = header.Value with get, set /// /// The footer to display for the column. If a function is passed, it will be passed a props object for the footer and should return the rendered footer value (the exact type depends on the adapter being used). /// @@ -99,7 +99,7 @@ module rec Types = /// }) => unknown) /// /// - member val footer: FooterRenderProps<'Data> -> obj = footer.Value with get,set + member val footer: FooterRenderProps<'Data> -> obj = footer.Value with get, set /// /// The cell to display each row for the column. If a function is passed, it will be passed a props object for the cell and should return the rendered cell value (the exact type depends on the adapter being used). /// @@ -115,11 +115,11 @@ module rec Types = /// }) => unknown) /// /// - member val cell: CellRenderProps<'Data> -> obj = cell.Value with get,set - member val meta: obj = meta.Value with get,set + member val cell: CellRenderProps<'Data> -> obj = cell.Value with get, set + member val meta: obj = meta.Value with get, set - [] + [] type TableState = inherit VisibilityTableState inherit ColumnOrderTableState @@ -131,12 +131,12 @@ module rec Types = inherit ColumnSizingTableState inherit PaginationTableState inherit RowSelectionTableState - + type Updater<'T> = U2<('T -> 'T), 'T> - [] + [] type TableFeature = interface end - + [] type TableOptions<'Data> ( @@ -158,30 +158,30 @@ module rec Types = ?getSubRows: 'Data * int -> 'Data[], ?getRowId: 'Data * int * Row<'Data> -> string ) = - member val data: 'Data[] option = data with get,set - member val columns: ColumnDef<'Data>[] option = columns with get,set - member val defaultColumn: ColumnDef<'Data> option = defaultColumn with get,set - member val initialState: TableState option = initialState with get,set - member val autoResetAll: bool option = autoResetAll with get,set - member val meta: obj option = meta with get,set - member val state: TableState option = state with get,set - member val onStateChange: (Updater<'Data> -> unit) option = onStateChange with get,set - member val debugAll: bool option = debugAll with get,set - member val debugTable: bool option = debugTable with get,set - member val debugHeaders: bool option = debugHeaders with get,set - member val debugColumns: bool option = debugColumns with get,set - member val debugRows: bool option = debugRows with get,set - member val _features: TableFeature[] option = _features with get,set - member val getCoreRowModel: ((TableOptions<'Data> -> unit) -> RowModel<'Data>) option = getCoreRowModel with get,set - member val getSubRows: ('Data * int -> 'Data[]) option = getSubRows with get,set - member val getRowId: ('Data * int * Row<'Data> -> string) option = getRowId with get,set + member val data: 'Data[] option = data with get, set + member val columns: ColumnDef<'Data>[] option = columns with get, set + member val defaultColumn: ColumnDef<'Data> option = defaultColumn with get, set + member val initialState: TableState option = initialState with get, set + member val autoResetAll: bool option = autoResetAll with get, set + member val meta: obj option = meta with get, set + member val state: TableState option = state with get, set + member val onStateChange: (Updater<'Data> -> unit) option = onStateChange with get, set + member val debugAll: bool option = debugAll with get, set + member val debugTable: bool option = debugTable with get, set + member val debugHeaders: bool option = debugHeaders with get, set + member val debugColumns: bool option = debugColumns with get, set + member val debugRows: bool option = debugRows with get, set + member val _features: TableFeature[] option = _features with get, set + member val getCoreRowModel: ((TableOptions<'Data> -> unit) -> RowModel<'Data>) option = getCoreRowModel with get, set + member val getSubRows: ('Data * int -> 'Data[]) option = getSubRows with get, set + member val getRowId: ('Data * int * Row<'Data> -> string) option = getRowId with get, set [] type RowModel<'Data> = - abstract member rows: Row<'Data>[] with get,set - abstract member flatRows: Row<'Data>[] with get,set - abstract member rowsById: System.Collections.Generic.IDictionary> with get,set - + abstract member rows: Row<'Data>[] with get, set + abstract member flatRows: Row<'Data>[] with get, set + abstract member rowsById: System.Collections.Generic.IDictionary> with get, set + [] type Table<'Data> = /// This is the resolved initial state of the table. @@ -229,8 +229,8 @@ module rec Types = abstract member getFlatHeaders: (unit -> Header<'Data>[]) with get /// Returns a flattened array of leaf-node Header objects for the table. abstract member getLeafHeaders: (unit -> Header<'Data>[]) with get - - [] + + [] type Column<'Data> = /// /// The resolved unique identifier for the column resolved in this priority: @@ -255,31 +255,31 @@ module rec Types = abstract member getFlatColumns: (unit -> Column<'Data>[]) with get /// Returns an array of all leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column. abstract member getLeafColumns: (unit -> Column<'Data>[]) with get - - [] + + [] type HeaderGroup<'Data> = /// The unique identifier for the header group. - abstract member id: string with get,set + abstract member id: string with get, set /// The depth of the header group, zero-indexed based. - abstract member depth: int with get,set + abstract member depth: int with get, set /// An array of Header objects that belong to this header group - abstract member headers: Header<'Data>[] with get,set - - [] + abstract member headers: Header<'Data>[] with get, set + + [] type Header<'Data, 'Value> = inherit Header<'Data> - [] + [] type Column<'Data, 'Value> = inherit Column<'Data> - [] + [] type HeaderContext<'Data, 'Value> = - abstract member table: TableOptions<'Data> with get,set - abstract member header: Header<'Data, 'Value> with get,set - abstract member column: Column<'Data, 'Value> with get,set + abstract member table: TableOptions<'Data> with get, set + abstract member header: Header<'Data, 'Value> with get, set + abstract member column: Column<'Data, 'Value> with get, set - [] + [] type Header<'Data> = /// The unique identifier for the header. abstract member id: string with get @@ -310,45 +310,47 @@ module rec Types = /// flexRender(header.column.columnDef.header, header.getContext()) /// abstract member getContext: (unit -> HeaderContext<'Data, obj>) with get + [] module Header = type Table<'Data> with /// Returns all header groups for the table. - member _.getHeaderGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null + member _.getHeaderGroups: (unit -> HeaderGroup<'Data>[]) = unbox null /// If pinning, returns the header groups for the left pinned columns. - member _.getLeftHeaderGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null + member _.getLeftHeaderGroups: (unit -> HeaderGroup<'Data>[]) = unbox null /// If pinning, returns the header groups for columns that are not pinned. - member _.getCenterHeaderGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null + member _.getCenterHeaderGroups: (unit -> HeaderGroup<'Data>[]) = unbox null /// If pinning, returns the header groups for the right pinned columns. - member _.getRightHeaderGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null - + member _.getRightHeaderGroups: (unit -> HeaderGroup<'Data>[]) = unbox null + /// Returns all footer groups for the table. - member _.getFooterGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null + member _.getFooterGroups: (unit -> HeaderGroup<'Data>[]) = unbox null /// If pinning, returns the footer groups for the left pinned columns. - member _.getLeftFooterGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null + member _.getLeftFooterGroups: (unit -> HeaderGroup<'Data>[]) = unbox null /// If pinning, returns the footer groups for columns that are not pinned. - member _.getCenterFooterGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null + member _.getCenterFooterGroups: (unit -> HeaderGroup<'Data>[]) = unbox null /// If pinning, returns the footer groups for the right pinned columns. - member _.getRightFooterGroups with get(): (unit -> HeaderGroup<'Data>[]) = unbox null - + member _.getRightFooterGroups: (unit -> HeaderGroup<'Data>[]) = unbox null + /// Returns headers for all columns in the table, including parent headers. - member _.getFlatHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null + member _.getFlatHeaders: (unit -> Header<'Data, obj>[]) = unbox null /// If pinning, returns headers for all left pinned columns in the table, including parent headers. - member _.getLeftFlatHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null + member _.getLeftFlatHeaders: (unit -> Header<'Data, obj>[]) = unbox null /// If pinning, returns headers for all columns that are not pinned, including parent headers. - member _.getCenterFlatHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null + member _.getCenterFlatHeaders: (unit -> Header<'Data, obj>[]) = unbox null /// If pinning, returns headers for all right pinned columns in the table, including parent headers. - member _.getRightFlatHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null - + member _.getRightFlatHeaders: (unit -> Header<'Data, obj>[]) = unbox null + /// Returns headers for all leaf columns in the table, (not including parent headers). - member _.getLeafHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null + member _.getLeafHeaders: (unit -> Header<'Data, obj>[]) = unbox null /// If pinning, returns headers for all left pinned leaf columns in the table, (not including parent headers). - member _.getLeftLeafHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null + member _.getLeftLeafHeaders: (unit -> Header<'Data, obj>[]) = unbox null /// If pinning, returns headers for all columns that are not pinned, (not including parent headers). - member _.getCenterLeafHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null + member _.getCenterLeafHeaders: (unit -> Header<'Data, obj>[]) = unbox null /// If pinning, returns headers for all right pinned leaf columns in the table, (not including parent headers). - member _.getRightLeafHeaders with get(): (unit -> Header<'Data, obj>[]) = unbox null - [] + member _.getRightLeafHeaders: (unit -> Header<'Data, obj>[]) = unbox null + + [] type Row<'Data> = /// The resolved unique identifier for the row resolved via the options.getRowId option. Defaults to the row's index (or relative index if it is a subRow) abstract member id: string with get @@ -380,21 +382,21 @@ module rec Types = /// Returns all of the Cells for the row. abstract member getAllCells: (unit -> Cell<'Data>[]) with get - [] + [] type CellContext<'Data, 'Value> = inherit TableRenderProp<'Data> inherit RowRenderProp<'Data> - abstract member column: Column<'Data, 'Value> with get,set - abstract member cell: Cell<'Data, 'Value> with get,set - abstract member getValue: (unit -> 'Value) with get,set - abstract member renderValue: (unit -> 'Value option) with get,set - - [] + abstract member column: Column<'Data, 'Value> with get, set + abstract member cell: Cell<'Data, 'Value> with get, set + abstract member getValue: (unit -> 'Value) with get, set + abstract member renderValue: (unit -> 'Value option) with get, set + + [] type Cell<'Data, 'Value> = inherit Cell<'Data> - [] + [] type Cell<'Data> = /// The unique ID for the cell across the entire table. abstract member id: string with get @@ -413,96 +415,106 @@ module rec Types = /// /// /// flexRender(cell.column.columnDef.cell, cell.getContext()) - /// + /// abstract member getContext: CellContext<'Data, obj> with get - + [] type FilterFnProps<'Data> = abstract member row: Row<'Data> with get abstract member columnId: string with get abstract member filterValue: obj with get abstract member addMeta: (obj -> unit) with get + [] module States = [] type VisibilityTableState = interface end + type VisibilityState = Map - - - [] + + + [] type ColumnOrderTableState = interface end + [] type ColumnPinningTableState = interface end - [] + + [] type FiltersTableState = interface end - + [] type SortDirection = | Asc | Desc + [] type SortingTableState = interface end - + [] type ColumnSort(id: string, desc: bool) = - member val id = id with get,set - member val desc = desc with get,set + member val id = id with get, set + member val desc = desc with get, set + type SortingState = ColumnSort[] - - + + [] type ExpandedTableState = interface end - + [] type ExpandedState = U2> - - - + + + [] type GroupingTableState = interface end - + type GroupingState = string[] - - + + [] type PaginationTableState = interface end - + [] type PaginationState(pageIndex: int, pageSize: int) = - member val pageIndex = pageIndex with get,set - member val pageSize = pageSize with get,set - + member val pageIndex = pageIndex with get, set + member val pageSize = pageSize with get, set + [] type PaginationInitialTableState = interface end - - + + [] type RowSelectionTableState = interface end + type RowSelectionState = Map - - - - [] + + + + [] type OnChangeFn<'State> = interface end - + [] type ColumnPinningPosition = | [] False | Left | Right + [] type ColumnPinningState(?left: string[], ?right: string[]) = - member val left = left with get,set - member val right = right with get,set - + member val left = left with get, set + member val right = right with get, set + [] type ColumnSizingTableState = interface end + type ColumnSizingState = Map - + [] - type ColumnSizingInfoState( + type ColumnSizingInfoState + ( ?startOffset: int, ?startSize: int, ?deltaOffset: int, @@ -510,105 +522,117 @@ module rec Types = ?isResizingColumn: string, ?columnSizingStart: (string * int)[] ) = - member val startOffset = startOffset with get,set - member val startSize = startSize with get,set - member val deltaOffset = deltaOffset with get,set - member val deltaPercentage = deltaPercentage with get,set - member val isResizingColumn = isResizingColumn with get,set - member val columnSizingStart = columnSizingStart with get,set - + member val startOffset = startOffset with get, set + member val startSize = startSize with get, set + member val deltaOffset = deltaOffset with get, set + member val deltaPercentage = deltaPercentage with get, set + member val isResizingColumn = isResizingColumn with get, set + member val columnSizingStart = columnSizingStart with get, set + [] - type GlobalFilterTableState(globalFilter: obj) = member val globalFilter = globalFilter with get,set + type GlobalFilterTableState(globalFilter: obj) = + member val globalFilter = globalFilter with get, set + [] type GlobalFilterState = interface end - + [] - type RowPinningRowState(rowPinning: RowPinningState) = member val rowPinning = rowPinning with get,set + type RowPinningRowState(rowPinning: RowPinningState) = + member val rowPinning = rowPinning with get, set + [] - type RowPinningState( - ?top: string[], - ?bottom: string[] - ) = - member val top = top with get,set - member val bottom = bottom with get,set - + type RowPinningState(?top: string[], ?bottom: string[]) = + member val top = top with get, set + member val bottom = bottom with get, set + [] type RowPinningPosition = | [] False | Top | Bottom - - + + [] module TanStack = [] - let createTable<'Data>(options: TableOptions<'Data>): Table<'Data> = jsNative + let createTable<'Data> (options: TableOptions<'Data>) : Table<'Data> = jsNative + [] - let getCoreRowModel<'Data>(): CoreRowModel<'Data> = jsNative + let getCoreRowModel<'Data> () : CoreRowModel<'Data> = jsNative + [] - let flexRender<'Data>([] values): HtmlElement = jsNative + let flexRender<'Data> ([] values) : HtmlElement = jsNative type HeaderRenderProp<'Data> with member _.header - with set(value: Header<'Data>) = () - and get(): Header<'Data> = unbox null + with set (value: Header<'Data>) = () + and get (): Header<'Data> = unbox null + type TableRenderProp<'Data> with member _.table - with set(value: TableOptions<'Data>) = () - and get(): TableOptions<'Data> = unbox null + with set (value: TableOptions<'Data>) = () + and get (): TableOptions<'Data> = unbox null + type ColumnRenderProp<'Data> with member _.column - with set(value: Column<'Data>) = () - and get() = unbox null + with set (value: Column<'Data>) = () + and get () = unbox null + type RowRenderProp<'Data> with member _.row - with set(value: Row<'Data>) = () - and get() = unbox null + with set (value: Row<'Data>) = () + and get () = unbox null + type CellRenderProp<'Data> with member _.cell - with set(value: Cell<'Data>) = () - and get() = unbox null + with set (value: Cell<'Data>) = () + and get () = unbox null + type VisibilityTableState with member _.columnVisibility - with set(value: VisibilityState) = () - and get(): VisibilityState = unbox null + with set (value: VisibilityState) = () + and get (): VisibilityState = unbox null + type ColumnPinningTableState with member _.columnPinning - with set(value: ColumnPinningState) = () - and get(): ColumnPinningState = unbox null + with set (value: ColumnPinningState) = () + and get (): ColumnPinningState = unbox null + type SortingTableState with member _.sorting - with set(value: SortingState) = () - and get(): SortingState = unbox null - + with set (value: SortingState) = () + and get (): SortingState = unbox null + type ExpandedTableState with member _.expanded - with set(value: ExpandedState) = () - and get(): ExpandedState = unbox null - + with set (value: ExpandedState) = () + and get (): ExpandedState = unbox null + type GroupingTableState with member _.grouping - with set(value: GroupingState) = () - and get(): GroupingState = unbox null - + with set (value: GroupingState) = () + and get (): GroupingState = unbox null + type PaginationTableState with member _.pagination - with set(value: PaginationState) = () - and get(): PaginationState = unbox null - + with set (value: PaginationState) = () + and get (): PaginationState = unbox null + type PaginationInitialTableState with member _.pagination - with set(value: PaginationState option) = () - and get(): PaginationState option = unbox null - + with set (value: PaginationState option) = () + and get (): PaginationState option = unbox null + type RowSelectionTableState with member _.rowSelection - with set(value: RowSelectionState) = () - and get(): RowSelectionState = unbox null + with set (value: RowSelectionState) = () + and get (): RowSelectionState = unbox null + type ColumnSizingTableState with member _.columnSizing - with set(value: ColumnSizingState) = () - and get(): ColumnSizingState = unbox null + with set (value: ColumnSizingState) = () + and get (): ColumnSizingState = unbox null + member _.columnSizingInfo - with set(value: ColumnSizingInfoState) = () - and get(): ColumnSizingInfoState = unbox null + with set (value: ColumnSizingInfoState) = () + and get (): ColumnSizingInfoState = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/RowPinning.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/RowPinning.fs new file mode 100644 index 0000000..d6cb13f --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/RowPinning.fs @@ -0,0 +1,32 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +module kkk = + type TableOptions<'Data> with + member _.enableRowPinning + with set (value: Row<'Data> -> bool) = () + + member _.keepPinnedRows + with set (value: bool) = () + + member _.onRowPinningChanged + with set (value: OnChangeFn) = () + + type Table<'Data> with + member _.setRowPinning: Updater -> unit = unbox null + member _.resetRowPinning: bool option -> unit = unbox null + member _.getIsSomeRowsPinned: RowPinningPosition option -> bool = unbox null + member _.getTopRows: (unit -> Row<'Data>[]) = unbox null + member _.getBottomRows: (unit -> Row<'Data>[]) = unbox null + member _.getCenterRows: (unit -> Row<'Data>[]) = unbox null + + type Row<'Data> with + member _.pin: RowPinningPosition -> unit = unbox null + member _.getCanPin: (unit -> bool) = unbox null + member _.getIsPinned: (unit -> RowPinningPosition) = unbox null + member _.getPinnedIndex: (unit -> int) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/RowSelection.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/RowSelection.fs new file mode 100644 index 0000000..b0fdc64 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/RowSelection.fs @@ -0,0 +1,47 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop +open Browser.Types + +[] +module qwe = + type TableOptions<'Data> with + member _.enableRowSelection + with set (value: Row<'Data> -> bool) = () + + member _.enableMultiRowSelection + with set (value: Row<'Data> -> bool) = () + + member _.enableSubRowSelection + with set (value: Row<'Data> -> bool) = () + + member _.onRowSelectionChange + with set (value: OnChangeFn) = () + + type Table<'Data> with + member _.getToggleAllRowsSelectedHandler: (unit -> (Event -> unit)) = unbox null + member _.getToggleAllPageRowsSelectedHandler: (unit -> (Event -> unit)) = unbox null + member _.setRowSelection: (Updater -> unit) = unbox null + member _.resetRowSelection: bool option -> unit = unbox null + member _.getIsAllRowsSelected: (unit -> bool) = unbox null + member _.getIsAllPageRowsSelected: (unit -> bool) = unbox null + member _.getIsSomeRowsSelected: (unit -> bool) = unbox null + member _.getIsSomePageRowsSelected: (unit -> bool) = unbox null + member _.toggleAllRowsSelected: (bool -> unit) = unbox null + member _.toggleAllPageRowsSelected: bool -> unit = unbox null + member _.getPreSelectedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getSelectedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getFilteredSelectedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getGroupedSelectedRowModel: (unit -> RowModel<'Data>) = unbox null + + type Row<'Data> with + member _.getIsSelected: (unit -> bool) = unbox null + member _.getIsSomeSelected: (unit -> bool) = unbox null + member _.getIsAllSubRowsSelected: (unit -> bool) = unbox null + member _.getCanSelect: (unit -> bool) = unbox null + member _.getCanMultiSelect: (unit -> bool) = unbox null + member _.getCanSelectSubRows: (unit -> bool) = unbox null + member _.toggleSelect: (bool -> unit) = unbox null + member _.getToggleSelectedHandler: (unit -> (Event -> unit)) = unbox null diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Sorting.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Sorting.fs new file mode 100644 index 0000000..4240c3c --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Sorting.fs @@ -0,0 +1,89 @@ +namespace Partas.Solid.TanStack.Table + +open Fable.Core +open Fable.Core.JS +open Fable.Core.JsInterop + +[] +type SortUndefined = + | First + | Last + | [] False + | [] Negative + | [] Positive + +[] +module uwu = + + type ColumnDef<'Data> with + member _.sortingFn + with set (value: SortingFn) = () + + member _.sortDescFirst + with set (value: bool) = () + + member _.enableSorting + with set (value: bool) = () + + member _.enableMultiSort + with set (value: bool) = () + + member _.invertSorting + with set (value: bool) = () + + member _.sortUndefined + with set (value: SortUndefined) = () + + type Column<'Data> with + member _.getAutoSortingFn: (unit -> SortingFn) = unbox null + member _.getAutoSortDir: (unit -> SortDirection) = unbox null + member _.getSortingFn: (unit -> SortingFn) = unbox null + member _.getNextSortingOrder: (unit -> U2) = unbox null + member _.getCanSort: (unit -> bool) = unbox null + member _.getCanMultiSort: (unit -> bool) = unbox null + member _.getSortIndex: (unit -> int) = unbox null + member _.getIsSorted: (unit -> U2) = unbox null + member _.getFirstSortDir: (unit -> SortDirection) = unbox null + member _.clearSorting: (unit -> unit) = unbox null + member _.toggleSorting: ((bool option * bool option) -> unit) = unbox null + member _.getToggleSortingHandler: (Browser.Types.Event -> unit) = unbox null + + type TableOptions<'Data> with + member _.sortingFns + with set (value: Map) = () + + member _.manualSorting + with set (value: bool) = () + + member _.onSortingChange + with set (value: OnChangeFn) = () + + member _.enableSorting + with set (value: bool) = () + + member _.enableSortingRemoval + with set (value: bool) = () + + member _.enableMultiRemove + with set (value: bool) = () + + member _.enableMultiSort + with set (value: bool) = () + + member _.sortDescFirst + with set (value: bool) = () + + member _.getSortedRowModel + with set (value: Table<'Data> -> (unit -> RowModel<'Data>)) = () + + member _.maxMultiSortColCount + with set (value: int) = () + + member _.isMultiSortEvent + with set (value: Browser.Types.Event -> bool) = () + + type Table<'Data> with + member _.setSorting: Browser.Types.Event -> unit = unbox null + member _.resetSorting: bool -> unit = unbox null + member _.getPreSortedRowModel: (unit -> RowModel<'Data>) = unbox null + member _.getSortedRowModel: (unit -> RowModel<'Data>) = unbox null diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Table.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Table.fs similarity index 91% rename from Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Table.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Table.fs index 5028d57..7a3c2c9 100644 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Table.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/Table.fs @@ -4,14 +4,17 @@ open Fable.Core [] module internal Paths = - let [] solidTable = "@tanstack/solid-table" - let [] tableCore = "@tanstack/table-core" + [] + let solidTable = "@tanstack/solid-table" + + [] + let tableCore = "@tanstack/table-core" [] module ColumnGrouping = type AggregationFn = interface end type BuiltInAggregationFn = AggregationFn - + [] [] type aggregationFns = @@ -24,13 +27,13 @@ module ColumnGrouping = abstract member unique: BuiltInAggregationFn with get abstract member uniqueCount: BuiltInAggregationFn with get abstract member count: BuiltInAggregationFn with get - + [] module RowSorting = type SortingFn = interface end type BuiltInSortingFn = SortingFn - + [] [] type sortingFns = @@ -40,5 +43,3 @@ module RowSorting = abstract member textCaseSensitive: BuiltInSortingFn with get abstract member datetime: BuiltInSortingFn with get abstract member basic: BuiltInSortingFn with get - - \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/TransformGetterExtensions.expected similarity index 100% rename from Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/TransformGetterExtensions.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fs new file mode 100644 index 0000000..25af177 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fs @@ -0,0 +1,37 @@ +module Partas.Solid.Tests.IssueCases.TransformGetterExtensions + +open Partas.Solid +open Partas.Solid.TanStack.Table +open Fable.Core + +[] +type TransformGetterExtensions() = + interface VoidNode + + [] + member val data: int[] = unbox null with get, set + + [] + member props.constructor = + let table = createTable (TableOptions (data = props.data)) + + div () { + Show (when' = unbox (table.getRowModel().rows.Length), fallback = (div ())) { + For (each = table.getRowModel().rows) { + yield + fun row index -> + div() + .data ( + "state", + unbox ( + row.getIsSelected () + && unbox "selected" + ) + ) { + For (each = row.getVisibleCells ()) { + yield fun cell index -> div () { flexRender (cell.column.columnDef.cell, cell.getContext) } + } + } + } + } + } diff --git a/Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.expected similarity index 100% rename from Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.expected diff --git a/Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fs similarity index 65% rename from Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fs rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fs index 5f3beb7..6d86de1 100644 --- a/Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fs @@ -6,12 +6,17 @@ open Fable.Core [] type TestStringInterpolation() = interface VoidNode + [] - member val index: int = unbox null with get,set + member val index: int = unbox null with get, set + [] member props.constructor = div().style' {| paddingLeft = $"{props.index}px" |} { div().style' {| paddingLeft = $"{props.index}px" |} { - div().style' {| paddingLeft = $"{props.index / 2}px" |} + div().style' + {| paddingLeft = + $"{props.index + / 2}px" |} } - } + } diff --git a/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.expected b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ValMutableOverloads/ValMutableOverloads.expected similarity index 100% rename from Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.expected rename to Partas.Solid.Tests.Plugin/Compiled/IssueCases/ValMutableOverloads/ValMutableOverloads.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ValMutableOverloads/ValMutableOverloads.fs b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ValMutableOverloads/ValMutableOverloads.fs new file mode 100644 index 0000000..6408b1a --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/IssueCases/ValMutableOverloads/ValMutableOverloads.fs @@ -0,0 +1,31 @@ +module Partas.Solid.Tests.IssueCases.ValMutableOverloads + +open Partas.Solid +open Fable.Core + +[] +type MemberVal() = + interface RegularNode + + [] + member val index: int = unbox null with get, set + + member inline this.overloaded + with inline set (value: string) = this.index <- unbox value + +[] +type ValMutable() = + interface RegularNode + + [] + val mutable index: int + + member inline this.overloaded + with inline set (value: string) = this.index <- unbox value + +[] +let TestCase () = + Fragment () { + MemberVal (overloaded = "test") + ValMutable (overloaded = "test") + } diff --git a/Partas.Solid.Tests/Partas.Solid.Tests.fsproj b/Partas.Solid.Tests.Plugin/Compiled/Partas.Solid.Tests.Plugin.Compiled.fsproj similarity index 61% rename from Partas.Solid.Tests/Partas.Solid.Tests.fsproj rename to Partas.Solid.Tests.Plugin/Compiled/Partas.Solid.Tests.Plugin.Compiled.fsproj index 3340658..d6cbeb1 100644 --- a/Partas.Solid.Tests/Partas.Solid.Tests.fsproj +++ b/Partas.Solid.Tests.Plugin/Compiled/Partas.Solid.Tests.Plugin.Compiled.fsproj @@ -1,76 +1,56 @@ - + + Exe net9.0 - false false - true - - - - - - - - - - - - - - - - - - - @@ -89,67 +69,31 @@ - - - - - - - - - - - - + + + + + - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + - - - - - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildLambdaProvider/ChildLambdaProvider.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildLambdaProvider/ChildLambdaProvider.expected diff --git a/Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fs similarity index 64% rename from Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fs index af26041..99810b7 100644 --- a/Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fs @@ -7,7 +7,7 @@ open Partas.Solid type CustomComponent() = interface VoidNode interface ChildLambdaProvider3, float> - + [] type OnlyButtons() = interface VoidNode @@ -15,13 +15,11 @@ type OnlyButtons() = [] let TestProvider () = - CustomComponent() { - yield fun i s f -> - Fragment() { - div(tabindex = i) { s() } - OnlyButtons() { - yield fun b -> - button(tabindex = b) + CustomComponent () { + yield + fun i s f -> + Fragment () { + div (tabindex = i) { s () } + OnlyButtons () { yield fun b -> button (tabindex = b) } } - } } diff --git a/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildrenSimple/ChildrenSimple.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildrenSimple/ChildrenSimple.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildrenSimple/ChildrenSimple.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildrenSimple/ChildrenSimple.fs new file mode 100644 index 0000000..49b9f32 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ChildrenSimple/ChildrenSimple.fs @@ -0,0 +1,35 @@ +module Partas.Solid.Tests.SolidCases.ChildrenSimple + +open Partas.Solid +open Fable.Core + +[] +type TypeDefTest() = + interface RegularNode + + [] + member props.typeDef = button () { "Button" } + +[] +type TypeDefTestWithProps() = + interface RegularNode + + [] + member props.typeDef = + button (class' = "ButtonClass", draggable = "indubitably") { + "Button" + span (class' = "sr-only") { "Span" } + } + +[] +type TypeDefTestWithExtensions() = + interface RegularNode + + [] + member props.typeDef = + button(class' = "ButtonClass").attr ("Key", "Value") { + "Button" + span (class' = "sr-only") { "Span" } + div(class' = "DivBelow").attr ("key", "value") + "TextBelow" + } diff --git a/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CombinedSpread/CombinedSpread.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/CombinedSpread/CombinedSpread.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CombinedSpread/CombinedSpread.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CombinedSpread/CombinedSpread.fs new file mode 100644 index 0000000..db45da2 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CombinedSpread/CombinedSpread.fs @@ -0,0 +1,119 @@ +module Partas.Solid.Tests.SolidCases.CombinedSpread + +open Partas.Solid +open Fable.Core + +[] +type SimpleCombination() = + interface RegularNode + + [] + member props.CombinedSpread = + props.class' <- "ClassDefault" + + div () { + "Some text" + span (class' = props.class') { "More text" } + div().spread (props) { "All but class have been spread into this tag!" } + + } + +[] +type Lib = + [] + static member inline twMerge(classes: string) : string = jsNative + + [] + static member inline clsx(classes: obj) : string = jsNative + + static member inline cn(classes: string * bool) : string = + classes + |> Lib.clsx + |> Lib.twMerge + + static member inline cn(classes: string array) : string = + classes + |> Lib.clsx + |> Lib.twMerge + + static member inline cn(classes: string) : string = + classes + |> Lib.clsx + |> Lib.twMerge + + [] + static member inline cva (orig: string) (object: 'T) : obj -> string = jsNative + +[] +module Operators = + [] + let (&&=) (conditional: 'T) (output: 'M) : 'M = jsNative + +[] +[] +module button = + let variants = + Lib.cva + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0" + {| variants = + {| variant = + {| ``default`` = "bg-primary text-primary-foreground shadow-sm hover:bg-primary/90" + destructive = "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90" + outline = "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground" + secondary = "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80" + ghost = "hover:bg-accent hover:text-accent-foreground" + link = "text-primary underline-offset-4 hover:underline" |} + size = + {| ``default`` = "h-9 px-4 py-2" + sm = "h-8 rounded-md px-3 text-xs" + lg = "h-10 rounded-md px-8" + icon = "h-9 w-9" |} |} + defaultVariants = + {| variant = "default" + size = "default" |} |} + + [] + type size = + static member inline default': size = unbox "default" + static member inline sm: size = unbox "sm" + static member inline lg: size = unbox "lg" + static member inline icon: size = unbox "icon" + + [] + type variant = + static member inline default': variant = unbox "default" + static member inline outline: variant = unbox "outline" + static member inline ghost: variant = unbox "ghost" + static member inline link: variant = unbox "link" + static member inline destructive: variant = unbox "destructive" + static member inline secondary: variant = unbox "secondary" + +[] +type Button() = + inherit button() + + [] + member val size: size = unbox null with get, set + + [] + member val variant: variant = unbox null with get, set + + [] + member props.constructor = + button( + class' = + button.variants ( + {| size = props.size + variant = props.variant |} + ) + ) + .spread + props + +[] +type AccordionItem() = + inherit button() + + [] + member props.constructor = + button(class' = Lib.cn [| "border-b"; props.class' |]).spread props diff --git a/Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CssStyles/CssStyles.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/CssStyles/CssStyles.expected diff --git a/Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CssStyles/CssStyles.fs similarity index 66% rename from Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/CssStyles/CssStyles.fs index 0391fb2..9c1db2e 100644 --- a/Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/CssStyles/CssStyles.fs @@ -9,7 +9,7 @@ open Partas.Solid.Experimental.U [] let CssPropStyleTest () = - div().style' [ - Style.backgroundColor Color.Slategray - "--custom-var" ==> "Chocolate" - ] + div().style' + [ Style.backgroundColor Color.Slategray + "--custom-var" + ==> "Chocolate" ] diff --git a/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ExperimentalBuilders/ExperimentalBuilders.expected similarity index 96% rename from Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/ExperimentalBuilders/ExperimentalBuilders.expected index 9ed0eb9..a2b34e7 100644 --- a/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ExperimentalBuilders/ExperimentalBuilders.expected @@ -1,6 +1,6 @@ import { createSelector, batch, createMemo, onMount, onCleanup, children, splitProps, createEffect, createSignal } from "solid-js"; import { createStore } from "solid-js/store"; -import { printf, toConsole } from "./fable_modules/fable-library-js.5.0.0-alpha.13/String.js"; +import { printf, toConsole } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/String.js"; export const patternInput$004013 = createSignal(10); diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fs new file mode 100644 index 0000000..1e489b6 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fs @@ -0,0 +1,103 @@ +module Partas.Solid.Tests.SolidCases.ExperimentalBuilders + +open Partas.Solid +open Partas.Solid.Experimental +open Fable.Core +open Fable.Core.JS + +[] +type MyObject(value: int, label: string) = + member val value = value with get, set + member val label = label with get, set + +let getter, setter = createSignal (10) +let data, store = createStore (ResizeArray ([||])) + +effect { + if getter () = 10 then + store.Update (ResizeArray ([||])) + else + setter 10 +} + +let getGetter = + lambda { + let mutable check = 10 + + match getter () with + | 10 -> check <- 5 + | 5 -> check <- 10 + | _ -> () + + check + } + +let getSetter = + lambda { + store.Update (fun o -> + o.Add (MyObject (5, "Test")) + o) + + if data.Count > 0 then + setter + } + +[] +let ComponentWrap () = + effect { + if getter () = 10 then + store.Update (ResizeArray ([||])) + else + setter 10 + } + + let getGetter = + lambda { + let mutable check = 10 + + match getter () with + | 10 -> check <- 5 + | 5 -> check <- 10 + | _ -> () + + check + } + + let getSetter = + lambda { + store.Update (fun o -> + o.Add (MyObject (5, "Test")) + o) + + if data.Count > 0 then + setter + } + + if getter () = 0 then getGetter else unbox getSetter + +[] +type TestComponent() = + interface RegularNode + + [] + member props.__ = + let childs = children { props.children } + effect { printfn "effect" } + cleanup { printfn "cleanup" } + mount { printfn "mount" } + + let x = + memo { + printfn "memo" + "memo" + } + + let submission = + batch { + printfn "" + childs () + } + + let isSelected = selector { false } + + div () { childs () } diff --git a/Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.expected diff --git a/Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fs similarity index 59% rename from Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fs index 6224d6e..4609ac6 100644 --- a/Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fs @@ -8,11 +8,15 @@ open Fable.Core.JsInterop [] type WordRotate() = inherit div() - [] member val words: string[] = unbox null with get,set - [] member val duration: int = unbox null with get,set + + [] + member val words: string[] = unbox null with get, set + + [] + member val duration: int = unbox null with get, set + [] member props.constructor = - let index,setIndex = createSignal(0) + let index, setIndex = createSignal (0) let chog = props.words.Length - div() - + div () diff --git a/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGettersInComputations/FieldGettersInComputations.expected similarity index 66% rename from Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGettersInComputations/FieldGettersInComputations.expected index 5dbaa87..34461c8 100644 --- a/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.expected +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGettersInComputations/FieldGettersInComputations.expected @@ -1,6 +1,6 @@ -import { Record } from "./fable_modules/fable-library-js.5.0.0-alpha.13/Types.js"; -import { record_type, class_type, string_type } from "./fable_modules/fable-library-js.5.0.0-alpha.13/Reflection.js"; -import { item, singleton } from "./fable_modules/fable-library-js.5.0.0-alpha.13/List.js"; +import { Record } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/Types.js"; +import { record_type, class_type, string_type } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/Reflection.js"; +import { item, singleton } from "../../fable_modules/fable-library-js.5.0.0-alpha.13/List.js"; export class MenuItem extends Record { constructor(Title, Url, Icon) { diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fs new file mode 100644 index 0000000..4d1875d --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fs @@ -0,0 +1,21 @@ +module Partas.Solid.Tests.SolidCases.FieldGettersInComputations + +open Partas.Solid + +type MenuItem = + { Title: string + Url: string + Icon: HtmlElement } + +module App = + [] + let App () = + let items = + [ { Title = "Home" + Url = "#" + Icon = div () } ] + + div () { + button () + items[0].Icon + } diff --git a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fs new file mode 100644 index 0000000..21c3ee6 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fs @@ -0,0 +1,34 @@ +module Partas.Solid.Tests.SolidCases.ImportedTagsWithExtensions + +open Partas.Solid.Tests.Shared.ImportedTagsWithExtensions +open Partas.Solid +open Fable.Core + +[] +type NoPropsOneExtension() = + interface RegularNode + + [] + member props.typeDef = Imported().attr ("key", "value") + +[] +type PropsWithExtension() = + interface RegularNode + + [] + member props.typeDef = CustomTag(class' = "testClass").attr ("key", "value") + +[] +type NoPropsExtensionChain() = + interface RegularNode + + [] + member props.typeDef = CustomTag().attr("key", "value").attr ("key2", "value2") + +[] +type PropsWithExtensionChain() = + interface RegularNode + + [] + member props.typeDef = + Imported(class' = "Tester", draggable = "drag").attr("key", "value").attr("key2", "value2").attr("key3", "value3").attr ("key4", "value4") diff --git a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/Shared.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/Shared.fs similarity index 51% rename from Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/Shared.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/Shared.fs index bd1b001..1bb018c 100644 --- a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/Shared.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/ImportedTagsWithExtensions/Shared.fs @@ -4,10 +4,12 @@ open Partas.Solid open Fable.Core [] -type [] Imported() = +[] +type Imported() = interface RegularNode - member val importedProperty: int = jsNative with get,set + member val importedProperty: int = jsNative with get, set -type [] CustomTag() = +[] +type CustomTag() = interface RegularNode - member val userProperty: string = jsNative with get,set + member val userProperty: string = jsNative with get, set diff --git a/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/LibraryImport.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/LibraryImport.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/LibraryImport.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/LibraryImport.fs new file mode 100644 index 0000000..ea8c53c --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/LibraryImport.fs @@ -0,0 +1,34 @@ +module Partas.Solid.Tests.SolidCases.LibraryImport + +open Partas.Solid +open Fable.Core +open Partas.Solid.Tests.Shared.LibraryImport + + +[] +type MyTag() = + interface RegularNode + + [] + member props.typeDef = Imported () + +[] +type MyOtherTag() = + interface RegularNode + + [] + member props.typeDef = CustomTag () + +[] +type ImportedTagWithProps() = + interface RegularNode + + [] + member props.typeDef = Imported (class' = "Test props") + +[] +type UserTagWithProps() = + interface RegularNode + + [] + member props.typeDef = CustomTag (class' = "test bops") diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/Shared.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/Shared.fs new file mode 100644 index 0000000..c92570e --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/LibraryImport/Shared.fs @@ -0,0 +1,15 @@ +module Partas.Solid.Tests.Shared.LibraryImport + +open Partas.Solid +open Fable.Core + +[] +[] +type Imported() = + interface RegularNode + member val importedProperty: int = jsNative with get, set + +[] +type CustomTag() = + interface RegularNode + member val userProperty: string = jsNative with get, set diff --git a/Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergeProps.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergeProps.expected diff --git a/Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergeProps.fs similarity index 68% rename from Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergeProps.fs index 5a02bd1..d142595 100644 --- a/Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergeProps.fs @@ -4,78 +4,92 @@ open Partas.Solid open Fable.Core open Partas.Solid.Tests.SolidCases.MergePropsTypes -type [] SimpleMerge() = +[] +type SimpleMerge() = interface RegularNode + [] member props.SimpleMerge = props.class' <- "DefaultClass" - div() - -type [] MultipleMerges() = + div () + +[] +type MultipleMerges() = interface RegularNode + [] member props.SimpleMerge = props.class' <- "DefaultClass" props.draggable <- "stub" props.dir <- "ltr" - div() + div () -type [] ComplexPropMerge() = +[] +type ComplexPropMerge() = interface RegularNode + [] member props.SimpleMerge = props.onKeyPress <- fun _ -> System.Console.WriteLine "Key pressed" - div() + div () -type [] SimpleNestedMerge() = +[] +type SimpleNestedMerge() = interface RegularNode + [] - member props.whatever = - div() { - button() { - props.class' <- "defaultClass" - } - } + member props.whatever = div () { button () { props.class' <- "defaultClass" } } -type [] NestedMerge() = +[] +type NestedMerge() = interface RegularNode + [] member props.SimpleMerge = - div() { + div () { props.dir <- "ltr" - div() - button() { + div () + + button () { props.class' <- "DefaultClass" props.draggable <- "stub" } } - -type [] NestedMergeWithChildren() = + +[] +type NestedMergeWithChildren() = interface RegularNode + [] member props.SimpleMerge = - div() { + div () { props.dir <- "ltr" - div() - button() { + div () + + button () { props.class' <- "DefaultClass" "Button" props.draggable <- "stub" } } - -type [] ValMutableMerge() = + +[] +type ValMutableMerge() = interface RegularNode + [] val mutable index: int + [] member props.__ = props.index <- 5 - div() + div () -type [] ValMutableMergeInherited() = +[] +type ValMutableMergeInherited() = inherit MyComponent() + [] member props.__ = props.index <- 5 - div() + div () diff --git a/Partas.Solid.Tests/SolidCases/MergeProps/MergePropsTypes.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergePropsTypes.fs similarity index 99% rename from Partas.Solid.Tests/SolidCases/MergeProps/MergePropsTypes.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergePropsTypes.fs index 525c123..13be64d 100644 --- a/Partas.Solid.Tests/SolidCases/MergeProps/MergePropsTypes.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/MergeProps/MergePropsTypes.fs @@ -6,5 +6,6 @@ open Fable.Core [] type MyComponent() = interface RegularNode + [] val mutable index: int diff --git a/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/OperatorsInProps/OperatorsInProps.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/OperatorsInProps/OperatorsInProps.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/OperatorsInProps/OperatorsInProps.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/OperatorsInProps/OperatorsInProps.fs new file mode 100644 index 0000000..40c4c13 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/OperatorsInProps/OperatorsInProps.fs @@ -0,0 +1,230 @@ +module Partas.Solid.Tests.SolidCases.OperatorsInProps + +open Partas.Solid +open Fable.Core +open Browser.Types +open Browser.Dom + +[] +type Lib = + [] + static member inline twMerge(classes: string) : string = jsNative + + [] + static member inline clsx(classes: obj) : string = jsNative + + static member inline cn(classes: string * bool) : string = + classes + |> Lib.clsx + |> Lib.twMerge + + static member inline cn(classes: string array) : string = + classes + |> Lib.clsx + |> Lib.twMerge + + static member inline cn(classes: string) : string = + classes + |> Lib.clsx + |> Lib.twMerge + + [] + static member inline cva (orig: string) (object: 'T) : obj -> string = jsNative + +[] +module Operators = + [] + let (&&=) (conditional: 'T) (output: 'M) : 'M = jsNative + +[] +module sidebar = + let mobileBreakpoint = 768 + let sidebarCookieName = "sidebar:state" + + let sidebarCookieMaxAge = + 60 + * 60 + * 24 + * 7 + + let sidebarWidth = "16rem" + let sidebarWidthMobile = "18rem" + let sidebarWidthIcon = "3rem" + let sidebarKeyboardShortcut = "b" + + [] + type State = + | Expanded + | Collapsed + + [] + type Side = + | Left + | Right + + [] + type Variant = + | Sidebar + | Floating + | Inset + + [] + type Collapsible = + | Offcanvas + | Icon + | None + + type SidebarContext = + {| state: State Accessor + open': bool Accessor + setOpen: bool -> unit + openMobile: bool Accessor + setOpenMobile: bool -> unit + isMobile: bool Accessor + toggleSidebar: unit -> unit |} + +open sidebar +open Fable.Core.JsInterop + +[] +type Sheet() = + inherit dialog() + + [] + member val onOpenChange: bool -> unit = unbox null with get, set + +[] +type SheetContent() = + inherit dialog() + + [] + member val position: string = unbox null with get, set + +[] +module Context = + let SidebarContext = createContext () + + let useSidebar () = + let context = useContext (SidebarContext) + + if not (unbox context) then + failwith "useSidebar can only be used within a Sidebar" + + context + + let useIsMobile (fallback: bool) = + let (isMobile, setIsMobile) = createSignal (fallback) + + createEffect (fun () -> + let mql = + window?matchMedia ( + $"(max-width:{mobileBreakpoint + - 1}px)" + ) + + let onChange = fun (e) -> setIsMobile (e?matches) + mql?addEventListener ("change", onChange) + onChange (mql) + onCleanup (fun () -> mql?removeEventListener ("change", onChange))) + + isMobile + +[] +type Sidebar() = + inherit div() + + [] + member val side: sidebar.Side = unbox null with get, set + + [] + member val variant: sidebar.Variant = unbox null with get, set + + [] + member val collapsible: sidebar.Collapsible = unbox null with get, set + + [] + member props.constructor = + props.side <- Left + props.variant <- sidebar.Sidebar + props.collapsible <- Offcanvas + let ctx = Context.useSidebar () + + let (isMobile, state, openMobile, setOpenMobile) = + (ctx.isMobile, ctx.state, ctx.openMobile, ctx.openMobile) + + Switch () { + Match (when' = (props.collapsible = sidebar.None)) { + + div( + class' = + Lib.cn + [| "test flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground" + props.class' |] + ) + .spread + props { + props.children + } + + } + + Match (when' = isMobile ()) { + + Sheet(open' = openMobile (), onOpenChange = !!setOpenMobile).spread props { + SheetContent(class' = "w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden", position = !!props.side) + .data("sidebar", !!sidebar.Sidebar) + .data("mobile", "true") + .style' ( + createObj + [ "--sidebar-width" + ==> sidebarWidthMobile ] + ) { + div (class' = "flex size-full flex-col") { props.children } + } + } + + } + + Match ( + when' = + (isMobile () + |> not) + ) { + // gap handler on desktop + div ( + class' = + Lib.cn + [| "a1" + "a2" + "a3" + if + (props.variant = sidebar.Floating + || props.variant = sidebar.Inset) + then + "?a1" + else + "?a2" |] + ) + + div( + class' = + Lib.cn + [| "b1" + if props.side = sidebar.Left then "?b1" else "?b2" + // Adjust the padding for floating and inset variants. + if + props.variant = sidebar.Floating + || props.variant = sidebar.Inset + then + "?b3" + else + "?b4" + props.class' |] + ) + .spread + props { + div(class' = "classend").data ("sidebar", !!sidebar.Sidebar) { props.children } + } + } + + } diff --git a/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SignalSetterInvoke/SignalSetterInvoke.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/SignalSetterInvoke/SignalSetterInvoke.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fs new file mode 100644 index 0000000..fa7e635 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fs @@ -0,0 +1,32 @@ +module Partas.Solid.Tests.SolidCases.SignalSetterInvoke + +open Partas.Solid +open Fable.Core +open Fable.Core.JS + +[] +type WordRotate() = + inherit div() + + [] + member val words: string[] = unbox null with get, set + + [] + member val duration: int = unbox null with get, set + + [] + member props.constructor = + let index, setIndex = createSignal (0) + + createEffect (fun () -> + let interval = + setInterval + (fun () -> + setIndex.Invoke (fun prevIndex -> + (prevIndex + + 1) % (props.words.Length))) + props.duration + + onCleanup (fun () -> clearInterval (interval))) + + div () diff --git a/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitProps.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitProps.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitProps.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitProps.fs new file mode 100644 index 0000000..bece33f --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitProps.fs @@ -0,0 +1,42 @@ +module Partas.Solid.Tests.SolidCases.SplitProps + +open Partas.Solid +open Fable.Core +open Partas.Solid.Tests.SolidCases.SplitPropsTypes + +[] +type SplitProps() = + interface RegularNode + + [] + member props.SplitProps = + div (class' = props.class') { button (draggable = props.draggable) } + +[] +type NestedSplitProps() = + interface RegularNode + + [] + member props.SplitProps = + div () { + button (class' = props.class') + div () { button (onClick = (fun _ -> System.Console.WriteLine props.class')) } + "text" + } + +[] +type SplitValMutable() = + interface RegularNode + + [] + val mutable index: int + + [] + member props.__ = div (tabindex = props.index) + +[] +type SplitInheritedValMutable() = + inherit MyComponent() + + [] + member props.__ = div (tabindex = props.index) diff --git a/Partas.Solid.Tests/SolidCases/SplitProps/SplitPropsTypes.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitPropsTypes.fs similarity index 97% rename from Partas.Solid.Tests/SolidCases/SplitProps/SplitPropsTypes.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitPropsTypes.fs index d95bcbf..ecf4b56 100644 --- a/Partas.Solid.Tests/SolidCases/SplitProps/SplitPropsTypes.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/SplitProps/SplitPropsTypes.fs @@ -6,6 +6,6 @@ open Fable.Core [] type MyComponent() = interface RegularNode + [] val mutable index: int - diff --git a/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagExtensions/TagExtensions.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagExtensions/TagExtensions.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagExtensions/TagExtensions.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagExtensions/TagExtensions.fs new file mode 100644 index 0000000..cefb2b8 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagExtensions/TagExtensions.fs @@ -0,0 +1,33 @@ +module Partas.Solid.Tests.SolidCases.TagExtensions + +open Partas.Solid +open Fable.Core + +[] +type NoPropsOneExtension() = + interface RegularNode + + [] + member props.typeDef = div().attr ("key", "value") + +[] +type PropsWithExtension() = + interface RegularNode + + [] + member props.typeDef = div(class' = "testClass").attr ("key", "value") + +[] +type NoPropsExtensionChain() = + interface RegularNode + + [] + member props.typeDef = div().attr("key", "value").attr ("key2", "value2") + +[] +type PropsWithExtensionChain() = + interface RegularNode + + [] + member props.typeDef = + div(class' = "Tester", draggable = "drag").attr("key", "value").attr("key2", "value2").attr("key3", "value3").attr ("key4", "value4") diff --git a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.expected diff --git a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fs similarity index 65% rename from Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fs index 69147de..b7ef3a8 100644 --- a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fs @@ -7,21 +7,22 @@ open Partas.Solid.Tests.SolidCases.TagsAsValuesSimpleTypes [] type CustomTag() = interface RegularNode + [] - member val icon: TagValue = unbox null with get,set + member val icon: TagValue = unbox null with get, set + [] member props.constructor = props.icon <- !@button - div() { + + div () { props.icon % {| class' = "KeyVal" |} props.icon % {| class' = "KeyVal2" |} - props.icon % div(class' = "constructor") { button() { "internal" } } - + props.icon % div (class' = "constructor") { button () { "internal" } } + } [] let Rock () = let Comp = !@Imported - CustomTag(icon = unbox !@a) { - Comp % Imported(other = unbox !@ModuleTag ) - } + CustomTag (icon = unbox !@a) { Comp % Imported (other = unbox !@ModuleTag) } diff --git a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimpleTypes.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimpleTypes.fs similarity index 64% rename from Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimpleTypes.fs rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimpleTypes.fs index 7579f3e..8529e87 100644 --- a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimpleTypes.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsAsValuesSimple/TagsAsValuesSimpleTypes.fs @@ -4,18 +4,20 @@ open Partas.Solid open Fable.Core #nowarn 64 - + [] type ModuleTag() = interface RegularNode + [] - member val other: TagValue = jsNative with get,set + member val other: TagValue = jsNative with get, set + [] - member props.constructor = - div() - + member props.constructor = div () + [] type Imported() = interface RegularNode + [] - member val other: TagValue = jsNative with get,set + member val other: TagValue = jsNative with get, set diff --git a/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.expected b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsNoChildren/TagsNoChildren.expected similarity index 100% rename from Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.expected rename to Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsNoChildren/TagsNoChildren.expected diff --git a/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsNoChildren/TagsNoChildren.fs b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsNoChildren/TagsNoChildren.fs new file mode 100644 index 0000000..47dd2d1 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Compiled/SolidCases/TagsNoChildren/TagsNoChildren.fs @@ -0,0 +1,25 @@ +module Partas.Solid.Tests.SolidCases.TagsNoChildren + +open Partas.Solid +open Fable.Core + +[] +type MyTag() = + interface RegularNode + + [] + member props.typeDef = div () + +[] +type TagWithProp() = + interface RegularNode + + [] + member props.typeDef = div (class' = "SomeClass") + +[] +type TagWithProps() = + interface RegularNode + + [] + member props.typeDef = div (class' = "SomeClass", draggable = "drag") diff --git a/Partas.Solid.Tests/Spec/Components.fs b/Partas.Solid.Tests.Plugin/Compiled/Spec/Components.fs similarity index 75% rename from Partas.Solid.Tests/Spec/Components.fs rename to Partas.Solid.Tests.Plugin/Compiled/Spec/Components.fs index 80468c5..9fb4d35 100644 --- a/Partas.Solid.Tests/Spec/Components.fs +++ b/Partas.Solid.Tests.Plugin/Compiled/Spec/Components.fs @@ -7,30 +7,33 @@ open Browser.Dom module Section1 = /// Let bindings compile to functions [] - let Component () = - div() + let Component () = div () + /// SolidComponent functions can be implemented within - /// normal functions. + /// normal functions. let WrappingComponent () = - Component() + Component () + /// However native tags or SolidTypeComponents will not let FailsToWrap () = - div() { Component() } + div () { Component () } /// Reactivity would not work outside a function [] - let NotAFunction = - Component() + let NotAFunction = Component () + [] let WrapNotAFunction () = NotAFunction + /// Parameters can be passed [] let ParameterComponent someInt someString someHandler = let thisInt = someInt let thisString = someString let thisHandler = someHandler - div() + div () + /// And since they are functions without special JSX compilation, /// can be used outside a SolidComponent or SolidTypeComponent let WrapParameterComponent () = @@ -39,23 +42,19 @@ module Section1 = /// Native components use constructor parameters for attributes [] let NativeComponentAttributes () = - div(id = "MyDiv", tabindex = 5, onClick = fun _ -> console.log "Clicked") + div (id = "MyDiv", tabindex = 5, onClick = (fun _ -> console.log "Clicked")) /// Reserved keywords are apostrophised, but compile correctly [] let ApostrophisedAttribute () = - div(class' = "myclass") + div (class' = "myclass") /// Native components use computation expression syntax to receive children [] let NativeComponentChildren () = - div(class' = "group") { - button(class' = "bg_black text-white") { - "Button" - } - div() { - select() - } + div (class' = "group") { + button (class' = "bg_black text-white") { "Button" } + div () { select () } } /// New components can be typed and used to interop with libraries @@ -64,24 +63,22 @@ module Section1 = [] type FakeImport() = interface RegularNode + [] - member val myAttribute: string = "" with get,set + member val myAttribute: string = "" with get, set /// New components can be typed and used to interop with libraries /// And they will compile correctly in a solid component [] let ComponentTypeWrap () = - div() { - FakeImport(myAttribute = "Something") - } + div () { FakeImport (myAttribute = "Something") } /// But not outside of a solid component let FailComponentTypeWrap () = - div() { - FakeImport(myAttribute = "something") - } + div () { FakeImport (myAttribute = "something") } namespace Banana + open Partas.Solid open Fable.Core @@ -90,12 +87,17 @@ open Fable.Core [] type FakeImport() = interface RegularNode + [] - member val myAttribute: string = "" with get,set + member val myAttribute: string = "" with get, set + module Section2 = /// However, the components will not compile correctly /// if defined outside of a namespace starting with Partas.Solid - let Component () = FakeImport(myAttribute = "something") + let Component () = + FakeImport (myAttribute = "something") + /// Regardless of with/without the SolidComponent attribute [] - let SolidCmp () = FakeImport(myAttribute = "seomthing") + let SolidCmp () = + FakeImport (myAttribute = "seomthing") diff --git a/Partas.Solid.Tests.Plugin/Main.fs b/Partas.Solid.Tests.Plugin/Main.fs new file mode 100644 index 0000000..26babff --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Main.fs @@ -0,0 +1,7 @@ +module Partas.Solid.Tests.Plugin.Main + +open Expecto + +[] +let main argv = + Tests.runTestsInAssemblyWithCLIArgs [] argv diff --git a/Partas.Solid.Tests.Plugin/Partas.Solid.Tests.Plugin.fsproj b/Partas.Solid.Tests.Plugin/Partas.Solid.Tests.Plugin.fsproj new file mode 100644 index 0000000..5e65fac --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Partas.Solid.Tests.Plugin.fsproj @@ -0,0 +1,30 @@ + + + + Exe + net8.0 + false + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Partas.Solid.Tests.Plugin/Tests.fs b/Partas.Solid.Tests.Plugin/Tests.fs new file mode 100644 index 0000000..bef6d53 --- /dev/null +++ b/Partas.Solid.Tests.Plugin/Tests.fs @@ -0,0 +1,102 @@ +module Partas.Solid.Tests.Plugin.IssueTests + +open Expecto +open Partas.Solid.Tests.Plugin.Common + +let built = lazy buildCases () + +let runIssueCase caseName = + fun _ -> + built.Value + let folderName = "IssueCases" + runCase folderName caseName + +let runSolidCase name caseName = + let runSolidCase' caseName = + fun _ -> + built.Value + let folderName = "SolidCases" + runCase folderName caseName + + testCase name + <| runSolidCase' caseName + +let runAttributeCase name caseName = + let runAttributeCase' caseName = + fun _ -> + built.Value + let folderName = "AttributeCases" + runCase folderName caseName + + testCase name + <| runAttributeCase' caseName + + +[] +let IssueCases = + testList + "IssueCases" + [ testCase "#2 createSignal getting converted into Tag" + <| runIssueCase "CreateSignalTagConstructor" + testCase "#9 Index access is rendered" + <| runIssueCase "IndexAccess" + testCase "#11 String interpolation is transformed" + <| runIssueCase "TransformInsideStringInterpolation" + testCase "#13 Getter extensions are transformed" + <| runIssueCase "TransformGetterExtensions" + testCase "#14 Object Expressions are transformed" + <| runIssueCase "ObjectExpressions" + testCase "#15 props.words.ToCharArray() |> Array.map string" + <| runIssueCase "CharArrayMapping" + testCase "#16 val mutable overloads render" + <| runIssueCase "ValMutableOverloads" + testCase "#18 indexed identifiers spread" + <| runIssueCase "IndexedPropSpreading" + testCase "#28 ThisArg is transformed" + <| runIssueCase "ThisArgTransforms" + testCase "#29 val mutable overloads render 2" + <| runIssueCase "InheritedProperty" ] + +[] +let SolidCases = + testList + "SolidCases" + [ runSolidCase "TagsNoChildren" "TagsNoChildren" + runSolidCase "Library Imports and User Imports" "LibraryImport" + "TagExtensions" + |> runSolidCase "Tag Extensions" + "ImportedTagsWithExtensions" + |> runSolidCase "Imported Tags with Extensions" + "ChildrenSimple" + |> runSolidCase "Tags with child elements" + "MergeProps" + |> runSolidCase "Default property setting" + "SplitProps" + |> runSolidCase "Property accessing with split props" + "CombinedSpread" + |> runSolidCase "mergeProps splitProps and property spreading" + "OperatorsInProps" + |> runSolidCase "Property getters mixed with Operands are transformed" + "FieldGettersInComputations" + |> runSolidCase "Field getters and records are transformed" + "TagsAsValuesSimple" + |> runSolidCase "Tags can be used as values" + "FieldGetExpressionsTransformed" + |> runSolidCase "FieldGets like props.words.Length are transformed" + "SignalSetterInvoke" + |> runSolidCase "Signal Setters can be invoked with a handler" + "ExperimentalBuilders" + |> runSolidCase "Experimental Builders compile correct output" + "CssStyles" + |> runSolidCase "CssStyle definitions compiles correct output" + "ChildLambdaProvider" + |> runSolidCase "ChildLambdaProvider interfaces" ] + +[] +let AttributeCases = + testList + "AttributeCases" + [ "PartasImportAttr" + |> runAttributeCase "PartasImport Attribute" + "Pojo" + |> runAttributeCase "Pojo Optimisation" ] diff --git a/Partas.Solid.Tests/AttributeCases.fs b/Partas.Solid.Tests/AttributeCases.fs deleted file mode 100644 index 2738fc6..0000000 --- a/Partas.Solid.Tests/AttributeCases.fs +++ /dev/null @@ -1,16 +0,0 @@ -module AttributeCases - -open Xunit -open Partas.Solid.Tests.Common - -let runAttributeCase caseName = - let folderName = "AttributeCases" - runCase folderName caseName - -[] -let ``PartasImport Attribute`` () = - runAttributeCase "PartasImportAttr" - -[] -let ``Pojo Optimisation`` () = - runAttributeCase "Pojo" diff --git a/Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.fsproj b/Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.fsproj deleted file mode 100644 index 1d859de..0000000 --- a/Partas.Solid.Tests/AttributeCases/PartasImportAttr/PartasImportAttr.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.fs b/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.fs deleted file mode 100644 index 17e589d..0000000 --- a/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.fs +++ /dev/null @@ -1,17 +0,0 @@ -module Partas.Solid.Tests.AttributeCases.Pojo - -open Partas.Solid -open Fable.Core - -[] -type Poj(?testAttr: string, ?otherAttr: string) = - member val testAttr: string = JS.undefined with get,set - member val testGrok: string = JS.undefined with get,set - member val testBok: string = JS.undefined with get,set - -[] -let Bock () = - let tog = Poj(testGrok = "test", testBok = "bok", testAttr = "chok") - let bop = Poj(testAttr = "tes") - let chog = Poj(testGrok = "dfs", otherAttr = "sdf") - Poj(testGrok = "dfs", otherAttr = "sdf") \ No newline at end of file diff --git a/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.fsproj b/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.fsproj deleted file mode 100644 index 63723f4..0000000 --- a/Partas.Solid.Tests/AttributeCases/Pojo/Pojo.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/Common.fs b/Partas.Solid.Tests/Common.fs deleted file mode 100644 index 7dd4914..0000000 --- a/Partas.Solid.Tests/Common.fs +++ /dev/null @@ -1,31 +0,0 @@ -module Partas.Solid.Tests.Common - -open Fli -open FsUnitTyped -open System.IO -open System -open Xunit - -let platformShell = - match Environment.OSVersion.Platform with - | PlatformID.Unix | PlatformID.MacOSX -> ZSH - | _ -> CMD - -let runCase folderName caseName = - let dir = $"{__SOURCE_DIRECTORY__}/{folderName}/{caseName}" - let checkOutput = fun output -> - output |> Output.printError - output |> Output.toExitCode - cli { - Shell platformShell - WorkingDirectory dir - Command "dotnet fable --exclude Partas.Solid.FablePlugin --noCache -e .fs.jsx" - } - |> Command.execute - |> checkOutput - |> shouldEqual 0 - - let readLinesOf = fun (s: string) -> File.ReadAllLines($"{dir}/{caseName}{s}") |> Array.filter ((<>) "") - let result = readLinesOf ".fs.jsx" - let expected = readLinesOf ".expected" - result |> shouldEqual expected diff --git a/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.fsproj b/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.fsproj deleted file mode 100644 index 552d269..0000000 --- a/Partas.Solid.Tests/IssueCases/CharArrayMapping/CharArrayMapping.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fsproj b/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fsproj deleted file mode 100644 index 114bce7..0000000 --- a/Partas.Solid.Tests/IssueCases/CreateSignalTagConstructor/CreateSignalTagConstructor.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.fs b/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.fs deleted file mode 100644 index 24a7cc4..0000000 --- a/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.fs +++ /dev/null @@ -1,25 +0,0 @@ -module Partas.Solid.Tests.IssueCases.EmptyCE - -open Partas.Solid -open Fable.Core -open Fable.Core.JsInterop - -let cn (listofclasses: string list) = listofclasses |> List.fold ((+) >> id) "" -[] -let Compponent (show: bool) = - div(class' = cn [ - "testcase" - if show then - "showthis" - "i'm always here" - ]) { - if show then "I show sometimes!" - "I show always!" - For(each = !![ - 1;2;3 - if show then - 4 - 5 - ]) { - } - } \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.fsproj b/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.fsproj deleted file mode 100644 index a820a97..0000000 --- a/Partas.Solid.Tests/IssueCases/EmptyCE/EmptyCE.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.fsproj b/Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.fsproj deleted file mode 100644 index cd4fafb..0000000 --- a/Partas.Solid.Tests/IssueCases/IndexAccess/IndexAccess.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fs b/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fs deleted file mode 100644 index 5d566f0..0000000 --- a/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fs +++ /dev/null @@ -1,28 +0,0 @@ -module Partas.Solid.Tests.IssueCases.IndexedPropSpreading - -open Partas.Solid -open Fable.Core - -[] -let splitProps(o: 'T, arr1: string[], arr2: string[]): 'T * 'T = jsNative - -[] -type Select() = - inherit select() - [] - member props.__ = - let rootProps,selectProps = splitProps(props, [| - "name" - "placeholder" - "required" - "disabled" - |], [| - "placeholder" - "ref" - "onInput" - "onChange" - "onBlur" - |]) - div().spread rootProps { - select().spread selectProps - } \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fsproj b/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fsproj deleted file mode 100644 index 5ffaf3e..0000000 --- a/Partas.Solid.Tests/IssueCases/IndexedPropSpreading/IndexedPropSpreading.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.fsproj b/Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.fsproj deleted file mode 100644 index 8e2625b..0000000 --- a/Partas.Solid.Tests/IssueCases/InheritedProperty/InheritedProperty.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.fs b/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.fs deleted file mode 100644 index 0bac109..0000000 --- a/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.fs +++ /dev/null @@ -1,25 +0,0 @@ -module Partas.Solid.Tests.IssueCases.ObjectExpressions - -open Partas.Solid -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -type AbstractInterface = - abstract member delay: int with get,set - -[] -type WordRotate() = - inherit div() - [] member val words: string = unbox null with get,set - [] member val duration: int = unbox null with get,set - [] - member props.constructor = - let index,setIndex = createSignal(0) - let transition = jsOptions( - fun o -> - o.delay <- props.duration * index() - ) - For(each = props.words.Split(' ')) - diff --git a/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.fsproj b/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.fsproj deleted file mode 100644 index d35850f..0000000 --- a/Partas.Solid.Tests/IssueCases/ObjectExpressions/ObjectExpressions.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.fsproj b/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.fsproj deleted file mode 100644 index a367e8c..0000000 --- a/Partas.Solid.Tests/IssueCases/ThisArgTransforms/ThisArgTransforms.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnFaceting.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnFaceting.fs deleted file mode 100644 index 1372484..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnFaceting.fs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -module mt = - type Column<'Data> with - member _.getFacetedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getFacetedUniqueValues with get(): (unit -> Map) = unbox null - member _.getFacetedMinMaxValues with get(): (unit -> Map) = unbox null - - type Table<'Data> with - member _.getColumnFacetedRowModel with set(columnId: string -> RowModel<'Data>) = () diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnOrdering.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnOrdering.fs deleted file mode 100644 index 65be78d..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnOrdering.fs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -type ColumnOrderTableState = interface end -type ColumnOrderState = string[] - -[] -module ordrr = - type ColumnOrderTableState with - member _.columnOrder with set(columnOrder: ColumnOrderState) = () and get(): ColumnOrderState = unbox null - - type TableOptions<'Data> with - member _.onColumnOrderChange with set(value: OnChangeFn) = () and get() = unbox null - - type Table<'Data> with - member _.setColumnOrder with get(): Updater -> unit = unbox null - member _.resetColumnOrder with get(): bool -> unit = unbox null - - type Column<'Data> with - member _.getIndex with get(): ColumnPinningPosition -> int = unbox null - member _.getIsFirstColumn with get(): ColumnPinningPosition -> bool = unbox null - member _.getIsLastColumn with get(): ColumnPinningPosition -> bool = unbox null \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnPinning.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnPinning.fs deleted file mode 100644 index 25743e4..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnPinning.fs +++ /dev/null @@ -1,46 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -module aaaaaa = - type TableOptions<'Data> with - member _.enableColumnPinning with set(value: bool) = () - member _.onColumnPinningChange with set(value: OnChangeFn) = () - - type Table<'Data> with - member _.setColumnPinning with get(): Updater -> unit = unbox null - member _.resetColumnPinning with get(): bool -> unit = unbox null - member _.getIsSomeColumnPinned with get(): ColumnPinningState -> unit = unbox null - member _.getLeftHeaderGroups with get(): HeaderGroup<'Data>[] = unbox null - member _.getCenterHeaderGroups with get(): HeaderGroup<'Data>[] = unbox null - member _.getRightHeaderGroups with get(): HeaderGroup<'Data>[] = unbox null - member _.getLeftFooterGroups with get(): HeaderGroup<'Data>[] = unbox null - member _.getCenterFooterGroups with get(): HeaderGroup<'Data>[] = unbox null - member _.getRightFooterGroups with get(): HeaderGroup<'Data>[] = unbox null - member _.getLeftFlatHeaders with get(): Header<'Data>[] = unbox null - member _.getCenterFlatHeaders with get(): Header<'Data>[] = unbox null - member _.getRightFlatHeaders with get(): Header<'Data>[] = unbox null - member _.getLeftLeafHeaders with get(): Header<'Data>[] = unbox null - member _.getCenterLeafHeaders with get(): Header<'Data>[] = unbox null - member _.getRightLeafHeaders with get(): Header<'Data>[] = unbox null - member _.getLeftLeafColumns with get(): Column<'Data>[] = unbox null - member _.getCenterLeafColumns with get(): Column<'Data>[] = unbox null - member _.getRightLeafColumns with get(): Column<'Data>[] = unbox null - - type ColumnDef<'Data> with - member _.onColumnPinningChange with set(value: OnChangeFn) = () - - type Column<'Data> with - member _.getCanPin with get(): (unit -> bool) = unbox null - member _.getPinnedIndex with get(): (unit -> int) = unbox null - member _.getIsPinned with get(): (unit -> ColumnPinningPosition) = unbox null - member _.pin with get(): ColumnPinningPosition -> unit = unbox null - - type Row<'Data> with - member _.getLeftVisibleCells with get(): (unit -> Cell<'Data>[]) = unbox null - member _.getRightVisibleCells with get(): (unit -> Cell<'Data>[]) = unbox null - member _.getCenterVisibleCells with get(): (unit -> Cell<'Data>[]) = unbox null - diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnSizing.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnSizing.fs deleted file mode 100644 index cf3765a..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnSizing.fs +++ /dev/null @@ -1,53 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -module aaa = - type ColumnDef<'Data> with - member _.enableResizing with set(value: bool) = () - member _.size with set(value: int) = () - member _.minSize with set(value: int) = () - member _.maxSize with set(value: int) = () - - type Column<'Data> with - member _.getSize with get(): (unit -> int) = unbox null - member _.getStart with get(): ColumnPinningPosition option -> int = unbox null - member _.getAfter with get(): ColumnPinningPosition option -> int = unbox null - member _.getCanResize with get(): (unit -> bool) = unbox null - member _.getIsResizing with get(): (unit -> bool) = unbox null - member _.resetSize with get(): (unit -> unit) = unbox null - - type Header<'Data> with - member _.getSize with get(): (unit -> int) = unbox null - member _.getStart with get(): ColumnPinningPosition option -> int = unbox null - member _.getResizeHandler with get(): (unit -> (MouseEvent -> unit)) = unbox null - - [] - type ColumnResizingMode = - | OnChange - | OnEnd - [] - type ColumnResizingDirection = - | Ltr - | Rtl - type TableOptions<'Data> with - member _.enableColumnResizing with set(value: bool) = () - member _.columnResizeMode with set(value: ColumnResizingMode) = () - member _.columnResizeDirection with set(value: ColumnResizingDirection) = () - member _.onColumnSizingChange with set(value: OnChangeFn) = () - member _.onColumnSizingInfoChange with set(value: OnChangeFn) = () - - type Table<'Data> with - member _.setColumnSizing with get(): Updater -> unit = unbox null - member _.setColumnSizingInfo with get(): bool -> unit = unbox null - member _.resetColumnSizing with get(): bool -> unit = unbox null - member _.resetHeaderSizeInfo with get(): bool -> unit = unbox null - member _.getTotalSize with get(): (unit -> int) = unbox null - member _.getLeftTotalSize with get(): (unit -> int) = unbox null - member _.getCenterTotalSize with get(): (unit -> int) = unbox null - member _.getRightTotalSize with get(): (unit -> int) = unbox null - \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnVisibility.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnVisibility.fs deleted file mode 100644 index f5266b1..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/ColumnVisibility.fs +++ /dev/null @@ -1,39 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open System.Runtime.CompilerServices -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -module aa = - type ColumnDef<'Data> with - member _.enableHiding with set(value: bool) = () - - type Column<'Data> with - member _.getCanHide with get(): (unit -> bool) = unbox null - member _.getIsVisible with get(): (unit -> bool) = unbox null - member _.toggleVisibility with get(): (bool -> unit) = unbox null - member _.getToggleVisibilityHandler with get(): (unit -> (Event -> unit)) = unbox null - - - type TableOptions<'Data> with - member _.onColumnVisibilityChange with set(value: OnChangeFn) = () - member _.enableHiding with set(value: bool) = () - - type Table<'Data> with - member _.getVisibleFlatColumns with get(): (unit -> Column<'Data>[]) = unbox null - member _.getVisibleLeafColumns with get(): (unit -> Column<'Data>[]) = unbox null - member _.getLeftVisibleLeafColumns with get(): (unit -> Column<'Data>[]) = unbox null - member _.getRightVisibleLeafColumns with get(): (unit -> Column<'Data>[]) = unbox null - member _.getCenterVisibleLeafColumns with get(): (unit -> Column<'Data>[]) = unbox null - member _.setColumnVisibility with get(): (Updater -> unit) = unbox null - member _.resetColumnVisibility with get(): bool -> unit = unbox null - member _.toggleAllColumnsVisible with get(): bool -> unit = unbox null - member _.getIsAllColumnsVisible with get(): (unit -> bool) = unbox null - member _.getIsSomeColumnsVisible with get(): (unit -> bool) = unbox null - member _.getToggleAllColumnsVisibilityHandler with get(): (unit -> (Event -> unit)) = unbox null - - type Row<'Data> with - member _.getVisibleCells with get(): (unit -> Cell<'Data>[]) = unbox null diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Expanding.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Expanding.fs deleted file mode 100644 index e57fa0f..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Expanding.fs +++ /dev/null @@ -1,37 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -module oooo = - type Row<'Data> with - member _.toggleExpanded with get(): (bool -> unit) = unbox null - member _.getIsExpanded with get(): (unit -> bool) = unbox null - member _.getIsAllParentsExpanded with get(): (unit -> bool) = unbox null - member _.getCanExpand with get(): (unit -> bool) = unbox null - member _.getToggleExpandedHandler with get(): (unit -> (unit -> unit)) = unbox null - - type TableOptions<'Data> with - member _.manualExpanding with set(value: bool) = () - member _.onExpandedChange with set(value: OnChangeFn) = () - member _.autoResetExpanded with set(value: bool) = () - member _.enableExpanding with set(value: bool) = () - member _.getExpandedRowModel with set(value: Table<'Data> -> (unit -> RowModel<'Data>)) = () - member _.getIsRowExpanded with set(value: Row<'Data> -> bool) = () - member _.getRowCanExpand with set(value: Row<'Data> -> bool) = () - member _.paginateExpandedRows with set(value: bool) = () - - type Table<'Data> with - member _.setExpanded with get(): Updater -> unit = unbox null - member _.toggleAllRowsExpanded with get(): bool -> unit = unbox null - member _.resetExpanded with get(): bool -> unit = unbox null - member _.getCanSomeRowsExpand with get(): (unit -> bool) = unbox null - member _.getToggleAllRowsExpandedHandler with get(): (unit -> (Event -> unit)) = unbox null - member _.getIsSomeRowsExpanded with get(): (unit -> bool) = unbox null - member _.getIsAllRowsExpanded with get(): (unit -> bool) = unbox null - member _.getExpandedDepth with get(): (unit -> int) = unbox null - member _.getExpandedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getPreExpandedRowModel with get(): (unit -> RowModel<'Data>) = unbox null diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/GlobalFaceting.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/GlobalFaceting.fs deleted file mode 100644 index 76339ca..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/GlobalFaceting.fs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -module uu = - type Table<'Data> with - member _.getGlobalFacetedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getGlobalFacetedUniqueValues with get(): (unit -> Map) = unbox null - member _.getGlobalFacetedMinMaxValues with get(): (unit -> int * int) = unbox null diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/GlobalFiltering.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/GlobalFiltering.fs deleted file mode 100644 index c791d57..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/GlobalFiltering.fs +++ /dev/null @@ -1,38 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -module uuuu = - type ColumnDef<'Data> with - member _.enableGlobalFilter with set(value: bool) = () - - type Column<'Data> with - member _.getCanGlobalFilter with get(): (unit -> bool) = unbox null - - type Row<'Data> with - member _.columnFiltersMeta with get(): Map = unbox null - - - type TableOptions<'Data> with - member _.filterFns with set(value: Map) = () - member _.filterFromLeafRows with set(value: bool) = () - member _.maxLeafRowFilterDepth with set(value: int) = () - member _.enableFilters with set(value: bool) = () - member _.manualFiltering with set(value: bool) = () - member _.getFilteredRowModel with set(value: Table<'Data> -> (unit -> RowModel<'Data>)) = () - member _.globalFilterFn with set(value: FilterFn) = () - member _.onGlobalFilterChange with set(value: OnChangeFn) = () - member _.enableGlobalFilter with set(value: bool) = () - member _.getColumnCanGlobalFilter with set(value: Column<'Data> -> bool) = () - - type Table<'Data> with - member _.getPreFilteredRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getFilteredRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.setGlobalFilter with get(): (Updater -> unit) = unbox null - member _.resetGlobalFilter with get(): bool -> unit = unbox null - member _.getGlobalAutoFilterFn with get(): string -> FilterFn option = unbox null - member _.getGlobalFilterFn with get(): string -> FilterFn option = unbox null - \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Grouping.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Grouping.fs deleted file mode 100644 index 29a58d8..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Grouping.fs +++ /dev/null @@ -1,72 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -type Renderable<'Data>( - table: Table<'Data>, - row: Row<'Data>, - column: Column<'Data>, - cell: Cell<'Data>, - getValue: (unit -> obj), - renderValue: (unit -> obj) - ) = - member val table = table with get,set - member val row = row with get,set - member val column = column with get,set - member val cell = cell with get,set - member val getValue = getValue with get,set - member val renderValue = renderValue with get,set - -[] -module ouo = - type ColumnDef<'Data> with - member _.aggregationFn with set(value: AggregationFn) = () - member _.aggregatedCell with set(value: Renderable<'Data>) = () - member _.enableGrouping with set(value: bool) = () - member _.getGroupingValue with set(value: 'Data -> obj) = () - - type Column<'Data> with - member _.aggregationFn with get(): AggregationFn = unbox null - member _.getCanGroup with get(): (unit -> bool) = unbox null - member _.getIsGrouped with get(): (unit -> bool) = unbox null - member _.getGroupedIndex with get(): (unit -> int) = unbox null - member _.toggleGrouping with get(): (unit -> unit) = unbox null - member _.getToggleGroupingHandler with get(): (unit -> (unit -> unit)) = unbox null - member _.getAutoAggregationFn with get(): (unit -> AggregationFn option) = unbox null - member _.getAggregationFn with get(): (unit -> AggregationFn option) = unbox null - - type Row<'Data> with - member _.groupingColumnId with get(): string = unbox null - member _.groupingValue with get(): obj = unbox null - member _.getIsGrouped with get(): (unit -> bool) = unbox null - member _.getGroupingValue with get(): (string -> obj) = unbox null - - [] - type GroupedColumnMode = - | [] False - | Reorder - | Remove - - type TableOptions<'Data> with - member _.aggregationFns with set(value: Map) = () - member _.manualGrouping with set(value: bool) = () - member _.onGroupingChange with set(value: OnChangeFn) = () - member _.enableGrouping with set(value: bool) = () - member _.getGroupedRowModel with set(value: Table<'Data> -> (unit -> RowModel<'Data>)) = () - member _.groupedColumnMode with set(value: GroupedColumnMode) = () - - type Table<'Data> with - member _.setGrouping with get(): Updater -> unit = unbox null - member _.resetGrouping with get(): bool -> unit = unbox null - member _.getPreGroupedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getGroupedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - - type Cell<'Data> with - member _.getIsAggregated with get(): (unit -> bool) = unbox null - member _.getIsGrouped with get(): (unit -> bool) = unbox null - member _.getIsPlaceholder with get(): (unit -> bool) = unbox null - diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Pagination.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Pagination.fs deleted file mode 100644 index 014723c..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Pagination.fs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -module ppp = - type TableOptions<'Data> with - member _.manualPagination with set(value: bool) = () - member _.pageCount with set(value: int) = () - member _.rowCount with set(value: int) = () - member _.autoResetPageIndex with set(value: bool) = () - member _.onPaginationChange with set(value: OnChangeFn) = () - member _.getPaginationRowModel with set(value: Table<'Data> -> (unit -> RowModel<'Data>)) = () - - type Table<'Data> with - member _.setPagination with get(): Updater -> unit = unbox null - member _.resetPagination with get(): bool -> unit = unbox null - member _.setPageIndex with get(): Updater -> unit = unbox null - member _.resetPageIndex with get(): bool -> unit = unbox null - member _.setPageSize with get(): Updater -> unit = unbox null - member _.resetPageSize with get(): bool -> unit = unbox null - member _.getPageOptions with get(): (unit -> int[]) = unbox null - member _.getCanPreviousPage with get(): (unit -> bool) = unbox null - member _.getCanNextPage with get(): (unit -> bool) = unbox null - member _.previousPage with get(): (unit -> unit) = unbox null - member _.nextPage with get(): (unit -> unit) = unbox null - member _.firstPage with get(): (unit -> unit) = unbox null - member _.lastPage with get(): (unit -> unit) = unbox null - member _.getPageCount with get(): (unit -> int) = unbox null - member _.getPrePaginationRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getPaginationRowModel with get(): (unit -> RowModel<'Data>) = unbox null - diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/RowPinning.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/RowPinning.fs deleted file mode 100644 index e76b232..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/RowPinning.fs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -module kkk = - type TableOptions<'Data> with - member _.enableRowPinning with set(value: Row<'Data> -> bool) = () - member _.keepPinnedRows with set(value: bool) = () - member _.onRowPinningChanged with set(value: OnChangeFn) = () - - type Table<'Data> with - member _.setRowPinning with get(): Updater -> unit = unbox null - member _.resetRowPinning with get(): bool option -> unit = unbox null - member _.getIsSomeRowsPinned with get(): RowPinningPosition option -> bool = unbox null - member _.getTopRows with get(): (unit -> Row<'Data>[]) = unbox null - member _.getBottomRows with get(): (unit -> Row<'Data>[]) = unbox null - member _.getCenterRows with get(): (unit -> Row<'Data>[]) = unbox null - - type Row<'Data> with - member _.pin with get(): RowPinningPosition -> unit = unbox null - member _.getCanPin with get(): (unit -> bool) = unbox null - member _.getIsPinned with get(): (unit -> RowPinningPosition) = unbox null - member _.getPinnedIndex with get(): (unit -> int) = unbox null \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/RowSelection.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/RowSelection.fs deleted file mode 100644 index 4b3eac4..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/RowSelection.fs +++ /dev/null @@ -1,41 +0,0 @@ -namespace Partas.Solid.TanStack.Table -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop -open Browser.Types - -[] -module qwe = - type TableOptions<'Data> with - member _.enableRowSelection with set(value: Row<'Data> -> bool) = () - member _.enableMultiRowSelection with set(value: Row<'Data> -> bool) = () - member _.enableSubRowSelection with set(value: Row<'Data> -> bool) = () - member _.onRowSelectionChange with set(value: OnChangeFn) = () - - type Table<'Data> with - member _.getToggleAllRowsSelectedHandler with get(): (unit -> (Event -> unit)) = unbox null - member _.getToggleAllPageRowsSelectedHandler with get(): (unit -> (Event -> unit)) = unbox null - member _.setRowSelection with get(): (Updater -> unit ) = unbox null - member _.resetRowSelection with get(): bool option -> unit = unbox null - member _.getIsAllRowsSelected with get(): (unit -> bool) = unbox null - member _.getIsAllPageRowsSelected with get(): (unit -> bool) = unbox null - member _.getIsSomeRowsSelected with get(): (unit -> bool) = unbox null - member _.getIsSomePageRowsSelected with get(): (unit -> bool) = unbox null - member _.toggleAllRowsSelected with get(): (bool -> unit) = unbox null - member _.toggleAllPageRowsSelected with get(): bool -> unit = unbox null - member _.getPreSelectedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getSelectedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getFilteredSelectedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getGroupedSelectedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - - type Row<'Data> with - member _.getIsSelected with get(): (unit -> bool) = unbox null - member _.getIsSomeSelected with get(): (unit -> bool) = unbox null - member _.getIsAllSubRowsSelected with get(): (unit -> bool) = unbox null - member _.getCanSelect with get(): (unit -> bool) = unbox null - member _.getCanMultiSelect with get(): (unit -> bool) = unbox null - member _.getCanSelectSubRows with get(): (unit -> bool) = unbox null - member _.toggleSelect with get(): (bool -> unit) = unbox null - member _.getToggleSelectedHandler with get(): (unit -> (Event -> unit)) = unbox null - - diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Sorting.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Sorting.fs deleted file mode 100644 index 56fb289..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/Sorting.fs +++ /dev/null @@ -1,58 +0,0 @@ -namespace Partas.Solid.TanStack.Table - -open Fable.Core -open Fable.Core.JS -open Fable.Core.JsInterop - -[] -type SortUndefined = - | First - | Last - | [] False - | [] Negative - | [] Positive - -[] -module uwu = - - type ColumnDef<'Data> with - member _.sortingFn with set(value: SortingFn) = () - member _.sortDescFirst with set(value: bool) = () - member _.enableSorting with set(value: bool) = () - member _.enableMultiSort with set(value: bool) = () - member _.invertSorting with set(value: bool) = () - member _.sortUndefined with set(value: SortUndefined) = () - - type Column<'Data> with - member _.getAutoSortingFn with get(): (unit -> SortingFn) = unbox null - member _.getAutoSortDir with get(): (unit -> SortDirection) = unbox null - member _.getSortingFn with get(): (unit -> SortingFn) = unbox null - member _.getNextSortingOrder with get(): (unit -> U2) = unbox null - member _.getCanSort with get(): (unit -> bool) = unbox null - member _.getCanMultiSort with get(): (unit -> bool) = unbox null - member _.getSortIndex with get(): (unit -> int) = unbox null - member _.getIsSorted with get(): (unit -> U2) = unbox null - member _.getFirstSortDir with get(): (unit -> SortDirection) = unbox null - member _.clearSorting with get(): (unit -> unit) = unbox null - member _.toggleSorting with get(): ((bool option * bool option) -> unit) = unbox null - member _.getToggleSortingHandler with get(): (Browser.Types.Event -> unit) = unbox null - - type TableOptions<'Data> with - member _.sortingFns with set(value: Map) = () - member _.manualSorting with set(value: bool) = () - member _.onSortingChange with set(value: OnChangeFn) = () - member _.enableSorting with set(value: bool) = () - member _.enableSortingRemoval with set(value: bool) = () - member _.enableMultiRemove with set(value: bool) = () - member _.enableMultiSort with set(value: bool) = () - member _.sortDescFirst with set(value: bool) = () - member _.getSortedRowModel with set(value: Table<'Data> -> (unit -> RowModel<'Data>)) = () - member _.maxMultiSortColCount with set(value: int) = () - member _.isMultiSortEvent with set(value: Browser.Types.Event -> bool) = () - - type Table<'Data> with - member _.setSorting with get(): Browser.Types.Event -> unit = unbox null - member _.resetSorting with get(): bool -> unit = unbox null - member _.getPreSortedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - member _.getSortedRowModel with get(): (unit -> RowModel<'Data>) = unbox null - \ No newline at end of file diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fs b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fs deleted file mode 100644 index 6be6964..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fs +++ /dev/null @@ -1,26 +0,0 @@ -module Partas.Solid.Tests.IssueCases.TransformGetterExtensions - -open Partas.Solid -open Partas.Solid.TanStack.Table -open Fable.Core - -[] -type TransformGetterExtensions() = - interface VoidNode - [] member val data: int[] = unbox null with get,set - [] - member props.constructor = - let table = createTable(TableOptions(data = props.data)) - div() { - Show(when' = unbox (table.getRowModel().rows.Length), fallback = (div())) { - For(each = table.getRowModel().rows) { - yield fun row index -> - div().data("state", unbox (row.getIsSelected() && unbox "selected")) { - For(each = row.getVisibleCells()) { - yield fun cell index -> - div() { flexRender(cell.column.columnDef.cell, cell.getContext) } - } - } - } - } - } diff --git a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fsproj b/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fsproj deleted file mode 100644 index 3a612b8..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformGetterExtensions/TransformGetterExtensions.fsproj +++ /dev/null @@ -1,32 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fsproj b/Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fsproj deleted file mode 100644 index 3a7be8c..0000000 --- a/Partas.Solid.Tests/IssueCases/TransformInsideStringInterpolation/TransformInsideStringInterpolation.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.fs b/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.fs deleted file mode 100644 index 6358011..0000000 --- a/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.fs +++ /dev/null @@ -1,27 +0,0 @@ -module Partas.Solid.Tests.IssueCases.ValMutableOverloads - -open Partas.Solid -open Fable.Core - -[] -type MemberVal() = - interface RegularNode - [] - member val index: int = unbox null with get,set - member this.overloaded - with inline set(value: string) = this.index <- unbox value - -[] -type ValMutable() = - interface RegularNode - [] - val mutable index: int - member this.overloaded - with inline set(value: string) = this.index <- unbox value - -[] -let TestCase() = - Fragment() { - MemberVal(overloaded = "test") - ValMutable(overloaded = "test") - } diff --git a/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.fsproj b/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.fsproj deleted file mode 100644 index 56f4a88..0000000 --- a/Partas.Solid.Tests/IssueCases/ValMutableOverloads/ValMutableOverloads.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/IssueTests.fs b/Partas.Solid.Tests/IssueTests.fs deleted file mode 100644 index c3de5e6..0000000 --- a/Partas.Solid.Tests/IssueTests.fs +++ /dev/null @@ -1,52 +0,0 @@ -module IssueTests - -open Xunit -open Partas.Solid.Tests.Common - -let runIssueCase caseName = - let folderName = "IssueCases" - runCase folderName caseName - -[] -let ``#2 createSignal getting converted into Tag`` () = - runIssueCase "CreateSignalTagConstructor" - -[] -let ``#9 Index access is rendered`` () = - runIssueCase "IndexAccess" - -[] -let ``#11 String interpolation is transformed`` () = - runIssueCase "TransformInsideStringInterpolation" - -[] -let ``#13 Getter extensions are transformed`` () = - runIssueCase "TransformGetterExtensions" - -[] -let ``#14 Object Expressions are transformed`` () = - runIssueCase "ObjectExpressions" - -[] -let ``#15 props.words.ToCharArray() |> Array.map string`` () = - runIssueCase "CharArrayMapping" - -[] -let ``#16 val mutable overloads render`` () = - runIssueCase "ValMutableOverloads" - -[] -let ``#18 indexed identifiers spread`` () = - runIssueCase "IndexedPropSpreading" - -[] -let ``#27 list CE 'empty' rendered out`` () = - runIssueCase "EmptyCE" - -[] -let ``#28 ThisArg is transformed`` () = - runIssueCase "ThisArgTransforms" - -[] -let ``#29 val mutable overloads render 2`` () = - runIssueCase "InheritedProperty" diff --git a/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.fs b/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.fs deleted file mode 100644 index dc8c24c..0000000 --- a/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.fs +++ /dev/null @@ -1,31 +0,0 @@ -module Partas.Solid.Tests.SolidCases.ChildrenSimple - -open Partas.Solid -open Fable.Core - -type [] TypeDefTest() = - interface RegularNode - [] - member props.typeDef = - button() { - "Button" - } -type [] TypeDefTestWithProps() = - interface RegularNode - [] - member props.typeDef = - button(class' = "ButtonClass", draggable="indubitably") { - "Button" - span(class' = "sr-only") { "Span" } - } -type [] TypeDefTestWithExtensions() = - interface RegularNode - [] - member props.typeDef = - button(class' = "ButtonClass").attr("Key", "Value") { - "Button" - span(class' = "sr-only") { "Span" } - div(class' = "DivBelow").attr("key", "value") - "TextBelow" - } - diff --git a/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.fsproj b/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.fsproj deleted file mode 100644 index 56267cd..0000000 --- a/Partas.Solid.Tests/SolidCases/ChildrenSimple/ChildrenSimple.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.fs b/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.fs deleted file mode 100644 index 08bde7f..0000000 --- a/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.fs +++ /dev/null @@ -1,97 +0,0 @@ -module Partas.Solid.Tests.SolidCases.CombinedSpread - -open Partas.Solid -open Fable.Core - -type [] SimpleCombination() = - interface RegularNode - [] - member props.CombinedSpread = - props.class' <- "ClassDefault" - div() { - "Some text" - span(class' = props.class') { "More text" } - div().spread(props) { - "All but class have been spread into this tag!" - } - - } - -type [] Lib = - [] - static member inline twMerge ( classes : string ) : string = jsNative - [] - static member inline clsx ( classes : obj ) : string = jsNative - static member inline cn ( classes : string * bool ) : string = classes |> Lib.clsx |> Lib.twMerge - static member inline cn ( classes : string array ) : string = classes |> Lib.clsx |> Lib.twMerge - static member inline cn ( classes : string ) : string = classes |> Lib.clsx |> Lib.twMerge - [] - static member inline cva ( orig : string ) ( object : 'T) : obj -> string = jsNative - -[] -module Operators = - [] - let (&&=) (conditional: 'T) (output: 'M): 'M = jsNative - -[] -module [] button = - let variants = - Lib.cva - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0" - {| - variants = {| - variant = {| - ``default`` = "bg-primary text-primary-foreground shadow-sm hover:bg-primary/90" - destructive = "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90" - outline = "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground" - secondary = "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80" - ghost = "hover:bg-accent hover:text-accent-foreground" - link = "text-primary underline-offset-4 hover:underline" - |} - size = {| - ``default`` = "h-9 px-4 py-2" - sm = "h-8 rounded-md px-3 text-xs" - lg = "h-10 rounded-md px-8" - icon = "h-9 w-9" - |} - |} - defaultVariants = {| - variant = "default" - size = "default" - |} - |} - - [] - type size = - static member inline default' : size = unbox "default" - static member inline sm : size = unbox "sm" - static member inline lg : size = unbox "lg" - static member inline icon : size = unbox "icon" - [] - type variant = - static member inline default' : variant = unbox "default" - static member inline outline : variant = unbox "outline" - static member inline ghost : variant = unbox "ghost" - static member inline link : variant = unbox "link" - static member inline destructive : variant = unbox "destructive" - static member inline secondary : variant = unbox "secondary" - -[] -type Button() = - inherit button() - [] - member val size: size = unbox null with get,set - [] - member val variant: variant = unbox null with get,set - [] - member props.constructor = - button(class' = button.variants({|size = props.size; variant = props.variant|})) - .spread props - -[] -type AccordionItem() = - inherit button() - [] - member props.constructor = - button(class' = Lib.cn [| "border-b"; props.class' |]) - .spread props diff --git a/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.fsproj b/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.fsproj deleted file mode 100644 index 13644f8..0000000 --- a/Partas.Solid.Tests/SolidCases/CombinedSpread/CombinedSpread.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.fsproj b/Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.fsproj deleted file mode 100644 index 227c163..0000000 --- a/Partas.Solid.Tests/SolidCases/CssStyles/CssStyles.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fs b/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fs deleted file mode 100644 index b089285..0000000 --- a/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fs +++ /dev/null @@ -1,91 +0,0 @@ -module Partas.Solid.Tests.SolidCases.ExperimentalBuilders - -open Partas.Solid -open Partas.Solid.Experimental -open Fable.Core -open Fable.Core.JS - -[] -type MyObject(value: int, label: string) = - member val value = value with get,set - member val label = label with get,set - -let getter,setter = createSignal(10) -let data,store = createStore(ResizeArray([||])) - -effect { - if getter() = 10 then - store.Update(ResizeArray([||])) - else - setter 10 -} -let getGetter = lambda { - let mutable check = 10 - match getter() with - | 10 -> check <- 5 - | 5 -> check <- 10 - | _ -> () - check -} - -let getSetter = lambda { - store.Update(fun o -> o.Add(MyObject(5, "Test")); o) - if data.Count > 0 then - setter -} - -[] -let ComponentWrap () = - effect { - if getter() = 10 then - store.Update(ResizeArray([||])) - else - setter 10 - } - let getGetter = lambda { - let mutable check = 10 - match getter() with - | 10 -> check <- 5 - | 5 -> check <- 10 - | _ -> () - check - } - - let getSetter = lambda { - store.Update(fun o -> o.Add(MyObject(5, "Test")); o) - if data.Count > 0 then - setter - } - - if getter() = 0 then getGetter - else unbox getSetter - -[] -type TestComponent() = - interface RegularNode - [] - member props.__ = - let childs = children { props.children } - effect { - printfn "effect" - } - cleanup { - printfn "cleanup" - } - mount { - printfn "mount" - } - let x = memo { - printfn "memo" - "memo" - } - let submission = batch { - printfn "" - childs() - } - let isSelected = selector { - false - } - - div() { childs() } - diff --git a/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fsproj b/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fsproj deleted file mode 100644 index 50de34e..0000000 --- a/Partas.Solid.Tests/SolidCases/ExperimentalBuilders/ExperimentalBuilders.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fsproj b/Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fsproj deleted file mode 100644 index 7b2b62d..0000000 --- a/Partas.Solid.Tests/SolidCases/FieldGetExpressionsTransformed/FieldGetExpressionsTransformed.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fs b/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fs deleted file mode 100644 index 02df03e..0000000 --- a/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fs +++ /dev/null @@ -1,18 +0,0 @@ -module Partas.Solid.Tests.SolidCases.FieldGettersInComputations - -open Partas.Solid - -type MenuItem = { Title: string; Url: string; Icon: HtmlElement } -module App = - [] - let App() = - let items = [ - { Title = "Home" - Url = "#" - Icon = div() } - ] - div() { - button() - items[0].Icon - } - diff --git a/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fsproj b/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fsproj deleted file mode 100644 index dfa9b80..0000000 --- a/Partas.Solid.Tests/SolidCases/FieldGettersInComputations/FieldGettersInComputations.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fs b/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fs deleted file mode 100644 index f98f516..0000000 --- a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fs +++ /dev/null @@ -1,29 +0,0 @@ -module Partas.Solid.Tests.SolidCases.ImportedTagsWithExtensions - -open Partas.Solid.Tests.Shared.ImportedTagsWithExtensions -open Partas.Solid -open Fable.Core - -type [] NoPropsOneExtension() = - interface RegularNode - [] - member props.typeDef = - Imported().attr("key", "value") - -type [] PropsWithExtension() = - interface RegularNode - [] - member props.typeDef = - CustomTag(class' = "testClass").attr("key", "value") - -type [] NoPropsExtensionChain() = - interface RegularNode - [] - member props.typeDef = - CustomTag().attr("key", "value").attr("key2", "value2") - -type [] PropsWithExtensionChain() = - interface RegularNode - [] - member props.typeDef = - Imported(class' = "Tester", draggable = "drag").attr("key", "value").attr("key2", "value2").attr("key3", "value3").attr("key4", "value4") diff --git a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fsproj b/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fsproj deleted file mode 100644 index 8dbb985..0000000 --- a/Partas.Solid.Tests/SolidCases/ImportedTagsWithExtensions/ImportedTagsWithExtensions.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.fs b/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.fs deleted file mode 100644 index 06f93f3..0000000 --- a/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.fs +++ /dev/null @@ -1,30 +0,0 @@ -module Partas.Solid.Tests.SolidCases.LibraryImport - -open Partas.Solid -open Fable.Core -open Partas.Solid.Tests.Shared.LibraryImport - - -type [] MyTag() = - interface RegularNode - [] - member props.typeDef = - Imported() - -type [] MyOtherTag() = - interface RegularNode - [] - member props.typeDef = - CustomTag() - -type [] ImportedTagWithProps() = - interface RegularNode - [] - member props.typeDef = - Imported(class' = "Test props") - -type [] UserTagWithProps() = - interface RegularNode - [] - member props.typeDef = - CustomTag(class' = "test bops") diff --git a/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.fsproj b/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.fsproj deleted file mode 100644 index 0118fd1..0000000 --- a/Partas.Solid.Tests/SolidCases/LibraryImport/LibraryImport.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/LibraryImport/Shared.fs b/Partas.Solid.Tests/SolidCases/LibraryImport/Shared.fs deleted file mode 100644 index 7e701fd..0000000 --- a/Partas.Solid.Tests/SolidCases/LibraryImport/Shared.fs +++ /dev/null @@ -1,13 +0,0 @@ -module Partas.Solid.Tests.Shared.LibraryImport - -open Partas.Solid -open Fable.Core - -[] -type [] Imported() = - interface RegularNode - member val importedProperty: int = jsNative with get,set - -type [] CustomTag() = - interface RegularNode - member val userProperty: string = jsNative with get,set diff --git a/Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.fsproj b/Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.fsproj deleted file mode 100644 index 531c3b8..0000000 --- a/Partas.Solid.Tests/SolidCases/MergeProps/MergeProps.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.fs b/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.fs deleted file mode 100644 index 227d46b..0000000 --- a/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.fs +++ /dev/null @@ -1,166 +0,0 @@ -module Partas.Solid.Tests.SolidCases.OperatorsInProps -open Partas.Solid -open Fable.Core -open Browser.Types -open Browser.Dom - -type [] Lib = - [] - static member inline twMerge ( classes : string ) : string = jsNative - [] - static member inline clsx ( classes : obj ) : string = jsNative - static member inline cn ( classes : string * bool ) : string = classes |> Lib.clsx |> Lib.twMerge - static member inline cn ( classes : string array ) : string = classes |> Lib.clsx |> Lib.twMerge - static member inline cn ( classes : string ) : string = classes |> Lib.clsx |> Lib.twMerge - [] - static member inline cva ( orig : string ) ( object : 'T) : obj -> string = jsNative - -[] -module Operators = - [] - let (&&=) (conditional: 'T) (output: 'M): 'M = jsNative -[] -module sidebar = - let mobileBreakpoint = 768 - let sidebarCookieName = "sidebar:state" - let sidebarCookieMaxAge = 60 * 60 * 24 * 7 - let sidebarWidth = "16rem" - let sidebarWidthMobile = "18rem" - let sidebarWidthIcon = "3rem" - let sidebarKeyboardShortcut = "b" - - [] - type State = - | Expanded - | Collapsed - [] - type Side = - | Left - | Right - [] - type Variant = - | Sidebar - | Floating - | Inset - [] - type Collapsible = - | Offcanvas - | Icon - | None - type SidebarContext = {| - state: State Accessor - open': bool Accessor - setOpen: bool -> unit - openMobile: bool Accessor - setOpenMobile: bool -> unit - isMobile: bool Accessor - toggleSidebar: unit -> unit - |} - -open sidebar -open Fable.Core.JsInterop - -[] -type Sheet() = - inherit dialog() - [] - member val onOpenChange: bool -> unit = unbox null with get,set -[] -type SheetContent() = - inherit dialog() - [] - member val position: string = unbox null with get,set -[] -module Context = - let SidebarContext = createContext() - let useSidebar () = - let context = useContext(SidebarContext) - if not (unbox context) then failwith "useSidebar can only be used within a Sidebar" - context - let useIsMobile (fallback: bool) = - let (isMobile, setIsMobile) = createSignal(fallback) - createEffect( - fun () -> - let mql = window?matchMedia($"(max-width:{mobileBreakpoint - 1}px)") - let onChange = fun (e) -> - setIsMobile(e?matches) - mql?addEventListener("change", onChange) - onChange(mql) - onCleanup(fun () -> mql?removeEventListener("change", onChange)) - ) - isMobile -[] -type Sidebar() = - inherit div() - [] - member val side: sidebar.Side = unbox null with get,set - [] - member val variant: sidebar.Variant = unbox null with get,set - [] - member val collapsible: sidebar.Collapsible = unbox null with get,set - [] - member props.constructor = - props.side <- Left - props.variant <- sidebar.Sidebar - props.collapsible <- Offcanvas - let ctx = Context.useSidebar() - let (isMobile, state, openMobile, setOpenMobile) = (ctx.isMobile, ctx.state, ctx.openMobile, ctx.openMobile) - Switch() { - Match(when' = (props.collapsible = sidebar.None)) { - - div(class' = Lib.cn [| - "test flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground" - props.class' - |]).spread props - { props.children } - - } - Match(when' = isMobile()) { - - Sheet( open' = openMobile(), onOpenChange = !!setOpenMobile ) - .spread props { - SheetContent( - class' = "w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden", - position = !!props.side - ).data("sidebar", !!sidebar.Sidebar) - .data("mobile", "true") - .style'(createObj [ "--sidebar-width" ==> sidebarWidthMobile ]) - { div(class' = "flex size-full flex-col") { props.children } } - } - - } - Match(when' = (isMobile() |> not)) { - // gap handler on desktop - div( - class' = Lib.cn [| - "a1" - "a2" - "a3" - if (props.variant = sidebar.Floating || props.variant = sidebar.Inset) then - "?a1" - else "?a2" - |] - ) - - div( - class' = Lib.cn [| - "b1" - if props.side = sidebar.Left then - "?b1" - else "?b2" - // Adjust the padding for floating and inset variants. - if props.variant = sidebar.Floating || props.variant = sidebar.Inset then - "?b3" - else "?b4" - props.class' - |] - ).spread props - { - div( - class' = "classend" - ).data("sidebar", !!sidebar.Sidebar) - { props.children } - } - } - - } \ No newline at end of file diff --git a/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.fsproj b/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.fsproj deleted file mode 100644 index 7dba7c1..0000000 --- a/Partas.Solid.Tests/SolidCases/OperatorsInProps/OperatorsInProps.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fs b/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fs deleted file mode 100644 index 877c88f..0000000 --- a/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fs +++ /dev/null @@ -1,20 +0,0 @@ -module Partas.Solid.Tests.SolidCases.SignalSetterInvoke - -open Partas.Solid -open Fable.Core -open Fable.Core.JS - -[] -type WordRotate() = - inherit div() - [] member val words: string[] = unbox null with get,set - [] member val duration: int = unbox null with get,set - [] - member props.constructor = - let index,setIndex = createSignal(0) - createEffect( - fun () -> - let interval = setInterval (fun () -> setIndex.Invoke(fun prevIndex -> (prevIndex + 1) % (props.words.Length))) props.duration - onCleanup(fun () -> clearInterval(interval)) - ) - div() \ No newline at end of file diff --git a/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fsproj b/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fsproj deleted file mode 100644 index 46ee226..0000000 --- a/Partas.Solid.Tests/SolidCases/SignalSetterInvoke/SignalSetterInvoke.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.fs b/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.fs deleted file mode 100644 index c144f7e..0000000 --- a/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.fs +++ /dev/null @@ -1,39 +0,0 @@ -module Partas.Solid.Tests.SolidCases.SplitProps - -open Partas.Solid -open Fable.Core -open Partas.Solid.Tests.SolidCases.SplitPropsTypes - -type [] SplitProps() = - interface RegularNode - [] - member props.SplitProps = - div(class' = props.class') { - button(draggable = props.draggable) - } - -type [] NestedSplitProps() = - interface RegularNode - [] - member props.SplitProps = - div() { - button(class' = props.class') - div() { - button(onClick = (fun _ -> System.Console.WriteLine props.class')) - } - "text" - } - -type [] SplitValMutable() = - interface RegularNode - [] - val mutable index: int - [] - member props.__ = - div(tabindex = props.index) - -type [] SplitInheritedValMutable() = - inherit MyComponent() - [] - member props.__ = - div(tabindex = props.index) diff --git a/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.fsproj b/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.fsproj deleted file mode 100644 index 54f2e59..0000000 --- a/Partas.Solid.Tests/SolidCases/SplitProps/SplitProps.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.fs b/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.fs deleted file mode 100644 index 3799958..0000000 --- a/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.fs +++ /dev/null @@ -1,28 +0,0 @@ -module Partas.Solid.Tests.SolidCases.TagExtensions - -open Partas.Solid -open Fable.Core - -type [] NoPropsOneExtension() = - interface RegularNode - [] - member props.typeDef = - div().attr("key", "value") - -type [] PropsWithExtension() = - interface RegularNode - [] - member props.typeDef = - div(class' = "testClass").attr("key", "value") - -type [] NoPropsExtensionChain() = - interface RegularNode - [] - member props.typeDef = - div().attr("key", "value").attr("key2", "value2") - -type [] PropsWithExtensionChain() = - interface RegularNode - [] - member props.typeDef = - div(class' = "Tester", draggable = "drag").attr("key", "value").attr("key2", "value2").attr("key3", "value3").attr("key4", "value4") diff --git a/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.fsproj b/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.fsproj deleted file mode 100644 index aff64f0..0000000 --- a/Partas.Solid.Tests/SolidCases/TagExtensions/TagExtensions.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fsproj b/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fsproj deleted file mode 100644 index 00bac3d..0000000 --- a/Partas.Solid.Tests/SolidCases/TagsAsValuesSimple/TagsAsValuesSimple.fsproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.fs b/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.fs deleted file mode 100644 index 80e89a3..0000000 --- a/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.fs +++ /dev/null @@ -1,24 +0,0 @@ -module Partas.Solid.Tests.SolidCases.TagsNoChildren - -open Partas.Solid -open Fable.Core - -type [] MyTag() = - interface RegularNode - [] - member props.typeDef = - div() - -type [] TagWithProp() = - interface RegularNode - [] - member props.typeDef = - div(class' = "SomeClass") - -type [] TagWithProps() = - interface RegularNode - [] - member props.typeDef = - div(class' = "SomeClass", draggable = "drag") - - diff --git a/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.fsproj b/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.fsproj deleted file mode 100644 index 6411a6d..0000000 --- a/Partas.Solid.Tests/SolidCases/TagsNoChildren/TagsNoChildren.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net9.0 - - - - - - - - - - - diff --git a/Partas.Solid.Tests/SolidTests.fs b/Partas.Solid.Tests/SolidTests.fs deleted file mode 100644 index c707696..0000000 --- a/Partas.Solid.Tests/SolidTests.fs +++ /dev/null @@ -1,72 +0,0 @@ -module SolidTests - -open Xunit -open Partas.Solid.Tests.Common - -let runSolidCase caseName = - let folderName = "SolidCases" - runCase folderName caseName - -[] -let ``TagsNoChildren`` () = - runSolidCase "TagsNoChildren" - -[] -let ``Library Imports And User Imports``() = - runSolidCase "LibraryImport" - -[] -let ``Tag Extensions``() = - runSolidCase "TagExtensions" - -[] -let ``Imported Tags With Extensions`` () = - runSolidCase "ImportedTagsWithExtensions" - -[] -let ``Tags with child elements`` () = - runSolidCase "ChildrenSimple" - -[] -let ``Default property setting`` () = - runSolidCase "MergeProps" - -[] -let ``Property accessing with splitProps`` () = - runSolidCase "SplitProps" - -[] -let ``mergeProps splitProps and property spreading`` () = - runSolidCase "CombinedSpread" - -[] -let ``Property getters mixed with Operands are transformed`` () = - runSolidCase "OperatorsInProps" - -[] -let ``Field getters and records are transformed`` () = - runSolidCase "FieldGettersInComputations" - -[] -let ``Tags can be used as values`` () = - runSolidCase "TagsAsValuesSimple" - -[] -let ``FieldGets like props.words.Length are transformed`` () = - runSolidCase "FieldGetExpressionsTransformed" - -[] -let ``Signal Setters can be invoked with a handler`` () = - runSolidCase "SignalSetterInvoke" - -[] -let ``Experimental Builders compile correct output`` () = - runSolidCase "ExperimentalBuilders" - -[] -let ``CssStyle definitions compile correct output`` () = - runSolidCase "CssStyles" - -[] -let ``ChildLambdaProvider interfaces`` () = - runSolidCase "ChildLambdaProvider" \ No newline at end of file diff --git a/Partas.Solid.sln b/Partas.Solid.sln index 7b58e68..833671e 100644 --- a/Partas.Solid.sln +++ b/Partas.Solid.sln @@ -4,7 +4,39 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Partas.Solid", "Partas.Soli EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Partas.Solid.FablePlugin", "Partas.Solid.FablePlugin\Partas.Solid.FablePlugin.fsproj", "{1AE69025-B907-4C3A-AB48-0093DB5070A4}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Partas.Solid.Tests", "Partas.Solid.Tests\Partas.Solid.Tests.fsproj", "{C08FF805-9A5B-4529-B78A-AC7C67F0DFF8}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ScratchTests", "ScratchTests\ScratchTests.fsproj", "{D37CEC92-48BD-4872-8D8B-66721E37E85F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{18D88D48-EDE5-4FB6-8BC4-BE6602CA3871}" + ProjectSection(SolutionItems) = preProject + build.fsx = build.fsx + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Src", "Src", "{44C0FC57-5623-45D9-8E50-84717E7246CA}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C9A5BC5B-8F6C-4565-A278-58DC93F4C2E2}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{6B45F8BE-1215-4F84-A7F6-50227F03A938}" + ProjectSection(SolutionItems) = preProject + .github\workflows\dotnet.yml = .github\workflows\dotnet.yml + .github\workflows\package.yml = .github\workflows\package.yml + .github\ISSUE_TEMPLATE\bug-report---plugin-compilation.md = .github\ISSUE_TEMPLATE\bug-report---plugin-compilation.md + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".environment", ".environment", "{6C4442D5-CCA1-4419-853E-04F17CF40674}" + ProjectSection(SolutionItems) = preProject + .gitignore = .gitignore + LICENSE.txt = LICENSE.txt + README.md = README.md + .editorconfig = .editorconfig + .config/dotnet-tools.json = .config/dotnet-tools.json + docs/RELEASE_NOTES.md = docs/RELEASE_NOTES.md + cliff.toml = cliff.toml + .cliffignore = .cliffignore + EndProjectSection +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Partas.Solid.Tests.Core", "Partas.Solid.Tests.Core\Partas.Solid.Tests.Core.fsproj", "{B3D8EF27-8A7F-46A9-9E71-3AD47B666C60}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Partas.Solid.Tests.Plugin", "Partas.Solid.Tests.Plugin\Partas.Solid.Tests.Plugin.fsproj", "{3C3EE6AA-E4DB-4852-BBC9-620A3FD48CB4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -20,13 +52,28 @@ Global {1AE69025-B907-4C3A-AB48-0093DB5070A4}.Debug|Any CPU.Build.0 = Debug|Any CPU {1AE69025-B907-4C3A-AB48-0093DB5070A4}.Release|Any CPU.ActiveCfg = Release|Any CPU {1AE69025-B907-4C3A-AB48-0093DB5070A4}.Release|Any CPU.Build.0 = Release|Any CPU - {C08FF805-9A5B-4529-B78A-AC7C67F0DFF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C08FF805-9A5B-4529-B78A-AC7C67F0DFF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C08FF805-9A5B-4529-B78A-AC7C67F0DFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C08FF805-9A5B-4529-B78A-AC7C67F0DFF8}.Release|Any CPU.Build.0 = Release|Any CPU {107B9E6E-5EF2-4ECA-91F1-11D3A7940D4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {107B9E6E-5EF2-4ECA-91F1-11D3A7940D4F}.Debug|Any CPU.Build.0 = Debug|Any CPU {107B9E6E-5EF2-4ECA-91F1-11D3A7940D4F}.Release|Any CPU.ActiveCfg = Release|Any CPU {107B9E6E-5EF2-4ECA-91F1-11D3A7940D4F}.Release|Any CPU.Build.0 = Release|Any CPU + {D37CEC92-48BD-4872-8D8B-66721E37E85F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D37CEC92-48BD-4872-8D8B-66721E37E85F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D37CEC92-48BD-4872-8D8B-66721E37E85F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D37CEC92-48BD-4872-8D8B-66721E37E85F}.Release|Any CPU.Build.0 = Release|Any CPU + {B3D8EF27-8A7F-46A9-9E71-3AD47B666C60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3D8EF27-8A7F-46A9-9E71-3AD47B666C60}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3D8EF27-8A7F-46A9-9E71-3AD47B666C60}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3D8EF27-8A7F-46A9-9E71-3AD47B666C60}.Release|Any CPU.Build.0 = Release|Any CPU + {3C3EE6AA-E4DB-4852-BBC9-620A3FD48CB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C3EE6AA-E4DB-4852-BBC9-620A3FD48CB4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C3EE6AA-E4DB-4852-BBC9-620A3FD48CB4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C3EE6AA-E4DB-4852-BBC9-620A3FD48CB4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2360B137-35B4-4CC8-A004-E19DEC1D5759} = {44C0FC57-5623-45D9-8E50-84717E7246CA} + {1AE69025-B907-4C3A-AB48-0093DB5070A4} = {44C0FC57-5623-45D9-8E50-84717E7246CA} + {D37CEC92-48BD-4872-8D8B-66721E37E85F} = {C9A5BC5B-8F6C-4565-A278-58DC93F4C2E2} + {B3D8EF27-8A7F-46A9-9E71-3AD47B666C60} = {C9A5BC5B-8F6C-4565-A278-58DC93F4C2E2} + {3C3EE6AA-E4DB-4852-BBC9-620A3FD48CB4} = {C9A5BC5B-8F6C-4565-A278-58DC93F4C2E2} EndGlobalSection EndGlobal diff --git a/Partas.Solid/AriaAttributes.fs b/Partas.Solid/AriaAttributes.fs index 79ac6db..10a3624 100644 --- a/Partas.Solid/AriaAttributes.fs +++ b/Partas.Solid/AriaAttributes.fs @@ -10,384 +10,436 @@ module Aria = [] member this.ariaActiveDescendant with set (_: string) = () - and get(): string = undefined + and get (): string = undefined + [] member this.ariaBrailleLabel with set (_: string) = () - and get(): string = undefined + and get (): string = undefined + [] member this.ariaBrailleRoleDescription with set (_: string) = () - and get(): string = undefined + and get (): string = undefined + [] member this.ariaDescription with set (_: string) = () - and get(): string = undefined + and get (): string = undefined + /// /// Identifies the currently active element when DOM focus is on a composite widget, textbox, /// group, or application. /// - [] - member _.ariaDescendant - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaDescendant + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates whether assistive technologies will present all, or only parts of, the changed /// region based on the change notifications defined by the aria-relevant attribute. /// - [] - member _.ariaAtomic - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaAtomic + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates whether inputting text could trigger display of one or more predictions of the /// user's intended value for an input and specifies how predictions would be presented if they /// are made. /// - [] - member _.ariaAutoComplete - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaAutoComplete + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates an element is being modified and that assistive technologies MAY want to wait until /// the modifications are complete before exposing them to the user. /// - [] - member _.ariaBusy - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaBusy + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. /// - [] - member _.ariaChecked - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaChecked + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines the total number of columns in a table, grid, or treegrid. /// - [] - member _.ariaColCount - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaColCount + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines an element's column index or position with respect to the total number of columns /// within a table, grid, or treegrid. /// - [] - member _.ariaColIndex - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaColIndex + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines the number of columns spanned by a cell or gridcell within a table, grid, or /// treegrid. /// - [] - member _.ariaColSpan - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaColSpan + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Identifies the element (or elements) whose contents or presence are controlled by the current /// element. /// - [] - member _.ariaControls - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaControls + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates the element that represents the current item within a container or set of related /// elements. /// - [] - member _.ariaCurrent - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaCurrent + with set (_: string) = () + and [] get (): string = unbox () + /// /// Identifies the element (or elements) that describes the object. /// - [] - member _.ariaDescribedBy - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaDescribedBy + with set (_: string) = () + and [] get (): string = unbox () + /// /// Identifies the element that provides a detailed, extended description for the object. /// - [] - member _.ariaDetails - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaDetails + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates that the element is perceivable but disabled, so it is not editable or otherwise /// operable. /// - [] - member _.ariaDisabled - with set(_: bool) = () - and [] get(): bool = unbox () + [] + member _.ariaDisabled + with set (_: bool) = () + and [] get (): bool = unbox () + /// /// Indicates what functions can be performed when a dragged object is released on the drop /// target. /// [] - [] - member _.ariaDropeffect - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaDropeffect + with set (_: string) = () + and [] get (): string = unbox () + /// /// Identifies the element that provides an error message for the object. /// - [] - member _.ariaErrorMessage - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaErrorMessage + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates whether the element, or another grouping element it controls, is currently expanded /// or collapsed. /// - [] - member _.ariaExpanded - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaExpanded + with set (_: string) = () + and [] get (): string = unbox () + /// /// Identifies the next element (or elements) in an alternate reading order of content which, at /// the user's discretion, allows assistive technology to override the general default of reading /// in document source order. /// - [] - member _.ariaFlowTo - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaFlowTo + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates an element's "grabbed" state in a drag-and-drop operation. /// [] - [] - member _.ariaGrabbed - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaGrabbed + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates the availability and type of interactive popup element, such as menu or dialog, /// that can be triggered by an element. /// - [] - member _.ariaHasPopup - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaHasPopup + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates whether the element is exposed to an accessibility API. /// - [] - member _.ariaHidden - with set(_: bool) = () - and [] get(): bool = unbox () + [] + member _.ariaHidden + with set (_: bool) = () + and [] get (): bool = unbox () + /// /// Indicates the entered value does not conform to the format expected by the application. /// - [] - member _.ariaInvalid - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaInvalid + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates keyboard shortcuts that an author has implemented to activate or give focus to an /// element. /// - [] - member _.ariaKeyShortcuts - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaKeyShortcuts + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines a string value that labels the current element. /// - [] - member _.ariaLabel - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaLabel + with set (_: string) = () + and [] get (): string = unbox () + /// /// Identifies the element (or elements) that labels the current element. /// - [] - member _.ariaLabelledBy - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaLabelledBy + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines the hierarchical level of an element within a structure. /// - [] - member _.ariaLevel - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaLevel + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Indicates that an element will be updated, and describes the types of updates the user /// agents, assistive technologies, and user can expect from the live region. /// - [] - member _.ariaLive - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaLive + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates whether an element is modal when displayed. /// - [] - member _.ariaModal - with set(_: bool) = () - and [] get(): bool = unbox () + [] + member _.ariaModal + with set (_: bool) = () + and [] get (): bool = unbox () + /// /// Indicates whether a text box accepts multiple lines of input or only a single line. /// - [] - member _.ariaMultiLine - with set(_: bool) = () - and [] get(): bool = unbox () + [] + member _.ariaMultiLine + with set (_: bool) = () + and [] get (): bool = unbox () + /// /// Indicates that the user may select more than one item from the current selectable /// descendants. /// - [] - member _.ariaMultiSelectable - with set(_: bool) = () - and [] get(): bool = unbox () + [] + member _.ariaMultiSelectable + with set (_: bool) = () + and [] get (): bool = unbox () + /// /// Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. /// - [] - member _.ariaOrientation - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaOrientation + with set (_: string) = () + and [] get (): string = unbox () + /// /// Identifies an element (or elements) in order to define a visual, functional, or contextual /// parent/child relationship between DOM elements where the DOM hierarchy cannot be used to /// represent the relationship. /// - [] - member _.ariaOwns - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaOwns + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines a short hint (a word or short phrase) intended to aid the user with data entry when /// the control has no value. A hint could be a sample value or a brief description of the /// expected format. /// - [] - member _.ariaPlaceholder - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaPlaceholder + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines an element's number or position in the current set of listitems or treeitems. Not /// required if all elements in the set are present in the DOM. /// - [] - member _.ariaPosInSet - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaPosInSet + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Indicates the current "pressed" state of toggle buttons. /// - [] - member _.ariaPressed - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaPressed + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates that the element is not editable, but is otherwise operable. /// - [] - member _.ariaReadOnly - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaReadOnly + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates what notifications the user agent will trigger when the accessibility tree within a /// live region is modified. /// - [] - member _.ariaRelevant - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaRelevant + with set (_: string) = () + and [] get (): string = unbox () + /// /// Indicates that user input is required on the element before a form may be submitted. /// - [] - member _.ariaRequired - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaRequired + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines a human-readable, author-localized description for the role of an element. /// - [] - member _.ariaRoleDescription - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaRoleDescription + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines the total number of rows in a table, grid, or treegrid. /// - [] - member _.ariaRowCount - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaRowCount + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines an element's row index or position with respect to the total number of rows within a /// table, grid, or treegrid. /// - [] - member _.ariaRowIndex - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaRowIndex + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. /// - [] - member _.ariaRowSpan - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaRowSpan + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Indicates the current "selected" state of various widgets. /// - [] - member _.ariaSelected - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaSelected + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines the number of items in the current set of listitems or treeitems. Not required if all /// elements in the set are present in the DOM. /// - [] - member _.ariaSetSize - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaSetSize + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Indicates if items in a table or grid are sorted in ascending or descending order. /// - [] - member _.ariaSort - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaSort + with set (_: string) = () + and [] get (): string = unbox () + /// /// Defines the maximum allowed value for a range widget. /// - [] - member _.ariaValueMax - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaValueMax + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines the minimum allowed value for a range widget. /// - [] - member _.ariaValueMin - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaValueMin + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines the current value for a range widget. /// - [] - member _.ariaValueNow - with set(_: U2) = () - and [] get(): U2 = unbox () + [] + member _.ariaValueNow + with set (_: U2) = () + and [] get (): U2 = unbox () + /// /// Defines the human readable text alternative of aria-valuenow for a range widget. /// - [] - member _.ariaValueText - with set(_: string) = () - and [] get(): string = unbox () - [] - member _.role - with set(_: string) = () - and [] get(): string = unbox () + [] + member _.ariaValueText + with set (_: string) = () + and [] get (): string = unbox () + + [] + member _.role + with set (_: string) = () + and [] get (): string = unbox () diff --git a/Partas.Solid/Builder.fs b/Partas.Solid/Builder.fs index 6a8a948..7640453 100644 --- a/Partas.Solid/Builder.fs +++ b/Partas.Solid/Builder.fs @@ -22,7 +22,8 @@ module Builder = inherit HtmlElement [] - type HtmlContainer = inherit HtmlElement + type HtmlContainer = + inherit HtmlElement [] type RegularNode = @@ -36,9 +37,11 @@ module Builder = [] type VoidNode = inherit HtmlTag - + [] - type IChildLambdaProvider = inherit HtmlElement + type IChildLambdaProvider = + inherit HtmlElement + /// /// Interface this with the parameter type and the type of children /// and their descendants to accept to allow the component to accept @@ -47,7 +50,9 @@ module Builder = /// /// Type parameter for the lambda /// Type parameter for the children - type ChildLambdaProviderStrict<'Param1, 'Children> = inherit IChildLambdaProvider + type ChildLambdaProviderStrict<'Param1, 'Children> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type and the type of children /// and their descendants to accept to allow the component to accept @@ -57,7 +62,9 @@ module Builder = /// Type parameter for the first parameter of the lambda /// Type parameter for the second parameter of the lambda /// Type parameter for the children - type ChildLambdaProviderStrict2<'Param1, 'Param2, 'Children> = inherit IChildLambdaProvider + type ChildLambdaProviderStrict2<'Param1, 'Param2, 'Children> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type and the type of children /// and their descendants to accept to allow the component to accept @@ -68,7 +75,9 @@ module Builder = /// Type parameter for the second parameter of the lambda /// Type parameter for the third parameter of the lambda /// Type parameter for the children - type ChildLambdaProviderStrict3<'Param1, 'Param2, 'Param3, 'Children> = inherit IChildLambdaProvider + type ChildLambdaProviderStrict3<'Param1, 'Param2, 'Param3, 'Children> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type and the type of children /// and their descendants to accept to allow the component to accept @@ -80,20 +89,26 @@ module Builder = /// Type parameter for the third parameter of the lambda /// Type parameter for the fourth parameter of the lambda /// Type parameter for the children - type ChildLambdaProviderStrict4<'Param1, 'Param2, 'Param3, 'Param4, 'Children> = inherit IChildLambdaProvider + type ChildLambdaProviderStrict4<'Param1, 'Param2, 'Param3, 'Param4, 'Children> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type to allow the component to accept /// a lambda function passing that parameter to the children /// /// Type parameter for the first parameter of the lambda - type ChildLambdaProvider<'Param1> = inherit IChildLambdaProvider + type ChildLambdaProvider<'Param1> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type to allow the component to accept /// a lambda function passing that parameter to the children /// /// Type parameter for the first parameter of the lambda /// Type parameter for the second parameter of the lambda - type ChildLambdaProvider2<'Param1, 'Param2> = inherit IChildLambdaProvider + type ChildLambdaProvider2<'Param1, 'Param2> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type to allow the component to accept /// a lambda function passing that parameter to the children @@ -101,7 +116,9 @@ module Builder = /// Type parameter for the first parameter of the lambda /// Type parameter for the second parameter of the lambda /// Type parameter for the third parameter of the lambda - type ChildLambdaProvider3<'Param1, 'Param2, 'Param3> = inherit IChildLambdaProvider + type ChildLambdaProvider3<'Param1, 'Param2, 'Param3> = + inherit IChildLambdaProvider + /// /// Interface this with the parameter type to allow the component to accept /// a lambda function passing that parameter to the children @@ -110,12 +127,13 @@ module Builder = /// Type parameter for the second parameter of the lambda /// Type parameter for the third parameter of the lambda /// Type parameter for the fourth parameter of the lambda - type ChildLambdaProvider4<'Param1, 'Param2, 'Param3, 'Param4> = inherit IChildLambdaProvider - + type ChildLambdaProvider4<'Param1, 'Param2, 'Param3, 'Param4> = + inherit IChildLambdaProvider + /// /// Explicit plugin declaration that the identifier that this /// is bound to can be treated as a Tag.
- /// This allows you to pass tags constructors as functions/values + /// This allows you to pass tags constructors as functions/values ///
/// /// // Verbose syntax @@ -141,8 +159,8 @@ module Builder = /// tag % div(class' = "hello") /// [] - member this.render (PARTAS_CONSTRUCTOR: 'T): 'T = jsNative - + member this.render(PARTAS_CONSTRUCTOR: 'T) : 'T = jsNative + /// /// Directs the plugin to build the call site as a Tag /// in JSX. @@ -158,18 +176,22 @@ module Builder = /// // alt /// tag % div(class' = "hello") /// - static member inline (%) (left: TagValue, right: 'T): 'T = left.render(right) + static member inline (%)(left: TagValue, right: 'T) : 'T = + left.render (right) + [] - member this.render (PARTAS_PROPERTIES: obj): RegularNode = jsNative - + member this.render(PARTAS_PROPERTIES: obj) : RegularNode = jsNative + [] - member this.render (): RegularNode = jsNative - static member inline (%) (left: TagValue, right: obj) = left.render(right) - + member this.render() : RegularNode = jsNative + + static member inline (%)(left: TagValue, right: obj) = + left.render (right) + /// /// Explicit plugin declaration that the identifier that this /// is bound to can be treated as a Tag.
- /// This allows you to pass tags constructors as functions/values + /// This allows you to pass tags constructors as functions/values ///
/// /// // Verbose syntax @@ -178,14 +200,17 @@ module Builder = /// let tag = !@div /// [] - let (!@) (this: unit -> 'T) = TagValue(unbox this) - + let (!@) (this: unit -> 'T) = + TagValue (unbox this) + /// Alias used in the provided builder [] type HtmlContainerFun = HtmlContainer -> unit + /// Alias used in the provided builder [] type ChildProviderFun = IChildLambdaProvider -> unit + type HtmlContainer with [] member inline _.Combine @@ -201,57 +226,78 @@ module Builder = [] [] - member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = PARTAS_DELAY() + member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = + PARTAS_DELAY () [] [] - member inline _.Yield(PARTAS_ELEMENT: #HtmlElement) : HtmlContainerFun = fun PARTAS_YIELD -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #HtmlElement) : HtmlContainerFun = + fun PARTAS_YIELD -> ignore PARTAS_ELEMENT [] [] - member inline _.Yield(PARTAS_TEXT: string) : HtmlContainerFun = fun PARTAS_YIELD -> ignore PARTAS_TEXT + member inline _.Yield(PARTAS_TEXT: string) : HtmlContainerFun = + fun PARTAS_YIELD -> ignore PARTAS_TEXT [] [] - member inline _.Yield(PARTAS_TEXT: int) : HtmlContainerFun = fun PARTAS_YIELD -> ignore PARTAS_TEXT + member inline _.Yield(PARTAS_TEXT: int) : HtmlContainerFun = + fun PARTAS_YIELD -> ignore PARTAS_TEXT type IChildLambdaProvider with [] [] - member inline _.Delay([] PARTAS_DELAY: unit -> ChildProviderFun): ChildProviderFun = PARTAS_DELAY() + member inline _.Delay([] PARTAS_DELAY: unit -> ChildProviderFun) : ChildProviderFun = + PARTAS_DELAY () + type ChildLambdaProviderStrict<'Param1, 'Children> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Children): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Children) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProviderStrict2<'Param1, 'Param2, 'Children> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Children): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Children) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProviderStrict3<'Param1, 'Param2, 'Param3, 'Children> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #'Children): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #'Children) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProviderStrict4<'Param1, 'Param2, 'Param3, 'Param4, 'Children> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #'Param4 -> #'Children): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #'Param4 -> #'Children) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProvider<'Param1> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #HtmlElement): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #HtmlElement) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProvider2<'Param1, 'Param2> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #HtmlElement): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #HtmlElement) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProvider3<'Param1, 'Param2, 'Param3> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #HtmlElement): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #HtmlElement) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + type ChildLambdaProvider4<'Param1, 'Param2, 'Param3, 'Param4> with [] [] - member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #'Param4 -> #HtmlElement): ChildProviderFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT - + member inline _.Yield(PARTAS_ELEMENT: #'Param1 -> #'Param2 -> #'Param3 -> #'Param4 -> #HtmlElement) : ChildProviderFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + [] type HtmlContainerExtensions = [] @@ -259,6 +305,7 @@ module Builder = static member Run(PARTAS_THIS: #HtmlContainer, PARTAS_RUN: HtmlContainerFun) = PARTAS_RUN PARTAS_THIS PARTAS_THIS + [] [] static member Run(PARTAS_THIS: #IChildLambdaProvider, PARTAS_RUN: ChildProviderFun) = @@ -274,38 +321,38 @@ module Builder = [] [] type AnchorHTMLAttributes = interface end - + [] [] [] type AudioHTMLAttributes = inherit MediaHTMLAttributes - + [] [] [] type AreaHTMLAttributes = interface end - + [] [] [] type BaseHTMLAttributes = interface end - + [] [] [] type BlockquoteHTMLAttributes = interface end - + [] [] [] type ButtonHTMLAttributes = interface end - + [] [] [] type CanvasHTMLAttributes = interface end - + [] [] [] diff --git a/Partas.Solid/Experimental.fs b/Partas.Solid/Experimental.fs index f815da8..c9548af 100644 --- a/Partas.Solid/Experimental.fs +++ b/Partas.Solid/Experimental.fs @@ -17,11 +17,19 @@ open Fable.Core [] [] type NullLambdaBuilder() = - member inline _.Return(x) = fun () -> x - member inline _.Bind(m,f) = fun () -> f (m()) () + member inline _.Return(x) = + fun () -> x + + member inline _.Bind(m, f) = + fun () -> f (m ()) () + member inline _.Zero() = ignore member inline _.Delay(f) = f - member inline _.Combine([] PARTAS_FIRST: 'T -> unit,[] PARTAS_SECOND) = fun () -> PARTAS_FIRST(); PARTAS_SECOND() + + member inline _.Combine([] PARTAS_FIRST: 'T -> unit, [] PARTAS_SECOND) = + fun () -> + PARTAS_FIRST () + PARTAS_SECOND () /// /// Lambdas that take null parameters and return a type are common enough to build @@ -30,66 +38,112 @@ type NullLambdaBuilder() = [] [] type BaseLambdaBuilder() = - member inline _.Return(x) = fun () -> x - member inline _.Bind(m,f) = fun () -> f (m()) () + member inline _.Return(x) = + fun () -> x + + member inline _.Bind(m, f) = + fun () -> f (m ()) () + member inline _.Delay(f) = f - member inline _.Combine([] PARTAS_FIRST: 'T -> unit,[] PARTAS_SECOND) = ignore PARTAS_FIRST; PARTAS_SECOND() - member inline _.Yield(PARTAS_VALUE) = PARTAS_VALUE + + member inline _.Combine([] PARTAS_FIRST: 'T -> unit, [] PARTAS_SECOND) = + ignore PARTAS_FIRST + PARTAS_SECOND () + + member inline _.Yield(PARTAS_VALUE) = + PARTAS_VALUE [] [] type LambdaBuilder() = inherit BaseLambdaBuilder() member inline _.Zero() = ignore - member inline _.Run(code: unit -> 'T): unit -> 'T = fun () -> code() + + member inline _.Run(code: unit -> 'T) : unit -> 'T = + fun () -> code () + [] [] type BatchBuilder() = inherit BaseLambdaBuilder() - member inline _.Run(code: unit -> 'T): 'T = batch(fun () -> code()) + + member inline _.Run(code: unit -> 'T) : 'T = + batch (fun () -> code ()) + [] [] type CreateEffectBuilder() = inherit NullLambdaBuilder() - member inline _.Run(effect) = createEffect(fun () -> effect() |> ignore) + + member inline _.Run(effect) = + createEffect (fun () -> + effect () + |> ignore) + [] [] type OnMountBuilder() = inherit NullLambdaBuilder() - member inline _.Run(effect) = onMount(fun () -> effect() |> ignore) + + member inline _.Run(effect) = + onMount (fun () -> + effect () + |> ignore) + [] [] type OnCleanupBuilder() = inherit NullLambdaBuilder() - member inline _.Run(effect) = onCleanup(fun () -> effect() |> ignore) + + member inline _.Run(effect) = + onCleanup (fun () -> + effect () + |> ignore) + [] [] type CreateMemoBuilder() = inherit BaseLambdaBuilder() - member inline _.Run(computation: unit -> 'T): unit -> 'T = createMemo(fun () -> computation()) + + member inline _.Run(computation: unit -> 'T) : unit -> 'T = + createMemo (fun () -> computation ()) + [] [] type CreateSelectorBuilder() = inherit BaseLambdaBuilder() - member inline _.Run(computation: unit -> 'T): 'U -> bool = createSelector(fun () -> computation()) + + member inline _.Run(computation: unit -> 'T) : 'U -> bool = + createSelector (fun () -> computation ()) + [] [] type CreateReactionBuilder() = inherit BaseLambdaBuilder() - member inline _.Run(computation: unit -> unit): (unit -> unit) -> unit = createReaction(fun () -> computation()) - member inline _.Zero(value: unit) = ignore value + + member inline _.Run(computation: unit -> unit) : (unit -> unit) -> unit = + createReaction (fun () -> computation ()) + + member inline _.Zero(value: unit) = + ignore value + [] [] type ChildrenBuilder() = inherit BaseLambdaBuilder() - member inline _.Run(computation: unit -> #HtmlElement): unit -> #HtmlElement = children(fun () -> computation()) + + member inline _.Run(computation: unit -> #HtmlElement) : unit -> #HtmlElement = + children (fun () -> computation ()) + [] [] type LazyBuilder() = inherit BaseLambdaBuilder() - member inline _.Run(computation: unit -> 'T): 'C = lazy'(fun () -> computation()) -[] + member inline _.Run(computation: unit -> 'T) : 'C = + lazy' (fun () -> computation ()) + +[] module Builders = /// /// Wraps the computation in fun () -> ... @@ -98,7 +152,9 @@ module Builders = /// let config = lambda { Data.config.data } /// console.log (config()) /// - let [] lambda = LambdaBuilder() + [] + let lambda = LambdaBuilder () + /// /// Wraps the computation in createEffect(fun () -> ...) /// @@ -111,7 +167,9 @@ module Builders = /// | _ -> () /// } /// - let [] effect = CreateEffectBuilder() + [] + let effect = CreateEffectBuilder () + /// /// Wraps the computation in onMount(fun () -> ...) /// @@ -120,7 +178,9 @@ module Builders = /// configStore.Update Data.Config.data /// } /// - let [] mount = OnMountBuilder() + [] + let mount = OnMountBuilder () + /// /// Wraps the computation in onCleanup(fun () -> ...) /// @@ -129,7 +189,9 @@ module Builders = /// configStore.Update Data.Config.data /// } /// - let [] cleanup = OnCleanupBuilder() + [] + let cleanup = OnCleanupBuilder () + /// /// Wraps the computation in createMemo(fun () -> ...) /// @@ -139,7 +201,9 @@ module Builders = /// // some expensive value /// } /// - let [] memo = CreateMemoBuilder() + [] + let memo = CreateMemoBuilder () + /// /// Wraps the computation in batch(fun () -> ...) /// @@ -148,7 +212,9 @@ module Builders = /// // ... some reactive tasks here /// } /// - let [] batch = BatchBuilder() + [] + let batch = BatchBuilder () + /// /// Wraps the computation in lazy'(fun () -> ...) /// @@ -157,7 +223,9 @@ module Builders = /// importComponent "./MyComponent.fs.jsx" /// } /// - let [] lazyload = LazyBuilder() + [] + let lazyload = LazyBuilder () + /// /// Wraps the computation in createSelect(fun () -> ...) /// @@ -167,7 +235,9 @@ module Builders = /// } /// console.log (isSelected item) /// - let [] selector = CreateSelectorBuilder() + [] + let selector = CreateSelectorBuilder () + /// /// Wraps the computation in children(fun () -> ...) /// @@ -183,17 +253,20 @@ module Builders = /// // ... /// if hasChildren() then resolvedChildren() /// - let [] children = ChildrenBuilder() + [] + let children = ChildrenBuilder () + /// /// Wraps the computation in createReaction(fun () -> ...) /// /// /// let isOpen,setOpen = createSignal false - /// let onFirstOpen = reaction { + /// let onFirstOpen = reaction { /// // ... do something on first time /// // ... isOpen changes /// } - /// onFirstOpen (fun () -> isOpen()) + /// onFirstOpen (fun () -> isOpen()) /// // This will run the first time `isOpen` changes /// - let [] reaction = CreateReactionBuilder() \ No newline at end of file + [] + let reaction = CreateReactionBuilder () diff --git a/Partas.Solid/HtmlAttributes.fs b/Partas.Solid/HtmlAttributes.fs index cfdd3b3..ea60c46 100644 --- a/Partas.Solid/HtmlAttributes.fs +++ b/Partas.Solid/HtmlAttributes.fs @@ -11,2312 +11,2451 @@ open Partas.Solid.Experimental.U module HtmlAttributes = type HtmlContainer with [] - member _.children - with get(): HtmlElement = jsNative + member _.children: HtmlElement = jsNative + type HTMLAttributes with [] [] member _.innerHTML - with set(value: string) = () - and [] get(): string = JS.undefined + with set (value: string) = () + and [] get (): string = JS.undefined + [] member _.innerText - with set(value: string) = () - and [] get(): string = JS.undefined + with set (value: string) = () + and [] get (): string = JS.undefined + [] member _.textContent - with set(value: string) = () - and [] get(): string = JS.undefined + with set (value: string) = () + and [] get (): string = JS.undefined + [] - member _.onCopy - with set(value: ClipboardEvent -> unit) = () - and [] get(): ClipboardEvent -> unit = unbox () + member _.onCopy + with set (value: ClipboardEvent -> unit) = () + and [] get (): ClipboardEvent -> unit = unbox () + [] - member _.onCut - with set(value: ClipboardEvent -> unit) = () - and [] get(): ClipboardEvent -> unit = unbox () + member _.onCut + with set (value: ClipboardEvent -> unit) = () + and [] get (): ClipboardEvent -> unit = unbox () + [] - member _.onPaste - with set(value: ClipboardEvent -> unit) = () - and [] get(): ClipboardEvent -> unit = unbox () + member _.onPaste + with set (value: ClipboardEvent -> unit) = () + and [] get (): ClipboardEvent -> unit = unbox () + [] - member _.onCompositionEnd - with set(value: CompositionEvent -> unit) = () - and [] get(): CompositionEvent -> unit = unbox () + member _.onCompositionEnd + with set (value: CompositionEvent -> unit) = () + and [] get (): CompositionEvent -> unit = unbox () + [] - member _.onCompositionStart - with set(value: CompositionEvent -> unit) = () - and [] get(): CompositionEvent -> unit = unbox () + member _.onCompositionStart + with set (value: CompositionEvent -> unit) = () + and [] get (): CompositionEvent -> unit = unbox () + [] - member _.onCompositionUpdate - with set(value: CompositionEvent -> unit) = () - and [] get(): CompositionEvent -> unit = unbox () + member _.onCompositionUpdate + with set (value: CompositionEvent -> unit) = () + and [] get (): CompositionEvent -> unit = unbox () + [] - member _.onFocusOut - with set(value: FocusEvent -> unit) = () - and [] get(): FocusEvent -> unit = unbox () + member _.onFocusOut + with set (value: FocusEvent -> unit) = () + and [] get (): FocusEvent -> unit = unbox () + [] - member _.onFocusIn - with set(value: FocusEvent -> unit) = () - and [] get(): FocusEvent -> unit = unbox () + member _.onFocusIn + with set (value: FocusEvent -> unit) = () + and [] get (): FocusEvent -> unit = unbox () + [] - member _.onEncrypted - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onEncrypted + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onDragExit - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDragExit + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onAbort - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onAbort + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onAnimationEnd - with set(value: AnimationEvent -> unit) = () - and [] get(): AnimationEvent -> unit = unbox () + member _.onAnimationEnd + with set (value: AnimationEvent -> unit) = () + and [] get (): AnimationEvent -> unit = unbox () + [] - member _.onAnimationIteration - with set(value: AnimationEvent -> unit) = () - and [] get(): AnimationEvent -> unit = unbox () + member _.onAnimationIteration + with set (value: AnimationEvent -> unit) = () + and [] get (): AnimationEvent -> unit = unbox () + [] - member _.onAnimationStart - with set(value: AnimationEvent -> unit) = () - and [] get(): AnimationEvent -> unit = unbox () + member _.onAnimationStart + with set (value: AnimationEvent -> unit) = () + and [] get (): AnimationEvent -> unit = unbox () + [] - member _.onAuxClick - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onAuxClick + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onBeforeInput - with set(value: InputEvent -> unit) = () - and [] get(): InputEvent -> unit = unbox () + member _.onBeforeInput + with set (value: InputEvent -> unit) = () + and [] get (): InputEvent -> unit = unbox () + [] - member _.onBeforeToggle - with set(value: ToggleEvent -> unit) = () - and [] get(): ToggleEvent -> unit = unbox () + member _.onBeforeToggle + with set (value: ToggleEvent -> unit) = () + and [] get (): ToggleEvent -> unit = unbox () + [] - member _.onBlur - with set(value: FocusEvent -> unit) = () - and [] get(): FocusEvent -> unit = unbox () + member _.onBlur + with set (value: FocusEvent -> unit) = () + and [] get (): FocusEvent -> unit = unbox () + [] - member _.onCanPlay - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onCanPlay + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onCanPlayThrough - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onCanPlayThrough + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onChange - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onChange + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onClick - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onClick + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onContextMenu - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onContextMenu + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onDblClick - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onDblClick + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onDrag - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDrag + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDragEnd - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDragEnd + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDragEnter - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDragEnter + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDragLeave - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDragLeave + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDragOver - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDragOver + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDragStart - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDragStart + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDrop - with set(value: DragEvent -> unit) = () - and [] get(): DragEvent -> unit = unbox () + member _.onDrop + with set (value: DragEvent -> unit) = () + and [] get (): DragEvent -> unit = unbox () + [] - member _.onDurationChange - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onDurationChange + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onEmptied - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onEmptied + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onEnded - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onEnded + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onError - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onError + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onFocus - with set(value: FocusEvent -> unit) = () - and [] get(): FocusEvent -> unit = unbox () + member _.onFocus + with set (value: FocusEvent -> unit) = () + and [] get (): FocusEvent -> unit = unbox () + [] - member _.onGotPointerCapture - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onGotPointerCapture + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onInput - with set(value: InputEvent -> unit) = () - and [] get(): InputEvent -> unit = unbox () + member _.onInput + with set (value: InputEvent -> unit) = () + and [] get (): InputEvent -> unit = unbox () + [] - member _.onInvalid - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onInvalid + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onKeyDown - with set(value: KeyboardEvent -> unit) = () - and [] get(): KeyboardEvent -> unit = unbox () + member _.onKeyDown + with set (value: KeyboardEvent -> unit) = () + and [] get (): KeyboardEvent -> unit = unbox () + [] - member _.onKeyPress - with set(value: KeyboardEvent -> unit) = () - and [] get(): KeyboardEvent -> unit = unbox () + member _.onKeyPress + with set (value: KeyboardEvent -> unit) = () + and [] get (): KeyboardEvent -> unit = unbox () + [] - member _.onKeyUp - with set(value: KeyboardEvent -> unit) = () - and [] get(): KeyboardEvent -> unit = unbox () + member _.onKeyUp + with set (value: KeyboardEvent -> unit) = () + and [] get (): KeyboardEvent -> unit = unbox () + [] - member _.onLoad - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onLoad + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onLoadedData - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onLoadedData + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onLoadedMetadata - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onLoadedMetadata + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onLoadStart - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onLoadStart + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onLostPointerCapture - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onLostPointerCapture + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onMouseDown - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseDown + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onMouseEnter - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseEnter + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onMouseLeave - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseLeave + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onMouseMove - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseMove + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onMouseOut - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseOut + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onMouseOver - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseOver + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onMouseUp - with set(value: MouseEvent -> unit) = () - and [] get(): MouseEvent -> unit = unbox () + member _.onMouseUp + with set (value: MouseEvent -> unit) = () + and [] get (): MouseEvent -> unit = unbox () + [] - member _.onPause - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onPause + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onPlay - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onPlay + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onPlaying - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onPlaying + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onPointerCancel - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerCancel + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerDown - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerDown + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerEnter - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerEnter + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerLeave - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerLeave + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerMove - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerMove + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerOut - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerOut + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerOver - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerOver + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onPointerUp - with set(value: PointerEvent -> unit) = () - and [] get(): PointerEvent -> unit = unbox () + member _.onPointerUp + with set (value: PointerEvent -> unit) = () + and [] get (): PointerEvent -> unit = unbox () + [] - member _.onProgress - with set(value: ProgressEvent -> unit) = () - and [] get(): ProgressEvent -> unit = unbox () + member _.onProgress + with set (value: ProgressEvent -> unit) = () + and [] get (): ProgressEvent -> unit = unbox () + [] - member _.onRateChange - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onRateChange + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onReset - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onReset + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onScroll - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onScroll + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onScrollEnd - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onScrollEnd + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onSeeked - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onSeeked + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onSeeking - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onSeeking + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onSelect - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onSelect + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onStalled - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onStalled + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onSubmit - with set(value: SubmitEvent -> unit) = () - and [] get(): SubmitEvent -> unit = unbox () + member _.onSubmit + with set (value: SubmitEvent -> unit) = () + and [] get (): SubmitEvent -> unit = unbox () + [] - member _.onSuspend - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onSuspend + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onTimeUpdate - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onTimeUpdate + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onToggle - with set(value: ToggleEvent -> unit) = () - and [] get(): ToggleEvent -> unit = unbox () + member _.onToggle + with set (value: ToggleEvent -> unit) = () + and [] get (): ToggleEvent -> unit = unbox () + [] - member _.onTouchCancel - with set(value: TouchEvent -> unit) = () - and [] get(): TouchEvent -> unit = unbox () + member _.onTouchCancel + with set (value: TouchEvent -> unit) = () + and [] get (): TouchEvent -> unit = unbox () + [] - member _.onTouchEnd - with set(value: TouchEvent -> unit) = () - and [] get(): TouchEvent -> unit = unbox () + member _.onTouchEnd + with set (value: TouchEvent -> unit) = () + and [] get (): TouchEvent -> unit = unbox () + [] - member _.onTouchMove - with set(value: TouchEvent -> unit) = () - and [] get(): TouchEvent -> unit = unbox () + member _.onTouchMove + with set (value: TouchEvent -> unit) = () + and [] get (): TouchEvent -> unit = unbox () + [] - member _.onTouchStart - with set(value: TouchEvent -> unit) = () - and [] get(): TouchEvent -> unit = unbox () + member _.onTouchStart + with set (value: TouchEvent -> unit) = () + and [] get (): TouchEvent -> unit = unbox () + [] - member _.onTransitionStart - with set(value: TransitionEvent -> unit) = () - and [] get(): TransitionEvent -> unit = unbox () + member _.onTransitionStart + with set (value: TransitionEvent -> unit) = () + and [] get (): TransitionEvent -> unit = unbox () + [] - member _.onTransitionEnd - with set(value: TransitionEvent -> unit) = () - and [] get(): TransitionEvent -> unit = unbox () + member _.onTransitionEnd + with set (value: TransitionEvent -> unit) = () + and [] get (): TransitionEvent -> unit = unbox () + [] - member _.onTransitionRun - with set(value: TransitionEvent -> unit) = () - and [] get(): TransitionEvent -> unit = unbox () + member _.onTransitionRun + with set (value: TransitionEvent -> unit) = () + and [] get (): TransitionEvent -> unit = unbox () + [] - member _.onTransitionCancel - with set(value: TransitionEvent -> unit) = () - and [] get(): TransitionEvent -> unit = unbox () + member _.onTransitionCancel + with set (value: TransitionEvent -> unit) = () + and [] get (): TransitionEvent -> unit = unbox () + [] - member _.onVolumeChange - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onVolumeChange + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onWaiting - with set(value: Event -> unit) = () - and [] get(): Event -> unit = unbox () + member _.onWaiting + with set (value: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] - member _.onWheel - with set(value: WheelEvent -> unit) = () - and [] get(): WheelEvent -> unit = unbox () + member _.onWheel + with set (value: WheelEvent -> unit) = () + and [] get (): WheelEvent -> unit = unbox () + [] member _.class' - with set(_: string) = () - and [] get(): string = unbox () + with set (_: string) = () + and [] get (): string = unbox () + [] - member _.accessKey + member _.accessKey with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.contenteditable + member _.contenteditable with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.contextmenu + member _.contextmenu with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.dir + member _.dir with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.draggable + member _.draggable with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.hidden + member _.hidden with set (_: U2) = () - and [] get(): U2 = unbox () + and [] get (): U2 = unbox () + [] - member _.id + member _.id with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.is + member _.is with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.inert + member _.inert with set (_: bool) = () - and [] get(): bool = unbox () + and [] get (): bool = unbox () + [] - member _.lang + member _.lang with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.spellcheck + member _.spellcheck with set (_: bool) = () - and [] get(): bool = unbox () + and [] get (): bool = unbox () + [] member _.style'' - with set(_: obj) = () - and get(): obj = unbox () + with set (_: obj) = () + and get (): obj = unbox () + [] - member this.style + member this.style with inline set (value: string) = this.style'' <- value - and inline [] get(): string = !!this.style'' + and inline [] get (): string = !!this.style'' + [] - member _.tabindex + member _.tabindex with set (_: int) = () - and [] get(): int = unbox () + and [] get (): int = unbox () + [] - member _.title + member _.title with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.translate + member _.translate with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.about + member _.about with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.datatype + member _.datatype with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.inlist + member _.inlist with set (_: obj) = () - and [] get() = unbox () + and [] get () = unbox () + [] - member _.popover + member _.popover with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.prefix + member _.prefix with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.property + member _.property with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.resource + member _.resource with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.typeof + member _.typeof with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.vocab + member _.vocab with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.autocapitalize + member _.autocapitalize with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.slot + member _.slot with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.color + member _.color with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemprop + member _.itemprop with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemscope + member _.itemscope with set (_: bool) = () - and [] get(): bool = unbox () + and [] get (): bool = unbox () + [] - member _.itemtype + member _.itemtype with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemid + member _.itemid with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemref + member _.itemref with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.part + member _.part with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.exportparts + member _.exportparts with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.inputmode + member _.inputmode with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.contentEditable + member _.contentEditable with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.contextMenu + member _.contextMenu with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.tabIndex + member _.tabIndex with set (_: int) = () - and [] get(): int = unbox () + and [] get (): int = unbox () + [] - member _.autoCapitalize + member _.autoCapitalize with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemProp + member _.itemProp with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemScope + member _.itemScope with set (_: bool) = () - and [] get(): bool = unbox () + and [] get (): bool = unbox () + [] - member _.itemType + member _.itemType with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemId + member _.itemId with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.itemRef + member _.itemRef with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.exportParts + member _.exportParts with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () + [] - member _.inputMode + member _.inputMode with set (_: string) = () - and [] get(): string = unbox () + and [] get (): string = unbox () type AnchorHTMLAttributes with [] member _.download - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.href - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.hreflang - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.media - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.ping - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.referrerpolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.rel - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.target - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.referrerPolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type AreaHTMLAttributes with [] [] member _.alt - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.coords - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.download - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.href - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.hreflang - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.ping - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.referrerpolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.rel - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.shape - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.target - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] [] member _.referrerPolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type BaseHTMLAttributes with [] - [] + [] member _.href - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.target - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type BlockquoteHTMLAttributes with [] - [] + [] member _.cite - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type ButtonHTMLAttributes with [] member _.autofocus - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.formNoValidate - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formAction - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formEnctype - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formMethod - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formTarget - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.popoverTarget - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.popoverTargetAction - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type CanvasHTMLAttributes with [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type ColHTMLAttributes with [] member _.span - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type ColgroupHTMLAttributes with [] member _.span - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type DataHTMLAttributes with [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type DetailsHtmlAttributes with [] member _.open' - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.onToggle - with set(_: Event -> unit) = () - and [] get(): Event -> unit = unbox () - + with set (_: Event -> unit) = () + and [] get (): Event -> unit = unbox () + type DialogHtmlAttributes with [] member _.open' - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.onClose - with set(_: Event -> unit) = () - and [] get(): Event -> unit = unbox () - + with set (_: Event -> unit) = () + and [] get (): Event -> unit = unbox () + [] member _.onCancel - with set(_: Event -> unit) = () - and [] get(): Event -> unit = unbox () - + with set (_: Event -> unit) = () + and [] get (): Event -> unit = unbox () + type EmbedHTMLAttributes with [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type FieldsetHTMLAttributes with [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type FormHTMLAttributes with [] - [] + [] member _.accept - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.action - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.autocomplete - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.encoding - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.enctype - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.method - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.noValidate - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.target - with set(_: string) = () - and [] get(): string = unbox () - - + with set (_: string) = () + and [] get (): string = unbox () + + type IframeHTMLAttributes with [] - [] + [] member _.allow - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.allowfullscreen - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.loading - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.referrerpolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.sandbox - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.srcdoc - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.referrerPolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type ImgHTMLAttributes with [] - [] + [] member _.alt - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossorigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.decoding - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.isMap - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.loading - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.referrerpolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.referrerPolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.sizes - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.srcset - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.srcSet - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.usemap - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.useMap - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.crossOrigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.elementtiming - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.fetchpriority - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type InputHTMLAttributes with [] - [] + [] member _.accept - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.alt - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.autocomplete - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.autocorrect - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.autofocus - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.capture - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.checked' - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.crossorigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.enterkeyhint - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.formNoValidate - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.formtarget - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.incremental - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.list - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.max - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.maxLength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.min - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.minLength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.multiple - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.pattern - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.placeholder - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.readOnly - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.results - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.required - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.size - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.step - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.crossOrigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formAction - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formEnctype - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.formMethod - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.formnovalidate - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.formTarget - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.maxlength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.minlength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.readonly - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + type InsHTMLAttributes with [] - [] + [] member _.cite - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.dateTime - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type KeygenHTMLAttributes with [] member _.autofocus - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.challenge - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.keytype - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.keyparams - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type LabelHTMLAttributes with [] - [] + [] member _.for' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type LiHTMLAttributes with [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type LinkHTMLAttributes with [] - [] + [] member _.as' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossorigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.fetchpriority - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.href - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.hreflang - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.imagesizes - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.imagesrcset - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.integrity - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.media - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.referrerpolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.rel - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.sizes - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossOrigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.referrerPolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type MapHTMLAttributes with [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type MediaHTMLAttributes with [] member _.autoplay - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.controls - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.controlslist - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossorigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.loop - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.mediagroup - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.muted - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.preload - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossOrigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.mediaGroup - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type MenuHTMLAttributes with [] - [] + [] member _.label - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.charset - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.content - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.http - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.media - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type MeterHTMLAttributes with [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.high - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.low - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.max - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.min - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.optimum - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.value - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type QuoteHTMLAttributes with [] - [] + [] member _.cite - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type ObjectHTMLAttributes with [] - [] + [] member _.data - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.usemap - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.useMap - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type OlHTMLAttributes with [] - [] + [] member _.reversed - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.start - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type OptgroupHTMLAttributes with [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.label - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type OptionHTMLAttributes with [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.label - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.selected - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type OutputHTMLAttributes with [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.for' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type ParamHTMLAttributes with [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type ProgressHTMLAttributes with [] member _.max - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type ScriptHTMLAttributes with [] member _.async - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.charset - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossorigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.defer - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.integrity - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.noModule - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.nonce - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.referrerpolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.crossOrigin - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.nomodule - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.referrerPolicy - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type SelectHTMLAttributes with [] - [] + [] member _.autocomplete - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.autofocus - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.multiple - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.required - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.size - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type HTMLSlotElementAttributes with [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type SourceHTMLAttributes with [] - [] + [] member _.media - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.sizes - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.srcset - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type StyleHTMLAttributes with [] - [] + [] member _.media - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.nonce - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.scoped - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.type' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type TdHTMLAttributes with [] member _.colspan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.headers - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.rowspan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.colSpan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.rowSpan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + type TemplateHTMLAttributes with [] - [] + [] member _.content - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type TextareaHTMLAttributes with [] - [] + [] member _.autocomplete - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.autofocus - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.cols - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.dirname - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.disabled - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.enterkeyhint - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.form - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.maxLength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.minLength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.name - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.placeholder - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.readOnly - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.required - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.rows - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.value - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.wrap - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.maxlength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.minlength - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.readonly - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + type ThHTMLAttributes with [] member _.colspan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.headers - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.rowspan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.colSpan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.rowSpan - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] - [] + [] member _.scope - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type TimeHTMLAttributes with [] - [] + [] member _.datetime - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.dateTime - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type TrackHTMLAttributes with [] - [] + [] member _.default' - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.kind - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.label - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.src - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] - [] + [] member _.srclang - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + type VideoHTMLAttributes with [] member _.height - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.playsinline - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] - [] + [] member _.poster - with set(_: string) = () - and [] get(): string = unbox () - + with set (_: string) = () + and [] get (): string = unbox () + [] member _.width - with set(_: int) = () - and [] get(): int = unbox () - + with set (_: int) = () + and [] get (): int = unbox () + [] member _.disablepictureinpicture - with set(_: bool) = () - and [] get(): bool = unbox () - + with set (_: bool) = () + and [] get (): bool = unbox () + [] member _.disableremoteplayback - with set(_: bool) = () - and [] get(): bool = unbox () + with set (_: bool) = () + and [] get (): bool = unbox () diff --git a/Partas.Solid/IdeTweaks.fs b/Partas.Solid/IdeTweaks.fs index 6fb762e..9dfb07c 100644 --- a/Partas.Solid/IdeTweaks.fs +++ b/Partas.Solid/IdeTweaks.fs @@ -17,15 +17,21 @@ type internal InjectedLanguage = [] type internal LanguageInjectionAttribute private (?injectedLanguage: InjectedLanguage, ?injectedLanguageName: string) = inherit Attribute() + [] member x.InjectedLanguage = injectedLanguage + [] member x.InjectedLanguageName = injectedLanguageName + [] member val Prefix = "" with get, set + [] member val Suffix = "" with get, set + [] - new(injectedLanguage: InjectedLanguage) = LanguageInjectionAttribute(injectedLanguage = injectedLanguage) + new(injectedLanguage: InjectedLanguage) = LanguageInjectionAttribute (injectedLanguage = injectedLanguage) + [] - new(injectedLanguageName: string) = LanguageInjectionAttribute(injectedLanguageName = injectedLanguageName) + new(injectedLanguageName: string) = LanguageInjectionAttribute (injectedLanguageName = injectedLanguageName) diff --git a/Partas.Solid/Partas.Solid.fsproj b/Partas.Solid/Partas.Solid.fsproj index 7b130c6..ec5e777 100644 --- a/Partas.Solid/Partas.Solid.fsproj +++ b/Partas.Solid/Partas.Solid.fsproj @@ -2,14 +2,13 @@ library - net9.0 + net6.0 3239;0025 Partas.Solid Partas.Solid Partas.Solid Partas.Solid F# Community - Private fork of Oxpecker.Solid; a F# web framework built on top of Solid.js MIT https://github.com/shayanhabibi/Partas.Solid git @@ -24,6 +23,9 @@ + + AssemblyInfo.fs + @@ -50,7 +52,7 @@ all - + diff --git a/Partas.Solid/PolymorphicSupport.fs b/Partas.Solid/PolymorphicSupport.fs index 030238a..e7a269c 100644 --- a/Partas.Solid/PolymorphicSupport.fs +++ b/Partas.Solid/PolymorphicSupport.fs @@ -28,13 +28,8 @@ type Polymorph = type PolymorphicExtensions = /// For Kobalte or other supporting libraries [] - static member as'<'Base when 'Base :> Polymorph> ( - this: 'Base, - morph: #HtmlTag - ): 'Base = this + static member as'<'Base when 'Base :> Polymorph>(this: 'Base, morph: #HtmlTag) : 'Base = this + /// For Kobalte or other supporting libraries [] - static member as'<'Base when 'Base :> Polymorph > ( - this: 'Base, - morph: TagValue - ): 'Base = this \ No newline at end of file + static member as'<'Base when 'Base :> Polymorph>(this: 'Base, morph: TagValue) : 'Base = this diff --git a/Partas.Solid/SolidBindings.fs b/Partas.Solid/SolidBindings.fs index 2c18224..31953ac 100644 --- a/Partas.Solid/SolidBindings.fs +++ b/Partas.Solid/SolidBindings.fs @@ -25,9 +25,10 @@ module Bindings = type Setter<'T> = 'T -> unit type Accessor<'T> = unit -> 'T type Signal<'T> = Accessor<'T> * Setter<'T> - - type ContextProvider = inherit HtmlContainer - + + type ContextProvider = + inherit HtmlContainer + /// /// Created by passing a JS.Pojo (recommended) to a createContext call as a type arg or value. Defaults /// are set by calling the constructor with any default values wanted.

@@ -39,36 +40,47 @@ module Bindings = [] type For<'T>() = interface HtmlElement + [] member this.each with set (value: 'T[]) = () + [] member inline _.Zero() : HtmlContainerFun = ignore + [] - member inline _.Yield(PARTAS_VALUE: 'T -> Accessor -> #HtmlElement) : HtmlContainerFun = fun PARTAS_CONT -> ignore PARTAS_VALUE - + member inline _.Yield(PARTAS_VALUE: 'T -> Accessor -> #HtmlElement) : HtmlContainerFun = + fun PARTAS_CONT -> ignore PARTAS_VALUE + [] [] type Index<'T>() = interface HtmlElement + [] member this.each with set (value: 'T[]) = () + [] member inline _.Zero() : HtmlContainerFun = ignore + [] - member inline _.Yield(PARTAS_VALUE: Accessor<'T> -> int -> #HtmlElement) : HtmlContainerFun = fun PARTAS_CONT -> ignore PARTAS_VALUE + member inline _.Yield(PARTAS_VALUE: Accessor<'T> -> int -> #HtmlElement) : HtmlContainerFun = + fun PARTAS_CONT -> ignore PARTAS_VALUE [] [] type Show() = interface HtmlContainer + [] member this.when' with set (value: bool) = () + [] member this.fallback with set (value: HtmlElement) = () + [] member this.keyed with set (value: bool) = () @@ -77,6 +89,7 @@ module Bindings = [] type Match() = interface HtmlContainer + [] member this.when' with set (value: bool) = () @@ -85,9 +98,11 @@ module Bindings = [] type Switch() = interface HtmlElement + [] member this.fallback with set (value: HtmlElement) = () + [] member inline _.Combine ([] PARTAS_FIRST: HtmlContainerFun, [] PARTAS_SECOND: HtmlContainerFun) @@ -95,50 +110,65 @@ module Bindings = fun PARTAS_BUILDER -> PARTAS_FIRST PARTAS_BUILDER PARTAS_SECOND PARTAS_BUILDER + [] - member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = PARTAS_DELAY() + member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = + PARTAS_DELAY () + [] member inline _.Zero() : HtmlContainerFun = ignore + [] - member inline _.Yield(PARTAS_ELEMENT: Match) : HtmlContainerFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: Match) : HtmlContainerFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT - [] + [] [] type Suspense() = interface HtmlContainer + [] member this.fallback with set (value: HtmlElement) = () - [] + + [] [] type SuspenseList() = interface HtmlContainer + [] member this.revealOrder with set (value: string) = () + [] member this.tail with set (value: string) = () + [] member this.fallback with set (value: HtmlElement) = () - [] + + [] [] type Portal() = interface HtmlContainer + [] member this.mount with set (value: Element) = () + [] member this.useShadow with set (value: bool) = () module ErrorBoundary = type Fallback = delegate of err: obj * reset: (unit -> unit) -> HtmlElement - [] + + [] [] type ErrorBoundary() = interface HtmlContainer + [] member this.fallback with set (value: ErrorBoundary.Fallback) = () @@ -160,15 +190,15 @@ module Bindings = static member Run(PARTAS_THIS: Switch, PARTAS_RUNEXPR: HtmlContainerFun) = PARTAS_RUNEXPR Unchecked.defaultof<_> PARTAS_THIS - + /// /// Replace a signals value. This is synonymous with using the Setters as normal. /// /// The signal setter /// The next value [] - static member inline Invoke(setter: Setter<'T>, value: 'T): unit = - setter(value) + static member inline Invoke(setter: Setter<'T>, value: 'T) : unit = + setter (value) // In the case of calling Invoke on a setter, we want the alternate behaviour to be suggested first. /// /// Modify a signal value by performing computation on its previous value @@ -176,9 +206,9 @@ module Bindings = /// The signal setter /// The handler that takes the previous value and returns the next. [] - static member inline Invoke(setter: Setter<'T>, handler: 'T -> 'T): unit = - setter(unbox<'T> handler) - + static member inline Invoke(setter: Setter<'T>, handler: 'T -> 'T) : unit = + setter (unbox<'T> handler) + /// /// Modify a signal value by replacing it with a new value. /// @@ -186,8 +216,10 @@ module Bindings = /// The new value /// The new value [] - static member inline InvokeAndGet(setter: Setter<'T>, value: 'T): 'T = - setter(value) |> unbox<'T> + static member inline InvokeAndGet(setter: Setter<'T>, value: 'T) : 'T = + setter (value) + |> unbox<'T> + /// /// Modify a signal value by performing computation its previous value. /// @@ -195,9 +227,10 @@ module Bindings = /// The handler that takes the previous value and returns the next. /// The new value [] - static member inline InvokeAndGet(setter: Setter<'T>, handler: 'T -> 'T): 'T = - setter(unbox<'T> handler) |> unbox<'T> - + static member inline InvokeAndGet(setter: Setter<'T>, handler: 'T -> 'T) : 'T = + setter (unbox<'T> handler) + |> unbox<'T> + [] type ResourceFetcherInfo<'T> = /// Previous value @@ -211,14 +244,14 @@ module Bindings = /// an erased union of the type and bool. /// abstract refetching: bool - - + + /// /// Arguments that are available to consume within the handler. The first is the source signal /// if any was provided (else null), and the second is an object with two properties, the previous /// value via _.value, and whether the fetcher was initiated by a refetch via _.refetching. /// - type ResourceFetcher<'U, 'T> = 'U -> ResourceFetcherInfo<'T> -> JS.Promise<'T> + type ResourceFetcher<'U, 'T> = 'U -> ResourceFetcherInfo<'T> -> JS.Promise<'T> [] type SolidResourceState = @@ -237,6 +270,7 @@ module Bindings = /// Attention, will be undefined while loading [] abstract current: 'T + abstract state: SolidResourceState abstract loading: bool abstract error: exn option @@ -255,23 +289,30 @@ module Bindings = /// to be provided as an erased union of a provided type and bool instead of just bool. /// [] - static member inline refetchingWith<'T>(this: ResourceFetcherInfo<_>): U2<'T, bool> = unbox> this.refetching + static member inline refetchingWith<'T>(this: ResourceFetcherInfo<_>) : U2<'T, bool> = + unbox> this.refetching + [] - static member inline refetchingWith<'T, 'U>(this: ResourceFetcherInfo<'U>): U2<'T, bool> = unbox> this.refetching + static member inline refetchingWith<'T, 'U>(this: ResourceFetcherInfo<'U>) : U2<'T, bool> = + unbox> this.refetching + [] [] - static member inline refetchWith<'U>(this: SolidResourceManager, input: 'U): JS.Promise = jsNative + static member inline refetchWith<'U>(this: SolidResourceManager, input: 'U) : JS.Promise = jsNative + [] [] - static member inline refetchWith<'U, 'T>(this: SolidResourceManager<'T>, input: 'U): JS.Promise<'T> = jsNative - + static member inline refetchWith<'U, 'T>(this: SolidResourceManager<'T>, input: 'U) : JS.Promise<'T> = jsNative + type SolidStoreSetter<'T> = /// Replace old store value with new [] abstract Update: newValue: 'T -> unit + /// Update store specifying updater function from old value to new value [] abstract Update: updater: ('T -> 'T) -> unit + /// Update store using native solid path syntax [] abstract UpdatePath: pathArgs: obj[] -> unit @@ -279,25 +320,30 @@ module Bindings = type SolidStorePath<'T, 'Value>(setter: SolidStoreSetter<'T>, path: obj[]) = member _.Setter = setter member _.Path = path + /// Choose the store item that should be updated member inline this.Map(map: 'Value -> 'Value2) = - SolidStorePath<'T, 'Value2>( + SolidStorePath<'T, 'Value2> ( this.Setter, - Experimental.namesofLambda map |> Array.map box |> Array.append this.Path + Experimental.namesofLambda map + |> Array.map box + |> Array.append this.Path ) + /// Update store item using new value member this.Update(value: 'Value) : unit = - this.Setter.UpdatePath(Array.append this.Path [| value |]) + this.Setter.UpdatePath (Array.append this.Path [| value |]) + /// Update store item specifying updater function from old value to new value member this.Update(updater: 'Value -> 'Value) : unit = - this.Setter.UpdatePath(Array.append this.Path [| updater |]) + this.Setter.UpdatePath (Array.append this.Path [| updater |]) [] module SolidExtensions = type SolidStoreSetter<'T> with /// Access more convenient way of updating store items - member this.Path = SolidStorePath<'T, 'T>(this, [||]) + member this.Path = SolidStorePath<'T, 'T> (this, [||]) [] type SolidStorePathExtensions = @@ -305,26 +351,29 @@ module Bindings = /// Select store item by index [] static member inline Item(this: SolidStorePath<'T, 'Value array>, index: int) = - SolidStorePath<'T, 'Value>(this.Setter, Array.append this.Path [| index |]) + SolidStorePath<'T, 'Value> (this.Setter, Array.append this.Path [| index |]) /// Select store item by predicate [] static member inline Find(this: SolidStorePath<'T, 'Value array>, predicate: 'Value -> bool) = - SolidStorePath<'T, 'Value>(this.Setter, Array.append this.Path [| predicate |]) + SolidStorePath<'T, 'Value> (this.Setter, Array.append this.Path [| predicate |]) [] [] type Bindings = /// Returns a memo evaluating to the resolved children which updates whenever the children change. [] - static member children(value: unit -> #HtmlElement): unit -> #HtmlElement = jsNative + static member children(value: unit -> #HtmlElement) : unit -> #HtmlElement = jsNative + [] - static member mergeProps([] values: 'T[]): 'T = jsNative + static member mergeProps([] values: 'T[]) : 'T = jsNative + [] - static member splitProps(o: 'T, properties: string array, otherProperties: string array): 'T * 'T = jsNative + static member splitProps(o: 'T, properties: string array, otherProperties: string array) : 'T * 'T = jsNative + [] - static member splitProps(o: 'T, properties: string array): 'T * 'T = jsNative - + static member splitProps(o: 'T, properties: string array) : 'T * 'T = jsNative + [] static member render(code: unit -> #HtmlElement, element: #Element) : unit = jsNative @@ -333,8 +382,10 @@ type Bindings = [] static member createSignal(value: 'T) : Signal<'T> = jsNative + [] - static member createSignal(value: 'T, ?equals: ('T -> 'T -> bool), ?name: string, ?``internal``: bool): Signal<'T> = jsNative + static member createSignal(value: 'T, ?equals: ('T -> 'T -> bool), ?name: string, ?``internal``: bool) : Signal<'T> = jsNative + [] static member createMemo(value: unit -> 'T) : (unit -> 'T) = jsNative @@ -345,34 +396,56 @@ type Bindings = static member createEffect(effect: 'T -> 'T, initialValue: 'T) : unit = jsNative [] - static member createContext<'T> (?value: 'T): Context<'T> = jsNative - + static member createContext<'T>(?value: 'T) : Context<'T> = jsNative + [] - static member useContext(context: Context<'T>): 'T = jsNative + static member useContext(context: Context<'T>) : 'T = jsNative + [] static member createResource - (source: unit -> 'U option, fetcher: ResourceFetcher<'U option, 'T>, ?initialValue: 'T, ?name: string, ?deferStream: bool, ?onHydrated: (unit -> unit), ?ssrLoadFrom: string, ?storage: Signal<'T>): SolidResource<'T> * SolidResourceManager<'T> = jsNative + ( + source: unit -> 'U option, + fetcher: ResourceFetcher<'U option, 'T>, + ?initialValue: 'T, + ?name: string, + ?deferStream: bool, + ?onHydrated: (unit -> unit), + ?ssrLoadFrom: string, + ?storage: Signal<'T> + ) : SolidResource<'T> * SolidResourceManager<'T> = + jsNative + [] static member createResource - (fetcher: ResourceFetcher, ?initialValue: 'T, ?name: string, ?deferStream: bool, ?onHydrated: (unit -> unit), ?ssrLoadFrom: string, ?storage: Signal<'T>): SolidResource<'T> * SolidResourceManager<'T> = jsNative + ( + fetcher: ResourceFetcher, + ?initialValue: 'T, + ?name: string, + ?deferStream: bool, + ?onHydrated: (unit -> unit), + ?ssrLoadFrom: string, + ?storage: Signal<'T> + ) : SolidResource<'T> * SolidResourceManager<'T> = + jsNative + [] - static member createResource - (fetcher: ResourceFetcher): SolidResource<'T> * SolidResourceManager<'T> = jsNative + static member createResource(fetcher: ResourceFetcher) : SolidResource<'T> * SolidResourceManager<'T> = jsNative + [] - static member createResource - (source: unit -> 'U option, fetcher: ResourceFetcher<'U option, 'T>): SolidResource<'T> * SolidResourceManager<'T> = jsNative - + static member createResource(source: unit -> 'U option, fetcher: ResourceFetcher<'U option, 'T>) : SolidResource<'T> * SolidResourceManager<'T> = + jsNative + /// Fetcher will be called immediately [] - static member createResource - (fetcher: unit -> JS.Promise<'T>, ?initialValue: 'T) - : SolidResource<'T> * SolidResourceManager<'T> = - jsNative + static member createResource(fetcher: unit -> JS.Promise<'T>, ?initialValue: 'T) : SolidResource<'T> * SolidResourceManager<'T> = jsNative + /// Injects Async.StartAsPromise to the fetcher - static member inline createResource - (fetcher: unit -> Async<'T>, ?initialValue: 'T) - : SolidResource<'T> * SolidResourceManager<'T> = - createResource(fetcher >> Async.StartAsPromise, ?initialValue = initialValue) + static member inline createResource(fetcher: unit -> Async<'T>, ?initialValue: 'T) : SolidResource<'T> * SolidResourceManager<'T> = + createResource ( + fetcher + >> Async.StartAsPromise, + ?initialValue = initialValue + ) /// Fetcher will be called only when source signal returns `Some('U)` [] @@ -380,12 +453,18 @@ type Bindings = (source: unit -> 'U option, fetcher: 'U -> JS.Promise<'T>, ?initialValue: 'T) : SolidResource<'T> * SolidResourceManager<'T> = jsNative + /// Injects Async.StartAsPromise to the fetcher static member inline createResource (source: unit -> 'U option, fetcher: 'U -> Async<'T>, ?initialValue: 'T) : SolidResource<'T> * SolidResourceManager<'T> = - createResource(source, fetcher >> Async.StartAsPromise, ?initialValue = initialValue) - + createResource ( + source, + fetcher + >> Async.StartAsPromise, + ?initialValue = initialValue + ) + [] static member createRoot(fn (* dispose *) : Action -> 'T) : 'T = jsNative @@ -433,6 +512,7 @@ type Bindings = /// Component lazy loading. Use in combination with `importComponent` [] static member lazy'(import: unit -> JS.Promise) : HtmlElement = jsNative + /// /// createComputed creates a new computation that immediately runs the given function in a tracking, /// thus automatically tracking its dependencies, and automatically reruns the function whenever the dependencies @@ -448,19 +528,22 @@ type Bindings = /// The function to run in a tracking scope. /// The initial value to pass to the function. [] - static member createComputed<'T>(fn: 'T -> 'T, ?value: 'T): unit = jsNative + static member createComputed<'T>(fn: 'T -> 'T, ?value: 'T) : unit = jsNative + /// /// Creates a readonly that only notifies downstream changes when the browser is idle. timeoutMs is the /// maximum time to wait before forcing the update. /// [] - static member createDeferred<'T>(source: unit -> 'T, ?timeoutMs: int, ?equals: 'T -> 'T -> bool, ?name: string): unit -> 'T = jsNative + static member createDeferred<'T>(source: unit -> 'T, ?timeoutMs: int, ?equals: 'T -> 'T -> bool, ?name: string) : unit -> 'T = jsNative + /// /// Sometimes it is useful to separate tracking from re-execution. This primitive registers a side-effect /// that is run the first time the expression wrapped by the returned tracking is notified of a change. /// [] - static member createReaction(onInvalidate: unit -> unit): (unit -> unit) -> unit = jsNative + static member createReaction(onInvalidate: unit -> unit) : (unit -> unit) -> unit = jsNative + /// /// A render effect is a computation similar to a regular effect, but differs in when Solid schedules /// the first execution of the effect function. While createEffect waits for the current rendering @@ -471,7 +554,8 @@ type Bindings = /// the rendering phase of itself, including setting of refs /// [] - static member createRenderEffect<'T>(fn: 'T -> 'T, ?value: 'T): unit = jsNative + static member createRenderEffect<'T>(fn: 'T -> 'T, ?value: 'T) : unit = jsNative + /// /// Creates a parameterised derived boolean signal selector(key) that indicates whether key /// is equal to the current value of the source signal. These signals are optimised to notify @@ -485,7 +569,8 @@ type Bindings = /// The source signal to get the value from and compare with keys. /// A function to compare the key and the value, returning whether they should be treated as equal. Default: = [] - static member createSelector<'T, 'U>(source: unit -> 'T, ?fn: 'U -> 'T -> bool): 'U -> bool = jsNative + static member createSelector<'T, 'U>(source: unit -> 'T, ?fn: 'U -> 'T -> bool) : 'U -> bool = jsNative + /// /// Reactive map helper that caches each item by reference to avoid unnecessary recomputations. /// It only runs the mapping function once per value, and then moves or removes it as needed. @@ -494,7 +579,8 @@ type Bindings = /// This is the underlying helper for the For component, which is used to render lists of items. /// [] - static member mapArray<'T, 'U>(source: Accessor<'T[]>, fn: 'T -> Accessor -> 'U): Accessor<'U[]> = jsNative + static member mapArray<'T, 'U>(source: Accessor<'T[]>, fn: 'T -> Accessor -> 'U) : Accessor<'U[]> = jsNative + /// /// Reactive helper that maps by index, similar to mapArray, but uses the index of the item in the array /// as the key for the mapping function. This is useful when you want to map over an array and use the index @@ -503,4 +589,4 @@ type Bindings = /// This is the underlying helper for the Index component, which is used to render lists of items /// [] - static member indexArray<'T, 'U>(source: Accessor<'T[]>, fn: Accessor<'T> -> int -> 'U): Accessor<'U[]> = jsNative + static member indexArray<'T, 'U>(source: Accessor<'T[]>, fn: Accessor<'T> -> int -> 'U) : Accessor<'U[]> = jsNative diff --git a/Partas.Solid/SolidMetaBindings.fs b/Partas.Solid/SolidMetaBindings.fs index ca94846..8e9aa20 100644 --- a/Partas.Solid/SolidMetaBindings.fs +++ b/Partas.Solid/SolidMetaBindings.fs @@ -7,30 +7,29 @@ open Partas.Solid module Bindings = [] module Spec = - let [] path = "@solidjs/meta" - + [] + let path = "@solidjs/meta" + [] type MetaProvider() = interface FragmentNode - + [] type Title() = inherit title() - + [] type Style() = inherit style() - + [] type Link() = inherit link() - + [] type Meta() = inherit meta() - + [] type Base() = inherit base'() - - diff --git a/Partas.Solid/SolidRouterBindings.fs b/Partas.Solid/SolidRouterBindings.fs index 9e0fe39..79302a7 100644 --- a/Partas.Solid/SolidRouterBindings.fs +++ b/Partas.Solid/SolidRouterBindings.fs @@ -22,24 +22,31 @@ module Bindings = | Preload [] - type NavigateOptions - ( - ?resolve: bool, - ?replace: bool, - ?scroll: bool, - ?state: obj - )= - member val resolve: bool = resolve |> Option.defaultValue !!null with get,set - member val replace: bool = replace |> Option.defaultValue !!null with get,set - member val scroll: bool = scroll |> Option.defaultValue !!null with get,set - member val state: obj = state |> Option.defaultValue !!null with get,set + type NavigateOptions(?resolve: bool, ?replace: bool, ?scroll: bool, ?state: obj) = + member val resolve: bool = + resolve + |> Option.defaultValue !!null with get, set + + member val replace: bool = + replace + |> Option.defaultValue !!null with get, set + + member val scroll: bool = + scroll + |> Option.defaultValue !!null with get, set + + member val state: obj = + state + |> Option.defaultValue !!null with get, set type Navigator = [] abstract member Invoke: ``to``: string * ?options: NavigateOptions -> unit + /// Replaces NavigateOptions [] abstract member InvokeOptions: ``to``: string * ?resolve: bool * ?replace: bool * ?scroll: bool * ?state: obj -> unit + [] abstract member Invoke: delta: float -> unit @@ -89,18 +96,23 @@ module Bindings = [] type Route() = interface HtmlElement + [] member this.path with set (value: string) = () + [] member this.component' with set (value: TagValue) = () + [] member this.matchFilters with set (value: obj) = () + [] member this.preload with set (value: RoutePreloadFunc) = () + [] [] member inline _.Combine @@ -109,46 +121,61 @@ module Bindings = fun PARTAS_BUILDER -> PARTAS_FIRST PARTAS_BUILDER PARTAS_SECOND PARTAS_BUILDER + [] [] - member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = PARTAS_DELAY() + member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = + PARTAS_DELAY () + [] [] member inline _.Zero() : HtmlContainerFun = ignore + [] [] - member inline _.Yield(PARTAS_ELEMENT: Route) : HtmlContainerFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: Route) : HtmlContainerFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT [] - type RootConfig (path: string, ``component``: HtmlElement) = + type RootConfig(path: string, ``component``: HtmlElement) = member val path: string = jsNative with get, set + [] member val ``component``: HtmlElement = jsNative with get, set + /// Alias for _.``component`` member this.component' - with inline set(value: HtmlElement) = this.``component`` <- value - and inline get(): HtmlElement = this.``component`` + with inline set (value: HtmlElement) = this.``component`` <- value + and inline get (): HtmlElement = this.``component`` + [] // Replaces Import as it doesn't impact the builder param names type Router() = interface HtmlElement + [] member this.root with set (value: TagValue) = () + [] member this.base' with set (value: string) = () + [] member this.actionBase with set (value: string) = () + [] member this.preload with set (value: bool) = () + [] member this.explicitLinks with set (value: bool) = () + [] member this.url with set (value: string) = () + [] [] member inline _.Combine @@ -157,25 +184,32 @@ module Bindings = fun PARTAS_BUILDER -> PARTAS_FIRST PARTAS_BUILDER PARTAS_SECOND PARTAS_BUILDER + [] [] - member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = PARTAS_DELAY() + member inline _.Delay([] PARTAS_DELAY: unit -> HtmlContainerFun) : HtmlContainerFun = + PARTAS_DELAY () + [] [] member inline _.Zero() : HtmlContainerFun = ignore + [] [] - member inline _.Yield(PARTAS_ELEMENT: Route) : HtmlContainerFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: Route) : HtmlContainerFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT + [] [] - member inline _.Yield(PARTAS_ELEMENT: RootConfig[]) : HtmlContainerFun = fun PARTAS_CONT -> ignore PARTAS_ELEMENT + member inline _.Yield(PARTAS_ELEMENT: RootConfig[]) : HtmlContainerFun = + fun PARTAS_CONT -> ignore PARTAS_ELEMENT [] type HashRouter() = inherit Router() [] - type PreloadData (preloadData: bool) = + type PreloadData(preloadData: bool) = member val preloadData: bool = jsNative with get, set [] @@ -195,24 +229,31 @@ module Bindings = [] type A() = interface RegularNode + [] member this.href with set (value: string) = () + [] member this.noScroll with set (value: bool) = () + [] member this.replace with set (value: bool) = () + [] member this.state with set (value: obj) = () + [] member this.activeClass with set (value: string) = () + [] member this.inactiveClass with set (value: string) = () + [] member this.end' with set (value: bool) = () @@ -220,9 +261,11 @@ module Bindings = [] type Navigate() = interface RegularNode + [] member this.href with set (value: string) = () + [] member this.state with set (value: obj) = () diff --git a/Partas.Solid/SolidStartBindings.fs b/Partas.Solid/SolidStartBindings.fs index a95c7d2..5c7788a 100644 --- a/Partas.Solid/SolidStartBindings.fs +++ b/Partas.Solid/SolidStartBindings.fs @@ -99,58 +99,79 @@ type HttpStatusCode = module Bindings = [] module Spec = - let [] path = "@solidjs/start" - + [] + let path = "@solidjs/start" + [] type Exports = [] static member useServer: unit = jsNative + [] static member inline getServerFunctionMeta = - let inline fn(): unit -> {| id: string |} = (JsInterop.import "getServerFunctionMeta" Spec.path) - (fn()()).id - [] - static member defineConfig(config: obj): obj = jsNative - static member inline defineConfig(objList: (string * obj) list) = defineConfig(JsInterop.createObj objList) - - [] + let inline fn () : unit -> {| id: string |} = + (JsInterop.import "getServerFunctionMeta" Spec.path) + + (fn () ()).id + + [] + static member defineConfig(config: obj) : obj = jsNative + + static member inline defineConfig(objList: (string * obj) list) = + defineConfig (JsInterop.createObj objList) + + [] type StartServer() = interface FragmentNode + [] - val mutable document: ({|children: HtmlElement; assets: link; scripts: script|} -> html) - + val mutable document: + ({| children: HtmlElement + assets: link + scripts: script |} + -> html) + [] module Client = - [] + [] let mount (fn: unit -> HtmlElement, el: obj) = jsNative - - [] + + [] type StartClient() = interface HtmlElement - + type private T = HttpStatusCode - + [] type HttpStatusCode() = interface VoidNode + [] val mutable code: T - + [] type HttpHeader() = interface VoidNode + [] val mutable name: string + [] val mutable value: string - [] + [] type FileRoutes() = interface HtmlElement + [] - member this.ToRoute() = unbox this - + member this.ToRoute() = + unbox this + type Exports with [] - static member clientOnly (importFunc: unit -> JS.Promise): TagValue = jsNative - + static member clientOnly(importFunc: unit -> JS.Promise) : TagValue = jsNative diff --git a/Partas.Solid/Style.fs b/Partas.Solid/Style.fs index 8a2d9b3..d648696 100644 --- a/Partas.Solid/Style.fs +++ b/Partas.Solid/Style.fs @@ -15,2596 +15,4100 @@ type Style = ///Syntax: auto | color ///
Initial value: auto ///
- static member inline accentColor (value: U2) = "accent-color" ==> value + static member inline accentColor(value: U2) = + "accent-color" + ==> value + /// /// The CSSalign-content property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis.

///Syntax: normal | baseline-position | content-distribution | overflow-position? content-position ///
Initial value: normal ///
- static member inline alignContent (value: U2) = "align-content" ==> value + static member inline alignContent(value: U2) = + "align-content" + ==> value + /// /// The CSSalign-items property sets the align-self value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area.

///Syntax: normal | stretch | baseline-position | [ overflow-position? self-position ] ///
Initial value: normal ///
- static member inline alignItems (value: U2) = "align-items" ==> value + static member inline alignItems(value: U2) = + "align-items" + ==> value + /// /// Thealign-self CSS property overrides a grid or flex item's align-items value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis.

///Syntax: auto | normal | stretch | baseline-position | overflow-position? self-position ///
Initial value: auto ///
- static member inline alignSelf (value: U2) = "align-self" ==> value + static member inline alignSelf(value: U2) = + "align-self" + ==> value + /// /// Thealign-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their block axis.

///Syntax: [ normal | baseline-position | content-distribution | overflow-position? content-position ]# ///
Initial value: normal ///
- static member inline alignTracks (value: U2) = "align-tracks" ==> value + static member inline alignTracks(value: U2) = + "align-tracks" + ==> value + /// /// Theanimation-composition CSS property specifies the composite operation to use when multiple animations affect the same property simultaneously.

///Syntax: single-animation-composition# ///
Initial value: replace ///
- static member inline animationComposition (value: U2) = "animation-composition" ==> value + static member inline animationComposition(value: U2) = + "animation-composition" + ==> value + /// /// Theanimation-delay CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation.

///Syntax: time# ///
Initial value: 0s ///
- static member inline animationDelay (value: U4) = "animation-delay" ==> value + static member inline animationDelay(value: U4) = + "animation-delay" + ==> value + /// /// Theanimation-direction CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward.

///Syntax: single-animation-direction# ///
Initial value: normal ///
- static member inline animationDirection (value: U2) = "animation-direction" ==> value + static member inline animationDirection(value: U2) = + "animation-direction" + ==> value + /// /// Theanimation-duration CSS property sets the length of time that an animation takes to complete one cycle.

///Syntax: time# ///
Initial value: 0s ///
- static member inline animationDuration (value: U3) = "animation-duration" ==> value + static member inline animationDuration(value: U3) = + "animation-duration" + ==> value + /// /// Theanimation-fill-mode CSS property sets how a CSS animation applies styles to its target before and after its execution.

///Syntax: single-animation-fill-mode# ///
Initial value: none ///
- static member inline animationFillMode (value: U2) = "animation-fill-mode" ==> value + static member inline animationFillMode(value: U2) = + "animation-fill-mode" + ==> value + /// /// Theanimation-iteration-count CSS property sets the number of times an animation sequence should be played before stopping.

///Syntax: single-animation-iteration-count# ///
Initial value: 1 ///
- static member inline animationIterationCount (value: U2) = "animation-iteration-count" ==> value + static member inline animationIterationCount(value: U2) = + "animation-iteration-count" + ==> value + /// /// Theanimation-name CSS property specifies the names of one or more @keyframes at-rules that describe the animation to apply to an element. Multiple @keyframe at-rules are specified as a comma-separated list of names. If the specified name does not match any @keyframe at-rule, no properties are animated.

///Syntax: [ none | keyframes-name ]# ///
Initial value: none ///
- static member inline animationName (value: U2) = "animation-name" ==> value + static member inline animationName(value: U2) = + "animation-name" + ==> value + /// /// Theanimation-play-state CSS property sets whether an animation is running or paused.

///Syntax: single-animation-play-state# ///
Initial value: running ///
- static member inline animationPlayState (value: U2) = "animation-play-state" ==> value + static member inline animationPlayState(value: U2) = + "animation-play-state" + ==> value + /// /// Theanimation-range-end CSS property is used to set the end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will end.

///Syntax: [ normal | length-percentage | timeline-range-name length-percentage? ]# ///
Initial value: normal ///
- static member inline animationRangeEnd (value: U2) = "animation-range-end" ==> value + static member inline animationRangeEnd(value: U2) = + "animation-range-end" + ==> value + /// /// Theanimation-range-start CSS property is used to set the start of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start.

///Syntax: [ normal | length-percentage | timeline-range-name length-percentage? ]# ///
Initial value: normal ///
- static member inline animationRangeStart (value: U2) = "animation-range-start" ==> value + static member inline animationRangeStart(value: U2) = + "animation-range-start" + ==> value + /// /// Theanimation-timeline CSS property specifies the timeline that is used to control the progress of an animation.

///Syntax: single-animation-timeline# ///
Initial value: auto ///
- static member inline animationTimeline (value: U2) = "animation-timeline" ==> value + static member inline animationTimeline(value: U2) = + "animation-timeline" + ==> value + /// /// Theanimation-timing-function CSS property sets how an animation progresses through the duration of each cycle.

///Syntax: easing-function# ///
Initial value: ease ///
- static member inline animationTimingFunction (value: U2) = "animation-timing-function" ==> value + static member inline animationTimingFunction(value: U2) = + "animation-timing-function" + ==> value + /// /// Theappearance CSS property is used to control native appearance of UI controls, that are based on operating system's theme.

///Syntax: none | auto | textfield | menulist-button | compat-auto ///
Initial value: none ///
- static member inline appearance (value: U2) = "appearance" ==> value + static member inline appearance(value: U2) = + "appearance" + ==> value + /// /// Theaspect-ratio CSS property sets apreferred aspect ratio for the box, which will be used in the calculation of auto sizes and some other layout functions.

///Syntax: auto | ratio ///
Initial value: auto ///
- static member inline aspectRatio (value: U2) = "aspect-ratio" ==> value + static member inline aspectRatio(value: U2) = + "aspect-ratio" + ==> value + /// /// Thebackdrop-filter CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything _behind_ the element, to see the effect you must make the element or its background at least partially transparent.

///Syntax: none | filter-function-list ///
Initial value: none ///
- static member inline backdropFilter (value: U2) = "backdrop-filter" ==> value + static member inline backdropFilter(value: U2) = + "backdrop-filter" + ==> value + /// /// Thebackface-visibility CSS property sets whether the back face of an element is visible when turned towards the user.

///Syntax: visible | hidden ///
Initial value: visible ///
- static member inline backfaceVisibility (value: U2) = "backface-visibility" ==> value + static member inline backfaceVisibility(value: U2) = + "backface-visibility" + ==> value + /// /// Thebackground-attachment CSS property sets whether a background image's position is fixed within the viewport, or scrolls with its containing block.

///Syntax: attachment# ///
Initial value: scroll ///
- static member inline backgroundAttachment (value: U2) = "background-attachment" ==> value + static member inline backgroundAttachment(value: U2) = + "background-attachment" + ==> value + /// /// Thebackground-blend-mode CSS property sets how an element's background images should blend with each other and with the element's background color.

///Syntax: blend-mode# ///
Initial value: normal ///
- static member inline backgroundBlendMode (value: U2) = "background-blend-mode" ==> value + static member inline backgroundBlendMode(value: U2) = + "background-blend-mode" + ==> value + /// /// Thebackground-clip CSS property sets whether an element's background extends underneath its border box, padding box, or content box.

///Syntax: box# ///
Initial value: border-box ///
- static member inline backgroundClip (value: U2) = "background-clip" ==> value + static member inline backgroundClip(value: U2) = + "background-clip" + ==> value + /// /// Thebackground-color CSS property sets the background color of an element.

///Syntax: color ///
Initial value: transparent ///
- static member inline backgroundColor (value: U2) = "background-color" ==> value + static member inline backgroundColor(value: U2) = + "background-color" + ==> value + /// /// Thebackground-image CSS property sets one or more background images on an element.

///Syntax: bg-image# ///
Initial value: none ///
- static member inline backgroundImage (value: U2) = "background-image" ==> value + static member inline backgroundImage(value: U2) = + "background-image" + ==> value + /// /// Thebackground-origin CSS property sets the background's origin: from the border start, inside the border, or inside the padding.

///Syntax: box# ///
Initial value: padding-box ///
- static member inline backgroundOrigin (value: U2) = "background-origin" ==> value + static member inline backgroundOrigin(value: U2) = + "background-origin" + ==> value + /// /// Thebackground-position-x CSS property sets the initial horizontal position for each background image. The position is relative to the position layer set by background-origin.

///Syntax: [ center | [ [ left | right | x-start | x-end ]? length-percentage? ]! ]# ///
Initial value: 0% ///
- static member inline backgroundPositionX (value: U3) = "background-position-x" ==> value + static member inline backgroundPositionX(value: U3) = + "background-position-x" + ==> value + /// /// Thebackground-position-y CSS property sets the initial vertical position for each background image. The position is relative to the position layer set by background-origin.

///Syntax: [ center | [ [ top | bottom | y-start | y-end ]? length-percentage? ]! ]# ///
Initial value: 0% ///
- static member inline backgroundPositionY (value: U3) = "background-position-y" ==> value + static member inline backgroundPositionY(value: U3) = + "background-position-y" + ==> value + /// /// Thebackground-repeat CSS property sets how background images are repeated. A background image can be repeated along the horizontal and vertical axes, or not repeated at all.

///Syntax: repeat-style# ///
Initial value: repeat ///
- static member inline backgroundRepeat (value: U2) = "background-repeat" ==> value + static member inline backgroundRepeat(value: U2) = + "background-repeat" + ==> value + /// /// Thebackground-size CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space.

///Syntax: bg-size# ///
Initial value: auto auto ///
- static member inline backgroundSize (value: U2) = "background-size" ==> value + static member inline backgroundSize(value: U2) = + "background-size" + ==> value + ///
- static member inline blockOverflow (value: U2) = "block-overflow" ==> value + static member inline blockOverflow(value: U2) = + "block-overflow" + ==> value + /// /// Theblock-size CSS property defines the horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the width or the height property, depending on the value of writing-mode.

///Syntax: 'width' ///
Initial value: auto ///
- static member inline blockSize (value: U2) = "block-size" ==> value + static member inline blockSize(value: U2) = + "block-size" + ==> value + /// /// Theborder-block-color CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-color'{1,2} ///
Initial value: currentcolor ///
- static member inline borderBlockColor (value: U2) = "border-block-color" ==> value + static member inline borderBlockColor(value: U2) = + "border-block-color" + ==> value + /// /// Theborder-block-end-color CSS property defines the color of the logical block-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color, border-right-color, border-bottom-color, or border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-color' ///
Initial value: currentcolor ///
- static member inline borderBlockEndColor (value: U2) = "border-block-end-color" ==> value + static member inline borderBlockEndColor(value: U2) = + "border-block-end-color" + ==> value + /// /// Theborder-block-end-style CSS property defines the style of the logical block-end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style, border-right-style, border-bottom-style, or border-left-style property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-style' ///
Initial value: none ///
- static member inline borderBlockEndStyle (value: U2) = "border-block-end-style" ==> value + static member inline borderBlockEndStyle(value: U2) = + "border-block-end-style" + ==> value + /// /// Theborder-block-end-width CSS property defines the width of the logical block-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width, border-right-width, border-bottom-width, or border-left-width property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-width' ///
Initial value: medium ///
- static member inline borderBlockEndWidth (value: U2) = "border-block-end-width" ==> value + static member inline borderBlockEndWidth(value: U2) = + "border-block-end-width" + ==> value + /// /// Theborder-block-start-color CSS property defines the color of the logical block-start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color, border-right-color, border-bottom-color, or border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-color' ///
Initial value: currentcolor ///
- static member inline borderBlockStartColor (value: U2) = "border-block-start-color" ==> value + static member inline borderBlockStartColor(value: U2) = + "border-block-start-color" + ==> value + /// /// Theborder-block-start-style CSS property defines the style of the logical block start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style, border-right-style, border-bottom-style, or border-left-style property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-style' ///
Initial value: none ///
- static member inline borderBlockStartStyle (value: U2) = "border-block-start-style" ==> value + static member inline borderBlockStartStyle(value: U2) = + "border-block-start-style" + ==> value + /// /// Theborder-block-start-width CSS property defines the width of the logical block-start border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width, border-right-width, border-bottom-width, or border-left-width property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-width' ///
Initial value: medium ///
- static member inline borderBlockStartWidth (value: U2) = "border-block-start-width" ==> value + static member inline borderBlockStartWidth(value: U2) = + "border-block-start-width" + ==> value + /// /// Theborder-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-style' ///
Initial value: none ///
- static member inline borderBlockStyle (value: U2) = "border-block-style" ==> value + static member inline borderBlockStyle(value: U2) = + "border-block-style" + ==> value + /// /// Theborder-block-width CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-width' ///
Initial value: medium ///
- static member inline borderBlockWidth (value: U3) = "border-block-width" ==> value + static member inline borderBlockWidth(value: U3) = + "border-block-width" + ==> value + /// /// Theborder-bottom-color CSS property sets the color of an element's bottom border. It can also be set with the shorthand CSS properties border-color or border-bottom.

///Syntax: 'border-top-color' ///
Initial value: currentcolor ///
- static member inline borderBottomColor (value: U2) = "border-bottom-color" ==> value + static member inline borderBottomColor(value: U2) = + "border-bottom-color" + ==> value + /// /// Theborder-bottom-left-radius CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderBottomLeftRadius (value: U3) = "border-bottom-left-radius" ==> value + static member inline borderBottomLeftRadius(value: U3) = + "border-bottom-left-radius" + ==> value + /// /// Theborder-bottom-right-radius CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderBottomRightRadius (value: U3) = "border-bottom-right-radius" ==> value + static member inline borderBottomRightRadius(value: U3) = + "border-bottom-right-radius" + ==> value + /// /// Theborder-bottom-style CSS property sets the line style of an element's bottom border.

///Syntax: line-style ///
Initial value: none ///
- static member inline borderBottomStyle (value: U2) = "border-bottom-style" ==> value + static member inline borderBottomStyle(value: U2) = + "border-bottom-style" + ==> value + /// /// Theborder-bottom-width CSS property sets the width of the bottom border of an element.

///Syntax: line-width ///
Initial value: medium ///
- static member inline borderBottomWidth (value: U3) = "border-bottom-width" ==> value + static member inline borderBottomWidth(value: U3) = + "border-bottom-width" + ==> value + /// /// Theborder-collapse CSS property sets whether cells inside a table have shared or separate borders.

///Syntax: collapse | separate ///
Initial value: separate ///
- static member inline borderCollapse (value: U2) = "border-collapse" ==> value + static member inline borderCollapse(value: U2) = + "border-collapse" + ==> value + /// /// Theborder-end-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's writing-mode, direction, and text-orientation. This is useful when building styles to work regardless of the text orientation and writing mode.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderEndEndRadius (value: U2) = "border-end-end-radius" ==> value + static member inline borderEndEndRadius(value: U2) = + "border-end-end-radius" + ==> value + /// /// Theborder-end-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation. This is useful when building styles to work regardless of the text orientation and writing mode.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderEndStartRadius (value: U2) = "border-end-start-radius" ==> value + static member inline borderEndStartRadius(value: U2) = + "border-end-start-radius" + ==> value + /// /// Theborder-image-outset CSS property sets the distance by which an element's border image is set out from its border box.

///Syntax: [ length | number ]{1,4} ///
Initial value: 0 ///
- static member inline borderImageOutset (value: U2) = "border-image-outset" ==> value + static member inline borderImageOutset(value: U2) = + "border-image-outset" + ==> value + /// /// Theborder-image-repeat CSS property defines how the edge regions and middle region of a source image are adjusted to fit the dimensions of an element's border image. The middle region can be displayed by using the keyword "fill" in the border-image-slice property.

///Syntax: [ stretch | repeat | round | space ]{1,2} ///
Initial value: stretch ///
- static member inline borderImageRepeat (value: U2) = "border-image-repeat" ==> value + static member inline borderImageRepeat(value: U2) = + "border-image-repeat" + ==> value + /// /// Theborder-image-slice CSS property divides the image specified by border-image-source into regions. These regions form the components of an element's border image.

///Syntax: number-percentage{1,4} && fill? ///
Initial value: 100% ///
- static member inline borderImageSlice (value: U2) = "border-image-slice" ==> value + static member inline borderImageSlice(value: U2) = + "border-image-slice" + ==> value + /// /// Theborder-image-source CSS property sets the source image used to create an element's border image.

///Syntax: none | image ///
Initial value: none ///
- static member inline borderImageSource (value: U2) = "border-image-source" ==> value + static member inline borderImageSource(value: U2) = + "border-image-source" + ==> value + /// /// Theborder-image-width CSS property sets the width of an element's border image.

///Syntax: [ length-percentage | number | auto ]{1,4} ///
Initial value: 1 ///
- static member inline borderImageWidth (value: U2) = "border-image-width" ==> value + static member inline borderImageWidth(value: U2) = + "border-image-width" + ==> value + /// /// Theborder-inline-color CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-color'{1,2} ///
Initial value: currentcolor ///
- static member inline borderInlineColor (value: U2) = "border-inline-color" ==> value + static member inline borderInlineColor(value: U2) = + "border-inline-color" + ==> value + /// /// Theborder-inline-end-color CSS property defines the color of the logical inline-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color, border-right-color, border-bottom-color, or border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-color' ///
Initial value: currentcolor ///
- static member inline borderInlineEndColor (value: U2) = "border-inline-end-color" ==> value + static member inline borderInlineEndColor(value: U2) = + "border-inline-end-color" + ==> value + /// /// Theborder-inline-end-style CSS property defines the style of the logical inline end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style, border-right-style, border-bottom-style, or border-left-style property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-style' ///
Initial value: none ///
- static member inline borderInlineEndStyle (value: U2) = "border-inline-end-style" ==> value + static member inline borderInlineEndStyle(value: U2) = + "border-inline-end-style" + ==> value + /// /// Theborder-inline-end-width CSS property defines the width of the logical inline-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width, border-right-width, border-bottom-width, or border-left-width property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-width' ///
Initial value: medium ///
- static member inline borderInlineEndWidth (value: U2) = "border-inline-end-width" ==> value + static member inline borderInlineEndWidth(value: U2) = + "border-inline-end-width" + ==> value + /// /// Theborder-inline-start-color CSS property defines the color of the logical inline start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color, border-right-color, border-bottom-color, or border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-color' ///
Initial value: currentcolor ///
- static member inline borderInlineStartColor (value: U2) = "border-inline-start-color" ==> value + static member inline borderInlineStartColor(value: U2) = + "border-inline-start-color" + ==> value + /// /// Theborder-inline-start-style CSS property defines the style of the logical inline start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style, border-right-style, border-bottom-style, or border-left-style property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-style' ///
Initial value: none ///
- static member inline borderInlineStartStyle (value: U2) = "border-inline-start-style" ==> value + static member inline borderInlineStartStyle(value: U2) = + "border-inline-start-style" + ==> value + /// /// Theborder-inline-start-width CSS property defines the width of the logical inline-start border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width, border-right-width, border-bottom-width, or border-left-width property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-width' ///
Initial value: medium ///
- static member inline borderInlineStartWidth (value: U2) = "border-inline-start-width" ==> value + static member inline borderInlineStartWidth(value: U2) = + "border-inline-start-width" + ==> value + /// /// Theborder-inline-style CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-style' ///
Initial value: none ///
- static member inline borderInlineStyle (value: U2) = "border-inline-style" ==> value + static member inline borderInlineStyle(value: U2) = + "border-inline-style" + ==> value + /// /// Theborder-inline-width CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'border-top-width' ///
Initial value: medium ///
- static member inline borderInlineWidth (value: U2) = "border-inline-width" ==> value + static member inline borderInlineWidth(value: U2) = + "border-inline-width" + ==> value + /// /// Theborder-left-color CSS property sets the color of an element's left border. It can also be set with the shorthand CSS properties border-color or border-left.

///Syntax: color ///
Initial value: currentcolor ///
- static member inline borderLeftColor (value: U2) = "border-left-color" ==> value + static member inline borderLeftColor(value: U2) = + "border-left-color" + ==> value + /// /// Theborder-left-style CSS property sets the line style of an element's left border.

///Syntax: line-style ///
Initial value: none ///
- static member inline borderLeftStyle (value: U2) = "border-left-style" ==> value + static member inline borderLeftStyle(value: U2) = + "border-left-style" + ==> value + /// /// Theborder-left-width CSS property sets the width of the left border of an element.

///Syntax: line-width ///
Initial value: medium ///
- static member inline borderLeftWidth (value: U2) = "border-left-width" ==> value + static member inline borderLeftWidth(value: U2) = + "border-left-width" + ==> value + /// /// Theborder-right-color CSS property sets the color of an element's right border. It can also be set with the shorthand CSS properties border-color or border-right.

///Syntax: color ///
Initial value: currentcolor ///
- static member inline borderRightColor (value: U2) = "border-right-color" ==> value + static member inline borderRightColor(value: U2) = + "border-right-color" + ==> value + /// /// Theborder-right-style CSS property sets the line style of an element's right border.

///Syntax: line-style ///
Initial value: none ///
- static member inline borderRightStyle (value: U2) = "border-right-style" ==> value - static member inline borderWidth (value: U2) = "border-width" ==> value + static member inline borderRightStyle(value: U2) = + "border-right-style" + ==> value + + static member inline borderWidth(value: U2) = + "border-width" + ==> value + /// /// Theborder-right-width CSS property sets the width of the right border of an element.

///Syntax: line-width ///
Initial value: medium ///
- static member inline borderRightWidth (value: U2) = "border-right-width" ==> value + static member inline borderRightWidth(value: U2) = + "border-right-width" + ==> value + /// /// Theborder-spacing CSS property sets the distance between the borders of adjacent cells in a table. This property applies only when border-collapse is separate.

///Syntax: length length? ///
Initial value: 0 ///
- static member inline borderSpacing (value: U2) = "border-spacing" ==> value + static member inline borderSpacing(value: U2) = + "border-spacing" + ==> value + /// /// Theborder-start-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation. This is useful when building styles to work regardless of the text orientation and writing mode.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderStartEndRadius (value: U2) = "border-start-end-radius" ==> value + static member inline borderStartEndRadius(value: U2) = + "border-start-end-radius" + ==> value + /// /// Theborder-start-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's writing-mode, direction, and text-orientation. This is useful when building styles to work regardless of the text orientation and writing mode.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderStartStartRadius (value: U2) = "border-start-start-radius" ==> value + static member inline borderStartStartRadius(value: U2) = + "border-start-start-radius" + ==> value + /// /// Theborder-top-color CSS property sets the color of an element's top border. It can also be set with the shorthand CSS properties border-color or border-top.

///Syntax: color ///
Initial value: currentcolor ///
- static member inline borderTopColor (value: U2) = "border-top-color" ==> value + static member inline borderTopColor(value: U2) = + "border-top-color" + ==> value + /// /// Theborder-top-left-radius CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderTopLeftRadius (value: U2) = "border-top-left-radius" ==> value + static member inline borderTopLeftRadius(value: U2) = + "border-top-left-radius" + ==> value + /// /// Theborder-top-right-radius CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner.

///Syntax: length-percentage{1,2} ///
Initial value: 0 ///
- static member inline borderTopRightRadius (value: U2) = "border-top-right-radius" ==> value + static member inline borderTopRightRadius(value: U2) = + "border-top-right-radius" + ==> value + /// /// Theborder-top-style CSS property sets the line style of an element's top border.

///Syntax: line-style ///
Initial value: none ///
- static member inline borderTopStyle (value: U2) = "border-top-style" ==> value + static member inline borderTopStyle(value: U2) = + "border-top-style" + ==> value + /// /// Theborder-top-width CSS property sets the width of the top border of an element.

///Syntax: line-width ///
Initial value: medium ///
- static member inline borderTopWidth (value: U2) = "border-top-width" ==> value + static member inline borderTopWidth(value: U2) = + "border-top-width" + ==> value + /// /// Thebottom CSS property participates in setting the vertical position of a positioned element. It has no effect on non-positioned elements.

///Syntax: length | percentage | auto ///
Initial value: auto ///
- static member inline bottom (value: U2) = "bottom" ==> value + static member inline bottom(value: U2) = + "bottom" + ==> value + /// /// Thebox-decoration-break CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages.

///Syntax: slice | clone ///
Initial value: slice ///
- static member inline boxDecorationBreak (value: U2) = "box-decoration-break" ==> value + static member inline boxDecorationBreak(value: U2) = + "box-decoration-break" + ==> value + /// /// Thebox-shadow CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color.

///Syntax: none | shadow# ///
Initial value: none ///
- static member inline boxShadow (value: U2) = "box-shadow" ==> value + static member inline boxShadow(value: U2) = + "box-shadow" + ==> value + /// /// Thebox-sizing CSS property sets how the total width and height of an element is calculated.

///Syntax: content-box | border-box ///
Initial value: content-box ///
- static member inline boxSizing (value: U2) = "box-sizing" ==> value + static member inline boxSizing(value: U2) = + "box-sizing" + ==> value + /// /// Thebreak-after CSS property sets how page, column, or region breaks should behave after a generated box. If there is no generated box, the property is ignored.

///Syntax: auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region ///
Initial value: auto ///
- static member inline breakAfter (value: U2) = "break-after" ==> value + static member inline breakAfter(value: U2) = + "break-after" + ==> value + /// /// Thebreak-before CSS property sets how page, column, or region breaks should behave before a generated box. If there is no generated box, the property is ignored.

///Syntax: auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region ///
Initial value: auto ///
- static member inline breakBefore (value: U2) = "break-before" ==> value + static member inline breakBefore(value: U2) = + "break-before" + ==> value + /// /// Thebreak-inside CSS property sets how page, column, or region breaks should behave inside a generated box. If there is no generated box, the property is ignored.

///Syntax: auto | avoid | avoid-page | avoid-column | avoid-region ///
Initial value: auto ///
- static member inline breakInside (value: U2) = "break-inside" ==> value + static member inline breakInside(value: U2) = + "break-inside" + ==> value + /// /// Thecaption-side CSS property puts the content of a table's caption on the specified side. The values are relative to the writing-mode of the table.

///Syntax: top | bottom | block-start | block-end | inline-start | inline-end ///
Initial value: top ///
- static member inline captionSide (value: U2) = "caption-side" ==> value + static member inline captionSide(value: U2) = + "caption-side" + ==> value + /// /// Thecaret-color CSS property sets the color of theinsertion caret, the visible marker where the next character typed will be inserted. This is sometimes referred to as thetext input cursor. The caret appears in elements such as input or those with the contenteditable attribute. The caret is typically a thin vertical line that flashes to help make it more noticeable. By default, it is black, but its color can be altered with this property.

///Syntax: auto | color ///
Initial value: auto ///
- static member inline caretColor (value: U2) = "caret-color" ==> value + static member inline caretColor(value: U2) = + "caret-color" + ==> value + ///
- static member inline caretShape (value: U2) = "caret-shape" ==> value + static member inline caretShape(value: U2) = + "caret-shape" + ==> value + /// /// Theclear CSS property sets whether an element must be moved below (cleared) floating elements that precede it. The clear property applies to floating and non-floating elements.

///Syntax: none | left | right | both | inline-start | inline-end ///
Initial value: none ///
- static member inline clear (value: U2) = "clear" ==> value + static member inline clear(value: U2) = + "clear" + ==> value + /// /// Theclip-path CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden.

///Syntax: clip-source | [ basic-shape || geometry-box ] | none ///
Initial value: none ///
- static member inline clipPath (value: U2) = "clip-path" ==> value + static member inline clipPath(value: U2) = + "clip-path" + ==> value + /// /// Thecolor CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value. currentcolor may be used as an indirect value on _other_ properties and is the default for other color properties, such as border-color.

///Syntax: color ///
Initial value: canvastext ///
- static member inline color (value: U2) = "color" ==> value + static member inline color(value: U2) = + "color" + ==> value + /// /// Theprint-color-adjust CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device.

///Syntax: economy | exact ///
Initial value: economy ///
- static member inline colorAdjust (value: U2) = "color-adjust" ==> value + static member inline colorAdjust(value: U2) = + "color-adjust" + ==> value + /// /// Thecolor-scheme CSS property allows an element to indicate which color schemes it can comfortably be rendered in.

///Syntax: normal | [ light | dark | custom-ident ]+ && only? ///
Initial value: normal ///
- static member inline colorScheme (value: U2) = "color-scheme" ==> value + static member inline colorScheme(value: U2) = + "color-scheme" + ==> value + /// /// Thecolumn-count CSS property breaks an element's content into the specified number of columns.

///Syntax: integer | auto ///
Initial value: auto ///
- static member inline columnCount (value: U2) = "column-count" ==> value + static member inline columnCount(value: U2) = + "column-count" + ==> value + /// /// Thecolumn-fill CSS property controls how an element's contents are balanced when broken into columns.

///Syntax: auto | balance | balance-all ///
Initial value: balance ///
- static member inline columnFill (value: U2) = "column-fill" ==> value + static member inline columnFill(value: U2) = + "column-fill" + ==> value + /// /// Thecolumn-gap CSS property sets the size of the gap (gutter) between an element's columns.

///Syntax: normal | length-percentage ///
Initial value: normal ///
- static member inline columnGap (value: U2) = "column-gap" ==> value + static member inline columnGap(value: U2) = + "column-gap" + ==> value + /// /// Thecolumn-rule-color CSS property sets the color of the line drawn between columns in a multi-column layout.

///Syntax: color ///
Initial value: currentcolor ///
- static member inline columnRuleColor (value: U2) = "column-rule-color" ==> value + static member inline columnRuleColor(value: U2) = + "column-rule-color" + ==> value + /// /// Thecolumn-rule-style CSS property sets the style of the line drawn between columns in a multi-column layout.

///Syntax: 'border-style' ///
Initial value: none ///
- static member inline columnRuleStyle (value: U2) = "column-rule-style" ==> value + static member inline columnRuleStyle(value: U2) = + "column-rule-style" + ==> value + /// /// Thecolumn-rule-width CSS property sets the width of the line drawn between columns in a multi-column layout.

///Syntax: 'border-width' ///
Initial value: medium ///
- static member inline columnRuleWidth (value: U2) = "column-rule-width" ==> value + static member inline columnRuleWidth(value: U2) = + "column-rule-width" + ==> value + /// /// Thecolumn-span CSS property makes it possible for an element to span across all columns when its value is set to all.

///Syntax: none | all ///
Initial value: none ///
- static member inline columnSpan (value: U2) = "column-span" ==> value + static member inline columnSpan(value: U2) = + "column-span" + ==> value + /// /// Thecolumn-width CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the column-width value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width.

///Syntax: length | auto ///
Initial value: auto ///
- static member inline columnWidth (value: U2) = "column-width" ==> value + static member inline columnWidth(value: U2) = + "column-width" + ==> value + /// /// Thecontain CSS property indicates that an element and its contents are, as much as possible, independent from the rest of the document tree. Containment enables isolating a subsection of the DOM, providing performance benefits by limiting calculations of layout, style, paint, size, or any combination to a DOM subtree rather than the entire page. Containment can also be used to scope CSS counters and quotes.

///Syntax: none | strict | content | [ [ size || inline-size ] || layout || style || paint ] ///
Initial value: none ///
- static member inline contain (value: U2) = "contain" ==> value + static member inline contain(value: U2) = + "contain" + ==> value + /// /// Thecontain-intrinsic-block-size CSS logical property defines the block size of an element that a browser can use for layout when the element is subject to size containment.

///Syntax: auto? [ none | length ] ///
Initial value: none ///
- static member inline containIntrinsicBlockSize (value: U2) = "contain-intrinsic-block-size" ==> value + static member inline containIntrinsicBlockSize(value: U2) = + "contain-intrinsic-block-size" + ==> value + /// /// Thecontain-intrinsic-length CSS property sets the height of an element that a browser can use for layout when the element is subject to size containment.

///Syntax: auto? [ none | length ] ///
Initial value: none ///
- static member inline containIntrinsicHeight (value: U2) = "contain-intrinsic-height" ==> value + static member inline containIntrinsicHeight(value: U2) = + "contain-intrinsic-height" + ==> value + /// /// Thecontain-intrinsic-inline-size CSS logical property defines the inline-size of an element that a browser can use for layout when the element is subject to size containment.

///Syntax: auto? [ none | length ] ///
Initial value: none ///
- static member inline containIntrinsicInlineSize (value: U2) = "contain-intrinsic-inline-size" ==> value + static member inline containIntrinsicInlineSize(value: U2) = + "contain-intrinsic-inline-size" + ==> value + /// /// Thecontain-intrinsic-width CSS property sets the width of an element that a browser will use for layout when the element is subject to size containment.

///Syntax: auto? [ none | length ] ///
Initial value: none ///
- static member inline containerName (value: U2) = "container-name" ==> value + static member inline containerName(value: U2) = + "container-name" + ==> value + /// /// Thecontainer-type CSS property is used to define the type of containment used in a container query.

///Syntax: normal | size | inline-size ///
Initial value: normal ///
- static member inline containerType (value: U2) = "container-type" ==> value + static member inline containerType(value: U2) = + "container-type" + ==> value + /// /// Thecontent CSS property replaces an element with a generated value. Objects inserted using the content property areanonymous replaced elements.

///Syntax: normal | none | [ content-replacement | content-list ] [/ [ string | counter ]+ ]? ///
Initial value: normal ///
- static member inline content (value: U2) = "content" ==> value + static member inline content(value: U2) = + "content" + ==> value + /// /// Thecontent-visibility CSS property controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed. It enables the user agent to skip an element's rendering work (including layout and painting) until it is needed — which makes the initial page load much faster.

///Syntax: visible | auto | hidden ///
Initial value: visible ///
- static member inline contentVisibility (value: U2) = "content-visibility" ==> value + static member inline contentVisibility(value: U2) = + "content-visibility" + ==> value + /// /// Thecounter-increment CSS property increases or decreases the value of a CSS counter by a given value.

///Syntax: [ counter-name integer? ]+ | none ///
Initial value: none ///
- static member inline counterIncrement (value: U2) = "counter-increment" ==> value + static member inline counterIncrement(value: U2) = + "counter-increment" + ==> value + /// /// Thecounter-reset CSS property resets a CSS counter to a given value. This property will create a new counter or reversed counter with the given name on the specified element.

///Syntax: [ counter-name integer? | reversed-counter-name integer? ]+ | none ///
Initial value: none ///
- static member inline counterReset (value: U2) = "counter-reset" ==> value + static member inline counterReset(value: U2) = + "counter-reset" + ==> value + /// /// Thecounter-set CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element.

///Syntax: [ counter-name integer? ]+ | none ///
Initial value: none ///
- static member inline counterSet (value: U2) = "counter-set" ==> value + static member inline counterSet(value: U2) = + "counter-set" + ==> value + /// /// Thecursor CSS property sets the mouse cursor, if any, to show when the mouse pointer is over an element.

///Syntax: [ [ url [ x y ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ] ///
Initial value: auto ///
- static member inline cursor (value: U2) = "cursor" ==> value + static member inline cursor(value: U2) = + "cursor" + ==> value + /// /// Thedirection CSS property sets the direction of text, table columns, and horizontal overflow. Use rtl for languages written from right to left (like Hebrew or Arabic), and ltr for those written from left to right (like English and most other languages).

///Syntax: ltr | rtl ///
Initial value: ltr ///
- static member inline direction (value: U2) = "direction" ==> value + static member inline direction(value: U2) = + "direction" + ==> value + /// /// Thedisplay CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex.

///Syntax: [ display-outside || display-inside ] | display-listitem | display-internal | display-box | display-legacy ///
Initial value: inline ///
- static member inline display (value: U2) = "display" ==> value + static member inline display(value: U2) = + "display" + ==> value + /// /// Theempty-cells CSS property sets whether borders and backgrounds appear around table cells that have no visible content.

///Syntax: show | hide ///
Initial value: show ///
- static member inline emptyCells (value: U2) = "empty-cells" ==> value + static member inline emptyCells(value: U2) = + "empty-cells" + ==> value + /// /// Thefilter CSS property applies graphical effects like blur or color shift to an element. Filters are commonly used to adjust the rendering of images, backgrounds, and borders.

///Syntax: none | filter-function-list ///
Initial value: none ///
- static member inline filter (value: U2) = "filter" ==> value + static member inline filter(value: U2) = + "filter" + ==> value + /// /// Theflex-basis CSS property sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with box-sizing.

///Syntax: content | 'width' ///
Initial value: auto ///
- static member inline flexBasis (value: U2) = "flex-basis" ==> value + static member inline flexBasis(value: U2) = + "flex-basis" + ==> value + /// /// Theflex-direction CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed).

///Syntax: row | row-reverse | column | column-reverse ///
Initial value: row ///
- static member inline flexDirection (value: U2) = "flex-direction" ==> value + static member inline flexDirection(value: U2) = + "flex-direction" + ==> value + /// /// Theflex-grow CSS property sets the flex grow factor of a flex item's main size.

///Syntax: number ///
Initial value: 0 ///
- static member inline flexGrow (value: U2) = "flex-grow" ==> value + static member inline flexGrow(value: U2) = + "flex-grow" + ==> value + /// /// Theflex-shrink CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to flex-shrink.

///Syntax: number ///
Initial value: 1 ///
- static member inline flexShrink (value: U2) = "flex-shrink" ==> value + static member inline flexShrink(value: U2) = + "flex-shrink" + ==> value + /// /// Theflex-wrap CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked.

///Syntax: nowrap | wrap | wrap-reverse ///
Initial value: nowrap ///
- static member inline flexWrap (value: U2) = "flex-wrap" ==> value + static member inline flexWrap(value: U2) = + "flex-wrap" + ==> value + /// /// Thefloat CSS property places an element on the left or right side of its container, allowing text and inline elements to wrap around it. The element is removed from the normal flow of the page, though still remaining a part of the flow (in contrast to absolute positioning).

///Syntax: left | right | none | inline-start | inline-end ///
Initial value: none ///
- static member inline float (value: U2) = "float" ==> value + static member inline float(value: U2) = + "float" + ==> value + /// /// Thefont-family CSS property specifies a prioritized list of one or more font family names and/or generic family names for the selected element.

///Syntax: [ family-name | generic-family ]# ///
Initial value: depends on user agent ///
- static member inline fontFamily (value: U2) = "font-family" ==> value + static member inline fontFamily(value: U2) = + "font-family" + ==> value + /// /// Thefont-feature-settings CSS property controls advanced typographic features in OpenType fonts.

///Syntax: normal | feature-tag-value# ///
Initial value: normal ///
- static member inline fontFeatureSettings (value: U2) = "font-feature-settings" ==> value + static member inline fontFeatureSettings(value: U2) = + "font-feature-settings" + ==> value + /// /// Thefont-kerning CSS property sets the use of the kerning information stored in a font.

///Syntax: auto | normal | none ///
Initial value: auto ///
- static member inline fontKerning (value: U2) = "font-kerning" ==> value + static member inline fontKerning(value: U2) = + "font-kerning" + ==> value + /// /// Thefont-language-override CSS property controls the use of language-specific glyphs in a typeface.

///Syntax: normal | string ///
Initial value: normal ///
- static member inline fontLanguageOverride (value: U2) = "font-language-override" ==> value + static member inline fontLanguageOverride(value: U2) = + "font-language-override" + ==> value + /// /// Thefont-optical-sizing CSS property sets whether text rendering is optimized for viewing at different sizes.

///Syntax: auto | none ///
Initial value: auto ///
- static member inline fontOpticalSizing (value: U2) = "font-optical-sizing" ==> value + static member inline fontOpticalSizing(value: U2) = + "font-optical-sizing" + ==> value + /// ///Syntax: normal | light | dark | palette-identifier ///
Initial value: normal ///
- static member inline fontPalette (value: U2) = "font-palette" ==> value + static member inline fontPalette(value: U2) = + "font-palette" + ==> value + /// /// Thefont-size CSS property sets the size of the font. Changing the font size also updates the sizes of the font size-relative length units, such as em, ex, and so forth.

///Syntax: absolute-size | relative-size | length-percentage ///
Initial value: medium ///
- static member inline fontSize (value: U2) = "font-size" ==> value + static member inline fontSize(value: U2) = + "font-size" + ==> value + /// /// Thefont-size-adjust CSS property sets the size of lower-case letters relative to the current font size (which defines the size of upper-case letters).

///Syntax: none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | number ] ///
Initial value: none ///
- static member inline fontSizeAdjust (value: U2) = "font-size-adjust" ==> value + static member inline fontSizeAdjust(value: U2) = + "font-size-adjust" + ==> value + /// /// Thefont-smooth CSS property controls the application of anti-aliasing when fonts are rendered.

///Syntax: auto | never | always | absolute-size | length ///
Initial value: auto ///
- static member inline fontSmooth (value: U2) = "font-smooth" ==> value + static member inline fontSmooth(value: U2) = + "font-smooth" + ==> value + /// /// Thefont-stretch CSS property selects a normal, condensed, or expanded face from a font.

///Syntax: font-stretch-absolute ///
Initial value: normal ///
- static member inline fontStretch (value: U2) = "font-stretch" ==> value + static member inline fontStretch(value: U2) = + "font-stretch" + ==> value + /// /// Thefont-style CSS property sets whether a font should be styled with a normal, italic, or oblique face from its font-family.

///Syntax: normal | italic | oblique angle? ///
Initial value: normal ///
- static member inline fontStyle (value: U2) = "font-style" ==> value + static member inline fontStyle(value: U2) = + "font-style" + ==> value + /// /// Thefont-synthesis CSS property controls which missing typefaces, bold, italic, or small-caps, may be synthesized by the browser.

///Syntax: none | [ weight || style || small-caps || position] ///
Initial value: weight style small-caps position ///
- static member inline fontSynthesis (value: U2) = "font-synthesis" ==> value + static member inline fontSynthesis(value: U2) = + "font-synthesis" + ==> value + /// /// Thefont-synthesis-position CSS property lets you specify whether or not a browser may synthesize the subscript and superscript "position" typefaces when they are missing in a font family, while using font-variant-position to set the positions.

///Syntax: auto | none ///
Initial value: none ///
- static member inline fontSynthesisPosition (value: U2) = "font-synthesis-position" ==> value + static member inline fontSynthesisPosition(value: U2) = + "font-synthesis-position" + ==> value + /// /// Thefont-synthesis-small-caps CSS property lets you specify whether or not the browser may synthesize small-caps typeface when it is missing in a font family. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters.

///Syntax: auto | none ///
Initial value: auto ///
- static member inline fontSynthesisSmallCaps (value: U2) = "font-synthesis-small-caps" ==> value + static member inline fontSynthesisSmallCaps(value: U2) = + "font-synthesis-small-caps" + ==> value + /// /// Thefont-synthesis-style CSS property lets you specify whether or not the browser may synthesize the oblique typeface when it is missing in a font family.

///Syntax: auto | none ///
Initial value: auto ///
- static member inline fontSynthesisStyle (value: U2) = "font-synthesis-style" ==> value + static member inline fontSynthesisStyle(value: U2) = + "font-synthesis-style" + ==> value + /// /// Thefont-synthesis-weight CSS property lets you specify whether or not the browser may synthesize the bold typeface when it is missing in a font family.

///Syntax: auto | none ///
Initial value: auto ///
- static member inline fontSynthesisWeight (value: U2) = "font-synthesis-weight" ==> value + static member inline fontSynthesisWeight(value: U2) = + "font-synthesis-weight" + ==> value + /// /// Thefont-variant CSS shorthand property allows you to set all the font variants for a font.

///Syntax: normal | none | [ common-lig-values || discretionary-lig-values || historical-lig-values || contextual-alt-values || stylistic( feature-value-name ) || historical-forms || styleset( feature-value-name# ) || character-variant( feature-value-name# ) || swash( feature-value-name ) || ornaments( feature-value-name ) || annotation( feature-value-name ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || numeric-figure-values || numeric-spacing-values || numeric-fraction-values || ordinal || slashed-zero || east-asian-variant-values || east-asian-width-values || ruby ] ///
Initial value: normal ///
- static member inline fontVariant (value: U2) = "font-variant" ==> value + static member inline fontVariant(value: U2) = + "font-variant" + ==> value + /// /// Thefont-variant-alternates CSS property controls the usage of alternate glyphs. These alternate glyphs may be referenced by alternative names defined in @font-feature-values.

///Syntax: normal | [ stylistic( feature-value-name ) || historical-forms || styleset( feature-value-name# ) || character-variant( feature-value-name# ) || swash( feature-value-name ) || ornaments( feature-value-name ) || annotation( feature-value-name ) ] ///
Initial value: normal ///
- static member inline fontVariantAlternates (value: U2) = "font-variant-alternates" ==> value + static member inline fontVariantAlternates(value: U2) = + "font-variant-alternates" + ==> value + /// /// Thefont-variant-caps CSS property controls the use of alternate glyphs for capital letters.

///Syntax: normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ///
Initial value: normal ///
- static member inline fontVariantCaps (value: U2) = "font-variant-caps" ==> value + static member inline fontVariantCaps(value: U2) = + "font-variant-caps" + ==> value + /// /// Thefont-variant-east-asian CSS property controls the use of alternate glyphs for East Asian scripts, like Japanese and Chinese.

///Syntax: normal | [ east-asian-variant-values || east-asian-width-values || ruby ] ///
Initial value: normal ///
- static member inline fontVariantEastAsian (value: U2) = "font-variant-east-asian" ==> value + static member inline fontVariantEastAsian(value: U2) = + "font-variant-east-asian" + ==> value + /// ///Syntax: normal | text | emoji | unicode ///
Initial value: normal ///
- static member inline fontVariantEmoji (value: U2) = "font-variant-emoji" ==> value + static member inline fontVariantEmoji(value: U2) = + "font-variant-emoji" + ==> value + /// /// Thefont-variant-ligatures CSS property controls which ligatures and contextual forms are used in textual content of the elements it applies to. This leads to more harmonized forms in the resulting text.

///Syntax: normal | none | [ common-lig-values || discretionary-lig-values || historical-lig-values || contextual-alt-values ] ///
Initial value: normal ///
- static member inline fontVariantLigatures (value: U2) = "font-variant-ligatures" ==> value + static member inline fontVariantLigatures(value: U2) = + "font-variant-ligatures" + ==> value + /// /// Thefont-variant-numeric CSS property controls the usage of alternate glyphs for numbers, fractions, and ordinal markers.

///Syntax: normal | [ numeric-figure-values || numeric-spacing-values || numeric-fraction-values || ordinal || slashed-zero ] ///
Initial value: normal ///
- static member inline fontVariantNumeric (value: U2) = "font-variant-numeric" ==> value + static member inline fontVariantNumeric(value: U2) = + "font-variant-numeric" + ==> value + /// /// Thefont-variant-position CSS property controls the use of alternate, smaller glyphs that are positioned as superscript or subscript.

///Syntax: normal | sub | super ///
Initial value: normal ///
- static member inline fontVariantPosition (value: U2) = "font-variant-position" ==> value + static member inline fontVariantPosition(value: U2) = + "font-variant-position" + ==> value + /// /// Thefont-variation-settings CSS property provides low-level control over variable font characteristics, by specifying the four letter axis names of the characteristics you want to vary, along with their values.

///Syntax: normal | [ string number ]# ///
Initial value: normal ///
- static member inline fontVariationSettings (value: U2) = "font-variation-settings" ==> value + static member inline fontVariationSettings(value: U2) = + "font-variation-settings" + ==> value + /// /// Thefont-weight CSS property sets the weight (or boldness) of the font. The weights available depend on the font-family that is currently set.

///Syntax: font-weight-absolute | bolder | lighter ///
Initial value: normal ///
- static member inline fontWeight (value: U2) = "font-weight" ==> value + static member inline fontWeight(value: U2) = + "font-weight" + ==> value + /// /// Theforced-color-adjust CSS property allows authors to opt certain elements out of forced colors mode. This then restores the control of those values to CSS.

///Syntax: auto | none ///
Initial value: auto ///
- static member inline forcedColorAdjust (value: U2) = "forced-color-adjust" ==> value + static member inline forcedColorAdjust(value: U2) = + "forced-color-adjust" + ==> value + /// /// Thegrid-auto-columns CSS property specifies the size of an implicitly-created grid column track or pattern of tracks.

///Syntax: track-size+ ///
Initial value: auto ///
- static member inline gridAutoColumns (value: U2) = "grid-auto-columns" ==> value + static member inline gridAutoColumns(value: U2) = + "grid-auto-columns" + ==> value + /// /// Thegrid-auto-flow CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.

///Syntax: [ row | column ] || dense ///
Initial value: row ///
- static member inline gridAutoFlow (value: U2) = "grid-auto-flow" ==> value + static member inline gridAutoFlow(value: U2) = + "grid-auto-flow" + ==> value + /// /// Thegrid-auto-rows CSS property specifies the size of an implicitly-created grid row track or pattern of tracks.

///Syntax: track-size+ ///
Initial value: auto ///
- static member inline gridAutoRows (value: U2) = "grid-auto-rows" ==> value + static member inline gridAutoRows(value: U2) = + "grid-auto-rows" + ==> value + /// /// Thegrid-column-end CSS property specifies a grid item's end position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the block-end edge of its grid area.

///Syntax: grid-line ///
Initial value: auto ///
- static member inline gridColumnEnd (value: U2) = "grid-column-end" ==> value + static member inline gridColumnEnd(value: U2) = + "grid-column-end" + ==> value + /// /// Thegrid-column-start CSS property specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. This start position defines the block-start edge of the grid area.

///Syntax: grid-line ///
Initial value: auto ///
- static member inline gridColumnStart (value: U2) = "grid-column-start" ==> value + static member inline gridColumnStart(value: U2) = + "grid-column-start" + ==> value + /// /// Thegrid-row-end CSS property specifies a grid item's end position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-end edge of its grid area.

///Syntax: grid-line ///
Initial value: auto ///
- static member inline gridRowEnd (value: U2) = "grid-row-end" ==> value + static member inline gridRowEnd(value: U2) = + "grid-row-end" + ==> value + /// /// Thegrid-row-start CSS property specifies a grid item's start position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start edge of its grid area.

///Syntax: grid-line ///
Initial value: auto ///
- static member inline gridRowStart (value: U2) = "grid-row-start" ==> value + static member inline gridRowStart(value: U2) = + "grid-row-start" + ==> value + /// /// Thegrid-template-areas CSS property specifies named grid areas, establishing the cells in the grid and assigning them names.

///Syntax: none | string+ ///
Initial value: none ///
- static member inline gridTemplateAreas (value: U2) = "grid-template-areas" ==> value + static member inline gridTemplateAreas(value: U2) = + "grid-template-areas" + ==> value + /// /// Thegrid-template-columns CSS property defines the line names and track sizing functions of the grid columns.

///Syntax: none | track-list | auto-track-list | subgrid line-name-list? ///
Initial value: none ///
- static member inline gridTemplateColumns (value: U2) = "grid-template-columns" ==> value + static member inline gridTemplateColumns(value: U2) = + "grid-template-columns" + ==> value + /// /// Thegrid-template-rows CSS property defines the line names and track sizing functions of the grid rows.

///Syntax: none | track-list | auto-track-list | subgrid line-name-list? ///
Initial value: none ///
- static member inline gridTemplateRows (value: U2) = "grid-template-rows" ==> value + static member inline gridTemplateRows(value: U2) = + "grid-template-rows" + ==> value + /// /// Thehanging-punctuation CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box.

///Syntax: none | [ first || [ force-end | allow-end ] || last ] ///
Initial value: none ///
- static member inline hangingPunctuation (value: U2) = "hanging-punctuation" ==> value + static member inline hangingPunctuation(value: U2) = + "hanging-punctuation" + ==> value + /// /// Theheight CSS property specifies the height of an element. By default, the property defines the height of the content area. If box-sizing is set to border-box, however, it instead determines the height of the border area.

///Syntax: auto | length | percentage | min-content | max-content | fit-content | fit-content(length-percentage) ///
Initial value: auto ///
- static member inline height (value: U2) = "height" ==> value + static member inline height(value: U2) = + "height" + ==> value + /// /// Thehyphenate-character CSS property sets the character (or string) used at the end of a line before a hyphenation break.

///Syntax: auto | string ///
Initial value: auto ///
- static member inline hyphenateCharacter (value: U2) = "hyphenate-character" ==> value + static member inline hyphenateCharacter(value: U2) = + "hyphenate-character" + ==> value + /// /// Thehyphenate-limit-chars CSS property specifies the minimum word length to allow hyphenation of words as well as the the minimum number of characters before and after the hyphen.

///Syntax: [ auto | integer ]{1,3} ///
Initial value: auto ///
- static member inline hyphenateLimitChars (value: U2) = "hyphenate-limit-chars" ==> value + static member inline hyphenateLimitChars(value: U2) = + "hyphenate-limit-chars" + ==> value + /// /// Thehyphens CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate.

///Syntax: none | manual | auto ///
Initial value: manual ///
- static member inline hyphens (value: U2) = "hyphens" ==> value + static member inline hyphens(value: U2) = + "hyphens" + ==> value + /// /// Theimage-orientation CSS property specifies a layout-independent correction to the orientation of an image.

///Syntax: from-image | angle | [ angle? flip ] ///
Initial value: from-image ///
- static member inline imageOrientation (value: U2) = "image-orientation" ==> value + static member inline imageOrientation(value: U2) = + "image-orientation" + ==> value + /// /// Theimage-rendering CSS property sets an image scaling algorithm. The property applies to an element itself, to any images set in its other properties, and to its descendants.

///Syntax: auto | crisp-edges | pixelated ///
Initial value: auto ///
- static member inline imageRendering (value: U2) = "image-rendering" ==> value + static member inline imageRendering(value: U2) = + "image-rendering" + ==> value + ///
- static member inline imageResolution (value: U2) = "image-resolution" ==> value + static member inline imageResolution(value: U2) = + "image-resolution" + ==> value + /// /// The initial-letter CSS property sets styling for dropped, raised, and sunken initial letters.

///Syntax: normal | [ number integer? ] ///
Initial value: normal ///
- static member inline initialLetter (value: U2) = "initial-letter" ==> value + static member inline initialLetter(value: U2) = + "initial-letter" + ==> value + /// /// Theinline-size CSS property defines the horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the width or the height property, depending on the value of writing-mode.

///Syntax: 'width' ///
Initial value: auto ///
- static member inline inlineSize (value: U2) = "inline-size" ==> value + static member inline inlineSize(value: U2) = + "inline-size" + ==> value + ///
- static member inline inputSecurity (value: U2) = "input-security" ==> value + static member inline inputSecurity(value: U2) = + "input-security" + ==> value + /// /// Theinset-block-end CSS property defines the logical block end offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'top' ///
Initial value: auto ///
- static member inline insetBlockEnd (value: U2) = "inset-block-end" ==> value + static member inline insetBlockEnd(value: U2) = + "inset-block-end" + ==> value + /// /// Theinset-block-start CSS property defines the logical block start offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'top' ///
Initial value: auto ///
- static member inline insetBlockStart (value: U2) = "inset-block-start" ==> value + static member inline insetBlockStart(value: U2) = + "inset-block-start" + ==> value + /// /// Theinset-inline-end CSS property defines the logical inline end inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'top' ///
Initial value: auto ///
- static member inline insetInlineEnd (value: U2) = "inset-inline-end" ==> value + static member inline insetInlineEnd(value: U2) = + "inset-inline-end" + ==> value + /// /// Theinset-inline-start CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'top' ///
Initial value: auto ///
- static member inline insetInlineStart (value: U2) = "inset-inline-start" ==> value + static member inline insetInlineStart(value: U2) = + "inset-inline-start" + ==> value + /// /// Theisolation CSS property determines whether an element must create a new stacking context.

///Syntax: auto | isolate ///
Initial value: auto ///
- static member inline isolation (value: U2) = "isolation" ==> value + static member inline isolation(value: U2) = + "isolation" + ==> value + /// /// The CSSjustify-content property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container.

///Syntax: normal | content-distribution | overflow-position? [ content-position | left | right ] ///
Initial value: normal ///
- static member inline justifyContent (value: U2) = "justify-content" ==> value + static member inline justifyContent(value: U2) = + "justify-content" + ==> value + /// /// The CSSjustify-items property defines the default justify-self for all items of the box, giving them all a default way of justifying each box along the appropriate axis.

///Syntax: normal | stretch | baseline-position | overflow-position? [ self-position | left | right ] | legacy | legacy && [ left | right | center ] ///
Initial value: legacy ///
- static member inline justifyItems (value: U2) = "justify-items" ==> value + static member inline justifyItems(value: U2) = + "justify-items" + ==> value + /// /// The CSSjustify-self property sets the way a box is justified inside its alignment container along the appropriate axis.

///Syntax: auto | normal | stretch | baseline-position | overflow-position? [ self-position | left | right ] ///
Initial value: auto ///
- static member inline justifySelf (value: U2) = "justify-self" ==> value + static member inline justifySelf(value: U2) = + "justify-self" + ==> value + /// /// Thejustify-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their inline axis.

///Syntax: [ normal | content-distribution | overflow-position? [ content-position | left | right ] ]# ///
Initial value: normal ///
- static member inline justifyTracks (value: U2) = "justify-tracks" ==> value + static member inline justifyTracks(value: U2) = + "justify-tracks" + ==> value + /// /// Theleft CSS property participates in specifying the horizontal position of a positioned element. It has no effect on non-positioned elements.

///Syntax: length | percentage | auto ///
Initial value: auto ///
- static member inline left (value: U2) = "left" ==> value + static member inline left(value: U2) = + "left" + ==> value + /// /// Theletter-spacing CSS property sets the horizontal spacing behavior between text characters. This value is added to the natural spacing between characters while rendering the text. Positive values of letter-spacing causes characters to spread farther apart, while negative values of letter-spacing bring characters closer together.

///Syntax: normal | length ///
Initial value: normal ///
- static member inline letterSpacing (value: U2) = "letter-spacing" ==> value + static member inline letterSpacing(value: U2) = + "letter-spacing" + ==> value + /// /// Theline-break CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols.

///Syntax: auto | loose | normal | strict | anywhere ///
Initial value: auto ///
- static member inline lineBreak (value: U2) = "line-break" ==> value + static member inline lineBreak(value: U2) = + "line-break" + ==> value + /// /// Theline-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height.

///Syntax: normal | number | length | percentage ///
Initial value: normal ///
- static member inline lineHeight (value: U2) = "line-height" ==> value + static member inline lineHeight(value: U2) = + "line-height" + ==> value + /// /// Theline-height-step CSS property sets the step unit for line box heights. When the property is set, line box heights are rounded up to the closest multiple of the unit.

///Syntax: length ///
Initial value: 0 ///
- static member inline lineHeightStep (value: U2) = "line-height-step" ==> value + static member inline lineHeightStep(value: U2) = + "line-height-step" + ==> value + /// /// Thelist-style-image CSS property sets an image to be used as the list item marker.

///Syntax: image | none ///
Initial value: none ///
- static member inline listStyleImage (value: U2) = "list-style-image" ==> value + static member inline listStyleImage(value: U2) = + "list-style-image" + ==> value + /// /// Thelist-style-position CSS property sets the position of the ::marker relative to a list item.

///Syntax: inside | outside ///
Initial value: outside ///
- static member inline listStylePosition (value: U2) = "list-style-position" ==> value + static member inline listStylePosition(value: U2) = + "list-style-position" + ==> value + /// /// Thelist-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.

///Syntax: counter-style | string | none ///
Initial value: disc ///
- static member inline listStyleType (value: U2) = "list-style-type" ==> value + static member inline listStyleType(value: U2) = + "list-style-type" + ==> value + /// /// Themargin-block-end CSS property defines the logical block end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'margin-left' ///
Initial value: 0 ///
- static member inline marginBlockEnd (value: U2) = "margin-block-end" ==> value + static member inline marginBlockEnd(value: U2) = + "margin-block-end" + ==> value + /// /// Themargin-block-start CSS property defines the logical block start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'margin-left' ///
Initial value: 0 ///
- static member inline marginBlockStart (value: U2) = "margin-block-start" ==> value + static member inline marginBlockStart(value: U2) = + "margin-block-start" + ==> value + /// /// Themargin-bottom CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

///Syntax: length | percentage | auto ///
Initial value: 0 ///
- static member inline marginBottom (value: U2) = "margin-bottom" ==> value + static member inline marginBottom(value: U2) = + "margin-bottom" + ==> value + /// /// Themargin-inline-end CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the margin-top, margin-right, margin-bottom or margin-left property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'margin-left' ///
Initial value: 0 ///
- static member inline marginInlineEnd (value: U2) = "margin-inline-end" ==> value + static member inline marginInlineEnd(value: U2) = + "margin-inline-end" + ==> value + /// /// Themargin-inline-start CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the margin-top, margin-right, margin-bottom, or margin-left property depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'margin-left' ///
Initial value: 0 ///
- static member inline marginInlineStart (value: U2) = "margin-inline-start" ==> value + static member inline marginInlineStart(value: U2) = + "margin-inline-start" + ==> value + /// /// Themargin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

///Syntax: length | percentage | auto ///
Initial value: 0 ///
- static member inline marginLeft (value: U2) = "margin-left" ==> value + static member inline marginLeft(value: U2) = + "margin-left" + ==> value + /// /// Themargin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

///Syntax: length | percentage | auto ///
Initial value: 0 ///
- static member inline marginRight (value: U2) = "margin-right" ==> value + static member inline marginRight(value: U2) = + "margin-right" + ==> value + /// /// Themargin-top CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer.

///Syntax: length | percentage | auto ///
Initial value: 0 ///
- static member inline marginTop (value: U2) = "margin-top" ==> value + static member inline marginTop(value: U2) = + "margin-top" + ==> value + /// /// The margin-trim property allows the container to trim the margins of its children where they adjoin the container's edges.

///Syntax: none | in-flow | all ///
Initial value: none ///
- static member inline marginTrim (value: U2) = "margin-trim" ==> value + static member inline marginTrim(value: U2) = + "margin-trim" + ==> value + /// /// Themask-border-mode CSS property specifies the blending mode used in a mask border.

- static member inline maskBorderMode (value: U2) = "mask-border-mode" ==> value + static member inline maskBorderMode(value: U2) = + "mask-border-mode" + ==> value + /// /// Themask-border-outset CSS property specifies the distance by which an element's mask border is set out from its border box.

///Syntax: [ length | number ]{1,4} ///
Initial value: 0 ///
- static member inline maskBorderOutset (value: U2) = "mask-border-outset" ==> value + static member inline maskBorderOutset(value: U2) = + "mask-border-outset" + ==> value + /// /// Themask-border-repeat CSS property sets how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border.

///Syntax: [ stretch | repeat | round | space ]{1,2} ///
Initial value: stretch ///
- static member inline maskBorderRepeat (value: U2) = "mask-border-repeat" ==> value + static member inline maskBorderRepeat(value: U2) = + "mask-border-repeat" + ==> value + /// /// Themask-border-slice CSS property divides the image set by mask-border-source into regions. These regions are used to form the components of an element's mask border.

///Syntax: number-percentage{1,4} fill? ///
Initial value: 0 ///
- static member inline maskBorderSlice (value: U2) = "mask-border-slice" ==> value + static member inline maskBorderSlice(value: U2) = + "mask-border-slice" + ==> value + /// /// Themask-border-source CSS property sets the source image used to create an element's mask border.

///Syntax: none | image ///
Initial value: none ///
- static member inline maskBorderSource (value: U2) = "mask-border-source" ==> value + static member inline maskBorderSource(value: U2) = + "mask-border-source" + ==> value + /// /// Themask-border-width CSS property sets the width of an element's mask border.

///Syntax: [ length-percentage | number | auto ]{1,4} ///
Initial value: auto ///
- static member inline maskBorderWidth (value: U2) = "mask-border-width" ==> value + static member inline maskBorderWidth(value: U2) = + "mask-border-width" + ==> value + /// /// Themask-clip CSS property determines the area which is affected by a mask. The painted content of an element must be restricted to this area.

///Syntax: [ geometry-box | no-clip ]# ///
Initial value: border-box ///
- static member inline maskClip (value: U2) = "mask-clip" ==> value + static member inline maskClip(value: U2) = + "mask-clip" + ==> value + /// /// Themask-composite CSS property represents a compositing operation used on the current mask layer with the mask layers below it.

///Syntax: compositing-operator# ///
Initial value: add ///
- static member inline maskComposite (value: U2) = "mask-composite" ==> value + static member inline maskComposite(value: U2) = + "mask-composite" + ==> value + /// /// Themask-image CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the mask-mode property.

///Syntax: mask-reference# ///
Initial value: none ///
- static member inline maskImage (value: U2) = "mask-image" ==> value + static member inline maskImage(value: U2) = + "mask-image" + ==> value + /// /// Themask-mode CSS property sets whether the mask reference defined by mask-image is treated as a luminance or alpha mask.

///Syntax: masking-mode# ///
Initial value: match-source ///
- static member inline maskMode (value: U2) = "mask-mode" ==> value + static member inline maskMode(value: U2) = + "mask-mode" + ==> value + /// /// Themask-origin CSS property sets the origin of a mask.

///Syntax: geometry-box# ///
Initial value: border-box ///
- static member inline maskOrigin (value: U2) = "mask-origin" ==> value + static member inline maskOrigin(value: U2) = + "mask-origin" + ==> value + /// /// Themask-position CSS property sets the initial position, relative to the mask position layer set by mask-origin, for each defined mask image.

///Syntax: position# ///
Initial value: center ///
- static member inline maskPosition (value: U2) = "mask-position" ==> value + static member inline maskPosition(value: U2) = + "mask-position" + ==> value + /// /// Themask-repeat CSS property sets how mask images are repeated. A mask image can be repeated along the horizontal axis, the vertical axis, both axes, or not repeated at all.

///Syntax: repeat-style# ///
Initial value: repeat ///
- static member inline maskRepeat (value: U2) = "mask-repeat" ==> value + static member inline maskRepeat(value: U2) = + "mask-repeat" + ==> value + /// /// Themask-size CSS property specifies the sizes of the mask images. The size of the image can be fully or partially constrained in order to preserve its intrinsic ratio.

///Syntax: bg-size# ///
Initial value: auto ///
- static member inline maskSize (value: U2) = "mask-size" ==> value + static member inline maskSize(value: U2) = + "mask-size" + ==> value + /// /// Themask-type CSS property sets whether an SVG mask element is used as a _luminance_ or an _alpha_ mask. It applies to the mask element itself.

///Syntax: luminance | alpha ///
Initial value: luminance ///
- static member inline maskType (value: U2) = "mask-type" ==> value + static member inline maskType(value: U2) = + "mask-type" + ==> value + /// /// This feature is not Baseline because it does not work in some of the most widely-used browsers.

///Syntax: [ pack | next ] || [ definite-first | ordered ] ///
Initial value: pack ///
- static member inline masonryAutoFlow (value: U2) = "masonry-auto-flow" ==> value + static member inline masonryAutoFlow(value: U2) = + "masonry-auto-flow" + ==> value + /// /// Themath-depth property describes a notion of _depth_ for each element of a mathematical formula, with respect to the top-level container of that formula. Concretely, this is used to determine the computed value of the font-size property when its specified value is math.

///Syntax: auto-add | add(integer) | integer ///
Initial value: 0 ///
- static member inline mathDepth (value: U2) = "math-depth" ==> value + static member inline mathDepth(value: U2) = + "math-depth" + ==> value + /// /// The math-shift property indicates whether superscripts inside MathML formulas should be raised by a normal or compact shift.

///Syntax: normal | compact ///
Initial value: normal ///
- static member inline mathShift (value: U2) = "math-shift" ==> value + static member inline mathShift(value: U2) = + "math-shift" + ==> value + /// /// The math-style property indicates whether MathML equations should render with normal or compact height.

///Syntax: normal | compact ///
Initial value: normal ///
- static member inline mathStyle (value: U2) = "math-style" ==> value + static member inline mathStyle(value: U2) = + "math-style" + ==> value + /// /// Themax-block-size CSS property specifies the maximum size of an element in the direction opposite that of the writing direction as specified by writing-mode. That is, if the writing direction is horizontal, then max-block-size is equivalent to max-height; if the writing direction is vertical, max-block-size is the same as max-width.

///Syntax: 'max-width' ///
Initial value: none ///
- static member inline maxBlockSize (value: U2) = "max-block-size" ==> value + static member inline maxBlockSize(value: U2) = + "max-block-size" + ==> value + /// /// Themax-height CSS property sets the maximum height of an element. It prevents the used value of the height property from becoming larger than the value specified for max-height.

///Syntax: none | length-percentage | min-content | max-content | fit-content | fit-content(length-percentage) ///
Initial value: none ///
- static member inline maxHeight (value: U2) = "max-height" ==> value + static member inline maxHeight(value: U2) = + "max-height" + ==> value + /// /// Themax-inline-size CSS property defines the horizontal or vertical maximum size of an element's block, depending on its writing mode. It corresponds to either the max-width or the max-height property, depending on the value of writing-mode.

///Syntax: 'max-width' ///
Initial value: none ///
- static member inline maxInlineSize (value: U2) = "max-inline-size" ==> value + static member inline maxInlineSize(value: U2) = + "max-inline-size" + ==> value + ///
- static member inline maxLines (value: U2) = "max-lines" ==> value + static member inline maxLines(value: U2) = + "max-lines" + ==> value + /// /// Themax-width CSS property sets the maximum width of an element. It prevents the used value of the width property from becoming larger than the value specified by max-width.

///Syntax: none | length-percentage | min-content | max-content | fit-content | fit-content(length-percentage) ///
Initial value: none ///
- static member inline maxWidth (value: U2) = "max-width" ==> value + static member inline maxWidth(value: U2) = + "max-width" + ==> value + /// /// Themin-block-size CSS property defines the minimum horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the min-width or the min-height property, depending on the value of writing-mode.

///Syntax: 'min-width' ///
Initial value: 0 ///
- static member inline minBlockSize (value: U2) = "min-block-size" ==> value + static member inline minBlockSize(value: U2) = + "min-block-size" + ==> value + /// /// Themin-height CSS property sets the minimum height of an element. It prevents the used value of the height property from becoming smaller than the value specified for min-height.

///Syntax: auto | length | percentage | min-content | max-content | fit-content | fit-content(length-percentage) ///
Initial value: auto ///
- static member inline minHeight (value: U2) = "min-height" ==> value + static member inline minHeight(value: U2) = + "min-height" + ==> value + /// /// Themin-inline-size CSS property defines the horizontal or vertical minimal size of an element's block, depending on its writing mode. It corresponds to either the min-width or the min-height property, depending on the value of writing-mode.

///Syntax: 'min-width' ///
Initial value: 0 ///
- static member inline minInlineSize (value: U2) = "min-inline-size" ==> value + static member inline minInlineSize(value: U2) = + "min-inline-size" + ==> value + /// /// Themin-width CSS property sets the minimum width of an element. It prevents the used value of the width property from becoming smaller than the value specified for min-width.

///Syntax: auto | length | percentage | min-content | max-content | fit-content | fit-content(length-percentage) ///
Initial value: auto ///
- static member inline minWidth (value: U2) = "min-width" ==> value + static member inline minWidth(value: U2) = + "min-width" + ==> value + /// /// Themix-blend-mode CSS property sets how an element's content should blend with the content of the element's parent and the element's background.

///Syntax: blend-mode | plus-lighter ///
Initial value: normal ///
- static member inline mixBlendMode (value: U2) = "mix-blend-mode" ==> value + static member inline mixBlendMode(value: U2) = + "mix-blend-mode" + ==> value + /// /// Theoffset-distance CSS property specifies a position along an offset-path for an element to be placed.

///Syntax: length-percentage ///
Initial value: 0 ///
- static member inline motionDistance (value: U2) = "motion-distance" ==> value + static member inline motionDistance(value: U2) = + "motion-distance" + ==> value + /// /// Theoffset-path CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system.

///Syntax: none | offset-path || coord-box ///
Initial value: none ///
- static member inline motionPath (value: U2) = "motion-path" ==> value + static member inline motionPath(value: U2) = + "motion-path" + ==> value + /// /// Theoffset-rotate CSS property defines the orientation/direction of the element as it is positioned along the offset-path.

///Syntax: [ auto | reverse ] || angle ///
Initial value: auto ///
- static member inline motionRotation (value: U2) = "motion-rotation" ==> value + static member inline motionRotation(value: U2) = + "motion-rotation" + ==> value + /// /// Theobject-fit CSS property sets how the content of a replaced element, such as an img or video, should be resized to fit its container.

///Syntax: fill | contain | cover | none | scale-down ///
Initial value: fill ///
- static member inline objectFit (value: U2) = "object-fit" ==> value + static member inline objectFit(value: U2) = + "object-fit" + ==> value + /// /// Theobject-position CSS property specifies the alignment of the selected replaced element's contents within the element's box. Areas of the box which aren't covered by the replaced element's object will show the element's background.

///Syntax: position ///
Initial value: 50% 50% ///
- static member inline objectPosition (value: U2) = "object-position" ==> value + static member inline objectPosition(value: U2) = + "object-position" + ==> value + /// ///Syntax: auto | position ///
Initial value: auto ///
- static member inline offsetAnchor (value: U2) = "offset-anchor" ==> value + static member inline offsetAnchor(value: U2) = + "offset-anchor" + ==> value + /// /// Theoffset-distance CSS property specifies a position along an offset-path for an element to be placed.

///Syntax: length-percentage ///
Initial value: 0 ///
- static member inline offsetDistance (value: U2) = "offset-distance" ==> value + static member inline offsetDistance(value: U2) = + "offset-distance" + ==> value + /// /// Theoffset-path CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system.

///Syntax: none | offset-path || coord-box ///
Initial value: none ///
- static member inline offsetPath (value: U2) = "offset-path" ==> value + static member inline offsetPath(value: U2) = + "offset-path" + ==> value + /// ///Syntax: normal | auto | position ///
Initial value: auto ///
- static member inline offsetPosition (value: U2) = "offset-position" ==> value + static member inline offsetPosition(value: U2) = + "offset-position" + ==> value + /// /// Theoffset-rotate CSS property defines the orientation/direction of the element as it is positioned along the offset-path.

///Syntax: [ auto | reverse ] || angle ///
Initial value: auto ///
- static member inline offsetRotate (value: U2) = "offset-rotate" ==> value + static member inline offsetRotate(value: U2) = + "offset-rotate" + ==> value + /// /// Theoffset-rotate CSS property defines the orientation/direction of the element as it is positioned along the offset-path.

///Syntax: [ auto | reverse ] || angle ///
Initial value: auto ///
- static member inline offsetRotation (value: U2) = "offset-rotation" ==> value + static member inline offsetRotation(value: U2) = + "offset-rotation" + ==> value + /// /// Theopacity CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency.

///Syntax: alpha-value ///
Initial value: 1 ///
- static member inline opacity (value: U2) = "opacity" ==> value + static member inline opacity(value: U2) = + "opacity" + ==> value + /// /// Theorder CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending order value and then by their source code order.

///Syntax: integer ///
Initial value: 0 ///
- static member inline order (value: U2) = "order" ==> value + static member inline order(value: U2) = + "order" + ==> value + /// /// Theorphans CSS property sets the minimum number of lines in a block container that must be shown at the _bottom_ of a page, region, or column.

///Syntax: integer ///
Initial value: 2 ///
- static member inline orphans (value: U2) = "orphans" ==> value + static member inline orphans(value: U2) = + "orphans" + ==> value + /// /// Theoutline-color CSS property sets the color of an element's outline.

///Syntax: color | invert ///
Initial value: invert, for browsers supporting it, currentColor for the other ///
- static member inline outlineColor (value: U2) = "outline-color" ==> value + static member inline outlineColor(value: U2) = + "outline-color" + ==> value + /// /// Theoutline-offset CSS property sets the amount of space between an outline and the edge or border of an element.

///Syntax: length ///
Initial value: 0 ///
- static member inline outlineOffset (value: U2) = "outline-offset" ==> value + static member inline outlineOffset(value: U2) = + "outline-offset" + ==> value + /// /// Theoutline-style CSS property sets the style of an element's outline. An outline is a line that is drawn around an element, outside the border.

///Syntax: auto | 'border-style' ///
Initial value: none ///
- static member inline outlineStyle (value: U2) = "outline-style" ==> value + static member inline outlineStyle(value: U2) = + "outline-style" + ==> value + /// /// The CSSoutline-width property sets the thickness of an element's outline. An outline is a line that is drawn around an element, outside the border.

///Syntax: line-width ///
Initial value: medium ///
- static member inline outlineWidth (value: U2) = "outline-width" ==> value + static member inline outlineWidth(value: U2) = + "outline-width" + ==> value + /// ///Syntax: auto | none ///
Initial value: auto ///
- static member inline overflowAnchor (value: U2) = "overflow-anchor" ==> value + static member inline overflowAnchor(value: U2) = + "overflow-anchor" + ==> value + /// ///Syntax: visible | hidden | clip | scroll | auto ///
Initial value: auto ///
- static member inline overflowBlock (value: U2) = "overflow-block" ==> value + static member inline overflowBlock(value: U2) = + "overflow-block" + ==> value + /// /// Theoverflow-clip-box CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the overflow-clip-box-inline and overflow-clip-box-block properties.

- static member inline overflowClipBox (value: U2) = "overflow-clip-box" ==> value + static member inline overflowClipBox(value: U2) = + "overflow-clip-box" + ==> value + /// ///Syntax: visual-box || length [0,∞] ///
Initial value: 0px ///
- static member inline overflowClipMargin (value: U2) = "overflow-clip-margin" ==> value + static member inline overflowClipMargin(value: U2) = + "overflow-clip-margin" + ==> value + /// ///Syntax: visible | hidden | clip | scroll | auto ///
Initial value: auto ///
- static member inline overflowInline (value: U2) = "overflow-inline" ==> value + static member inline overflowInline(value: U2) = + "overflow-inline" + ==> value + /// /// Theoverflow-wrap CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box.

///Syntax: normal | break-word | anywhere ///
Initial value: normal ///
- static member inline overflowWrap (value: U2) = "overflow-wrap" ==> value + static member inline overflowWrap(value: U2) = + "overflow-wrap" + ==> value + /// /// Theoverflow-x CSS property sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content.

///Syntax: visible | hidden | clip | scroll | auto ///
Initial value: visible ///
- static member inline overflowX (value: U2) = "overflow-x" ==> value + static member inline overflowX(value: U2) = + "overflow-x" + ==> value + /// /// Theoverflow-y CSS property sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content.

///Syntax: visible | hidden | clip | scroll | auto ///
Initial value: visible ///
- static member inline overflowY (value: U2) = "overflow-y" ==> value + static member inline overflowY(value: U2) = + "overflow-y" + ==> value + /// /// Theoverlay CSS property specifies whether an element appearing in the top layer (for example, a shown popover or modal dialog element) is actually rendered in the top layer. This property is only relevant within a list of transition-property values, and only if allow-discrete is set as the transition-behavior.

///Syntax: none | auto ///
Initial value: none ///
- static member inline overlay (value: U2) = "overlay" ==> value + static member inline overlay(value: U2) = + "overlay" + ==> value + /// /// Theoverscroll-behavior-block CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached.

///Syntax: contain | none | auto ///
Initial value: auto ///
- static member inline overscrollBehaviorBlock (value: U2) = "overscroll-behavior-block" ==> value + static member inline overscrollBehaviorBlock(value: U2) = + "overscroll-behavior-block" + ==> value + /// /// Theoverscroll-behavior-inline CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached.

///Syntax: contain | none | auto ///
Initial value: auto ///
- static member inline overscrollBehaviorInline (value: U2) = "overscroll-behavior-inline" ==> value + static member inline overscrollBehaviorInline(value: U2) = + "overscroll-behavior-inline" + ==> value + /// /// Theoverscroll-behavior-x CSS property sets the browser's behavior when the horizontal boundary of a scrolling area is reached.

///Syntax: contain | none | auto ///
Initial value: auto ///
- static member inline overscrollBehaviorX (value: U2) = "overscroll-behavior-x" ==> value + static member inline overscrollBehaviorX(value: U2) = + "overscroll-behavior-x" + ==> value + /// /// Theoverscroll-behavior-y CSS property sets the browser's behavior when the vertical boundary of a scrolling area is reached.

///Syntax: contain | none | auto ///
Initial value: auto ///
- static member inline overscrollBehaviorY (value: U2) = "overscroll-behavior-y" ==> value + static member inline overscrollBehaviorY(value: U2) = + "overscroll-behavior-y" + ==> value + /// /// Thepadding-block-end CSS property defines the logical block end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'padding-left' ///
Initial value: 0 ///
- static member inline paddingBlockEnd (value: U2) = "padding-block-end" ==> value + static member inline paddingBlockEnd(value: U2) = + "padding-block-end" + ==> value + /// /// Thepadding-block-start CSS property defines the logical block start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'padding-left' ///
Initial value: 0 ///
- static member inline paddingBlockStart (value: U2) = "padding-block-start" ==> value + static member inline paddingBlockStart(value: U2) = + "padding-block-start" + ==> value + /// /// Thepadding-bottom CSS property sets the height of the padding area on the bottom of an element.

///Syntax: length | percentage ///
Initial value: 0 ///
- static member inline paddingBottom (value: U2) = "padding-bottom" ==> value + static member inline paddingBottom(value: U2) = + "padding-bottom" + ==> value + /// /// Thepadding-inline-end CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'padding-left' ///
Initial value: 0 ///
- static member inline paddingInlineEnd (value: U2) = "padding-inline-end" ==> value + static member inline paddingInlineEnd(value: U2) = + "padding-inline-end" + ==> value + /// /// Thepadding-inline-start CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'padding-left' ///
Initial value: 0 ///
- static member inline paddingInlineStart (value: U2) = "padding-inline-start" ==> value + static member inline paddingInlineStart(value: U2) = + "padding-inline-start" + ==> value + /// /// Thepadding-left CSS property sets the width of the padding area to the left of an element.

///Syntax: length | percentage ///
Initial value: 0 ///
- static member inline paddingLeft (value: U2) = "padding-left" ==> value + static member inline paddingLeft(value: U2) = + "padding-left" + ==> value + /// /// Thepadding-right CSS property sets the width of the padding area on the right of an element.

///Syntax: length | percentage ///
Initial value: 0 ///
- static member inline paddingRight (value: U2) = "padding-right" ==> value + static member inline paddingRight(value: U2) = + "padding-right" + ==> value + /// /// Thepadding-top CSS property sets the height of the padding area on the top of an element.

///Syntax: length | percentage ///
Initial value: 0 ///
- static member inline paddingTop (value: U2) = "padding-top" ==> value + static member inline paddingTop(value: U2) = + "padding-top" + ==> value + /// /// Thepage CSS property is used to specify the named page, a specific type of page defined by the @page at-rule.

///Syntax: auto | custom-ident ///
Initial value: auto ///
- static member inline page (value: U2) = "page" ==> value + static member inline page(value: U2) = + "page" + ==> value + /// /// Thepage-break-after CSS property adjusts page breaks _after_ the current element.

///Syntax: auto | always | avoid | left | right | recto | verso ///
Initial value: auto ///
- static member inline pageBreakAfter (value: U2) = "page-break-after" ==> value + static member inline pageBreakAfter(value: U2) = + "page-break-after" + ==> value + /// /// Thepage-break-before CSS property adjusts page breaks _before_ the current element.

///Syntax: auto | always | avoid | left | right | recto | verso ///
Initial value: auto ///
- static member inline pageBreakBefore (value: U2) = "page-break-before" ==> value + static member inline pageBreakBefore(value: U2) = + "page-break-before" + ==> value + /// /// Thepage-break-inside CSS property adjusts page breaks _inside_ the current element.

///Syntax: auto | avoid ///
Initial value: auto ///
- static member inline pageBreakInside (value: U2) = "page-break-inside" ==> value + static member inline pageBreakInside(value: U2) = + "page-break-inside" + ==> value + /// /// Thepaint-order CSS property lets you control the order in which the fill and stroke (and painting markers) of text content and shapes are drawn.

///Syntax: normal | [ fill || stroke || markers ] ///
Initial value: normal ///
- static member inline paintOrder (value: U2) = "paint-order" ==> value + static member inline paintOrder(value: U2) = + "paint-order" + ==> value + /// /// Theperspective CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective.

///Syntax: none | length ///
Initial value: none ///
- static member inline perspective (value: U2) = "perspective" ==> value + static member inline perspective(value: U2) = + "perspective" + ==> value + /// /// Theperspective-origin CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the perspective property.

///Syntax: position ///
Initial value: 50% 50% ///
- static member inline perspectiveOrigin (value: U2) = "perspective-origin" ==> value + static member inline perspectiveOrigin(value: U2) = + "perspective-origin" + ==> value + /// /// Thepointer-events CSS property sets under what circumstances (if any) a particular graphic element can become the target of pointer events.

///Syntax: auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit ///
Initial value: auto ///
- static member inline pointerEvents (value: U2) = "pointer-events" ==> value + static member inline pointerEvents(value: U2) = + "pointer-events" + ==> value + /// /// Theposition CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.

///Syntax: static | relative | absolute | sticky | fixed ///
Initial value: static ///
- static member inline position (value: U2) = "position" ==> value + static member inline position(value: U2) = + "position" + ==> value + /// /// Theprint-color-adjust CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device.

///Syntax: economy | exact ///
Initial value: economy ///
- static member inline printColorAdjust (value: U2) = "print-color-adjust" ==> value + static member inline printColorAdjust(value: U2) = + "print-color-adjust" + ==> value + /// /// Thequotes CSS property sets how the browser should render quotation marks that are added using the open-quotes or close-quotes values of the CSS content property.

///Syntax: none | auto | [ string string ]+ ///
Initial value: depends on user agent ///
- static member inline quotes (value: U2) = "quotes" ==> value + static member inline quotes(value: U2) = + "quotes" + ==> value + /// /// Theresize CSS property sets whether an element is resizable, and if so, in which directions.

///Syntax: none | both | horizontal | vertical | block | inline ///
Initial value: none ///
- static member inline resize (value: U2) = "resize" ==> value + static member inline resize(value: U2) = + "resize" + ==> value + /// /// Theright CSS property participates in specifying the horizontal position of a positioned element. It has no effect on non-positioned elements.

///Syntax: length | percentage | auto ///
Initial value: auto ///
- static member inline right (value: U2) = "right" ==> value + static member inline right(value: U2) = + "right" + ==> value + /// /// Therotate CSS property allows you to specify rotation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform property.

///Syntax: none | angle | [ x | y | z | number{3} ] && angle ///
Initial value: none ///
- static member inline rotate (value: U2) = "rotate" ==> value + static member inline rotate(value: U2) = + "rotate" + ==> value + /// /// Therow-gap CSS property sets the size of the gap (gutter) between an element's rows.

///Syntax: normal | length-percentage ///
Initial value: normal ///
- static member inline rowGap (value: U2) = "row-gap" ==> value + static member inline rowGap(value: U2) = + "row-gap" + ==> value + /// /// Theruby-align CSS property defines the distribution of the different ruby elements over the base.

///Syntax: start | center | space-between | space-around ///
Initial value: space-around ///
- static member inline rubyAlign (value: U2) = "ruby-align" ==> value + static member inline rubyAlign(value: U2) = + "ruby-align" + ==> value + ///
- static member inline rubyMerge (value: U2) = "ruby-merge" ==> value + static member inline rubyMerge(value: U2) = + "ruby-merge" + ==> value + /// /// Theruby-position CSS property defines the position of a ruby element relatives to its base element. It can be positioned over the element (over), under it (under), or between the characters on their right side (inter-character).

///Syntax: [ alternate || [ over | under ] ] | inter-character ///
Initial value: alternate ///
- static member inline rubyPosition (value: U2) = "ruby-position" ==> value + static member inline rubyPosition(value: U2) = + "ruby-position" + ==> value + /// /// Thescale CSS property allows you to specify scale transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value.

///Syntax: none | number{1,3} ///
Initial value: none ///
- static member inline scale (value: U2) = "scale" ==> value + static member inline scale(value: U2) = + "scale" + ==> value + /// /// Thescroll-behavior CSS property sets the behavior for a scrolling box when scrolling is triggered by the navigation or CSSOM scrolling APIs.

///Syntax: auto | smooth ///
Initial value: auto ///
- static member inline scrollBehavior (value: U2) = "scroll-behavior" ==> value + static member inline scrollBehavior(value: U2) = + "scroll-behavior" + ==> value + /// /// The scroll-margin-block-end property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginBlockEnd (value: U2) = "scroll-margin-block-end" ==> value + static member inline scrollMarginBlockEnd(value: U2) = + "scroll-margin-block-end" + ==> value + /// /// The scroll-margin-block-start property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginBlockStart (value: U2) = "scroll-margin-block-start" ==> value + static member inline scrollMarginBlockStart(value: U2) = + "scroll-margin-block-start" + ==> value + /// /// The scroll-margin-bottom property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginBottom (value: U2) = "scroll-margin-bottom" ==> value + static member inline scrollMarginBottom(value: U2) = + "scroll-margin-bottom" + ==> value + /// /// The scroll-margin-inline-end property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginInlineEnd (value: U2) = "scroll-margin-inline-end" ==> value + static member inline scrollMarginInlineEnd(value: U2) = + "scroll-margin-inline-end" + ==> value + /// /// The scroll-margin-inline-start property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginInlineStart (value: U2) = "scroll-margin-inline-start" ==> value + static member inline scrollMarginInlineStart(value: U2) = + "scroll-margin-inline-start" + ==> value + /// /// The scroll-margin-left property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginLeft (value: U2) = "scroll-margin-left" ==> value + static member inline scrollMarginLeft(value: U2) = + "scroll-margin-left" + ==> value + /// /// The scroll-margin-right property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginRight (value: U2) = "scroll-margin-right" ==> value + static member inline scrollMarginRight(value: U2) = + "scroll-margin-right" + ==> value + /// /// The scroll-margin-top property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollMarginTop (value: U2) = "scroll-margin-top" ==> value + static member inline scrollMarginTop(value: U2) = + "scroll-margin-top" + ==> value + /// /// The scroll-padding-block-end property defines offsets for the end edge in the block dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingBlockEnd (value: U2) = "scroll-padding-block-end" ==> value + static member inline scrollPaddingBlockEnd(value: U2) = + "scroll-padding-block-end" + ==> value + /// /// The scroll-padding-block-start property defines offsets for the start edge in the block dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingBlockStart (value: U2) = "scroll-padding-block-start" ==> value + static member inline scrollPaddingBlockStart(value: U2) = + "scroll-padding-block-start" + ==> value + /// /// The scroll-padding-bottom property defines offsets for the bottom of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingBottom (value: U2) = "scroll-padding-bottom" ==> value + static member inline scrollPaddingBottom(value: U2) = + "scroll-padding-bottom" + ==> value + /// /// The scroll-padding-inline-end property defines offsets for the end edge in the inline dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingInlineEnd (value: U2) = "scroll-padding-inline-end" ==> value + static member inline scrollPaddingInlineEnd(value: U2) = + "scroll-padding-inline-end" + ==> value + /// /// The scroll-padding-inline-start property defines offsets for the start edge in the inline dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingInlineStart (value: U2) = "scroll-padding-inline-start" ==> value + static member inline scrollPaddingInlineStart(value: U2) = + "scroll-padding-inline-start" + ==> value + /// /// The scroll-padding-left property defines offsets for the left of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingLeft (value: U2) = "scroll-padding-left" ==> value + static member inline scrollPaddingLeft(value: U2) = + "scroll-padding-left" + ==> value + /// /// The scroll-padding-right property defines offsets for the right of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingRight (value: U2) = "scroll-padding-right" ==> value + static member inline scrollPaddingRight(value: U2) = + "scroll-padding-right" + ==> value + /// /// Thescroll-padding-top property defines offsets for the top of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport.

///Syntax: auto | length-percentage ///
Initial value: auto ///
- static member inline scrollPaddingTop (value: U2) = "scroll-padding-top" ==> value + static member inline scrollPaddingTop(value: U2) = + "scroll-padding-top" + ==> value + /// /// The scroll-snap-align property specifies the box's snap position as an alignment of its snap area (as the alignment subject) within its snap container's snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value.

///Syntax: [ none | start | end | center ]{1,2} ///
Initial value: none ///
- static member inline scrollSnapAlign (value: U2) = "scroll-snap-align" ==> value + static member inline scrollSnapAlign(value: U2) = + "scroll-snap-align" + ==> value + /// /// The scroll-margin-bottom property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollSnapMarginBottom (value: U2) = "scroll-snap-margin-bottom" ==> value + static member inline scrollSnapMarginBottom(value: U2) = + "scroll-snap-margin-bottom" + ==> value + /// /// The scroll-margin-left property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollSnapMarginLeft (value: U2) = "scroll-snap-margin-left" ==> value + static member inline scrollSnapMarginLeft(value: U2) = + "scroll-snap-margin-left" + ==> value + /// /// The scroll-margin-right property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollSnapMarginRight (value: U2) = "scroll-snap-margin-right" ==> value + static member inline scrollSnapMarginRight(value: U2) = + "scroll-snap-margin-right" + ==> value + /// /// The scroll-margin-top property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets.

///Syntax: length ///
Initial value: 0 ///
- static member inline scrollSnapMarginTop (value: U2) = "scroll-snap-margin-top" ==> value + static member inline scrollSnapMarginTop(value: U2) = + "scroll-snap-margin-top" + ==> value + /// /// Thescroll-snap-stop CSS property defines whether or not the scroll container is allowed to "pass over" possible snap positions.

///Syntax: normal | always ///
Initial value: normal ///
- static member inline scrollSnapStop (value: U2) = "scroll-snap-stop" ==> value + static member inline scrollSnapStop(value: U2) = + "scroll-snap-stop" + ==> value + /// /// Thescroll-snap-type CSS property sets how strictly snap points are enforced on the scroll container in case there is one.

///Syntax: none | [ x | y | block | inline | both ] [ mandatory | proximity ]? ///
Initial value: none ///
- static member inline scrollSnapType (value: U2) = "scroll-snap-type" ==> value + static member inline scrollSnapType(value: U2) = + "scroll-snap-type" + ==> value + /// /// Thescroll-timeline-axis CSS property can be used to specify the scrollbar that will be used to provide the timeline for a scroll-timeline animation.

///Syntax: [ block | inline | x | y ]# ///
Initial value: block ///
- static member inline scrollTimelineAxis (value: U2) = "scroll-timeline-axis" ==> value + static member inline scrollTimelineAxis(value: U2) = + "scroll-timeline-axis" + ==> value + /// /// Thescroll-timeline-name CSS property defines a name that can be used to identify an element as the source of a scroll timeline for an animation.

///Syntax: none | dashed-ident# ///
Initial value: none ///
- static member inline scrollTimelineName (value: U2) = "scroll-timeline-name" ==> value + static member inline scrollTimelineName(value: U2) = + "scroll-timeline-name" + ==> value + /// /// Thescrollbar-color CSS property sets the color of the scrollbar track and thumb.

///Syntax: auto | color{2} ///
Initial value: auto ///
- static member inline scrollbarColor (value: U2) = "scrollbar-color" ==> value + static member inline scrollbarColor(value: U2) = + "scrollbar-color" + ==> value + /// /// Thescrollbar-gutter CSS property allows authors to reserve space for the scrollbar, preventing unwanted layout changes as the content grows while also avoiding unnecessary visuals when scrolling isn't needed.

///Syntax: auto | stable && both-edges? ///
Initial value: auto ///
- static member inline scrollbarGutter (value: U2) = "scrollbar-gutter" ==> value + static member inline scrollbarGutter(value: U2) = + "scrollbar-gutter" + ==> value + /// /// Thescrollbar-width property allows the author to set the maximum thickness of an element's scrollbars when they are shown.

///Syntax: auto | thin | none ///
Initial value: auto ///
- static member inline scrollbarWidth (value: U2) = "scrollbar-width" ==> value + static member inline scrollbarWidth(value: U2) = + "scrollbar-width" + ==> value + /// /// Theshape-image-threshold CSS property sets the alpha channel threshold used to extract the shape using an image as the value for shape-outside.

///Syntax: alpha-value ///
Initial value: 0.0 ///
- static member inline shapeImageThreshold (value: U2) = "shape-image-threshold" ==> value + static member inline shapeImageThreshold(value: U2) = + "shape-image-threshold" + ==> value + /// /// Theshape-margin CSS property sets a margin for a CSS shape created using shape-outside.

///Syntax: length-percentage ///
Initial value: 0 ///
- static member inline shapeMargin (value: U2) = "shape-margin" ==> value + static member inline shapeMargin(value: U2) = + "shape-margin" + ==> value + /// /// Theshape-outside CSS property defines a shape—which may be non-rectangular—around which adjacent inline content should wrap. By default, inline content wraps around its margin box; shape-outside provides a way to customize this wrapping, making it possible to wrap text around complex objects rather than simple boxes.

///Syntax: none | [ shape-box || basic-shape ] | image ///
Initial value: none ///
- static member inline shapeOutside (value: U2) = "shape-outside" ==> value + static member inline shapeOutside(value: U2) = + "shape-outside" + ==> value + /// /// Thetab-size CSS property is used to customize the width of tab characters (U+0009).

///Syntax: integer | length ///
Initial value: 8 ///
- static member inline tabSize (value: U2) = "tab-size" ==> value + static member inline tabSize(value: U2) = + "tab-size" + ==> value + /// /// Thetable-layout CSS property sets the algorithm used to lay out table cells, rows, and columns.

///Syntax: auto | fixed ///
Initial value: auto ///
- static member inline tableLayout (value: U2) = "table-layout" ==> value + static member inline tableLayout(value: U2) = + "table-layout" + ==> value + /// /// Thetext-align CSS property sets the horizontal alignment of the inline-level content inside a block element or table-cell box. This means it works like vertical-align but in the horizontal direction.

///Syntax: start | end | left | right | center | justify | match-parent ///
Initial value: start, or a nameless value that acts as left if _direction_ is ltr, right if _direction_ is rtl if start is not supported by the browser.

- static member inline textAlign (value: U2) = "text-align" ==> value + static member inline textAlign(value: U2) = + "text-align" + ==> value + /// /// Thetext-align-last CSS property sets how the last line of a block or a line, right before a forced line break, is aligned.

///Syntax: auto | start | end | left | right | center | justify ///
Initial value: auto ///
- static member inline textAlignLast (value: U2) = "text-align-last" ==> value + static member inline textAlignLast(value: U2) = + "text-align-last" + ==> value + /// /// Thetext-combine-upright CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes.

///Syntax: none | all | [ digits integer? ] ///
Initial value: none ///
- static member inline textCombineUpright (value: U2) = "text-combine-upright" ==> value + static member inline textCombineUpright(value: U2) = + "text-combine-upright" + ==> value + /// /// Thetext-decoration-color CSS property sets the color of decorations added to text by text-decoration-line.

///Syntax: color ///
Initial value: currentcolor ///
- static member inline textDecorationColor (value: U2) = "text-decoration-color" ==> value + static member inline textDecorationColor(value: U2) = + "text-decoration-color" + ==> value + /// /// Thetext-decoration-line CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline.

///Syntax: none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error ///
Initial value: none ///
- static member inline textDecorationLine (value: U2) = "text-decoration-line" ==> value + static member inline textDecorationLine(value: U2) = + "text-decoration-line" + ==> value + /// /// Thetext-decoration-skip CSS property sets what parts of an element's content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors.

///Syntax: none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ] ///
Initial value: objects ///
- static member inline textDecorationSkip (value: U2) = "text-decoration-skip" ==> value + static member inline textDecorationSkip(value: U2) = + "text-decoration-skip" + ==> value + /// /// Thetext-decoration-skip-ink CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders.

///Syntax: auto | all | none ///
Initial value: auto ///
- static member inline textDecorationSkipInk (value: U2) = "text-decoration-skip-ink" ==> value + static member inline textDecorationSkipInk(value: U2) = + "text-decoration-skip-ink" + ==> value + /// /// Thetext-decoration-style CSS property sets the style of the lines specified by text-decoration-line. The style applies to all lines that are set with text-decoration-line.

///Syntax: solid | double | dotted | dashed | wavy ///
Initial value: solid ///
- static member inline textDecorationStyle (value: U2) = "text-decoration-style" ==> value + static member inline textDecorationStyle(value: U2) = + "text-decoration-style" + ==> value + /// /// Thetext-decoration-thickness CSS property sets the stroke thickness of the decoration line that is used on text in an element, such as a line-through, underline, or overline.

///Syntax: auto | from-font | length | percentage ///
Initial value: auto ///
- static member inline textDecorationThickness (value: U2) = "text-decoration-thickness" ==> value + static member inline textDecorationThickness(value: U2) = + "text-decoration-thickness" + ==> value + /// /// Thetext-emphasis-color CSS property sets the color of emphasis marks. This value can also be set using the text-emphasis shorthand.

///Syntax: color ///
Initial value: currentcolor ///
- static member inline textEmphasisColor (value: U2) = "text-emphasis-color" ==> value + static member inline textEmphasisColor(value: U2) = + "text-emphasis-color" + ==> value + /// /// Thetext-emphasis-position CSS property sets where emphasis marks are drawn. Like ruby text, if there isn't enough room for emphasis marks, the line height is increased.

///Syntax: [ over | under ] && [ right | left ] ///
Initial value: over right ///
- static member inline textEmphasisPosition (value: U2) = "text-emphasis-position" ==> value + static member inline textEmphasisPosition(value: U2) = + "text-emphasis-position" + ==> value + /// /// Thetext-emphasis-style CSS property sets the appearance of emphasis marks. It can also be set, and reset, using the text-emphasis shorthand.

///Syntax: none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | string ///
Initial value: none ///
- static member inline textEmphasisStyle (value: U2) = "text-emphasis-style" ==> value + static member inline textEmphasisStyle(value: U2) = + "text-emphasis-style" + ==> value + /// /// Thetext-indent CSS property sets the length of empty space (indentation) that is put before lines of text in a block.

///Syntax: length-percentage && hanging? && each-line? ///
Initial value: 0 ///
- static member inline textIndent (value: U2) = "text-indent" ==> value + static member inline textIndent(value: U2) = + "text-indent" + ==> value + /// /// Thetext-justify CSS property sets what type of justification should be applied to text when text-align: justify; is set on an element.

///Syntax: auto | inter-character | inter-word | none ///
Initial value: auto ///
- static member inline textJustify (value: U2) = "text-justify" ==> value + static member inline textJustify(value: U2) = + "text-justify" + ==> value + /// /// Thetext-orientation CSS property sets the orientation of the text characters in a line. It only affects text in vertical mode (when writing-mode is not horizontal-tb). It is useful for controlling the display of languages that use vertical script, and also for making vertical table headers.

///Syntax: mixed | upright | sideways ///
Initial value: mixed ///
- static member inline textOrientation (value: U2) = "text-orientation" ==> value + static member inline textOrientation(value: U2) = + "text-orientation" + ==> value + /// /// Thetext-overflow CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis (''), or display a custom string.

///Syntax: [ clip | ellipsis | string ]{1,2} ///
Initial value: clip ///
- static member inline textOverflow (value: U2) = "text-overflow" ==> value + static member inline textOverflow(value: U2) = + "text-overflow" + ==> value + /// /// Thetext-rendering CSS property provides information to the rendering engine about what to optimize for when rendering text.

///Syntax: auto | optimizeSpeed | optimizeLegibility | geometricPrecision ///
Initial value: auto ///
- static member inline textRendering (value: U2) = "text-rendering" ==> value + static member inline textRendering(value: U2) = + "text-rendering" + ==> value + /// /// Thetext-shadow CSS property adds shadows to text. It accepts a comma-separated list of shadows to be applied to the text and any of its decorations. Each shadow is described by some combination of X and Y offsets from the element, blur radius, and color.

///Syntax: none | shadow-t# ///
Initial value: none ///
- static member inline textShadow (value: U2) = "text-shadow" ==> value + static member inline textShadow(value: U2) = + "text-shadow" + ==> value + /// /// Thetext-size-adjust CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property.

///Syntax: none | auto | percentage ///
Initial value: auto for smartphone browsers supporting inflation, none in other cases (and then not modifiable).

- static member inline textSizeAdjust (value: U2) = "text-size-adjust" ==> value + static member inline textSizeAdjust(value: U2) = + "text-size-adjust" + ==> value + /// /// Thetext-transform CSS property specifies how to capitalize an element's text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. It also can help improve legibility for ruby.

///Syntax: none | capitalize | uppercase | lowercase | full-width | full-size-kana ///
Initial value: none ///
- static member inline textTransform (value: U2) = "text-transform" ==> value + static member inline textTransform(value: U2) = + "text-transform" + ==> value + /// /// Thetext-underline-offset CSS property sets the offset distance of an underline text decoration line (applied using text-decoration) from its original position.

///Syntax: auto | length | percentage ///
Initial value: auto ///
- static member inline textUnderlineOffset (value: U2) = "text-underline-offset" ==> value + static member inline textUnderlineOffset(value: U2) = + "text-underline-offset" + ==> value + /// /// Thetext-underline-position CSS property specifies the position of the underline which is set using the text-decoration property's underline value.

///Syntax: auto | from-font | [ under || [ left | right ] ] ///
Initial value: auto ///
- static member inline textUnderlinePosition (value: U2) = "text-underline-position" ==> value + static member inline textUnderlinePosition(value: U2) = + "text-underline-position" + ==> value + /// /// Thetext-wrap CSS property controls how text inside an element is wrapped. The different values provide: ///
Syntax: wrap | nowrap | balance | stable | pretty ///
Initial value: wrap ///
- static member inline textWrap (value: U2) = "text-wrap" ==> value + static member inline textWrap(value: U2) = + "text-wrap" + ==> value + /// /// Thetimeline-scope CSS property modifies the scope of a named animation timeline.

///Syntax: none | dashed-ident# ///
Initial value: none ///
- static member inline timelineScope (value: U2) = "timeline-scope" ==> value + static member inline timelineScope(value: U2) = + "timeline-scope" + ==> value + /// /// Thetop CSS property participates in specifying the vertical position of a positioned element. It has no effect on non-positioned elements.

///Syntax: length | percentage | auto ///
Initial value: auto ///
- static member inline top (value: U2) = "top" ==> value + static member inline top(value: U2) = + "top" + ==> value + /// /// Thetouch-action CSS property sets how an element's region can be manipulated by a touchscreen user (for example, by zooming features built into the browser).

///Syntax: auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation ///
Initial value: auto ///
- static member inline touchAction (value: U2) = "touch-action" ==> value + static member inline touchAction(value: U2) = + "touch-action" + ==> value + /// /// Thetransform CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model.

///Syntax: none | transform-list ///
Initial value: none ///
- static member inline transform (value: U2) = "transform" ==> value + static member inline transform(value: U2) = + "transform" + ==> value + /// /// Thetransform-box CSS property defines the layout box to which the transform, individual transform properties translate,scale, and rotate, and transform-origin properties relate.

///Syntax: content-box | border-box | fill-box | stroke-box | view-box ///
Initial value: view-box ///
- static member inline transformBox (value: U2) = "transform-box" ==> value + static member inline transformBox(value: U2) = + "transform-box" + ==> value + /// /// Thetransform-origin CSS property sets the origin for an element's transformations.

///Syntax: [ length-percentage | left | center | right | top | bottom ] | [ [ length-percentage | left | center | right ] && [ length-percentage | top | center | bottom ] ] length? ///
Initial value: 50% 50% 0 ///
- static member inline transformOrigin (value: U2) = "transform-origin" ==> value + static member inline transformOrigin(value: U2) = + "transform-origin" + ==> value + /// /// Thetransform-style CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element.

///Syntax: flat | preserve-3d ///
Initial value: flat ///
- static member inline transformStyle (value: U2) = "transform-style" ==> value + static member inline transformStyle(value: U2) = + "transform-style" + ==> value + /// /// Thetransition-behavior CSS property specifies whether transitions will be started for properties whose animation behavior is discrete.

///Syntax: transition-behavior-value# ///
Initial value: normal ///
- static member inline transitionBehavior (value: U2) = "transition-behavior" ==> value + static member inline transitionBehavior(value: U2) = + "transition-behavior" + ==> value + /// /// Thetransition-delay CSS property specifies the duration to wait before starting a property's transition effect when its value changes.

///Syntax: time# ///
Initial value: 0s ///
- static member inline transitionDelay (value: U2) = "transition-delay" ==> value + static member inline transitionDelay(value: U2) = + "transition-delay" + ==> value + /// /// Thetransition-duration CSS property sets the length of time a transition animation should take to complete. By default, the value is 0s, meaning that no animation will occur.

///Syntax: time# ///
Initial value: 0s ///
- static member inline transitionDuration (value: U2) = "transition-duration" ==> value + static member inline transitionDuration(value: U2) = + "transition-duration" + ==> value + /// /// Thetransition-property CSS property sets the CSS properties to which a transition effect should be applied.

///Syntax: none | single-transition-property# ///
Initial value: all ///
- static member inline transitionProperty (value: U2) = "transition-property" ==> value + static member inline transitionProperty(value: U2) = + "transition-property" + ==> value + /// /// Thetransition-timing-function CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect.

///Syntax: easing-function# ///
Initial value: ease ///
- static member inline transitionTimingFunction (value: U2) = "transition-timing-function" ==> value + static member inline transitionTimingFunction(value: U2) = + "transition-timing-function" + ==> value + /// /// Thetranslate CSS property allows you to specify translation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value.

///Syntax: none | length-percentage [ length-percentage length? ]? ///
Initial value: none ///
- static member inline translate (value: U2) = "translate" ==> value + static member inline translate(value: U2) = + "translate" + ==> value + /// /// Theunicode-bidi CSS property, together with the direction property, determines how bidirectional text in a document is handled. For example, if a block of content contains both left-to-right and right-to-left text, the user-agent uses a complex Unicode algorithm to decide how to display the text. The unicode-bidi property overrides this algorithm and allows the developer to control the text embedding.

///Syntax: normal | embed | isolate | bidi-override | isolate-override | plaintext ///
Initial value: normal ///
- static member inline unicodeBidi (value: U2) = "unicode-bidi" ==> value + static member inline unicodeBidi(value: U2) = + "unicode-bidi" + ==> value + /// /// Theuser-select CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes.

///Syntax: auto | text | none | contain | all ///
Initial value: auto ///
- static member inline userSelect (value: U2) = "user-select" ==> value + static member inline userSelect(value: U2) = + "user-select" + ==> value + /// /// Thevertical-align CSS property sets vertical alignment of an inline, inline-block or table-cell box.

///Syntax: baseline | sub | super | text-top | text-bottom | middle | top | bottom | percentage | length ///
Initial value: baseline ///
- static member inline verticalAlign (value: U2) = "vertical-align" ==> value + static member inline verticalAlign(value: U2) = + "vertical-align" + ==> value + /// /// Theview-timeline-axis CSS property is used to specify the scrollbar direction that will be used to provide the timeline for a _named view progress timeline_ animation, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). view-timeline-axis is set on the subject. See CSS scroll-driven animations for more details.

///Syntax: [ block | inline | x | y ]# ///
Initial value: block ///
- static member inline viewTimelineAxis (value: U2) = "view-timeline-axis" ==> value + static member inline viewTimelineAxis(value: U2) = + "view-timeline-axis" + ==> value + /// /// Theview-timeline-inset CSS property is used to specify one or two values representing an adjustment to the position of the scrollport (see Scroll container for more details) in which the subject element of a _named view progress timeline_ animation is deemed to be visible. Put another way, this allows you to specify start and/or end inset (or outset) values that offset the position of the timeline.

///Syntax: [ [ auto | length-percentage ]{1,2} ]# ///
Initial value: auto ///
- static member inline viewTimelineInset (value: U2) = "view-timeline-inset" ==> value + static member inline viewTimelineInset(value: U2) = + "view-timeline-inset" + ==> value + /// /// Theview-timeline-name CSS property is used to define the name of a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). view-timeline is set on the subject.

///Syntax: none | dashed-ident# ///
Initial value: none ///
- static member inline viewTimelineName (value: U2) = "view-timeline-name" ==> value + static member inline viewTimelineName(value: U2) = + "view-timeline-name" + ==> value + /// /// Theview-transition-name CSS property provides the selected element with a distinct identifying name (a custom-ident) and causes it to participate in a separate view transition from the root view transition — or no view transition if the none value is specified.

///Syntax: none | custom-ident ///
Initial value: none ///
- static member inline viewTransitionName (value: U2) = "view-transition-name" ==> value + static member inline viewTransitionName(value: U2) = + "view-transition-name" + ==> value + /// /// Thevisibility CSS property shows or hides an element without changing the layout of a document. The property can also hide rows or columns in a table.

///Syntax: visible | hidden | collapse ///
Initial value: visible ///
- static member inline visibility (value: U2) = "visibility" ==> value + static member inline visibility(value: U2) = + "visibility" + ==> value + /// /// Thewhite-space CSS property sets how white space inside an element is handled.

///Syntax: normal | pre | nowrap | pre-wrap | pre-line | break-spaces | [ 'white-space-collapse' || 'text-wrap' || 'white-space-trim' ] ///
Initial value: normal ///
- static member inline whiteSpace (value: U2) = "white-space" ==> value + static member inline whiteSpace(value: U2) = + "white-space" + ==> value + /// /// Thewhite-space-collapse CSS property controls how white space inside an element is collapsed.

///Syntax: collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces ///
Initial value: collapse ///
- static member inline whiteSpaceCollapse (value: U2) = "white-space-collapse" ==> value + static member inline whiteSpaceCollapse(value: U2) = + "white-space-collapse" + ==> value + ///
- static member inline whiteSpaceTrim (value: U2) = "white-space-trim" ==> value + static member inline whiteSpaceTrim(value: U2) = + "white-space-trim" + ==> value + /// /// Thewidows CSS property sets the minimum number of lines in a block container that must be shown at the _top_ of a page, region, or column.

///Syntax: integer ///
Initial value: 2 ///
- static member inline widows (value: U2) = "widows" ==> value + static member inline widows(value: U2) = + "widows" + ==> value + /// /// Thewidth CSS property sets an element's width. By default, it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.

///Syntax: auto | length | percentage | min-content | max-content | fit-content | fit-content(length-percentage) ///
Initial value: auto ///
- static member inline width (value: U2) = "width" ==> value + static member inline width(value: U2) = + "width" + ==> value + /// /// Thewill-change CSS property hints to browsers how an element is expected to change. Browsers may set up optimizations before an element is actually changed. These kinds of optimizations can increase the responsiveness of a page by doing potentially expensive work before they are actually required.

///Syntax: auto | animateable-feature# ///
Initial value: auto ///
- static member inline willChange (value: U2) = "will-change" ==> value + static member inline willChange(value: U2) = + "will-change" + ==> value + /// /// Theword-break CSS property sets whether line breaks appear wherever the text would otherwise overflow its content box.

///Syntax: normal | break-all | keep-all | break-word ///
Initial value: normal ///
- static member inline wordBreak (value: U2) = "word-break" ==> value + static member inline wordBreak(value: U2) = + "word-break" + ==> value + /// /// Theword-spacing CSS property sets the length of space between words and between tags.

///Syntax: normal | length ///
Initial value: normal ///
- static member inline wordSpacing (value: U2) = "word-spacing" ==> value + static member inline wordSpacing(value: U2) = + "word-spacing" + ==> value + /// /// Theoverflow-wrap CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box.

///Syntax: normal | break-word ///
Initial value: normal ///
- static member inline wordWrap (value: U2) = "word-wrap" ==> value + static member inline wordWrap(value: U2) = + "word-wrap" + ==> value + /// /// Thewriting-mode CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (html element for HTML documents).

///Syntax: horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr ///
Initial value: horizontal-tb ///
- static member inline writingMode (value: U2) = "writing-mode" ==> value + static member inline writingMode(value: U2) = + "writing-mode" + ==> value + /// /// Thez-index CSS property sets the z-order of a positioned element and its descendants or flex items. Overlapping elements with a larger z-index cover those with a smaller one.

///Syntax: auto | integer ///
Initial value: auto ///
- static member inline zIndex (value: U2) = "z-index" ==> value + static member inline zIndex(value: U2) = + "z-index" + ==> value + /// /// The non-standardzoom CSS property can be used to control the magnification level of an element. transform: scale() should be used instead of this property, if possible. However, unlike CSS Transforms, zoom affects the layout size of the element.

///Syntax: normal | reset | number | percentage ///
Initial value: normal ///
- static member inline zoom (value: U2) = "zoom" ==> value + static member inline zoom(value: U2) = + "zoom" + ==> value + /// /// Theall shorthand CSS property resets all of an element's properties except unicode-bidi, direction, and CSS Custom Properties. It can set properties to their initial or inherited values, or to the values specified in another cascade layer or stylesheet origin.

///Syntax: initial | inherit | unset | revert | revert-layer ///
Initial value: There is no practical initial value for it.

- static member inline all (value: U2) = "all" ==> value + static member inline all(value: U2) = + "all" + ==> value + /// /// Theanimation shorthand CSS property applies an animation between styles. It is a shorthand for animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, and animation-play-state.

///Syntax: single-animation# ///
- static member inline animation (value: U2) = "animation" ==> value + static member inline animation(value: U2) = + "animation" + ==> value + /// /// Theanimation-range CSS shorthand property is used to set the start and end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start and end.

///Syntax: [ 'animation-range-start' 'animation-range-end'? ]# ///
- static member inline animationRange (value: U2) = "animation-range" ==> value + static member inline animationRange(value: U2) = + "animation-range" + ==> value + /// /// Thebackground shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method.

///Syntax: [ bg-layer , ]* final-bg-layer ///
- static member inline background (value: U2) = "background" ==> value + static member inline background(value: U2) = + "background" + ==> value + /// /// Thebackground-position CSS property sets the initial position for each background image. The position is relative to the position layer set by background-origin.

///Syntax: bg-position# ///
Initial value: 0% 0% ///
- static member inline backgroundPosition (value: U2) = "background-position" ==> value + static member inline backgroundPosition(value: U2) = + "background-position" + ==> value + /// /// Theborder shorthand CSS property sets an element's border. It sets the values of border-width, border-style, and border-color.

///Syntax: line-width || line-style || color ///
- static member inline border (value: U2) = "border" ==> value + static member inline border(value: U2) = + "border" + ==> value + /// /// Theborder-block CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet.

///Syntax: 'border-top-width' || 'border-top-style' || color ///
- static member inline borderBlock (value: U2) = "border-block" ==> value + static member inline borderBlock(value: U2) = + "border-block" + ==> value + /// /// Theborder-block-end CSS property is a shorthand property for setting the individual logical block-end border property values in a single place in the style sheet.

///Syntax: 'border-top-width' || 'border-top-style' || color ///
- static member inline borderBlockEnd (value: U2) = "border-block-end" ==> value + static member inline borderBlockEnd(value: U2) = + "border-block-end" + ==> value + /// /// Theborder-block-start CSS property is a shorthand property for setting the individual logical block-start border property values in a single place in the style sheet.

///Syntax: 'border-top-width' || 'border-top-style' || color ///
- static member inline borderBlockStart (value: U2) = "border-block-start" ==> value + static member inline borderBlockStart(value: U2) = + "border-block-start" + ==> value + /// /// Theborder-bottom shorthand CSS property sets an element's bottom border. It sets the values of border-bottom-width, border-bottom-style and border-bottom-color.

///Syntax: line-width || line-style || color ///
- static member inline borderBottom (value: U2) = "border-bottom" ==> value + static member inline borderBottom(value: U2) = + "border-bottom" + ==> value + /// /// Theborder-color shorthand CSS property sets the color of an element's border.

///Syntax: color{1,4} ///
- static member inline borderColor (value: U2) = "border-color" ==> value + static member inline borderColor(value: U2) = + "border-color" + ==> value + /// /// Theborder-image CSS property draws an image around a given element. It replaces the element's regular border.

///Syntax: 'border-image-source' || 'border-image-slice' [ / 'border-image-width' | / 'border-image-width'? / 'border-image-outset' ]? || 'border-image-repeat' ///
- static member inline borderImage (value: U2) = "border-image" ==> value + static member inline borderImage(value: U2) = + "border-image" + ==> value + /// /// Theborder-inline CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet.

///Syntax: 'border-top-width' || 'border-top-style' || color ///
- static member inline borderInline (value: U2) = "border-inline" ==> value + static member inline borderInline(value: U2) = + "border-inline" + ==> value + /// /// Theborder-inline-end CSS property is a shorthand property for setting the individual logical inline-end border property values in a single place in the style sheet.

///Syntax: 'border-top-width' || 'border-top-style' || color ///
- static member inline borderInlineEnd (value: U2) = "border-inline-end" ==> value + static member inline borderInlineEnd(value: U2) = + "border-inline-end" + ==> value + /// /// Theborder-inline-start CSS property is a shorthand property for setting the individual logical inline-start border property values in a single place in the style sheet.

///Syntax: 'border-top-width' || 'border-top-style' || color ///
- static member inline borderInlineStart (value: U2) = "border-inline-start" ==> value + static member inline borderInlineStart(value: U2) = + "border-inline-start" + ==> value + /// /// Theborder-left shorthand CSS property sets all the properties of an element's left border.

///Syntax: line-width || line-style || color ///
- static member inline borderLeft (value: U2) = "border-left" ==> value + static member inline borderLeft(value: U2) = + "border-left" + ==> value + /// /// Theborder-radius CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners.

///Syntax: length-percentage{1,4} [ / length-percentage{1,4} ]? ///
- static member inline borderRadius (value: U2) = "border-radius" ==> value + static member inline borderRadius(value: U2) = + "border-radius" + ==> value + /// /// Theborder-right shorthand CSS property sets all the properties of an element's right border.

///Syntax: line-width || line-style || color ///
- static member inline borderRight (value: U2) = "border-right" ==> value + static member inline borderRight(value: U2) = + "border-right" + ==> value + /// /// Theborder-style shorthand CSS property sets the line style for all four sides of an element's border.

///Syntax: line-style{1,4} ///
- static member inline borderStyle (value: U2) = "border-style" ==> value + static member inline borderStyle(value: U2) = + "border-style" + ==> value + /// /// Theborder-top shorthand CSS property sets all the properties of an element's top border.

///Syntax: line-width || line-style || color ///
- static member inline borderTop (value: U2) = "border-top" ==> value + static member inline borderTop(value: U2) = + "border-top" + ==> value + /// /// Theborder-width shorthand CSS property sets the width of an element's border.

///Syntax: line-width{1,4} ///
- static member inline caret (value: U2) = "caret" ==> value + static member inline caret(value: U2) = + "caret" + ==> value + /// /// Thecolumn-rule shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout.

///Syntax: 'column-rule-width' || 'column-rule-style' || 'column-rule-color' ///
- static member inline columnRule (value: U2) = "column-rule" ==> value + static member inline columnRule(value: U2) = + "column-rule" + ==> value + /// /// Thecolumns CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths.

///Syntax: 'column-width' || 'column-count' ///
- static member inline columns (value: U2) = "columns" ==> value + static member inline columns(value: U2) = + "columns" + ==> value + /// /// Thecontain-intrinsic-size CSS shorthand property sets the size of an element that a browser will use for layout when the element is subject to size containment.

///Syntax: [ auto? [ none | length ] ]{1,2} ///
- static member inline containIntrinsicSize (value: U2) = "contain-intrinsic-size" ==> value + static member inline containIntrinsicSize(value: U2) = + "contain-intrinsic-size" + ==> value + /// /// Thecontainer shorthand CSS property establishes the element as a query container and specifies the name or name for the containment context used in a container query.

///Syntax: 'container-name' [ / 'container-type' ]? ///
- static member inline container (value: U2) = "container" ==> value + static member inline container(value: U2) = + "container" + ==> value + /// /// Theflex CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container.

///Syntax: none | [ 'flex-grow' 'flex-shrink'? || 'flex-basis' ] ///
- static member inline flex (value: U2) = "flex" ==> value + static member inline flex(value: U2) = + "flex" + ==> value + /// /// Theflex-flow CSS shorthand property specifies the direction of a flex container, as well as its wrapping behavior.

///Syntax: 'flex-direction' || 'flex-wrap' ///
- static member inline flexFlow (value: U2) = "flex-flow" ==> value + static member inline flexFlow(value: U2) = + "flex-flow" + ==> value + /// /// Thefont CSS shorthand property sets all the different properties of an element's font. Alternatively, it sets an element's font to a system font.

///Syntax: [ [ 'font-style' || font-variant-css21 || 'font-weight' || 'font-stretch' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar ///
- static member inline font (value: U2) = "font" ==> value + static member inline font(value: U2) = + "font" + ==> value + /// /// Thegap CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for row-gap and column-gap.

///Syntax: 'row-gap' 'column-gap'? ///
- static member inline gap (value: U2) = "gap" ==> value + static member inline gap(value: U2) = + "gap" + ==> value + /// /// Thegrid CSS property is a shorthand property that sets all of the explicit and implicit grid properties in a single declaration.

///Syntax: 'grid-template' | 'grid-template-rows' / [ auto-flow && dense? ] 'grid-auto-columns'? | [ auto-flow && dense? ] 'grid-auto-rows'? / 'grid-template-columns' ///
- static member inline grid (value: U2) = "grid" ==> value + static member inline grid(value: U2) = + "grid" + ==> value + /// /// Thegrid-area CSS shorthand property specifies a grid item's size and location within a grid by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the edges of its grid area.

///Syntax: grid-line [ / grid-line ]{0,3} ///
- static member inline gridArea (value: U2) = "grid-area" ==> value + static member inline gridArea(value: U2) = + "grid-area" + ==> value + /// /// Thegrid-column CSS shorthand property specifies a grid item's size and location within a grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area.

///Syntax: grid-line [ / grid-line ]? ///
- static member inline gridColumn (value: U2) = "grid-column" ==> value + static member inline gridColumn(value: U2) = + "grid-column" + ==> value + /// /// Thegrid-row CSS shorthand property specifies a grid item's size and location within a grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area.

///Syntax: grid-line [ / grid-line ]? ///
- static member inline gridRow (value: U2) = "grid-row" ==> value + static member inline gridRow(value: U2) = + "grid-row" + ==> value + /// /// Thegrid-template CSS property is a shorthand property for defining grid columns, grid rows, and grid areas.

///Syntax: none | [ 'grid-template-rows' / 'grid-template-columns' ] | [ line-names? string track-size? line-names? ]+ [ / explicit-track-list ]? ///
- static member inline gridTemplate (value: U2) = "grid-template" ==> value + static member inline gridTemplate(value: U2) = + "grid-template" + ==> value + /// /// Theinset CSS property is a shorthand that corresponds to the top, right, bottom, and/or left properties. It has the same multi-value syntax of the margin shorthand.

///Syntax: 'top'{1,4} ///
- static member inline inset (value: U2) = "inset" ==> value + static member inline inset(value: U2) = + "inset" + ==> value + /// /// Theinset-block CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'top'{1,2} ///
- static member inline insetBlock (value: U2) = "inset-block" ==> value + static member inline insetBlock(value: U2) = + "inset-block" + ==> value + /// /// Theinset-inline CSS property defines the logical start and end offsets of an element in the inline direction, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation.

///Syntax: 'top'{1,2} ///
- static member inline insetInline (value: U2) = "inset-inline" ==> value + static member inline insetInline(value: U2) = + "inset-inline" + ==> value + ///
- static member inline lineClamp (value: U2) = "line-clamp" ==> value + static member inline lineClamp(value: U2) = + "line-clamp" + ==> value + /// /// Thelist-style CSS shorthand property allows you to set all the list style properties at once.

///Syntax: 'list-style-type' || 'list-style-position' || 'list-style-image' ///
- static member inline listStyle (value: U2) = "list-style" ==> value + static member inline listStyle(value: U2) = + "list-style" + ==> value + /// /// Themargin CSS shorthand property sets the margin area on all four sides of an element.

///Syntax: [ length | percentage | auto ]{1,4} ///
- static member inline margin (value: U2) = "margin" ==> value + static member inline margin(value: U2) = + "margin" + ==> value + /// /// Themargin-block CSS shorthand property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'margin-left'{1,2} ///
- static member inline marginBlock (value: U2) = "margin-block" ==> value + static member inline marginBlock(value: U2) = + "margin-block" + ==> value + /// /// Themargin-inline CSS shorthand property is a shorthand property that defines both the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'margin-left'{1,2} ///
- static member inline marginInline (value: U2) = "margin-inline" ==> value + static member inline marginInline(value: U2) = + "margin-inline" + ==> value + /// /// Themask CSS shorthand property hides an element (partially or fully) by masking or clipping the image at specific points.

///Syntax: mask-layer# ///
- static member inline mask (value: U2) = "mask" ==> value + static member inline mask(value: U2) = + "mask" + ==> value + /// /// Themask-border CSS shorthand property lets you create a mask along the edge of an element's border.

///Syntax: 'mask-border-source' || 'mask-border-slice' [ / 'mask-border-width'? [ / 'mask-border-outset' ]? ]? || 'mask-border-repeat' || 'mask-border-mode' ///
- static member inline maskBorder (value: U2) = "mask-border" ==> value + static member inline maskBorder(value: U2) = + "mask-border" + ==> value + /// /// Theoffset CSS shorthand property sets all the properties required for animating an element along a defined path.

///Syntax: [ 'offset-position'? [ 'offset-path' [ 'offset-distance' || 'offset-rotate' ]? ]? ]! [ / 'offset-anchor' ]? ///
- static member inline motion (value: U2) = "motion" ==> value + static member inline motion(value: U2) = + "motion" + ==> value + /// /// Theoffset CSS shorthand property sets all the properties required for animating an element along a defined path.

///Syntax: [ 'offset-position'? [ 'offset-path' [ 'offset-distance' || 'offset-rotate' ]? ]? ]! [ / 'offset-anchor' ]? ///
- static member inline offset (value: U2) = "offset" ==> value + static member inline offset(value: U2) = + "offset" + ==> value + /// /// Theoutline CSS shorthand property sets most of the outline properties in a single declaration.

///Syntax: [ 'outline-color' || 'outline-style' || 'outline-width' ] ///
- static member inline outline (value: U2) = "outline" ==> value + static member inline outline(value: U2) = + "outline" + ==> value + /// /// Theoverflow CSS shorthand property sets the desired behavior for an element's overflow — i.e. when an element's content is too big to fit in its block formatting context — in both directions.

///Syntax: [ visible | hidden | clip | scroll | auto ]{1,2} ///
Initial value: visible ///
- static member inline overflow (value: U2) = "overflow" ==> value + static member inline overflow(value: U2) = + "overflow" + ==> value + /// /// Theoverscroll-behavior CSS property sets what a browser does when reaching the boundary of a scrolling area. It's a shorthand for overscroll-behavior-x and overscroll-behavior-y.

///Syntax: [ contain | none | auto ]{1,2} ///
Initial value: auto ///
- static member inline overscrollBehavior (value: U2) = "overscroll-behavior" ==> value + static member inline overscrollBehavior(value: U2) = + "overscroll-behavior" + ==> value + /// /// Thepadding CSS shorthand property sets the padding area on all four sides of an element at once.

///Syntax: [ length | percentage ]{1,4} ///
- static member inline padding (value: U2) = "padding" ==> value + static member inline padding(value: U2) = + "padding" + ==> value + /// /// Thepadding-block CSS shorthand property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'padding-left'{1,2} ///
- static member inline paddingBlock (value: U2) = "padding-block" ==> value + static member inline paddingBlock(value: U2) = + "padding-block" + ==> value + /// /// Thepadding-inline CSS shorthand property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation.

///Syntax: 'padding-left'{1,2} ///
- static member inline paddingInline (value: U2) = "padding-inline" ==> value + static member inline paddingInline(value: U2) = + "padding-inline" + ==> value + /// /// Theplace-content CSS shorthand property allows you to align content along both the block and inline directions at once (i.e. the align-content and justify-content properties) in a relevant layout system such as Grid or Flexbox.

///Syntax: 'align-content' 'justify-content'? ///
- static member inline placeContent (value: U2) = "place-content" ==> value + static member inline placeContent(value: U2) = + "place-content" + ==> value + /// /// The CSSplace-items shorthand property allows you to align items along both the block and inline directions at once (i.e. the align-items and justify-items properties) in a relevant layout system such as Grid or Flexbox. If the second value is not set, the first value is also used for it.

///Syntax: 'align-items' 'justify-items'? ///
- static member inline placeItems (value: U2) = "place-items" ==> value + static member inline placeItems(value: U2) = + "place-items" + ==> value + /// /// Theplace-self CSS shorthand property allows you to align an individual item in both the block and inline directions at once (i.e. the align-self and justify-self properties) in a relevant layout system such as Grid or Flexbox. If the second value is not present, the first value is also used for it.

///Syntax: 'align-self' 'justify-self'? ///
- static member inline placeSelf (value: U2) = "place-self" ==> value + static member inline placeSelf(value: U2) = + "place-self" + ==> value + /// /// Thescroll-margin shorthand property sets all of the scroll margins of an element at once, assigning values much like the margin property does for margins of an element.

///Syntax: length{1,4} ///
- static member inline scrollMargin (value: U2) = "scroll-margin" ==> value + static member inline scrollMargin(value: U2) = + "scroll-margin" + ==> value + /// /// The scroll-margin-block shorthand property sets the scroll margins of an element in the block dimension.

///Syntax: length{1,2} ///
- static member inline scrollMarginBlock (value: U2) = "scroll-margin-block" ==> value + static member inline scrollMarginBlock(value: U2) = + "scroll-margin-block" + ==> value + /// /// The scroll-margin-inline shorthand property sets the scroll margins of an element in the inline dimension.

///Syntax: length{1,2} ///
- static member inline scrollMarginInline (value: U2) = "scroll-margin-inline" ==> value + static member inline scrollMarginInline(value: U2) = + "scroll-margin-inline" + ==> value + /// /// Thescroll-padding shorthand property sets scroll padding on all sides of an element at once, much like the padding property does for padding on an element.

///Syntax: [ auto | length-percentage ]{1,4} ///
- static member inline scrollPadding (value: U2) = "scroll-padding" ==> value + static member inline scrollPadding(value: U2) = + "scroll-padding" + ==> value + /// /// The scroll-padding-block shorthand property sets the scroll padding of an element in the block dimension.

///Syntax: [ auto | length-percentage ]{1,2} ///
- static member inline scrollPaddingBlock (value: U2) = "scroll-padding-block" ==> value + static member inline scrollPaddingBlock(value: U2) = + "scroll-padding-block" + ==> value + /// /// The scroll-padding-inline shorthand property sets the scroll padding of an element in the inline dimension.

///Syntax: [ auto | length-percentage ]{1,2} ///
- static member inline scrollPaddingInline (value: U2) = "scroll-padding-inline" ==> value + static member inline scrollPaddingInline(value: U2) = + "scroll-padding-inline" + ==> value + /// /// Thescroll-margin shorthand property sets all of the scroll margins of an element at once, assigning values much like the margin property does for margins of an element.

///Syntax: length{1,4} ///
- static member inline scrollSnapMargin (value: U2) = "scroll-snap-margin" ==> value + static member inline scrollSnapMargin(value: U2) = + "scroll-snap-margin" + ==> value + /// /// Thescroll-timeline CSS shorthand property defines a name that can be used to identify the source element of a scroll timeline, along with the scrollbar axis that should provide the timeline.

///Syntax: [ 'scroll-timeline-name' 'scroll-timeline-axis'? ]# ///
- static member inline scrollTimeline (value: U2) = "scroll-timeline" ==> value + static member inline scrollTimeline(value: U2) = + "scroll-timeline" + ==> value + /// /// Thetext-decoration shorthand CSS property sets the appearance of decorative lines on text. It is a shorthand for text-decoration-line, text-decoration-color, text-decoration-style, and the newer text-decoration-thickness property.

///Syntax: 'text-decoration-line' || 'text-decoration-style' || 'text-decoration-color' || 'text-decoration-thickness' ///
- static member inline textDecoration (value: U2) = "text-decoration" ==> value + static member inline textDecoration(value: U2) = + "text-decoration" + ==> value + /// /// Thetext-emphasis CSS property applies emphasis marks to text (except spaces and control characters). It is a shorthand for text-emphasis-style and text-emphasis-color.

///Syntax: 'text-emphasis-style' || 'text-emphasis-color' ///
- static member inline textEmphasis (value: U2) = "text-emphasis" ==> value + static member inline textEmphasis(value: U2) = + "text-emphasis" + ==> value + /// /// Thetransition CSS property is a shorthand property for transition-property, transition-duration, transition-timing-function, and transition-delay.

///Syntax: single-transition# ///
- static member inline transition (value: U2) = "transition" ==> value + static member inline transition(value: U2) = + "transition" + ==> value + /// /// Theview-timeline CSS shorthand property is used to define a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). view-timeline is set on the subject.

///Syntax: [ 'view-timeline-name' 'view-timeline-axis'? ]# ///
- static member inline viewTimeline (value: U2) = "view-timeline" ==> value + static member inline viewTimeline(value: U2) = + "view-timeline" + ==> value type SvgStyle = - static member inline alignmentBaseline (value: U2) = "alignment-baseline" ==> value - static member inline baselineShift (value: U2) = "baseline-shift" ==> value - static member inline clip (value: U2) = "clip" ==> value - static member inline clipPath (value: U2) = "clip-path" ==> value - static member inline clipRule (value: U2) = "clip-rule" ==> value - static member inline color (value: U2) = "color" ==> value - static member inline colorInterpolation (value: U2) = "color-interpolation" ==> value - static member inline colorRendering (value: U2) = "color-rendering" ==> value - static member inline cursor (value: U2) = "cursor" ==> value - static member inline direction (value: U2) = "direction" ==> value - static member inline display (value: U2) = "display" ==> value - static member inline dominantBaseline (value: U2) = "dominant-baseline" ==> value - static member inline fill (value: U2) = "fill" ==> value - static member inline fillOpacity (value: U4) = "fill-opacity" ==> value - static member inline fillRule (value: U2) = "fill-rule" ==> value - static member inline filter (value: U2) = "filter" ==> value - static member inline floodColor (value: U2) = "flood-color" ==> value - static member inline floodOpacity (value: U4) = "flood-opacity" ==> value - static member inline font (value: U2) = "font" ==> value - static member inline fontFamily (value: U2) = "font-family" ==> value - static member inline fontSize (value: U3) = "font-size" ==> value - static member inline fontSizeAdjust (value: U2) = "font-size-adjust" ==> value - static member inline fontStretch (value: U2) = "font-stretch" ==> value - static member inline fontStyle (value: U2) = "font-style" ==> value - static member inline fontVariant (value: U2) = "font-variant" ==> value - static member inline fontWeight (value: U3) = "font-weight" ==> value - static member inline glyphOrientationVertical (value: U2) = "glyph-orientation-vertical" ==> value - static member inline imageRendering (value: U2) = "image-rendering" ==> value - static member inline letterSpacing (value: U2) = "letter-spacing" ==> value - static member inline lightingColor (value: U2) = "lighting-color" ==> value - static member inline lineHeight (value: U3) = "line-height" ==> value - static member inline marker (value: U2) = "marker" ==> value - static member inline markerEnd (value: U2) = "marker-end" ==> value - static member inline markerMid (value: U2) = "marker-mid" ==> value - static member inline markerStart (value: U2) = "marker-start" ==> value - static member inline mask (value: U2) = "mask" ==> value - static member inline opacity (value: U4) = "opacity" ==> value - static member inline overflow (value: U2) = "overflow" ==> value - static member inline paintOrder (value: U2) = "paint-order" ==> value - static member inline pointerEvents (value: U2) = "pointer-events" ==> value - static member inline shapeRendering (value: U2) = "shape-rendering" ==> value - static member inline stopColor (value: U2) = "stop-color" ==> value - static member inline stopOpacity (value: U4) = "stop-opacity" ==> value - static member inline stroke (value: U2) = "stroke" ==> value - static member inline strokeDasharray (value: U2) = "stroke-dasharray" ==> value - static member inline strokeDashoffset (value: U2) = "stroke-dashoffset" ==> value - static member inline strokeLinecap (value: U2) = "stroke-linecap" ==> value - static member inline strokeLinejoin (value: U2) = "stroke-linejoin" ==> value - static member inline strokeMiterlimit (value: U2) = "stroke-miterlimit" ==> value - static member inline strokeOpacity (value: U4) = "stroke-opacity" ==> value - static member inline strokeWidth (value: U4) = "stroke-width" ==> value - static member inline textAnchor (value: U2) = "text-anchor" ==> value - static member inline textDecoration (value: U2) = "text-decoration" ==> value - static member inline textRendering (value: U2) = "text-rendering" ==> value - static member inline unicodeBidi (value: U2) = "unicode-bidi" ==> value - static member inline vectorEffect (value: U2) = "vector-effect" ==> value - static member inline visibility (value: U2) = "visibility" ==> value - static member inline whiteSpace (value: U2) = "white-space" ==> value - static member inline wordSpacing (value: U2) = "word-spacing" ==> value - static member inline writingMode (value: U2) = "writing-mode" ==> value + static member inline alignmentBaseline(value: U2) = + "alignment-baseline" + ==> value + + static member inline baselineShift(value: U2) = + "baseline-shift" + ==> value + + static member inline clip(value: U2) = + "clip" + ==> value + + static member inline clipPath(value: U2) = + "clip-path" + ==> value + + static member inline clipRule(value: U2) = + "clip-rule" + ==> value + + static member inline color(value: U2) = + "color" + ==> value + + static member inline colorInterpolation(value: U2) = + "color-interpolation" + ==> value + + static member inline colorRendering(value: U2) = + "color-rendering" + ==> value + + static member inline cursor(value: U2) = + "cursor" + ==> value + + static member inline direction(value: U2) = + "direction" + ==> value + + static member inline display(value: U2) = + "display" + ==> value + + static member inline dominantBaseline(value: U2) = + "dominant-baseline" + ==> value + + static member inline fill(value: U2) = + "fill" + ==> value + + static member inline fillOpacity(value: U4) = + "fill-opacity" + ==> value + + static member inline fillRule(value: U2) = + "fill-rule" + ==> value + + static member inline filter(value: U2) = + "filter" + ==> value + + static member inline floodColor(value: U2) = + "flood-color" + ==> value + + static member inline floodOpacity(value: U4) = + "flood-opacity" + ==> value + + static member inline font(value: U2) = + "font" + ==> value + + static member inline fontFamily(value: U2) = + "font-family" + ==> value + + static member inline fontSize(value: U3) = + "font-size" + ==> value + + static member inline fontSizeAdjust(value: U2) = + "font-size-adjust" + ==> value + + static member inline fontStretch(value: U2) = + "font-stretch" + ==> value + + static member inline fontStyle(value: U2) = + "font-style" + ==> value + + static member inline fontVariant(value: U2) = + "font-variant" + ==> value + + static member inline fontWeight(value: U3) = + "font-weight" + ==> value + + static member inline glyphOrientationVertical(value: U2) = + "glyph-orientation-vertical" + ==> value + + static member inline imageRendering(value: U2) = + "image-rendering" + ==> value + + static member inline letterSpacing(value: U2) = + "letter-spacing" + ==> value + + static member inline lightingColor(value: U2) = + "lighting-color" + ==> value + + static member inline lineHeight(value: U3) = + "line-height" + ==> value + + static member inline marker(value: U2) = + "marker" + ==> value + + static member inline markerEnd(value: U2) = + "marker-end" + ==> value + + static member inline markerMid(value: U2) = + "marker-mid" + ==> value + + static member inline markerStart(value: U2) = + "marker-start" + ==> value + + static member inline mask(value: U2) = + "mask" + ==> value + + static member inline opacity(value: U4) = + "opacity" + ==> value + + static member inline overflow(value: U2) = + "overflow" + ==> value + + static member inline paintOrder(value: U2) = + "paint-order" + ==> value + + static member inline pointerEvents(value: U2) = + "pointer-events" + ==> value + + static member inline shapeRendering(value: U2) = + "shape-rendering" + ==> value + + static member inline stopColor(value: U2) = + "stop-color" + ==> value + + static member inline stopOpacity(value: U4) = + "stop-opacity" + ==> value + + static member inline stroke(value: U2) = + "stroke" + ==> value + + static member inline strokeDasharray(value: U2) = + "stroke-dasharray" + ==> value + + static member inline strokeDashoffset(value: U2) = + "stroke-dashoffset" + ==> value + + static member inline strokeLinecap(value: U2) = + "stroke-linecap" + ==> value + + static member inline strokeLinejoin(value: U2) = + "stroke-linejoin" + ==> value + + static member inline strokeMiterlimit(value: U2) = + "stroke-miterlimit" + ==> value + + static member inline strokeOpacity(value: U4) = + "stroke-opacity" + ==> value + + static member inline strokeWidth(value: U4) = + "stroke-width" + ==> value + + static member inline textAnchor(value: U2) = + "text-anchor" + ==> value + + static member inline textDecoration(value: U2) = + "text-decoration" + ==> value + + static member inline textRendering(value: U2) = + "text-rendering" + ==> value + + static member inline unicodeBidi(value: U2) = + "unicode-bidi" + ==> value + + static member inline vectorEffect(value: U2) = + "vector-effect" + ==> value + + static member inline visibility(value: U2) = + "visibility" + ==> value + + static member inline whiteSpace(value: U2) = + "white-space" + ==> value + + static member inline wordSpacing(value: U2) = + "word-spacing" + ==> value + + static member inline writingMode(value: U2) = + "writing-mode" + ==> value diff --git a/Partas.Solid/StyleSpec.fs b/Partas.Solid/StyleSpec.fs index 1aecede..17ae8b9 100644 --- a/Partas.Solid/StyleSpec.fs +++ b/Partas.Solid/StyleSpec.fs @@ -1,4 +1,5 @@ namespace Partas.Solid.Style + open Fable.Core open Fable.Core.JS open Fable.Core.JsInterop @@ -28,7 +29,7 @@ module Types = | [] StartingStyle | [] Supports | [] Viewport - + [] [] [] @@ -39,7 +40,7 @@ module Types = | Revert | RevertLayer | Unset - + [] [] [] @@ -2034,7 +2035,7 @@ module Types = | WindowFrame | WindowText | Currentcolor - + [] [] type BorderBottomStyle = @@ -5527,7 +5528,7 @@ module Types = | RevertLayer | Unset | Auto - + [] [] type GridTemplateColumns = @@ -8914,7 +8915,7 @@ module Types = | Unset | Normal | Reset - + [] [] type MsAccelerator = @@ -10322,7 +10323,7 @@ module Types = | Unset | NonScalingStroke | None - + [] module AtRule = [] @@ -10333,7 +10334,7 @@ module Types = | Numbers | SpellOut | Words - + [] [] type System = @@ -10343,7 +10344,7 @@ module Types = | Fixed | Numeric | Symbolic - + [] [] type FontDisplay = @@ -10352,7 +10353,7 @@ module Types = | Fallback | Optional | Swap - + [] [] type FontStretch = @@ -10365,14 +10366,14 @@ module Types = | SemiExpanded | UltraCondensed | UltraExpanded - + [] [] type FontStyle = | Italic | Normal | Oblique - + [] [] type FontVariant = @@ -10416,33 +10417,32 @@ module Types = type FontWeight = | Bold | Normal - + [] [] - type LineGapOverride = - | Normal - + type LineGapOverride = | Normal + [] [] type BasePalette = | Dark | Light - - + + [] [] type Marks = | Crop | Cross | None - + [] [] type PageOrientation = | RotateLeft | RotateRight | Upright - + [] [] type Size = @@ -10459,11 +10459,11 @@ module Types = | Auto | Landscape | Portrait - - + + [] module DataType = - + [] [] type AbsoluteSize = @@ -10475,20 +10475,20 @@ module Types = | XxLarge | XxSmall | XxxLarge - + [] [] type AnimateableFeature = | Contents | ScrollPosition - + [] [] type Attachment = | Fixed | Local | Scroll - + [] [] type BgPosition = @@ -10497,14 +10497,14 @@ module Types = | Left | Right | Top - + [] [] type BgSize = | Auto | Contain | Cover - + [] [] type BlendMode = @@ -10524,14 +10524,14 @@ module Types = | Saturation | Screen | SoftLight - + [] [] type Box = | BorderBox | ContentBox | PaddingBox - + [] [] type Color = @@ -10713,7 +10713,7 @@ module Types = | WindowFrame | WindowText | Currentcolor - + [] [] type CompatAuto = @@ -10729,7 +10729,7 @@ module Types = | SliderHorizontal | SquareButton | Textarea - + [] [] type CompositeStyle = @@ -10744,7 +10744,7 @@ module Types = | SourceOut | SourceOver | Xor - + [] [] type CompositingOperator = @@ -10752,7 +10752,7 @@ module Types = | Exclude | Intersect | Subtract - + [] [] type ContentDistribution = @@ -10760,7 +10760,7 @@ module Types = | SpaceBetween | SpaceEvenly | Stretch - + [] [] type ContentList = @@ -10769,7 +10769,7 @@ module Types = | NoOpenQuote | OpenQuote | Contents - + [] [] type ContentPosition = @@ -10778,7 +10778,7 @@ module Types = | FlexEnd | FlexStart | Start - + [] [] type CubicBezierTimingFunction = @@ -10786,10 +10786,9 @@ module Types = | EaseIn | EaseInOut | EaseOut - - type Dasharray<'TLength> = - U2<'TLength, obj> - + + type Dasharray<'TLength> = U2<'TLength, obj> + [] [] type DeprecatedSystemColor = @@ -10821,7 +10820,7 @@ module Types = | Window | WindowFrame | WindowText - + [] [] type DisplayInside = @@ -10834,7 +10833,7 @@ module Types = | Grid | Ruby | Table - + [] [] type DisplayInternal = @@ -10850,7 +10849,7 @@ module Types = | TableHeaderGroup | TableRow | TableRowGroup - + [] [] type DisplayLegacy = @@ -10862,14 +10861,14 @@ module Types = | InlineGrid | InlineListItem | InlineTable - + [] [] type DisplayOutside = | Block | Inline | RunIn - + [] [] type EasingFunction = @@ -10880,7 +10879,7 @@ module Types = | StepEnd | StepStart | Linear - + [] [] type EastAsianVariantValues = @@ -10890,7 +10889,7 @@ module Types = | Jis90 | Simplified | Traditional - + [] [] type FinalBgLayer = @@ -11090,7 +11089,7 @@ module Types = | ContentBox | PaddingBox | None - + [] [] type FontStretchAbsolute = @@ -11103,13 +11102,13 @@ module Types = | SemiExpanded | UltraCondensed | UltraExpanded - + [] [] type FontWeightAbsolute = | Bold | Normal - + [] [] type GenericFamily = @@ -11118,7 +11117,7 @@ module Types = | Monospace | SansSerif | Serif - + [] [] type GeometryBox = @@ -11129,12 +11128,11 @@ module Types = | MarginBox | StrokeBox | ViewBox - + [] [] - type GridLine = - | Auto - + type GridLine = | Auto + [] [] type LineStyle = @@ -11148,14 +11146,14 @@ module Types = | Outset | Ridge | Solid - + [] [] type LineWidth = | Medium | Thick | Thin - + [] [] type MaskLayer = @@ -11186,14 +11184,14 @@ module Types = | MatchSource | NoClip | None - + [] [] type MaskingMode = | Alpha | Luminance | MatchSource - + [] [] type NamedColor = @@ -11346,7 +11344,7 @@ module Types = | Whitesmoke | Yellow | Yellowgreen - + [] [] type PageSize = @@ -11360,7 +11358,7 @@ module Types = | Ledger | Legal | Letter - + [] [] type Paint = @@ -11546,7 +11544,7 @@ module Types = | ContextFill | ContextStroke | None - + [] [] type Position = @@ -11555,7 +11553,7 @@ module Types = | Left | Right | Top - + [] [] type Quote = @@ -11563,7 +11561,7 @@ module Types = | NoCloseQuote | NoOpenQuote | OpenQuote - + [] [] type RepeatStyle = @@ -11573,7 +11571,7 @@ module Types = | RepeatY | Round | Space - + [] [] type SelfPosition = @@ -11584,7 +11582,7 @@ module Types = | SelfEnd | SelfStart | Start - + [] [] type SingleAnimation = @@ -11607,14 +11605,14 @@ module Types = | Infinite | Paused | Running - + [] [] type SingleAnimationComposition = | Accumulate | Add | Replace - + [] [] type SingleAnimationDirection = @@ -11622,7 +11620,7 @@ module Types = | AlternateReverse | Normal | Reverse - + [] [] type SingleAnimationFillMode = @@ -11630,13 +11628,13 @@ module Types = | Both | Forwards | None - + [] [] type SingleAnimationTimeline = | Auto | None - + [] [] type SingleTransition = @@ -11651,13 +11649,13 @@ module Types = | AllowDiscrete | None | Normal - + [] [] type StepTimingFunction = | StepEnd | StepStart - + [] [] type TimelineRangeName = @@ -11667,19 +11665,18 @@ module Types = | EntryCrossing | Exit | ExitCrossing - + [] [] type TrackBreadth = | Auto | MaxContent | MinContent - + [] [] - type ViewportLength = - | Auto - + type ViewportLength = | Auto + [] [] type VisualBox = diff --git a/Partas.Solid/Svg.fs b/Partas.Solid/Svg.fs index 1836119..9d6f8e0 100644 --- a/Partas.Solid/Svg.fs +++ b/Partas.Solid/Svg.fs @@ -5,573 +5,459 @@ open Partas.Solid.Experimental.U /// Providing the attribute ``alignment-baseline`` to interfaces to prevent collisions [] -type alignmentbaselineAttributeInterfaceProvider = - interface end +type alignmentbaselineAttributeInterfaceProvider = interface end /// Providing the attribute ``baseline-shift`` to interfaces to prevent collisions [] -type baselineshiftAttributeInterfaceProvider = - interface end +type baselineshiftAttributeInterfaceProvider = interface end /// Providing the attribute clip to interfaces to prevent collisions [] -type clipAttributeInterfaceProvider = - interface end +type clipAttributeInterfaceProvider = interface end /// Providing the attribute ``clip-path`` to interfaces to prevent collisions [] -type clippathAttributeInterfaceProvider = - interface end +type clippathAttributeInterfaceProvider = interface end /// Providing the attribute ``clip-rule`` to interfaces to prevent collisions [] -type clipruleAttributeInterfaceProvider = - interface end +type clipruleAttributeInterfaceProvider = interface end /// Providing the attribute color to interfaces to prevent collisions [] -type colorAttributeInterfaceProvider = - interface end +type colorAttributeInterfaceProvider = interface end /// Providing the attribute ``color-interpolation`` to interfaces to prevent collisions [] -type colorinterpolationAttributeInterfaceProvider = - interface end +type colorinterpolationAttributeInterfaceProvider = interface end /// Providing the attribute ``color-interpolation-filters`` to interfaces to prevent collisions [] -type colorinterpolationfiltersAttributeInterfaceProvider = - interface end +type colorinterpolationfiltersAttributeInterfaceProvider = interface end /// Providing the attribute ``color-profile`` to interfaces to prevent collisions [] -type colorprofileAttributeInterfaceProvider = - interface end +type colorprofileAttributeInterfaceProvider = interface end /// Providing the attribute ``color-rendering`` to interfaces to prevent collisions [] -type colorrenderingAttributeInterfaceProvider = - interface end +type colorrenderingAttributeInterfaceProvider = interface end /// Providing the attribute cursor to interfaces to prevent collisions [] -type cursorAttributeInterfaceProvider = - interface end +type cursorAttributeInterfaceProvider = interface end /// Providing the attribute direction to interfaces to prevent collisions [] -type directionAttributeInterfaceProvider = - interface end +type directionAttributeInterfaceProvider = interface end /// Providing the attribute display to interfaces to prevent collisions [] -type displayAttributeInterfaceProvider = - interface end +type displayAttributeInterfaceProvider = interface end /// Providing the attribute ``dominant-baseline`` to interfaces to prevent collisions [] -type dominantbaselineAttributeInterfaceProvider = - interface end +type dominantbaselineAttributeInterfaceProvider = interface end /// Providing the attribute ``enable-background`` to interfaces to prevent collisions [] -type enablebackgroundAttributeInterfaceProvider = - interface end +type enablebackgroundAttributeInterfaceProvider = interface end /// Providing the attribute fill to interfaces to prevent collisions [] -type fillAttributeInterfaceProvider = - interface end +type fillAttributeInterfaceProvider = interface end /// Providing the attribute ``fill-opacity`` to interfaces to prevent collisions [] -type fillopacityAttributeInterfaceProvider = - interface end +type fillopacityAttributeInterfaceProvider = interface end /// Providing the attribute ``fill-rule`` to interfaces to prevent collisions [] -type fillruleAttributeInterfaceProvider = - interface end +type fillruleAttributeInterfaceProvider = interface end /// Providing the attribute filter to interfaces to prevent collisions [] -type filterAttributeInterfaceProvider = - interface end +type filterAttributeInterfaceProvider = interface end /// Providing the attribute ``flood-color`` to interfaces to prevent collisions [] -type floodcolorAttributeInterfaceProvider = - interface end +type floodcolorAttributeInterfaceProvider = interface end /// Providing the attribute ``flood-opacity`` to interfaces to prevent collisions [] -type floodOpacityAttributeInterfaceProvider = - interface end +type floodOpacityAttributeInterfaceProvider = interface end /// Providing the attribute ``font-family`` to interfaces to prevent collisions [] -type fontFamilyAttributeInterfaceProvider = - interface end +type fontFamilyAttributeInterfaceProvider = interface end /// Providing the attribute ``font-size`` to interfaces to prevent collisions [] -type fontSizeAttributeInterfaceProvider = - interface end +type fontSizeAttributeInterfaceProvider = interface end /// Providing the attribute ``font-size-adjust`` to interfaces to prevent collisions [] -type fontSizeAdjustAttributeInterfaceProvider = - interface end +type fontSizeAdjustAttributeInterfaceProvider = interface end /// Providing the attribute ``font-stretch`` to interfaces to prevent collisions [] -type fontStretchAttributeInterfaceProvider = - interface end +type fontStretchAttributeInterfaceProvider = interface end /// Providing the attribute ``font-style`` to interfaces to prevent collisions [] -type fontStyleAttributeInterfaceProvider = - interface end +type fontStyleAttributeInterfaceProvider = interface end /// Providing the attribute ``font-variant`` to interfaces to prevent collisions [] -type fontVariantAttributeInterfaceProvider = - interface end +type fontVariantAttributeInterfaceProvider = interface end /// Providing the attribute ``font-weight`` to interfaces to prevent collisions [] -type fontWeightAttributeInterfaceProvider = - interface end +type fontWeightAttributeInterfaceProvider = interface end /// Providing the attribute ``glyph-orientation-horizontal`` to interfaces to prevent collisions [] -type glyphOrientationHorizontalAttributeInterfaceProvider = - interface end +type glyphOrientationHorizontalAttributeInterfaceProvider = interface end /// Providing the attribute ``glyph-orientation-vertical`` to interfaces to prevent collisions [] -type glyphOrientationVerticalAttributeInterfaceProvider = - interface end +type glyphOrientationVerticalAttributeInterfaceProvider = interface end /// Providing the attribute ``image-rendering`` to interfaces to prevent collisions [] -type imageRenderingAttributeInterfaceProvider = - interface end +type imageRenderingAttributeInterfaceProvider = interface end /// Providing the attribute kerning to interfaces to prevent collisions [] -type kerningAttributeInterfaceProvider = - interface end +type kerningAttributeInterfaceProvider = interface end /// Providing the attribute ``letter-spacing`` to interfaces to prevent collisions [] -type letterSpacingAttributeInterfaceProvider = - interface end +type letterSpacingAttributeInterfaceProvider = interface end /// Providing the attribute ``marker-end`` to interfaces to prevent collisions [] -type markerEndAttributeInterfaceProvider = - interface end +type markerEndAttributeInterfaceProvider = interface end /// Providing the attribute ``marker-mid`` to interfaces to prevent collisions [] -type markerMidAttributeInterfaceProvider = - interface end +type markerMidAttributeInterfaceProvider = interface end /// Providing the attribute ``marker-start`` to interfaces to prevent collisions [] -type markerStartAttributeInterfaceProvider = - interface end +type markerStartAttributeInterfaceProvider = interface end /// Providing the attribute mask to interfaces to prevent collisions [] -type maskAttributeInterfaceProvider = - interface end +type maskAttributeInterfaceProvider = interface end /// Providing the attribute opacity to interfaces to prevent collisions [] -type opacityAttributeInterfaceProvider = - interface end +type opacityAttributeInterfaceProvider = interface end /// Providing the attribute overflow to interfaces to prevent collisions [] -type overflowAttributeInterfaceProvider = - interface end +type overflowAttributeInterfaceProvider = interface end /// Providing the attribute pathLength to interfaces to prevent collisions [] -type pathLengthAttributeInterfaceProvider = - interface end +type pathLengthAttributeInterfaceProvider = interface end /// Providing the attribute ``pointer-events`` to interfaces to prevent collisions [] -type pointerEventsAttributeInterfaceProvider = - interface end +type pointerEventsAttributeInterfaceProvider = interface end /// Providing the attribute ``shape-rendering`` to interfaces to prevent collisions [] -type shapeRenderingAttributeInterfaceProvider = - interface end +type shapeRenderingAttributeInterfaceProvider = interface end /// Providing the attribute ``stop-color`` to interfaces to prevent collisions [] -type stopColorAttributeInterfaceProvider = - interface end +type stopColorAttributeInterfaceProvider = interface end /// Providing the attribute ``stop-opacity`` to interfaces to prevent collisions [] -type stopOpacityAttributeInterfaceProvider = - interface end +type stopOpacityAttributeInterfaceProvider = interface end /// Providing the attribute stroke to interfaces to prevent collisions [] -type strokeAttributeInterfaceProvider = - interface end +type strokeAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-dasharray`` to interfaces to prevent collisions [] -type strokeDasharrayAttributeInterfaceProvider = - interface end +type strokeDasharrayAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-dashoffset`` to interfaces to prevent collisions [] -type strokeDashoffsetAttributeInterfaceProvider = - interface end +type strokeDashoffsetAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-linecap`` to interfaces to prevent collisions [] -type strokeLinecapAttributeInterfaceProvider = - interface end +type strokeLinecapAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-linejoin`` to interfaces to prevent collisions [] -type strokeLinejoinAttributeInterfaceProvider = - interface end +type strokeLinejoinAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-miterlimit`` to interfaces to prevent collisions [] -type strokeMiterlimitAttributeInterfaceProvider = - interface end +type strokeMiterlimitAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-opacity`` to interfaces to prevent collisions [] -type strokeOpacityAttributeInterfaceProvider = - interface end +type strokeOpacityAttributeInterfaceProvider = interface end /// Providing the attribute ``stroke-width`` to interfaces to prevent collisions [] -type strokeWidthAttributeInterfaceProvider = - interface end +type strokeWidthAttributeInterfaceProvider = interface end /// Providing the attribute ``text-anchor`` to interfaces to prevent collisions [] -type textAnchorAttributeInterfaceProvider = - interface end +type textAnchorAttributeInterfaceProvider = interface end /// Providing the attribute ``text-decoration`` to interfaces to prevent collisions [] -type textDecorationAttributeInterfaceProvider = - interface end +type textDecorationAttributeInterfaceProvider = interface end /// Providing the attribute ``text-rendering`` to interfaces to prevent collisions [] -type textRenderingAttributeInterfaceProvider = - interface end +type textRenderingAttributeInterfaceProvider = interface end /// Providing the attribute ``unicode-bidi`` to interfaces to prevent collisions [] -type unicodeBidiAttributeInterfaceProvider = - interface end +type unicodeBidiAttributeInterfaceProvider = interface end /// Providing the attribute visibility to interfaces to prevent collisions [] -type visibilityAttributeInterfaceProvider = - interface end +type visibilityAttributeInterfaceProvider = interface end /// Providing the attribute ``word-spacing`` to interfaces to prevent collisions [] -type wordSpacingAttributeInterfaceProvider = - interface end +type wordSpacingAttributeInterfaceProvider = interface end /// Providing the attribute ``writing-mode`` to interfaces to prevent collisions [] -type writingModeAttributeInterfaceProvider = - interface end +type writingModeAttributeInterfaceProvider = interface end /// Providing the attribute version to interfaces to prevent collisions [] -type versionAttributeInterfaceProvider = - interface end +type versionAttributeInterfaceProvider = interface end /// Providing the attribute baseProfile to interfaces to prevent collisions [] -type baseProfileAttributeInterfaceProvider = - interface end +type baseProfileAttributeInterfaceProvider = interface end /// Providing the attribute x to interfaces to prevent collisions [] -type xAttributeInterfaceProvider = - interface end +type xAttributeInterfaceProvider = interface end /// Providing the attribute y to interfaces to prevent collisions [] -type yAttributeInterfaceProvider = - interface end +type yAttributeInterfaceProvider = interface end /// Providing the attribute width to interfaces to prevent collisions [] -type widthAttributeInterfaceProvider = - interface end +type widthAttributeInterfaceProvider = interface end /// Providing the attribute height to interfaces to prevent collisions [] -type heightAttributeInterfaceProvider = - interface end +type heightAttributeInterfaceProvider = interface end /// Providing the attribute contentScriptType to interfaces to prevent collisions [] -type contentScriptTypeAttributeInterfaceProvider = - interface end +type contentScriptTypeAttributeInterfaceProvider = interface end /// Providing the attribute contentStyleType to interfaces to prevent collisions [] -type contentStyleTypeAttributeInterfaceProvider = - interface end +type contentStyleTypeAttributeInterfaceProvider = interface end /// Providing the attribute xmlns to interfaces to prevent collisions [] -type xmlnsAttributeInterfaceProvider = - interface end +type xmlnsAttributeInterfaceProvider = interface end /// Providing the attribute href to interfaces to prevent collisions [] -type hrefAttributeInterfaceProvider = - interface end +type hrefAttributeInterfaceProvider = interface end /// Providing the attribute markerUnits to interfaces to prevent collisions [] -type markerUnitsAttributeInterfaceProvider = - interface end +type markerUnitsAttributeInterfaceProvider = interface end /// Providing the attribute refX to interfaces to prevent collisions [] -type refXAttributeInterfaceProvider = - interface end +type refXAttributeInterfaceProvider = interface end /// Providing the attribute refY to interfaces to prevent collisions [] -type refYAttributeInterfaceProvider = - interface end +type refYAttributeInterfaceProvider = interface end /// Providing the attribute markerWidth to interfaces to prevent collisions [] -type markerWidthAttributeInterfaceProvider = - interface end +type markerWidthAttributeInterfaceProvider = interface end /// Providing the attribute markerHeight to interfaces to prevent collisions [] -type markerHeightAttributeInterfaceProvider = - interface end +type markerHeightAttributeInterfaceProvider = interface end /// Providing the attribute orient to interfaces to prevent collisions [] -type orientAttributeInterfaceProvider = - interface end +type orientAttributeInterfaceProvider = interface end /// Providing the attribute maskUnits to interfaces to prevent collisions [] -type maskUnitsAttributeInterfaceProvider = - interface end +type maskUnitsAttributeInterfaceProvider = interface end /// Providing the attribute maskContentUnits to interfaces to prevent collisions [] -type maskContentUnitsAttributeInterfaceProvider = - interface end +type maskContentUnitsAttributeInterfaceProvider = interface end /// Providing the attribute patternUnits to interfaces to prevent collisions [] -type patternUnitsAttributeInterfaceProvider = - interface end +type patternUnitsAttributeInterfaceProvider = interface end /// Providing the attribute patternContentUnits to interfaces to prevent collisions [] -type patternContentUnitsAttributeInterfaceProvider = - interface end +type patternContentUnitsAttributeInterfaceProvider = interface end /// Providing the attribute patternTransform to interfaces to prevent collisions [] -type patternTransformAttributeInterfaceProvider = - interface end +type patternTransformAttributeInterfaceProvider = interface end /// Providing the attribute preserveAspectRatio to interfaces to prevent collisions [] -type preserveAspectRatioAttributeInterfaceProvider = - interface end +type preserveAspectRatioAttributeInterfaceProvider = interface end /// Providing the attribute viewBox to interfaces to prevent collisions [] -type viewBoxAttributeInterfaceProvider = - interface end +type viewBoxAttributeInterfaceProvider = interface end /// Providing the attribute type' to interfaces to prevent collisions [] -type typeAttributeInterfaceProvider = - interface end +type typeAttributeInterfaceProvider = interface end /// Providing the attribute operator to interfaces to prevent collisions [] -type operatorAttributeInterfaceProvider = - interface end +type operatorAttributeInterfaceProvider = interface end /// Providing the attribute kernelUnitLength to interfaces to prevent collisions [] -type kernelUnitLengthAttributeInterfaceProvider = - interface end +type kernelUnitLengthAttributeInterfaceProvider = interface end /// Providing the attribute surfaceScale to interfaces to prevent collisions [] -type surfaceScaleAttributeInterfaceProvider = - interface end +type surfaceScaleAttributeInterfaceProvider = interface end /// Providing the attribute ``lightning-color`` to interfaces to prevent collisions [] -type lightningColorAttributeInterfaceProvider = - interface end +type lightningColorAttributeInterfaceProvider = interface end /// Providing the attribute dx to interfaces to prevent collisions [] -type dxAttributeInterfaceProvider = - interface end +type dxAttributeInterfaceProvider = interface end /// Providing the attribute dy to interfaces to prevent collisions [] -type dyAttributeInterfaceProvider = - interface end +type dyAttributeInterfaceProvider = interface end /// Providing the attribute stdDeviation to interfaces to prevent collisions [] -type stdDeviationAttributeInterfaceProvider = - interface end +type stdDeviationAttributeInterfaceProvider = interface end /// Providing the attribute specularExponent to interfaces to prevent collisions [] -type specularExponentAttributeInterfaceProvider = - interface end +type specularExponentAttributeInterfaceProvider = interface end /// Providing the attribute x1 to interfaces to prevent collisions [] -type x1AttributeInterfaceProvider = - interface end +type x1AttributeInterfaceProvider = interface end /// Providing the attribute x2 to interfaces to prevent collisions [] -type x2AttributeInterfaceProvider = - interface end +type x2AttributeInterfaceProvider = interface end /// Providing the attribute y1 to interfaces to prevent collisions [] -type y1AttributeInterfaceProvider = - interface end +type y1AttributeInterfaceProvider = interface end /// Providing the attribute y2 to interfaces to prevent collisions [] -type y2AttributeInterfaceProvider = - interface end +type y2AttributeInterfaceProvider = interface end /// Providing the attribute cx to interfaces to prevent collisions [] -type cxAttributeInterfaceProvider = - interface end +type cxAttributeInterfaceProvider = interface end /// Providing the attribute cy to interfaces to prevent collisions [] -type cyAttributeInterfaceProvider = - interface end +type cyAttributeInterfaceProvider = interface end /// Providing the attribute r to interfaces to prevent collisions [] -type rAttributeInterfaceProvider = - interface end +type rAttributeInterfaceProvider = interface end /// Providing the attribute rx to interfaces to prevent collisions [] -type rxAttributeInterfaceProvider = - interface end +type rxAttributeInterfaceProvider = interface end /// Providing the attribute ry to interfaces to prevent collisions [] -type ryAttributeInterfaceProvider = - interface end +type ryAttributeInterfaceProvider = interface end /// Providing the attribute d to interfaces to prevent collisions [] -type dAttributeInterfaceProvider = - interface end +type dAttributeInterfaceProvider = interface end /// Providing the attribute points to interfaces to prevent collisions [] -type pointsAttributeInterfaceProvider = - interface end +type pointsAttributeInterfaceProvider = interface end /// Providing the attribute rotate to interfaces to prevent collisions [] -type rotateAttributeInterfaceProvider = - interface end +type rotateAttributeInterfaceProvider = interface end /// Providing the attribute textLength to interfaces to prevent collisions [] -type textLengthAttributeInterfaceProvider = - interface end +type textLengthAttributeInterfaceProvider = interface end /// Providing the attribute lengthAdjust to interfaces to prevent collisions [] -type lengthAdjustAttributeInterfaceProvider = - interface end +type lengthAdjustAttributeInterfaceProvider = interface end /// Providing the attribute z to interfaces to prevent collisions [] -type zAttributeInterfaceProvider = - interface end +type zAttributeInterfaceProvider = interface end /// Providing the attribute offset to interfaces to prevent collisions [] -type offsetAttributeInterfaceProvider = - interface end +type offsetAttributeInterfaceProvider = interface end [] [] -type TransformableSVGAttributes = - interface end +type TransformableSVGAttributes = interface end [] [] -type ConditionalProcessingSVGAttributes = - interface end +type ConditionalProcessingSVGAttributes = interface end [] [] -type ExternalResourceSVGAttributes = - interface end +type ExternalResourceSVGAttributes = interface end [] [] -type AnimationTimingSVGAttributes = - interface end +type AnimationTimingSVGAttributes = interface end [] [] -type AnimationValueSVGAttributes = - interface end +type AnimationValueSVGAttributes = interface end [] [] -type AnimationAdditionSVGAttributes = - interface end +type AnimationAdditionSVGAttributes = interface end [] [] -type AnimationAttributeTargetSVGAttributes = - interface end +type AnimationAttributeTargetSVGAttributes = interface end [] [] @@ -656,13 +542,11 @@ type FilterPrimitiveElementSVGAttributes = [] [] -type SingleInputFilterSVGAttributes = - interface end +type SingleInputFilterSVGAttributes = interface end [] [] -type DoubleInputFilterSVGAttributes = - interface end +type DoubleInputFilterSVGAttributes = interface end [] [] @@ -718,7 +602,7 @@ type ShapeElementSVGAttributes = inherit strokeMiterlimitAttributeInterfaceProvider inherit strokeOpacityAttributeInterfaceProvider inherit strokeWidthAttributeInterfaceProvider - + [] [] type ContainerElementSVGAttributes = @@ -731,7 +615,7 @@ type ContainerElementSVGAttributes = inherit filterAttributeInterfaceProvider inherit maskAttributeInterfaceProvider inherit opacityAttributeInterfaceProvider - + [] [] type TextContentElementSVGAttributes = @@ -771,8 +655,7 @@ type TextContentElementSVGAttributes = [] [] -type ZoomAndPanSVGAttributes = - interface end +type ZoomAndPanSVGAttributes = interface end [] [] @@ -1332,8 +1215,8 @@ module AttributeExtensions = [] member this.alignmentBaseline - with inline set(value: string) = this.``alignment-baseline`` <- value - and inline get(): string = this.``alignment-baseline`` + with inline set (value: string) = this.``alignment-baseline`` <- value + and inline get (): string = this.``alignment-baseline`` type baselineshiftAttributeInterfaceProvider with [] @@ -1344,8 +1227,8 @@ module AttributeExtensions = [] member this.baselineShift - with inline set(value: U2) = this.``baseline-shift`` <- value - and inline get(): U2 = this.``baseline-shift`` + with inline set (value: U2) = this.``baseline-shift`` <- value + and inline get (): U2 = this.``baseline-shift`` type clipAttributeInterfaceProvider with [] @@ -1362,8 +1245,8 @@ module AttributeExtensions = [] member this.clipPath - with inline set(value: string) = this.``clip-path`` <- value - and inline get(): string = this.``clip-path`` + with inline set (value: string) = this.``clip-path`` <- value + and inline get (): string = this.``clip-path`` type clipruleAttributeInterfaceProvider with [] @@ -1374,8 +1257,8 @@ module AttributeExtensions = [] member this.clipRule - with inline set(value: string) = this.``clip-rule`` <- value - and inline get(): string = this.``clip-rule`` + with inline set (value: string) = this.``clip-rule`` <- value + and inline get (): string = this.``clip-rule`` type colorAttributeInterfaceProvider with [] @@ -1392,8 +1275,8 @@ module AttributeExtensions = [] member this.colorInterpolation - with inline set(value: string) = this.``color-interpolation`` <- value - and inline get(): string = this.``color-interpolation`` + with inline set (value: string) = this.``color-interpolation`` <- value + and inline get (): string = this.``color-interpolation`` type colorinterpolationfiltersAttributeInterfaceProvider with [] @@ -1404,8 +1287,8 @@ module AttributeExtensions = [] member this.colorInterpolationFilters - with inline set(value: string) = this.``color-interpolation-filters`` <- value - and inline get(): string = this.``color-interpolation-filters`` + with inline set (value: string) = this.``color-interpolation-filters`` <- value + and inline get (): string = this.``color-interpolation-filters`` type colorprofileAttributeInterfaceProvider with [] @@ -1416,8 +1299,8 @@ module AttributeExtensions = [] member this.colorProfile - with inline set(value: string) = this.``color-profile`` <- value - and inline get(): string = this.``color-profile`` + with inline set (value: string) = this.``color-profile`` <- value + and inline get (): string = this.``color-profile`` type colorrenderingAttributeInterfaceProvider with [] @@ -1428,8 +1311,8 @@ module AttributeExtensions = [] member this.colorRendering - with inline set(value: string) = this.``color-rendering`` <- value - and inline get(): string = this.``color-rendering`` + with inline set (value: string) = this.``color-rendering`` <- value + and inline get (): string = this.``color-rendering`` type cursorAttributeInterfaceProvider with [] @@ -1458,8 +1341,8 @@ module AttributeExtensions = [] member this.dominantBaseline - with inline set(value: string) = this.``dominant-baseline`` <- value - and inline get(): string = this.``dominant-baseline`` + with inline set (value: string) = this.``dominant-baseline`` <- value + and inline get (): string = this.``dominant-baseline`` type enablebackgroundAttributeInterfaceProvider with [] @@ -1470,8 +1353,8 @@ module AttributeExtensions = [] member this.enableBackground - with inline set(value: string) = this.``enable-background`` <- value - and inline get(): string = this.``enable-background`` + with inline set (value: string) = this.``enable-background`` <- value + and inline get (): string = this.``enable-background`` type fillAttributeInterfaceProvider with [] @@ -1488,8 +1371,8 @@ module AttributeExtensions = [] member this.fillOpacity - with inline set(value: string) = this.``fill-opacity`` <- value - and inline get(): string = this.``fill-opacity`` + with inline set (value: string) = this.``fill-opacity`` <- value + and inline get (): string = this.``fill-opacity`` type fillruleAttributeInterfaceProvider with [] @@ -1500,8 +1383,8 @@ module AttributeExtensions = [] member this.fillRule - with inline set(value: string) = this.``fill-rule`` <- value - and inline get(): string = this.``fill-rule`` + with inline set (value: string) = this.``fill-rule`` <- value + and inline get (): string = this.``fill-rule`` type filterAttributeInterfaceProvider with [] @@ -1518,8 +1401,8 @@ module AttributeExtensions = [] member this.floodColor - with inline set(value: string) = this.``flood-color`` <- value - and inline get(): string = this.``flood-color`` + with inline set (value: string) = this.``flood-color`` <- value + and inline get (): string = this.``flood-color`` type floodOpacityAttributeInterfaceProvider with [] @@ -1530,8 +1413,8 @@ module AttributeExtensions = [] member this.floodOpacity - with inline set(value: string) = this.``flood-opacity`` <- value - and inline get(): string = this.``flood-opacity`` + with inline set (value: string) = this.``flood-opacity`` <- value + and inline get (): string = this.``flood-opacity`` type fontFamilyAttributeInterfaceProvider with [] @@ -1542,8 +1425,8 @@ module AttributeExtensions = [] member this.fontFamily - with inline set(value: string) = this.``font-family`` <- value - and inline get(): string = this.``font-family`` + with inline set (value: string) = this.``font-family`` <- value + and inline get (): string = this.``font-family`` type fontSizeAttributeInterfaceProvider with [] @@ -1554,8 +1437,8 @@ module AttributeExtensions = [] member this.fontSize - with inline set(value: string) = this.``font-size`` <- value - and inline get(): string = this.``font-size`` + with inline set (value: string) = this.``font-size`` <- value + and inline get (): string = this.``font-size`` type fontSizeAdjustAttributeInterfaceProvider with [] @@ -1566,8 +1449,8 @@ module AttributeExtensions = [] member this.fontSizeAdjust - with inline set(value: U2) = this.``font-size-adjust`` <- value - and inline get(): U2 = this.``font-size-adjust`` + with inline set (value: U2) = this.``font-size-adjust`` <- value + and inline get (): U2 = this.``font-size-adjust`` type fontStretchAttributeInterfaceProvider with [] @@ -1578,8 +1461,8 @@ module AttributeExtensions = [] member this.fontStretch - with inline set(value: string) = this.``font-stretch`` <- value - and inline get(): string = this.``font-stretch`` + with inline set (value: string) = this.``font-stretch`` <- value + and inline get (): string = this.``font-stretch`` type fontStyleAttributeInterfaceProvider with [] @@ -1590,8 +1473,8 @@ module AttributeExtensions = [] member this.fontStyle - with inline set(value: string) = this.``font-style`` <- value - and inline get(): string = this.``font-style`` + with inline set (value: string) = this.``font-style`` <- value + and inline get (): string = this.``font-style`` type fontVariantAttributeInterfaceProvider with [] @@ -1602,8 +1485,8 @@ module AttributeExtensions = [] member this.fontVariant - with inline set(value: string) = this.``font-variant`` <- value - and inline get(): string = this.``font-variant`` + with inline set (value: string) = this.``font-variant`` <- value + and inline get (): string = this.``font-variant`` type fontWeightAttributeInterfaceProvider with [] @@ -1614,8 +1497,8 @@ module AttributeExtensions = [] member this.fontWeight - with inline set(value: U2) = this.``font-weight`` <- value - and inline get(): U2 = this.``font-weight`` + with inline set (value: U2) = this.``font-weight`` <- value + and inline get (): U2 = this.``font-weight`` type glyphOrientationHorizontalAttributeInterfaceProvider with [] @@ -1626,8 +1509,8 @@ module AttributeExtensions = [] member this.glyphOrientationHorizontal - with inline set(value: string) = this.``glyph-orientation-horizontal`` <- value - and inline get(): string = this.``glyph-orientation-horizontal`` + with inline set (value: string) = this.``glyph-orientation-horizontal`` <- value + and inline get (): string = this.``glyph-orientation-horizontal`` type glyphOrientationVerticalAttributeInterfaceProvider with [] @@ -1638,8 +1521,8 @@ module AttributeExtensions = [] member this.glyphOrientationVertical - with inline set(value: string) = this.``glyph-orientation-vertical`` <- value - and inline get(): string = this.``glyph-orientation-vertical`` + with inline set (value: string) = this.``glyph-orientation-vertical`` <- value + and inline get (): string = this.``glyph-orientation-vertical`` type imageRenderingAttributeInterfaceProvider with [] @@ -1650,8 +1533,8 @@ module AttributeExtensions = [] member this.imageRendering - with inline set(value: string) = this.``image-rendering`` <- value - and inline get(): string = this.``image-rendering`` + with inline set (value: string) = this.``image-rendering`` <- value + and inline get (): string = this.``image-rendering`` type kerningAttributeInterfaceProvider with [] @@ -1668,8 +1551,8 @@ module AttributeExtensions = [] member this.letterSpacing - with inline set(value: U2) = this.``letter-spacing`` <- value - and inline get(): U2 = this.``letter-spacing`` + with inline set (value: U2) = this.``letter-spacing`` <- value + and inline get (): U2 = this.``letter-spacing`` type markerEndAttributeInterfaceProvider with [] @@ -1680,8 +1563,8 @@ module AttributeExtensions = [] member this.markerEnd - with inline set(value: string) = this.``marker-end`` <- value - and inline get(): string = this.``marker-end`` + with inline set (value: string) = this.``marker-end`` <- value + and inline get (): string = this.``marker-end`` type markerMidAttributeInterfaceProvider with [] @@ -1692,8 +1575,8 @@ module AttributeExtensions = [] member this.markerMid - with inline set(value: string) = this.``marker-mid`` <- value - and inline get(): string = this.``marker-mid`` + with inline set (value: string) = this.``marker-mid`` <- value + and inline get (): string = this.``marker-mid`` type markerStartAttributeInterfaceProvider with [] @@ -1704,8 +1587,8 @@ module AttributeExtensions = [] member this.markerStart - with inline set(value: string) = this.``marker-start`` <- value - and inline get(): string = this.``marker-start`` + with inline set (value: string) = this.``marker-start`` <- value + and inline get (): string = this.``marker-start`` type maskAttributeInterfaceProvider with [] @@ -1740,8 +1623,8 @@ module AttributeExtensions = [] member this.pointerEvents - with inline set(value: string) = this.``pointer-events`` <- value - and inline get(): string = this.``pointer-events`` + with inline set (value: string) = this.``pointer-events`` <- value + and inline get (): string = this.``pointer-events`` type shapeRenderingAttributeInterfaceProvider with [] @@ -1752,8 +1635,8 @@ module AttributeExtensions = [] member this.shapeRendering - with inline set(value: string) = this.``shape-rendering`` <- value - and inline get(): string = this.``shape-rendering`` + with inline set (value: string) = this.``shape-rendering`` <- value + and inline get (): string = this.``shape-rendering`` type stopColorAttributeInterfaceProvider with [] @@ -1764,8 +1647,8 @@ module AttributeExtensions = [] member this.stopColor - with inline set(value: string) = this.``stop-color`` <- value - and inline get(): string = this.``stop-color`` + with inline set (value: string) = this.``stop-color`` <- value + and inline get (): string = this.``stop-color`` type stopOpacityAttributeInterfaceProvider with [] @@ -1776,8 +1659,8 @@ module AttributeExtensions = [] member this.stopOpacity - with inline set(value: string) = this.``stop-opacity`` <- value - and inline get(): string = this.``stop-opacity`` + with inline set (value: string) = this.``stop-opacity`` <- value + and inline get (): string = this.``stop-opacity`` type strokeAttributeInterfaceProvider with [] @@ -1794,8 +1677,8 @@ module AttributeExtensions = [] member this.strokeDasharray - with inline set(value: string) = this.``stroke-dasharray`` <- value - and inline get(): string = this.``stroke-dasharray`` + with inline set (value: string) = this.``stroke-dasharray`` <- value + and inline get (): string = this.``stroke-dasharray`` type strokeDashoffsetAttributeInterfaceProvider with [] @@ -1806,8 +1689,8 @@ module AttributeExtensions = [] member this.strokeDashoffset - with inline set(value: U2) = this.``stroke-dashoffset`` <- value - and inline get(): U2 = this.``stroke-dashoffset`` + with inline set (value: U2) = this.``stroke-dashoffset`` <- value + and inline get (): U2 = this.``stroke-dashoffset`` type strokeLinecapAttributeInterfaceProvider with [] @@ -1818,8 +1701,8 @@ module AttributeExtensions = [] member this.strokeLinecap - with inline set(value: string) = this.``stroke-linecap`` <- value - and inline get(): string = this.``stroke-linecap`` + with inline set (value: string) = this.``stroke-linecap`` <- value + and inline get (): string = this.``stroke-linecap`` type strokeLinejoinAttributeInterfaceProvider with [] @@ -1830,8 +1713,8 @@ module AttributeExtensions = [] member this.strokeLinejoin - with inline set(value: string) = this.``stroke-linejoin`` <- value - and inline get(): string = this.``stroke-linejoin`` + with inline set (value: string) = this.``stroke-linejoin`` <- value + and inline get (): string = this.``stroke-linejoin`` type strokeMiterlimitAttributeInterfaceProvider with [] @@ -1842,8 +1725,8 @@ module AttributeExtensions = [] member this.strokeMiterlimit - with inline set(value: string) = this.``stroke-miterlimit`` <- value - and inline get(): string = this.``stroke-miterlimit`` + with inline set (value: string) = this.``stroke-miterlimit`` <- value + and inline get (): string = this.``stroke-miterlimit`` type strokeOpacityAttributeInterfaceProvider with [] @@ -1854,8 +1737,8 @@ module AttributeExtensions = [] member this.strokeOpacity - with inline set(value: string) = this.``stroke-opacity`` <- value - and inline get(): string = this.``stroke-opacity`` + with inline set (value: string) = this.``stroke-opacity`` <- value + and inline get (): string = this.``stroke-opacity`` type strokeWidthAttributeInterfaceProvider with [] @@ -1866,8 +1749,8 @@ module AttributeExtensions = [] member this.strokeWidth - with inline set(value: U2) = this.``stroke-width`` <- value - and inline get(): U2 = this.``stroke-width`` + with inline set (value: U2) = this.``stroke-width`` <- value + and inline get (): U2 = this.``stroke-width`` type textAnchorAttributeInterfaceProvider with [] @@ -1878,8 +1761,8 @@ module AttributeExtensions = [] member this.textAnchor - with inline set(value: string) = this.``text-anchor`` <- value - and inline get(): string = this.``text-anchor`` + with inline set (value: string) = this.``text-anchor`` <- value + and inline get (): string = this.``text-anchor`` type textDecorationAttributeInterfaceProvider with [] @@ -1890,8 +1773,8 @@ module AttributeExtensions = [] member this.textDecoration - with inline set(value: string) = this.``text-decoration`` <- value - and inline get(): string = this.``text-decoration`` + with inline set (value: string) = this.``text-decoration`` <- value + and inline get (): string = this.``text-decoration`` type textRenderingAttributeInterfaceProvider with [] @@ -1902,8 +1785,8 @@ module AttributeExtensions = [] member this.textRendering - with inline set(value: string) = this.``text-rendering`` <- value - and inline get(): string = this.``text-rendering`` + with inline set (value: string) = this.``text-rendering`` <- value + and inline get (): string = this.``text-rendering`` type unicodeBidiAttributeInterfaceProvider with [] @@ -1914,8 +1797,8 @@ module AttributeExtensions = [] member this.unicodeBidi - with inline set(value: string) = this.``unicode-bidi`` <- value - and inline get(): string = this.``unicode-bidi`` + with inline set (value: string) = this.``unicode-bidi`` <- value + and inline get (): string = this.``unicode-bidi`` type visibilityAttributeInterfaceProvider with [] @@ -1932,8 +1815,8 @@ module AttributeExtensions = [] member this.wordSpacing - with inline set(value: U2) = this.``word-spacing`` <- value - and inline get(): U2 = this.``word-spacing`` + with inline set (value: U2) = this.``word-spacing`` <- value + and inline get (): U2 = this.``word-spacing`` type writingModeAttributeInterfaceProvider with [] @@ -1944,8 +1827,8 @@ module AttributeExtensions = [] member this.writingMode - with inline set(value: string) = this.``writing-mode`` <- value - and inline get(): string = this.``writing-mode`` + with inline set (value: string) = this.``writing-mode`` <- value + and inline get (): string = this.``writing-mode`` type versionAttributeInterfaceProvider with [] @@ -2118,8 +2001,8 @@ module AttributeExtensions = [] member this.lightningColor - with inline set(value: string) = this.``lightning-color`` <- value - and inline get(): string = this.``lightning-color`` + with inline set (value: string) = this.``lightning-color`` <- value + and inline get (): string = this.``lightning-color`` type dxAttributeInterfaceProvider with [] @@ -2387,8 +2270,8 @@ module AttributeExtensions = [] member this.lightingColor - with inline set(value: string) = this.``lighting-color`` <- value - and inline get(): string = this.``lighting-color`` + with inline set (value: string) = this.``lighting-color`` <- value + and inline get (): string = this.``lighting-color`` type FilterPrimitiveElementSVGAttributes with [] @@ -2444,8 +2327,8 @@ module AttributeExtensions = [] member this.colorInterpolation - with inline set(value: string) = this.``color-interpolation`` <- value - and inline get(): string = this.``color-interpolation`` + with inline set (value: string) = this.``color-interpolation`` <- value + and inline get (): string = this.``color-interpolation`` [] [] @@ -2455,8 +2338,8 @@ module AttributeExtensions = [] member this.colorRendering - with inline set(value: string) = this.``color-rendering`` <- value - and inline get(): string = this.``color-rendering`` + with inline set (value: string) = this.``color-rendering`` <- value + and inline get (): string = this.``color-rendering`` type AnimateMotionSVGAttributes with [] @@ -2713,8 +2596,8 @@ module AttributeExtensions = [] member this.method - with set(_: string) = () - and get(): string = JS.undefined + with set (_: string) = () + and get (): string = JS.undefined [] member _.spacing @@ -2738,7 +2621,7 @@ module Svg = type animate() = interface RegularNode interface AnimateSVGAttributes - + [] type animateMotion() = interface RegularNode @@ -2828,7 +2711,7 @@ module Svg = type feFuncA() = interface RegularNode interface FeFuncSVGAttributes - + [] type feFuncB() = interface RegularNode @@ -2838,7 +2721,7 @@ module Svg = type feFuncG() = interface RegularNode interface FeFuncSVGAttributes - + [] type feFuncR() = interface RegularNode @@ -2988,7 +2871,7 @@ module Svg = type stop() = interface VoidNode interface StopSVGAttributes - + [] type svg() = interface RegularNode @@ -3023,7 +2906,7 @@ module Svg = type use'() = interface RegularNode interface UseSVGAttributes - + [] type view() = interface RegularNode diff --git a/Partas.Solid/Tags.fs b/Partas.Solid/Tags.fs index ef92b47..b0aa698 100644 --- a/Partas.Solid/Tags.fs +++ b/Partas.Solid/Tags.fs @@ -43,11 +43,13 @@ module Tags = /// Usage `elem.style(createObj ["color", "green"; "background-color", state.myColor ])` [] static member style'(this: #HtmlTag, styleObj: obj) = this + /// /// Usage elem.style' [Style.backgroundColor BackgroundColor.Blue; "--my-variable" ==> BackgroundColor.Black] /// [] - static member inline style'(this: #HtmlTag, styles: (string * obj) list) = this.style'(createObj styles) + static member inline style'(this: #HtmlTag, styles: (string * obj) list) = + this.style' (createObj styles) /// Usage `elem.classList(createObj ["active", true; "disabled", state.disabled ])` [] @@ -56,10 +58,11 @@ module Tags = /// Adds or removes attribute without value [] static member bool(this: #HtmlTag, name: string, value: bool) = this - + /// Spreads the passed identifier within the Tag [] static member spread(this: #HtmlTag, value: obj) = this + /// Directive usage [] static member use'(this: #HtmlTag, name: string, value: obj) = this @@ -69,479 +72,588 @@ module Tags = interface RegularNode interface AnchorHTMLAttributes member inline this.asDomElement: HTMLAnchorElement = unbox this + [] type abbr() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type address() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type area() = interface VoidNode interface AreaHTMLAttributes member inline this.asDomElement: HTMLAreaElement = unbox this + [] type article() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type aside() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type audio() = interface RegularNode interface AudioHTMLAttributes member inline this.asDomElement: HTMLAudioElement = unbox this + [] type b() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type base'() = interface VoidNode member inline this.asDomElement: HTMLBaseElement = unbox this + [] type bdi() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type bdo() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type blockquote() = interface RegularNode interface BlockquoteHTMLAttributes member inline this.asDomElement: HTMLElement = unbox this + [] type body() = interface RegularNode member inline this.asDomElement: HTMLBodyElement = unbox this + [] type br() = interface VoidNode member inline this.asDomElement: HTMLBRElement = unbox this + [] type button() = interface RegularNode interface ButtonHTMLAttributes member inline this.asDomElement: HTMLButtonElement = unbox this + [] type canvas() = interface RegularNode interface CanvasHTMLAttributes member inline this.asDomElement: HTMLCanvasElement = unbox this + [] type caption() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type cite() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type code() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type col() = interface VoidNode interface ColHTMLAttributes member inline this.asDomElement: HTMLTableColElement = unbox this + [] type colgroup() = interface RegularNode interface ColgroupHTMLAttributes member inline this.asDomElement: HTMLTableColElement = unbox this + [] type data() = interface RegularNode interface DataHTMLAttributes member inline this.asDomElement: HTMLElement = unbox this + [] type datalist() = interface RegularNode member inline this.asDomElement: HTMLDataListElement = unbox this + [] type dd() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type del() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type details() = interface RegularNode interface DetailsHtmlAttributes member inline this.asDomElement: HTMLElement = unbox this + [] type dfn() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type dialog() = interface RegularNode interface DialogHtmlAttributes member inline this.asDomElement: HTMLDialogElement = unbox this + [] type div() = interface RegularNode member inline this.asDomElement: HTMLDivElement = unbox this + [] type dl() = interface RegularNode member inline this.asDomElement: HTMLDListElement = unbox this + [] type dt() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type em() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type embed() = interface VoidNode interface EmbedHTMLAttributes member inline this.asDomElement: HTMLEmbedElement = unbox this + [] type fieldset() = interface RegularNode interface FieldsetHTMLAttributes member inline this.asDomElement: HTMLFieldSetElement = unbox this + [] type figcaption() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type figure() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type footer() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type form() = interface RegularNode interface FormHTMLAttributes member inline this.asDomElement: HTMLFormElement = unbox this + [] type h1() = interface RegularNode member inline this.asDomElement: HTMLHeadingElement = unbox this + [] type h2() = interface RegularNode member inline this.asDomElement: HTMLHeadingElement = unbox this + [] type h3() = interface RegularNode member inline this.asDomElement: HTMLHeadingElement = unbox this + [] type h4() = interface RegularNode member inline this.asDomElement: HTMLHeadingElement = unbox this + [] type h5() = interface RegularNode member inline this.asDomElement: HTMLHeadingElement = unbox this + [] type h6() = interface RegularNode member inline this.asDomElement: HTMLHeadingElement = unbox this + [] type head() = interface RegularNode member inline this.asDomElement: HTMLHeadElement = unbox this + [] type header() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type hgroup() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type hr() = interface VoidNode member inline this.asDomElement: HTMLHRElement = unbox this + [] type html() = interface RegularNode member inline this.asDomElement: HTMLHtmlElement = unbox this + [] type i() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type iframe() = interface RegularNode interface IframeHTMLAttributes member inline this.asDomElement: HTMLIFrameElement = unbox this + [] type img() = interface VoidNode interface ImgHTMLAttributes member inline this.asDomElement: HTMLImageElement = unbox this + [] type input() = interface VoidNode interface InputHTMLAttributes member inline this.asDomElement: HTMLInputElement = unbox this + [] type ins() = interface RegularNode interface InsHTMLAttributes member inline this.asDomElement: HTMLModElement = unbox this + [] type kbd() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type label() = interface RegularNode interface LabelHTMLAttributes member inline this.asDomElement: HTMLLabelElement = unbox this + [] type legend() = interface RegularNode member inline this.asDomElement: HTMLLegendElement = unbox this + [] type li() = interface RegularNode interface LiHTMLAttributes member inline this.asDomElement: HTMLLIElement = unbox this + [] type link() = interface VoidNode interface LinkHTMLAttributes member inline this.asDomElement: HTMLLinkElement = unbox this + [] type main() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type map() = interface RegularNode interface MapHTMLAttributes member inline this.asDomElement: HTMLMapElement = unbox this + [] type mark() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type menu() = interface RegularNode interface MenuHTMLAttributes member inline this.asDomElement: HTMLMenuElement = unbox this + [] type meta() = interface VoidNode interface MetaHTMLAttributes member inline this.asDomElement: HTMLMetaElement = unbox this + [] type meter() = interface RegularNode interface MeterHTMLAttributes member inline this.asDomElement: HTMLElement = unbox this + [] type nav() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type noscript() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type object'() = interface RegularNode interface ObjectHTMLAttributes member inline this.asDomElement: HTMLObjectElement = unbox this + [] type ol() = interface RegularNode interface OlHTMLAttributes member inline this.asDomElement: HTMLOListElement = unbox this + [] type optgroup() = interface RegularNode interface OptgroupHTMLAttributes member inline this.asDomElement: HTMLOptGroupElement = unbox this + [] type option'() = interface RegularNode interface OptionHTMLAttributes member inline this.asDomElement: HTMLOptionElement = unbox this + [] type output() = interface RegularNode interface OutputHTMLAttributes member inline this.asDomElement: HTMLElement = unbox this + [] type p() = interface RegularNode member inline this.asDomElement: HTMLParagraphElement = unbox this + [] type picture() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type pre() = interface RegularNode member inline this.asDomElement: HTMLPreElement = unbox this + [] type progress() = interface RegularNode interface ProgressHTMLAttributes member inline this.asDomElement: HTMLProgressElement = unbox this + [] type q() = interface RegularNode interface QuoteHTMLAttributes member inline this.asDomElement: HTMLQuoteElement = unbox this + [] type rp() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type rt() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type ruby() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type s() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type samp() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type script() = interface RegularNode interface ScriptHTMLAttributes member inline this.asDomElement: HTMLScriptElement = unbox this + [] type search() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type section() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type select() = interface RegularNode interface SelectHTMLAttributes member inline this.asDomElement: HTMLSelectElement = unbox this + [] type small() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type source() = interface VoidNode interface SourceHTMLAttributes member inline this.asDomElement: HTMLSourceElement = unbox this + [] type span() = interface RegularNode member inline this.asDomElement: HTMLSpanElement = unbox this + [] type strong() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type style() = interface RegularNode interface StyleHTMLAttributes member inline this.asDomElement: HTMLStyleElement = unbox this + [] type sub() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type summary() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type sup() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type table() = interface RegularNode member inline this.asDomElement: HTMLTableElement = unbox this + [] type tbody() = interface RegularNode member inline this.asDomElement: HTMLTableSectionElement = unbox this + [] type td() = interface RegularNode interface TdHTMLAttributes member inline this.asDomElement: HTMLTableCellElement = unbox this + [] type textarea() = interface RegularNode interface TextareaHTMLAttributes member inline this.asDomElement: HTMLTextAreaElement = unbox this + [] type tfoot() = interface RegularNode member inline this.asDomElement: HTMLTableSectionElement = unbox this + [] type th() = interface RegularNode interface ThHTMLAttributes member inline this.asDomElement: HTMLTableCellElement = unbox this + [] type thead() = interface RegularNode member inline this.asDomElement: HTMLTableSectionElement = unbox this + [] type time() = interface RegularNode interface TimeHTMLAttributes member inline this.asDomElement: HTMLElement = unbox this + [] type title() = interface RegularNode member inline this.asDomElement: HTMLTitleElement = unbox this + [] type tr() = interface RegularNode member inline this.asDomElement: HTMLTableRowElement = unbox this + [] type track() = interface RegularNode interface TrackHTMLAttributes member inline this.asDomElement: HTMLTrackElement = unbox this + [] type u() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type ul() = interface RegularNode member inline this.asDomElement: HTMLUListElement = unbox this + [] type var() = interface RegularNode member inline this.asDomElement: HTMLElement = unbox this + [] type video() = interface RegularNode interface VideoHTMLAttributes member inline this.asDomElement: HTMLVideoElement = unbox this + [] type wbr() = interface RegularNode diff --git a/Partas.Solid/U.fs b/Partas.Solid/U.fs index 35fe4c1..8a759db 100644 --- a/Partas.Solid/U.fs +++ b/Partas.Solid/U.fs @@ -1,4 +1,5 @@ namespace Partas.Solid.Experimental + open Fable.Core #nowarn 64 49 @@ -21,8 +22,8 @@ module U = static member op_ErasedCast(x: 'a) = Case1 x static member op_ErasedCast(x: 'b) = Case2 x - static member inline op_Implicit(x: 'a): U2<'a, 'b> = Case1 x - static member inline op_Implicit(x: 'b): U2<'a, 'b> = Case2 x + static member inline op_Implicit(x: 'a) : U2<'a, 'b> = Case1 x + static member inline op_Implicit(x: 'b) : U2<'a, 'b> = Case2 x /// Erased union type to represent one of three possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -35,9 +36,9 @@ module U = static member op_ErasedCast(x: 'a) = Case1 x static member op_ErasedCast(x: 'b) = Case2 x static member op_ErasedCast(x: 'c) = Case3 x - static member inline op_Implicit(x: 'a): U3<'a, 'b, 'c> = Case1 x - static member inline op_Implicit(x: 'b): U3<'a, 'b, 'c> = Case2 x - static member inline op_Implicit(x: 'c): U3<'a, 'b, 'c> = Case3 x + static member inline op_Implicit(x: 'a) : U3<'a, 'b, 'c> = Case1 x + static member inline op_Implicit(x: 'b) : U3<'a, 'b, 'c> = Case2 x + static member inline op_Implicit(x: 'c) : U3<'a, 'b, 'c> = Case3 x /// Erased union type to represent one of four possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -52,10 +53,10 @@ module U = static member op_ErasedCast(x: 'b) = Case2 x static member op_ErasedCast(x: 'c) = Case3 x static member op_ErasedCast(x: 'd) = Case4 x - static member inline op_Implicit(x: 'a): U4<'a, 'b, 'c, 'd> = Case1 x - static member inline op_Implicit(x: 'b): U4<'a, 'b, 'c, 'd> = Case2 x - static member inline op_Implicit(x: 'c): U4<'a, 'b, 'c, 'd> = Case3 x - static member inline op_Implicit(x: 'd): U4<'a, 'b, 'c, 'd> = Case4 x + static member inline op_Implicit(x: 'a) : U4<'a, 'b, 'c, 'd> = Case1 x + static member inline op_Implicit(x: 'b) : U4<'a, 'b, 'c, 'd> = Case2 x + static member inline op_Implicit(x: 'c) : U4<'a, 'b, 'c, 'd> = Case3 x + static member inline op_Implicit(x: 'd) : U4<'a, 'b, 'c, 'd> = Case4 x /// Erased union type to represent one of five possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -72,11 +73,11 @@ module U = static member op_ErasedCast(x: 'c) = Case3 x static member op_ErasedCast(x: 'd) = Case4 x static member op_ErasedCast(x: 'e) = Case5 x - static member inline op_Implicit(x: 'a): U5<'a, 'b, 'c, 'd, 'e> = Case1 x - static member inline op_Implicit(x: 'b): U5<'a, 'b, 'c, 'd, 'e> = Case2 x - static member inline op_Implicit(x: 'c): U5<'a, 'b, 'c, 'd, 'e> = Case3 x - static member inline op_Implicit(x: 'd): U5<'a, 'b, 'c, 'd, 'e> = Case4 x - static member inline op_Implicit(x: 'e): U5<'a, 'b, 'c, 'd, 'e> = Case5 x + static member inline op_Implicit(x: 'a) : U5<'a, 'b, 'c, 'd, 'e> = Case1 x + static member inline op_Implicit(x: 'b) : U5<'a, 'b, 'c, 'd, 'e> = Case2 x + static member inline op_Implicit(x: 'c) : U5<'a, 'b, 'c, 'd, 'e> = Case3 x + static member inline op_Implicit(x: 'd) : U5<'a, 'b, 'c, 'd, 'e> = Case4 x + static member inline op_Implicit(x: 'e) : U5<'a, 'b, 'c, 'd, 'e> = Case5 x /// Erased union type to represent one of six possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -95,12 +96,12 @@ module U = static member op_ErasedCast(x: 'd) = Case4 x static member op_ErasedCast(x: 'e) = Case5 x static member op_ErasedCast(x: 'f) = Case6 x - static member inline op_Implicit(x: 'a): U6<'a, 'b, 'c, 'd, 'e, 'f> = Case1 x - static member inline op_Implicit(x: 'b): U6<'a, 'b, 'c, 'd, 'e, 'f> = Case2 x - static member inline op_Implicit(x: 'c): U6<'a, 'b, 'c, 'd, 'e, 'f> = Case3 x - static member inline op_Implicit(x: 'd): U6<'a, 'b, 'c, 'd, 'e, 'f> = Case4 x - static member inline op_Implicit(x: 'e): U6<'a, 'b, 'c, 'd, 'e, 'f> = Case5 x - static member inline op_Implicit(x: 'f): U6<'a, 'b, 'c, 'd, 'e, 'f> = Case6 x + static member inline op_Implicit(x: 'a) : U6<'a, 'b, 'c, 'd, 'e, 'f> = Case1 x + static member inline op_Implicit(x: 'b) : U6<'a, 'b, 'c, 'd, 'e, 'f> = Case2 x + static member inline op_Implicit(x: 'c) : U6<'a, 'b, 'c, 'd, 'e, 'f> = Case3 x + static member inline op_Implicit(x: 'd) : U6<'a, 'b, 'c, 'd, 'e, 'f> = Case4 x + static member inline op_Implicit(x: 'e) : U6<'a, 'b, 'c, 'd, 'e, 'f> = Case5 x + static member inline op_Implicit(x: 'f) : U6<'a, 'b, 'c, 'd, 'e, 'f> = Case6 x /// Erased union type to represent one of seven possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -121,13 +122,13 @@ module U = static member op_ErasedCast(x: 'e) = Case5 x static member op_ErasedCast(x: 'f) = Case6 x static member op_ErasedCast(x: 'g) = Case7 x - static member inline op_Implicit(x: 'a): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case1 x - static member inline op_Implicit(x: 'b): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case2 x - static member inline op_Implicit(x: 'c): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case3 x - static member inline op_Implicit(x: 'd): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case4 x - static member inline op_Implicit(x: 'e): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case5 x - static member inline op_Implicit(x: 'f): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case6 x - static member inline op_Implicit(x: 'g): U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case7 x + static member inline op_Implicit(x: 'a) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case1 x + static member inline op_Implicit(x: 'b) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case2 x + static member inline op_Implicit(x: 'c) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case3 x + static member inline op_Implicit(x: 'd) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case4 x + static member inline op_Implicit(x: 'e) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case5 x + static member inline op_Implicit(x: 'f) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case6 x + static member inline op_Implicit(x: 'g) : U7<'a, 'b, 'c, 'd, 'e, 'f, 'g> = Case7 x /// Erased union type to represent one of eight possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -150,14 +151,14 @@ module U = static member op_ErasedCast(x: 'f) = Case6 x static member op_ErasedCast(x: 'g) = Case7 x static member op_ErasedCast(x: 'h) = Case8 x - static member inline op_Implicit(x: 'a): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case1 x - static member inline op_Implicit(x: 'b): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case2 x - static member inline op_Implicit(x: 'c): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case3 x - static member inline op_Implicit(x: 'd): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case4 x - static member inline op_Implicit(x: 'e): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case5 x - static member inline op_Implicit(x: 'f): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case6 x - static member inline op_Implicit(x: 'g): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case7 x - static member inline op_Implicit(x: 'h): U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case8 x + static member inline op_Implicit(x: 'a) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case1 x + static member inline op_Implicit(x: 'b) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case2 x + static member inline op_Implicit(x: 'c) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case3 x + static member inline op_Implicit(x: 'd) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case4 x + static member inline op_Implicit(x: 'e) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case5 x + static member inline op_Implicit(x: 'f) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case6 x + static member inline op_Implicit(x: 'g) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case7 x + static member inline op_Implicit(x: 'h) : U8<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h> = Case8 x /// Erased union type to represent one of nine or more possible values. /// More info: https://fable.io/docs/communicate/js-from-fable.html#erase-attribute @@ -182,15 +183,15 @@ module U = static member op_ErasedCast(x: 'g) = Case7 x static member op_ErasedCast(x: 'h) = Case8 x static member op_ErasedCast(x: 'i) = Case9 x - static member inline op_Implicit(x: 'a): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case1 x - static member inline op_Implicit(x: 'b): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case2 x - static member inline op_Implicit(x: 'c): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case3 x - static member inline op_Implicit(x: 'd): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case4 x - static member inline op_Implicit(x: 'e): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case5 x - static member inline op_Implicit(x: 'f): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case6 x - static member inline op_Implicit(x: 'g): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case7 x - static member inline op_Implicit(x: 'h): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case8 x - static member inline op_Implicit(x: 'i): U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case9 x + static member inline op_Implicit(x: 'a) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case1 x + static member inline op_Implicit(x: 'b) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case2 x + static member inline op_Implicit(x: 'c) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case3 x + static member inline op_Implicit(x: 'd) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case4 x + static member inline op_Implicit(x: 'e) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case5 x + static member inline op_Implicit(x: 'f) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case6 x + static member inline op_Implicit(x: 'g) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case7 x + static member inline op_Implicit(x: 'h) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case8 x + static member inline op_Implicit(x: 'i) : U9<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i> = Case9 x static member inline op_ErasedCast(x: 't) : U9<_, _, _, _, _, _, _, _, ^U> = - Case9(^U: (static member op_ErasedCast: 't -> ^U) x) + Case9 (^U: (static member op_ErasedCast: 't -> ^U) x) diff --git a/ScratchTests/Program.fs b/ScratchTests/Program.fs new file mode 100644 index 0000000..a67f01a --- /dev/null +++ b/ScratchTests/Program.fs @@ -0,0 +1 @@ +module Partas.Solid.Tests diff --git a/Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fsproj b/ScratchTests/ScratchTests.fsproj similarity index 53% rename from Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fsproj rename to ScratchTests/ScratchTests.fsproj index 7cfa6f1..21c3ec5 100644 --- a/Partas.Solid.Tests/SolidCases/ChildLambdaProvider/ChildLambdaProvider.fsproj +++ b/ScratchTests/ScratchTests.fsproj @@ -6,11 +6,12 @@ - + - + + diff --git a/ScratchTests/Test.fs b/ScratchTests/Test.fs deleted file mode 100644 index 7e6d3e0..0000000 --- a/ScratchTests/Test.fs +++ /dev/null @@ -1,17 +0,0 @@ -module Partas.Solid.Test.Burger - -open Partas.Solid -open Partas.Solid.Test -open Fable.Core - - -type [] TagWithTextChild() = - inherit RegularNode() - [] - member props.typeDef = - div(class' = "boobs") { - "textabove" - div() - "textbelow" - } - \ No newline at end of file diff --git a/build.fsx b/build.fsx new file mode 100644 index 0000000..1cd5491 --- /dev/null +++ b/build.fsx @@ -0,0 +1,230 @@ +#r "nuget: Fake.Core.Target" +#r "nuget: Fake.Core.Process" +#r "nuget: Fake.Core.ReleaseNotes" +#r "nuget: Fake.IO.FileSystem" +#r "nuget: Fake.DotNet.Cli" +#r "nuget: Fake.DotNet.MSBuild" +#r "nuget: Fake.DotNet.AssemblyInfoFile" +#r "nuget: Fake.Tools.Git" +#r "nuget: Fake.Api.GitHub" +#r "nuget: Fake.DotNet.Testing.Expecto" + +System.Environment.GetCommandLineArgs () +|> Array.skip 2 +|> Array.toList +|> Fake.Core.Context.FakeExecutionContext.Create false __SOURCE_FILE__ +|> Fake.Core.Context.RuntimeContext.Fake +|> Fake.Core.Context.setExecutionContext + +open Fake +open Fake.Core.TargetOperators +open Fake.Core +open Fake.IO +open Fake.IO.FileSystemOperators +open Fake.IO.Globbing.Operators +open Fake.DotNet +open Fake.DotNet.Testing +open Fake.Tools +open System.IO + +Target.initEnvironment () + +module Ops = + [] + let Clean = "Clean" + + [] + let RestoreTools = "RestoreTools" + + [] + let Nuget = "NuGet" + + [] + let Publish = "Publish" + + [] + let Build = "Build" + + [] + let AssemblyInfo = "AssemblyInfo" + + [] + let Test = "RunTests" + + [] + let GitCliff = "GitCliff" + + [] + let PublishLocal = "PublishLocal" + + [] + let Format = "Format" + + [] + let CheckFormat = "CheckFormat" + +let description = + "F# Fable front-end framework; derived from Oxpecker.Solid; built on top of Solid.js" + +let gitOwner = "shayanhabibi" +let gitName = "Partas.Solid" + +let apiKey = + Target.getArguments () + |> Option.bind (fun args -> + let idx = + args + |> (Array.tryFindIndex ((=) "--nuget-api-key") + >> Option.map ((+) 1)) + + idx + |> Option.map (Array.get args)) + +let sourceFiles = + !!"**/*.fs" + ++ "**/*.fsx" + -- "packages/**/*.*" + -- "paket-files/**/*.*" + -- ".fake/**/*.*" + -- "**/obj/**/*.*" + -- "**/AssemblyInfo.fs" + -- "**/IndexAccess/IndexAccess.fs" + -- "Partas.Solid.FablePlugin/Plugin.fs" + +Target.create Ops.Format (fun _ -> + let result = + sourceFiles + |> Seq.map (sprintf "\"%s\"") + |> String.concat " " + |> DotNet.exec id "fantomas" + + if not result.OK then + Trace.log $"Errors while formatting all files: %A{result.Messages}") + +Target.create Ops.CheckFormat (fun _ -> + let result = + sourceFiles + |> Seq.map (sprintf "\"%s\"") + |> String.concat " " + |> sprintf "%s --check" + |> DotNet.exec id "fantomas" + + if result.ExitCode = 0 then + Trace.log "No files need formatting" + elif result.ExitCode = 99 then + failwith "Some files need formatting, run `dotnet fsi build.fsx target Format` to format them." + else + Trace.logf $"Errors while formatting: %A{result.Errors}" + failwith "Unknown errors while formatting") + +Target.create Ops.GitCliff (fun _ -> + { ExecParams.Empty with + Program = "git-cliff" } + |> Process.shellExec + |> function + | 0 -> () + | code -> failwith $"Git-cliff failed with code: {code}") + +// Generate assembly info file with versioning and up-to-date info +Target.create Ops.AssemblyInfo (fun _ -> + let fileName = "Common/AssemblyInfo.fs" + let release = ReleaseNotes.load "docs/RELEASE_NOTES.md" + + AssemblyInfoFile.createFSharp + fileName + [ AssemblyInfo.Title gitName + AssemblyInfo.Product gitName + AssemblyInfo.Version release.AssemblyVersion + AssemblyInfo.FileVersion release.AssemblyVersion ]) + +Target.create Ops.Clean (fun _ -> + !!"**/**/bin" + |> Shell.cleanDirs + + Shell.cleanDirs [ "bin"; "temp" ]) + +let makeArgs: string seq -> string = String.concat " " + +let dotnet cmd args = + match DotNet.exec id cmd (makeArgs args) with + | result when not result.OK -> failwith $"Failed: {result.Errors}" + | _ -> () + +Target.create Ops.Build (fun _ -> + "Partas.Solid.sln" + |> DotNet.build (fun p -> + { p with + Configuration = DotNet.BuildConfiguration.Release + DotNet.BuildOptions.MSBuildParams.DisableInternalBinLog = true })) + +Target.create Ops.Test (fun _ -> + !!"**/bin/**/*.Tests.Plugin.dll" + |> Testing.Expecto.run (fun p -> + { p with + Summary = true + CustomArgs = + [ "--colours 256" ] + @ p.CustomArgs })) + +Target.create Ops.RestoreTools (fun _ -> + let result = DotNet.exec id "tool" "restore" + + result.Messages + |> Trace.logItems "Tool Restore" + + if not result.OK then + failwith "Failed to restore dotnet tools") + +Target.create Ops.Nuget (fun _ -> + [ "Partas.Solid"; "Partas.Solid.FablePlugin" ] + |> List.iter ( + DotNet.pack (fun p -> + { p with + NoRestore = true + OutputPath = Some "bin" + DotNet.PackOptions.MSBuildParams.DisableInternalBinLog = true }) + )) + +Target.create Ops.Publish (fun _ -> + !!"bin/*.nupkg" + |> Seq.iter ( + DotNet.nugetPush (fun p -> + { p with + DotNet.NuGetPushOptions.PushParams.ApiKey = apiKey }) + )) + +Target.create Ops.PublishLocal (fun _ -> + !!"bin/*.nupkg" + |> Seq.iter ( + DotNet.nugetPush (fun p -> + { p with + DotNet.NuGetPushOptions.PushParams.Source = Some "local" + DotNet.NuGetPushOptions.PushParams.PushTrials = 1 }) + )) + +Ops.GitCliff +==> Ops.AssemblyInfo +?=> Ops.Build + +Ops.AssemblyInfo +==> Ops.Nuget + +Ops.Test +==> Ops.Nuget +==> Ops.Publish + +Ops.Test +==> Ops.Nuget +==> Ops.PublishLocal + +Ops.Clean +==> Ops.Build +==> Ops.Test + +Ops.RestoreTools +==> Ops.Test + +Ops.CheckFormat +==> Ops.Build + +Target.runOrDefaultWithArguments Ops.Test diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..c222681 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,128 @@ +# git-cliff ~ configuration file +# https://git-cliff.org/docs/configuration + +[git] +# Exclude commits that are not matched by any commit parser. +filter_commits = false +# Order releases topologically instead of chronologically. +topo_order = false +# Order of commits in each group/release within the changelog. +# Allowed values: newest, oldest +sort_commits = "newest" + +# Parse commits according to the conventional commits specification. https://www.conventionalcommits.org +conventional_commits = true +filter_unconventional = false + +# An array of regex based parsers to modify commit messages prior to further processing. +commit_preprocessors = [ + # Remove issue numbers. + { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "" }, +] + +# An array of regex based parsers for extracting data from the commit message. +# Assigns commits to groups. +# Optionally sets the commit's scope and can decide to exclude commits from further processing. +commit_parsers = [ + # Ignore commit if has 'changelog: ignore' in footer + { footer = "^changelog: ?ignore", skip = true }, + { message = "^==", skip = true}, + # GROUP FEATURES + { message = "^feat", group = "Features" }, + # GROUP ADDED + { message = "^[a|A][dd|DD]", group = "Added" }, + { message = "^[s|S]upport", group = "Added" }, + { message = "^.*: support", group = "Added" }, + { message = "^.*: add", group = "Added" }, + # GROUP REMOVED + { message = "^[r|R]emove", group = "Removed" }, + { message = "^.*: remove", group = "Removed" }, + { message = "^.*: delete", group = "Removed" }, + # GROUP CHANGED + { message = "^[r|R]efactor", group = "Changed" }, + { message = "^[u|U]pdate", group = "Changed" }, + { message = "^[c|C]", group = "Changed" }, + # GROUP DEPRECATED + { message = "^depr", group = "Deprecated" }, + { message = "^deprecate", group = "Deprecated" }, + # GROUP FIXED + { message = "^[t|T][est|EST]", group = "Fixed" }, + { message = "^[f|F][ix|IX]", group = "Fixed" }, + { message = "^.*: fix", group = "Fixed" }, + # GROUP DOCUMENTATION + { message = "^doc", group = "Documentation" }, + # OTHERS + { message = "^.*", group = "Other", default_scope = "other" }, +] + + +[changelog] +# A Tera template to be rendered as the changelog's header. +# See https://keats.github.io/tera/docs/#introduction +header = """ +# Changelog\n +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n +""" +# A Tera template to be rendered for each release in the changelog. +# See https://keats.github.io/tera/docs/#introduction +# Tags are used instead of MarkDown to prevent Fake.Core.ReleaseNotes from incorrectly parsing +# the assembly version +body = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{% if version -%} + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else -%} +

[Unreleased]

+{% endif -%} + +{% for group, commits in commits | group_by(attribute="group") %} +

{{ group | upper_first }}

+ {%- for commit in commits %} + - {{ commit.message | split(pat="\n") | first | upper_first | trim }}\ + {% if commit.remote.username %} by @{{ commit.remote.username }}{%- endif -%} + {% if commit.remote.pr_number %} in \ + [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }}) \ + {%- endif -%} + {% endfor %} +{% endfor %} + +{%- if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %} +

New Contributors

+{%- endif -%} + +{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} + * @{{ contributor.username }} made their first contribution + {%- if contributor.pr_number %} in \ + [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ + {%- endif %} +{%- endfor %}\n + +""" +# A Tera template to be rendered as the changelog's footer. +# See https://keats.github.io/tera/docs/#introduction +footer = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{% for release in releases -%} + {% if release.version -%} + {% if release.previous.version -%} + [{{ release.version | trim_start_matches(pat="v") }}]: \ + {{ self::remote_url() }}/compare/{{ release.previous.version }}..{{ release.version }} + {% endif -%} + {% else -%} + [unreleased]: {{ self::remote_url() }}/compare/{{ release.previous.version }}..HEAD + {% endif -%} +{% endfor %} + +""" +# Remove leading and trailing whitespaces from the changelog's body. +trim = true +output = "./docs/RELEASE_NOTES.md" diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md new file mode 100644 index 0000000..a825a53 --- /dev/null +++ b/docs/RELEASE_NOTES.md @@ -0,0 +1,373 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +

[Unreleased]

+ +

Added

+- Add git-cliff changelog +- ADD: RELEASE_NOTES.md +- New Expecto test structure +- ADD: build script + +

Removed

+- Remove scratchtest + +

Changed

+- Nicer CI output +- Add tool restore to CI + +

Fixed

+- Do not compile from Compiled folder + +

Other

+- Bash on unix +- Ignore scratchtests +- Old test structure +- Merge branch 'master' into develop + + +## [1.1.5] - 2025-07-14 + +

Changed

+- Update README.md by @shayanhabibi +- Update README.md by @shayanhabibi +- Update issue templates by @shayanhabibi + +

Fixed

+- Wild card for matches in ExperimentalBuilders test by @shayanhabibi in [#34](https://github.com/shayanhabibi/Partas.Solid/pull/34) + + +## [1.1.5] - 2025-07-10 + +

Added

+- ADD: Start Bindings api expanded by @shayanhabibi +- ADD: Meta namespace with bindings to Solid-Meta by @shayanhabibi + +

Fixed

+- Fix #29: TypeCastDrill on Set expressions for Attributes. Fix FileRoutes to use emit macro to prevent fail on runtime. by @shayanhabibi in [#30](https://github.com/shayanhabibi/Partas.Solid/pull/30) +- SolidStart FileRoutes binding to use emit macro to prevent compiling an invalid function call on runtime +- Fix icon link by @shayanhabibi + +

Other

+- Spread method extension handles field getters by @shayanhabibi +- Nuget collision with historical local version 1.0.1 by @shayanhabibi +- Style property no longer routes through JSX.jsx by @shayanhabibi + + +## [1.0.0] - 2025-06-05 + +

Added

+- Add support for `use:` directives by @shayanhabibi + +

Removed

+- Remove solidbindings event handlers for now by @shayanhabibi + +

Changed

+- Refactor SVG attributes and tags to again mimic source material, this time with automated elevation of colliding attributes into individual interfaces by @shayanhabibi +- Update and upgrade Annotations attribute to match jsx plugin. by @shayanhabibi +- Create FUNDING.yml by @shayanhabibi +- Refactor and deprecations by @shayanhabibi +- Refactor implementations of elements to be based on solid-js `jsx.d.ts`. Inject HTML for attributes by default. by @shayanhabibi + +

Other

+- 1.0.0 Release by @shayanhabibi +- LICENSE.txt by @shayanhabibi +- Make SVGs native tags by @shayanhabibi +- Make SVGs native tags by @shayanhabibi +- Bump alpha and cleanup svg viewbox and aspectratio by @shayanhabibi +- Reorder, Refactor, Take changes from Oxpecker.Solid by Vladimir Schur with edits by @shayanhabibi +- Reorder and refactor by @shayanhabibi +- Reorder files for net6 compatibility by @shayanhabibi +- Reorder files for net6 compatibility by @shayanhabibi +- Deprecate PartasProxyImportAttribute (because I never actually thought ImportAttribute was as featured as it was) by @shayanhabibi +- Bump version by @shayanhabibi +- Introduce special handling for Pojo attribute by @shayanhabibi + + +## [1.0.0-alpha4] - 2025-05-24 + +

Added

+- Add tests for PartasProxyImport attribute by @shayanhabibi +- Add missing borderWidth shorthand style by @shayanhabibi +- Add a new attribute which mimics Import, except provides an additional parameter which acts as the key for a proxy in the case of importing from a library that provides composed components via a proxy like Motion-one by @shayanhabibi +- Add some better overloads for some of the styles by @shayanhabibi + +

Fixed

+- Fix namespace/module issues with Fable. by @shayanhabibi + +

Other

+- Bump alpha by @shayanhabibi +- Replace the overloaded Invocation for Navigator with InvokeOptions to prevent collision when providing one parameter. by @shayanhabibi +- Provide getters for the event handlers so they can be conditionally composed in components by @shayanhabibi +- Provide support for PartasProxyImport by @shayanhabibi +- Trying to jump around dotnet 6 compatibility by @shayanhabibi + + +## [1.0.0-alpha1] - 2025-05-22 + +

Fixed

+- Fix ChildLambdaProvider interfaces; provide support in the plugin for up to 4 curried arguments for the interfaces; provide a test by @shayanhabibi +- Fix #27 by @shayanhabibi +- Fix spec test namespaces by @shayanhabibi +- Fix spec test imports by @shayanhabibi +- Fix spec test namespace by @shayanhabibi +- Test spec start by @shayanhabibi +- Fix #27 by @shayanhabibi + +

Other

+- 1.0.0 alpha by @shayanhabibi +- Merge pull request #25 from shayanhabibi/develop by @shayanhabibi in [#25](https://github.com/shayanhabibi/Partas.Solid/pull/25) +- Better docs for children CE by @shayanhabibi +- Provide typed cssStyles. Update experimental union implicit converters to be inlined by @shayanhabibi +- AutoOpen Polymorphism namespace to ease use of Kobalte by @shayanhabibi +- Transform 'ThisArg' in call expressions. fixes #28 by @shayanhabibi +- Include `className` alias similar to `class'` for easier React/feliz adoption by @shayanhabibi +- Overload for Navigator which exposes the options as optional parameters using ParamObject by @shayanhabibi +- Experimental module includes submodule `U` which reimplements fable erased unions but with implicit erasedcasting by @shayanhabibi +- Stop being lazy and re-include analyser on spec test by @shayanhabibi +- More spec test by @shayanhabibi +- Make the prop setter more specific to prevent lifting setters #24 by @shayanhabibi +- Prebuilt generic builders up to four parameters by @shayanhabibi + + +## [0.2.35] - 2025-05-17 + +

Changed

+- CreatResource overloads to match solid-js spec. Cannot be tupled by @shayanhabibi +- CreatResource overloads to match solid-js spec by @shayanhabibi + +

Other

+- 0.2.35 by @shayanhabibi +- Transform 'ThisArg' in call expressions. fixes #28 by @shayanhabibi +- .gitignore by @shayanhabibi + + +## [0.2.32] - 2025-04-22 + +

Fixed

+- Fix #18 by @shayanhabibi + +

Other

+- Hotfix for trimming by @shayanhabibi +- 0.2.30 by @shayanhabibi + + +## [0.2.30] - 2025-04-21 + +

Fixed

+- Fix regression by @shayanhabibi +- Fix for #16, mutable val pattern for properties can be overloaded by @shayanhabibi + +

Other

+- Experimental syntax helpers as builders available in Partas.Solid.Experimental. by @shayanhabibi + + +## [0.2.28] - 2025-04-16 + +

Added

+- Add overload to createResource that accepts Async by @shayanhabibi +- Add Secondary Primitives by @shayanhabibi +- Add documentation to op_bangAt +- Add some basic doc for `Context<'T>'` type +- Add unix/macosx test suite Fli compatibility + +

Removed

+- Remove stale todos + +

Changed

+- Update readme by @shayanhabibi +- Complete createSignal binding by @shayanhabibi +- Cleanup first pass transformation by @shayanhabibi +- Refactor TagInfo out of transformation. Replace with initialising ElementBuilder +- Update readme by @shayanhabibi + +

Fixed

+- Fix build error for test by @shayanhabibi +- Fix #15 by @shayanhabibi + +

Other

+- - replace option types with optional args and ParamObject attribute by @shayanhabibi +- Documentation for Polymorph interface +- Bring Aria attributes to parity by adding accessors +- - PascalCase Intent enum +- Erase Op_bangAt from transpilation +- Vestigial type + +

New Contributors

+* @ made their first contribution + +## [0.2.26] - 2025-03-22 + +

Added

+- Add tool manifest with fable version by @shayanhabibi +- Add recipe for adding builders to components by @shayanhabibi +- Add an attribute which replaces the hard coded import injection for solid-js imports by @shayanhabibi +- Add extensible polymorphic attribute definition by @shayanhabibi + +

Changed

+- Update README.md by @shayanhabibi + +

Fixed

+- Fixes #14 by @shayanhabibi +- Fix - Portal imports from /web by @shayanhabibi +- Test bug: Spurious failure on parallel runs of tests which is unrelated to transformation. by @shayanhabibi + +

Other

+- Invoke method extension for Signal Setters by @shayanhabibi +- SVG elements have extensions for ad-hoc attribute settings etc by @shayanhabibi +- Alpha implementation of SVG elements by @shayanhabibi +- Bugfix: #14 by @shayanhabibi +- Feature: by @shayanhabibi +- Feature: by @shayanhabibi +- Feature: by @shayanhabibi +- Bump vers by @shayanhabibi +- Feature: `[]` replaces `[]` for types with builder computations by @shayanhabibi +- Feature: `[]` replaces `[]` for types with builder computations by @shayanhabibi +- Transform inside string interpolation by @shayanhabibi + + +## [0.2.15] - 2025-03-14 + +

Added

+- Support for polymorphism by @shayanhabibi + +

Removed

+- Remove TagValue type argument by @shayanhabibi + +

Changed

+- Update readme with warning about release mode vs debug mode by @shayanhabibi +- Update README.md by @shayanhabibi +- Update readme by @shayanhabibi + +

Other

+- Render index accesses within builders especially by @shayanhabibi +- 0.2.11 by @shayanhabibi + + +## [0.2.11] - 2025-03-11 + +

Added

+- Add support for Polymorphism in Kobalte by @shayanhabibi + +

Changed

+- Update Partas.Solid.sln by @shayanhabibi +- Update dotnet.yml by @shayanhabibi +- Update dotnet.yml by @shayanhabibi +- CI by @shayanhabibi + +

Fixed

+- Fix for #5 by @shayanhabibi +- Fixes #2 by @shayanhabibi + +

Other

+- Implement TagsAsValues using `!@` to reference a tag as a value (function) in jsx, and then use infix `%` to construct tag in jsx using ident by @shayanhabibi +- Foundation for TagValue test by @shayanhabibi +- Merge remote-tracking branch 'origin/master' by @shayanhabibi + + +## [0.2.9] - 2025-03-09 + +

Other

+- Prevent FieldGetters in computations being unwrapped by @shayanhabibi + + +## [0.2.8] - 2025-03-09 + +

Changed

+- Update README.md by @shayanhabibi + +

Other

+- Prevent tupled accessors in builder being unwrapped by @shayanhabibi +- Hotfix 0.2.7 by @shayanhabibi + + +## [0.2.6] - 2025-03-08 + +

Other

+- Aggressively unroll attribute values. by @shayanhabibi +- Documentation by @shayanhabibi + + +## [0.2.5] - 2025-03-07 + +

Other

+- Implement context providers by @shayanhabibi +- Render `Fragment` correctly by @shayanhabibi + + +## [0.2.4] - 2025-03-07 + +

Other

+- Emits have their parameters transformed by @shayanhabibi +- Observe member val getters and setters the same as method calls by @shayanhabibi + + +## [0.2.2] - 2025-03-07 + +

Fixed

+- Fix for `member val` sets being dropped in prop collection by @shayanhabibi + +

Other

+- 0.2.2 by @shayanhabibi + + +## [0.2.1] - 2025-03-07 + +

Added

+- Add tests by @shayanhabibi + +

Removed

+- Remove artifacts from setting defaults for properties within builders by @shayanhabibi + +

Changed

+- Compartmentalise code so actual transformation logic is clear by @shayanhabibi +- Update readme by @shayanhabibi +- Clean up the documentation by @shayanhabibi +- Clean up the documentation by @shayanhabibi +- Update README.md by @shayanhabibi + +

Fixed

+- Fix expression transformations by @shayanhabibi + +

Other

+- Prevent prop getters in builders being transformed out by @shayanhabibi +- Transform inside arrays by @shayanhabibi +- Transform inside anon records by @shayanhabibi +- Log warning if setting multiple of the same property by @shayanhabibi +- Prevent a builder from containing only a setter to create open tags instead of a self closing tag by @shayanhabibi +- Prevent setters at the head of a builder not being transformed. by @shayanhabibi +- Implementation of patterns to green informal tests of SolidBindings from Oxpecker.Solid.Tests by @shayanhabibi +- Workable iteration of new plugin transpiler. by @shayanhabibi +- More forky and less derivative by @shayanhabibi +- More forky and less derivative by @shayanhabibi +- Init 0.1.0 by @shayanhabibi + +

New Contributors

+* @shayanhabibi made their first contribution + +[unreleased]: https://github.com/shayanhabibi/Partas.Solid/compare/v1.1.5..HEAD +[1.1.5]: https://github.com/shayanhabibi/Partas.Solid/compare/1.1.5..v1.1.5 +[1.1.5]: https://github.com/shayanhabibi/Partas.Solid/compare/1.0.0..1.1.5 +[1.0.0]: https://github.com/shayanhabibi/Partas.Solid/compare/1.0.0-alpha4..1.0.0 +[1.0.0-alpha4]: https://github.com/shayanhabibi/Partas.Solid/compare/1.0.0-alpha1..1.0.0-alpha4 +[1.0.0-alpha1]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.35..1.0.0-alpha1 +[0.2.35]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.32..0.2.35 +[0.2.32]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.30..0.2.32 +[0.2.30]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.28..0.2.30 +[0.2.28]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.26..0.2.28 +[0.2.26]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.15..0.2.26 +[0.2.15]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.11..0.2.15 +[0.2.11]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.9..0.2.11 +[0.2.9]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.8..0.2.9 +[0.2.8]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.6..0.2.8 +[0.2.6]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.5..0.2.6 +[0.2.5]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.4..0.2.5 +[0.2.4]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.2..0.2.4 +[0.2.2]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.1..0.2.2 +[0.2.1]: https://github.com/shayanhabibi/Partas.Solid/compare/0.2.0..0.2.1 + +