diff --git a/PlayerHeads-api/dependency-reduced-pom.xml b/PlayerHeads-api/dependency-reduced-pom.xml index ad85d067..8591d5f1 100644 --- a/PlayerHeads-api/dependency-reduced-pom.xml +++ b/PlayerHeads-api/dependency-reduced-pom.xml @@ -3,37 +3,16 @@ PlayerHeads org.shininet.bukkit - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT 4.0.0 PlayerHeads-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT - - maven-checkstyle-plugin - 3.0.0 - - - validate - validate - - check - - - ${basedir}/checkstyle.xml - ${basedir}/checkstyle-suppression.xml - UTF-8 - true - true - true - - - - maven-javadoc-plugin - 3.2.0 + 3.5.0 attach-javadocs @@ -59,12 +38,12 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -83,7 +62,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -123,8 +102,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -133,7 +112,7 @@ org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT compile diff --git a/PlayerHeads-api/docs/allclasses-index.html b/PlayerHeads-api/docs/allclasses-index.html index 5755447e..e64e6d82 100644 --- a/PlayerHeads-api/docs/allclasses-index.html +++ b/PlayerHeads-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnums +All Classes and InterfacesInterfacesClassesEnum Classes Class @@ -74,7 +70,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -126,7 +122,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-api/docs/allpackages-index.html b/PlayerHeads-api/docs/allpackages-index.html index 3d54c8c6..7e1301b2 100644 --- a/PlayerHeads-api/docs/allpackages-index.html +++ b/PlayerHeads-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -75,7 +75,7 @@ All Packages diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/HeadType.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/HeadType.html index c5d888d4..ec19bca0 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/HeadType.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/HeadType.html @@ -1,25 +1,20 @@ - -HeadType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +HeadType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -99,11 +113,11 @@ Method Summary Method Description boolean -equals(Object h) +equals(Object h) Determine if this headtype is the same as another. -String +String getDisplayName() Gets the item displayname for the associated skulltype, as defined in the @@ -115,13 +129,13 @@ Method Summary Get the underlying bukkit implementation details for the head on this server version. -UUID +UUID getOwner() Get the UUID associated with the skulltype (randomly assigned to it specifically). -String +String getTexture() Get the Base64-encoded texture string associated with the skulltype @@ -140,7 +154,7 @@ Method Summary Determines if a head of this type is implemented with a vanilla mob head or not [for the current server version]. -Enum +Enum toEnum() Return the associated Enum value for the HeadType @@ -163,7 +177,7 @@ Method Details getOwner @NotNull -UUID getOwner() +UUID getOwner() Get the UUID associated with the skulltype (randomly assigned to it specifically). Note: this is NOT the player's UUID, it is a UUID assigned to the type. @@ -177,7 +191,7 @@ getOwner getTexture @NotNull -String getTexture() +String getTexture() Get the Base64-encoded texture string associated with the skulltype Returns: @@ -188,7 +202,7 @@ getTexture getDisplayName -String getDisplayName() +String getDisplayName() Gets the item displayname for the associated skulltype, as defined in the "lang" file. @@ -245,11 +259,11 @@ getImplementationDetails equals -boolean equals(Object h) +boolean equals(Object h) Determine if this headtype is the same as another. Overrides: -equals in class Object +equals in class Object Parameters: h - the headtype to check Returns: @@ -260,7 +274,7 @@ equals toEnum -Enum toEnum() +Enum toEnum() Return the associated Enum value for the HeadType Returns: @@ -276,7 +290,7 @@ hashCode int hashCode() Overrides: -hashCode in class Object +hashCode in class Object @@ -289,7 +303,7 @@ hashCode diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeads.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeads.html index 974ecbd2..c902904d 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeads.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeads.html @@ -1,25 +1,20 @@ - -PlayerHeads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerHeads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,13 +86,13 @@ Package com.github.crashdemons.playerheads.api Class PlayerHeads -java.lang.Object +java.lang.Object com.github.crashdemons.playerheads.api.PlayerHeads public final class PlayerHeads -extends Object +extends Object PlayerHeads class for managing API provisions. Author: @@ -114,8 +128,8 @@ Method Summary -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -142,7 +156,7 @@ getApiInstance setApiInstance -@Deprecated +@Deprecated public static void setApiInstance(PlayerHeadsAPI api) Deprecated. This method is intended only for internal PlayerHeads use. @@ -165,7 +179,7 @@ setApiInstance diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeadsAPI.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeadsAPI.html index 4d30659f..976e0a79 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeadsAPI.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/PlayerHeadsAPI.html @@ -1,25 +1,20 @@ - -PlayerHeadsAPI (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerHeadsAPI (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -130,7 +144,7 @@ Method Summary Gets a stack of head items for the given type and amount. ItemStack -getHeadItem(String username, +getHeadItem(String username, int num, boolean forceOwner) @@ -167,7 +181,7 @@ Method Summary Gets an array of all heads defined by PlayerHeads -String +String getVersion() Get the version of the PlayerHeads plugin in use @@ -202,7 +216,7 @@ getPlugin getVersion @Nullable -String getVersion() +String getVersion() Get the version of the PlayerHeads plugin in use Returns: @@ -274,7 +288,7 @@ getHeadOf the type of head, or null if there is no viable head (unsupported mob) See Also: - + getHeadDrop(org.bukkit.entity.Entity) @@ -338,7 +352,7 @@ getBoringPlayerheadItem getHeadItem @NotNull -ItemStack getHeadItem(String username, +ItemStack getHeadItem(String username, int num, boolean forceOwner) Gets the playerhead for the user provided. @@ -381,7 +395,7 @@ getHeadItem getCompatibilityProvider @Nullable -@Deprecated +@Deprecated com.github.crashdemons.playerheads.compatibility.CompatibilityProvider getCompatibilityProvider() Deprecated. You should use Compatibility.getProvider() from PlayerHeads-compatibility-api. Compatibility packages will be removed from PH-API in the future, but you may still access them if you use PlayerHeads-compatibility-api (or lib) as a dependency. @@ -419,7 +433,7 @@ getSupportedHeads diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html index 0143ba92..b9350cf6 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html @@ -1,17 +1,16 @@ - -Uses of Interface com.github.crashdemons.playerheads.api.HeadType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface com.github.crashdemons.playerheads.api.HeadType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -119,7 +119,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html index 932eebb1..1ee9857e 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html @@ -1,17 +1,16 @@ - -Uses of Class com.github.crashdemons.playerheads.api.PlayerHeads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class com.github.crashdemons.playerheads.api.PlayerHeads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html index c0412415..e1faca3b 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html @@ -1,17 +1,16 @@ - -Uses of Interface com.github.crashdemons.playerheads.api.PlayerHeadsAPI (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface com.github.crashdemons.playerheads.api.PlayerHeadsAPI (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -96,7 +96,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html index 6ffd9bb4..cd6e02eb 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html @@ -1,25 +1,20 @@ - -com.github.crashdemons.playerheads.api (PlayerHeads-api 5.20.4-SNAPSHOT API) + +com.github.crashdemons.playerheads.api (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -102,7 +107,7 @@ Package diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html index abd1112a..73ea4c7b 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html @@ -1,17 +1,16 @@ - -com.github.crashdemons.playerheads.api Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +com.github.crashdemons.playerheads.api Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package com.github.crashdemons.playerheads.api + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object com.github.crashdemons.playerheads.api.PlayerHeads @@ -75,7 +75,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html index 96725053..74cfa4da 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package com.github.crashdemons.playerheads.api (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package com.github.crashdemons.playerheads.api (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/copy.svg b/PlayerHeads-api/docs/copy.svg new file mode 100644 index 00000000..d435f6c3 --- /dev/null +++ b/PlayerHeads-api/docs/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/PlayerHeads-api/docs/deprecated-list.html b/PlayerHeads-api/docs/deprecated-list.html index f5edd217..81e7ec0b 100644 --- a/PlayerHeads-api/docs/deprecated-list.html +++ b/PlayerHeads-api/docs/deprecated-list.html @@ -1,17 +1,16 @@ - -Deprecated List (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Deprecated List (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,13 +50,13 @@ Deprecated API + Contents - -Classes -Methods -Constructors + +Classes +Methods +Constructors - @@ -66,7 +66,7 @@ Contents Description org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent -you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may +you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future @@ -82,15 +82,15 @@ Contents Description com.github.crashdemons.playerheads.api.PlayerHeads.setApiInstance(PlayerHeadsAPI) -This method is intended only for internal PlayerHeads use. +This method is intended only for internal PlayerHeads use. com.github.crashdemons.playerheads.api.PlayerHeadsAPI.getCompatibilityProvider() -You should use Compatibility.getProvider() from PlayerHeads-compatibility-api. Compatibility packages will be removed from PH-API in the future, but you may still access them if you use PlayerHeads-compatibility-api (or lib) as a dependency. +You should use Compatibility.getProvider() from PlayerHeads-compatibility-api. Compatibility packages will be removed from PH-API in the future, but you may still access them if you use PlayerHeads-compatibility-api (or lib) as a dependency. com.github.crashdemons.playerheads.api.PlayerHeadsAPI.getHeadOf(EntityType) -this may not do exactly what you want because between MC +this may not do exactly what you want because between MC 1.10-1.13 many entities were separated from variants to their own entity-type. Using this method will introduce version-dependent behavior (For example: this may not be able to tell a stray from a skeleton in @@ -99,28 +99,28 @@ Contents org.shininet.bukkit.playerheads.events.HeadRollEvent.getChargedCreeperModifier() -use getModifier("chargedcreeper") instead +use getModifier("chargedcreeper") instead org.shininet.bukkit.playerheads.events.HeadRollEvent.getLootingModifier() -use getModifier("looting") instead +use getModifier("looting") instead org.shininet.bukkit.playerheads.events.HeadRollEvent.getSlimeModifier() -use getModifier("slime") instead +use getModifier("slime") instead org.shininet.bukkit.playerheads.events.HeadRollEvent.setEffectiveDropRate(double) -this value is very likely to be overwritten by other plugins (or applyModifiers/recalculateSuccess) - use setCustomModifier instead. +this value is very likely to be overwritten by other plugins (or applyModifiers/recalculateSuccess) - use setCustomModifier instead. org.shininet.bukkit.playerheads.events.HeadRollEvent.setModifier(String, DropRateModifier) -using this method to modify existing modifiers should be +using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. org.shininet.bukkit.playerheads.events.HeadRollEvent.setModifiers(Map<String, DropRateModifier>) -using this method to modify existing modifiers should be +using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. @@ -144,10 +144,24 @@ Contents + diff --git a/PlayerHeads-api/docs/help-doc.html b/PlayerHeads-api/docs/help-doc.html index f536206b..7d135460 100644 --- a/PlayerHeads-api/docs/help-doc.html +++ b/PlayerHeads-api/docs/help-doc.html @@ -1,17 +1,16 @@ - -API Help (PlayerHeads-api 5.20.4-SNAPSHOT API) + +API Help (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,18 +35,27 @@ Index Help + + +Help: + +Navigation +Pages + + + - + Help: Navigation | Pages -SEARCH: - - +SEARCH + + @@ -59,7 +67,7 @@ JavaDoc Help Navigation: -Search +Search Kinds of Pages: @@ -81,15 +89,15 @@ JavaDoc Help Navigation Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces - + Search -You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example: +You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples: -j.l.obj will match "java.lang.Object" -InpStr will match "java.io.InputStream" -HM.cK will match "java.util.HashMap.containsKey(Object)" +"j.l.obj" matches "java.lang.Object" +"InpStr" matches "java.io.InputStream" +"math exact long" matches "java.lang.Math.absExact(long)" -Refer to the Javadoc Search Specification for a full description of search features. +Refer to the Javadoc Search Specification for a full description of search features. @@ -106,10 +114,9 @@ Package Interfaces Classes -Enums -Exceptions -Errors -Annotation Types +Enum Classes +Exception Classes +Annotation Interfaces @@ -183,7 +190,7 @@ Index This help file applies to API documentation generated by the standard doclet. diff --git a/PlayerHeads-api/docs/index-all.html b/PlayerHeads-api/docs/index-all.html index dd31ae1d..2db5dce8 100644 --- a/PlayerHeads-api/docs/index-all.html +++ b/PlayerHeads-api/docs/index-all.html @@ -1,17 +1,16 @@ - -Index (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Index (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,15 +54,15 @@ Index A B C D E F G H I L M N O P R S T V All Classes and Interfaces|All Packages A -ADD_CONSTANT - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +ADD_CONSTANT - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType adds a constant value to the droprate -ADD_MULTIPLE - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +ADD_MULTIPLE - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType adds a VALUE*droprate to the droprate. -ADD_MULTIPLE_PER_LEVEL - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +ADD_MULTIPLE_PER_LEVEL - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType adds a value to the droprate where the value is a multiple of a provided effectiveness level. @@ -119,7 +119,7 @@ D Constructs a modifier with a value that is multiplied by a level of effectiveness -DropRateModifierType - Enum in org.shininet.bukkit.playerheads.events.modifiers +DropRateModifierType - Enum Class in org.shininet.bukkit.playerheads.events.modifiers Indicates the type of modifier to the effective droprate. @@ -487,14 +487,14 @@ M Constructs the event -MULTIPLY - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +MULTIPLY - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType Multiplies the droprate against a value. N -NO_EFFECT - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +NO_EFFECT - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType Performs no change to the droprate. @@ -556,7 +556,7 @@ R S -SET_CONSTANT - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +SET_CONSTANT - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType Sets the droprate to a constant value, erasing changes by modifiers before it. @@ -640,13 +640,13 @@ T V -valueOf(String) - Static method in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +valueOf(String) - Static method in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -values() - Static method in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +values() - Static method in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. VanillaLivingEntityDropHeadEvent - Class in org.shininet.bukkit.playerheads.events @@ -661,7 +661,7 @@ V A B C D E F G H I L M N O P R S T V All Classes and Interfaces|All Packages diff --git a/PlayerHeads-api/docs/index.html b/PlayerHeads-api/docs/index.html index 9be15135..0196206a 100644 --- a/PlayerHeads-api/docs/index.html +++ b/PlayerHeads-api/docs/index.html @@ -1,17 +1,16 @@ - -Overview (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Overview (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,7 +49,7 @@ -PlayerHeads-api 5.20.4-SNAPSHOT API +PlayerHeads-api 5.21.0-SNAPSHOT API Packages @@ -77,7 +77,7 @@ PlayerHeads-api 5.20.4-SNAPSHOT API diff --git a/PlayerHeads-api/docs/jquery-ui.overrides.css b/PlayerHeads-api/docs/jquery-ui.overrides.css deleted file mode 100644 index 1abff952..00000000 --- a/PlayerHeads-api/docs/jquery-ui.overrides.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - /* Overrides the color of selection used in jQuery UI */ - background: #F8981D; -} diff --git a/PlayerHeads-api/docs/legal/jquery.md b/PlayerHeads-api/docs/legal/jquery.md index 8054a34c..d468b318 100644 --- a/PlayerHeads-api/docs/legal/jquery.md +++ b/PlayerHeads-api/docs/legal/jquery.md @@ -1,9 +1,9 @@ -## jQuery v3.5.1 +## jQuery v3.6.1 ### jQuery License ``` -jQuery v 3.5.1 -Copyright JS Foundation and other contributors, https://js.foundation/ +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -26,7 +26,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************** -The jQuery JavaScript Library v3.5.1 also includes Sizzle.js +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js Sizzle.js includes the following license: diff --git a/PlayerHeads-api/docs/legal/jqueryUI.md b/PlayerHeads-api/docs/legal/jqueryUI.md index 8031bdb5..8bda9d7a 100644 --- a/PlayerHeads-api/docs/legal/jqueryUI.md +++ b/PlayerHeads-api/docs/legal/jqueryUI.md @@ -1,4 +1,4 @@ -## jQuery UI v1.12.1 +## jQuery UI v1.13.2 ### jQuery UI License ``` diff --git a/PlayerHeads-api/docs/link.svg b/PlayerHeads-api/docs/link.svg new file mode 100644 index 00000000..dadef51c --- /dev/null +++ b/PlayerHeads-api/docs/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html index 5baf2fe3..ee2f176d 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html @@ -1,17 +1,16 @@ - -PlayerHeadsPlugin (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerHeadsPlugin (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -107,7 +125,7 @@ Methods in diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html index 4e6b86b1..4e52b070 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html @@ -1,17 +1,16 @@ - -Uses of Interface org.shininet.bukkit.playerheads.PlayerHeadsPlugin (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface org.shininet.bukkit.playerheads.PlayerHeadsPlugin (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html index c63a867d..93659b4f 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html @@ -1,25 +1,20 @@ - -BlockDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +BlockDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class BlockDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.block.BlockEvent org.shininet.bukkit.playerheads.events.BlockDropHeadEvent @@ -185,8 +199,8 @@ Methods Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -309,7 +323,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html index fd4b547e..225f7c6b 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html @@ -1,25 +1,20 @@ - -DropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -159,7 +173,7 @@ setDrop diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html index cd9ab90c..3cdcc502 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html @@ -1,17 +1,16 @@ - -FakeBlockBreakEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +FakeBlockBreakEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -68,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class FakeBlockBreakEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.block.BlockEvent org.bukkit.event.block.BlockExpEvent @@ -85,7 +103,7 @@ Class FakeBlockBreakEventCancellable -@Deprecated +@Deprecated public class FakeBlockBreakEvent extends BlockBreakEvent Deprecated. @@ -162,8 +180,8 @@ Methods Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -198,7 +216,7 @@ FakeBlockBreakEvent diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html index a7dca867..3fd78cc6 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html @@ -1,25 +1,20 @@ - -HeadRollEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +HeadRollEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class HeadRollEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.shininet.bukkit.playerheads.events.HeadRollEvent @@ -208,20 +222,20 @@ Method Summary DropRateModifier -getCustomModifier(String yourPluginName, - String modifierName) +getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. -static String -getCustomModifierName(String pluginName, - String modifierName) +static String +getCustomModifierName(String pluginName, + String modifierName) Constructs the internal name of a custom droprate modifier, provided the name of the plugin and modifier. @@ -271,11 +285,11 @@ Method Summary DropRateModifier -getModifier(String modifierName) +getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. -Map<String,DropRateModifier> +Map<String,DropRateModifier> getModifiers() Gets the list of modifiers to the effective droprate. @@ -318,14 +332,14 @@ Method Summary void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) @@ -349,7 +363,7 @@ Method Summary Sets the effective droproll value for the event. void -setModifier(String modifierName, +setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -358,7 +372,7 @@ Method Summary void -setModifiers(Map<String,DropRateModifier> entries) +setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -377,8 +391,8 @@ Method Summary Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -460,7 +474,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -482,17 +496,17 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. +lootingModifier - the fractional probability modifier (greater than + or equal to 1.0) of looting, as applied by PlayerHeads to the effective + droprate. slimeModifier - the fraction of the slime/magmacube drop rate that is applicable at this size, modifuing the effective droprate (0.5 is 50% of the base rate). This should be 1.0 when there is no effect or the entity is not a slime. -lootingModifier - the fractional probability modifier (greater than - or equal to 1.0) of looting, as applied by PlayerHeads to the effective - droprate. chargedCreeperModifier - the multiplier effect that charged creepers have on normal droprates +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -509,7 +523,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -528,15 +542,15 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. +lootingModifier - the fractional probability modifier (greater than + or equal to 1.0) of looting, as applied by PlayerHeads to the effective + droprate. slimeModifier - the fraction of the slime/magmacube drop rate that is applicable at this size, modifuing the effective droprate (0.5 is 50% of the base rate). This should be 1.0 when there is no effect or the entity is not a slime. -lootingModifier - the fractional probability modifier (greater than - or equal to 1.0) of looting, as applied by PlayerHeads to the effective - droprate. +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -553,7 +567,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -571,11 +585,11 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. lootingModifier - the fractional probability modifier (greater than or equal to 1.0) of looting, as applied by PlayerHeads to the effective droprate. +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -599,7 +613,7 @@ Method Details getModifiers @NotNull -public Map<String,DropRateModifier> getModifiers() +public Map<String,DropRateModifier> getModifiers() Gets the list of modifiers to the effective droprate. This map will be in order that the modifiers are applied. @@ -679,7 +693,7 @@ recalculateSuccess getModifier @Nullable -public DropRateModifier getModifier(String modifierName) +public DropRateModifier getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. This method can retrieve both @@ -697,7 +711,7 @@ getModifier setModifier -public void setModifier(String modifierName, +public void setModifier(String modifierName, DropRateModifier value) Deprecated. using this method to modify existing modifiers should be @@ -719,7 +733,7 @@ setModifier setModifiers -public void setModifiers(Map<String,DropRateModifier> entries) +public void setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. @@ -739,8 +753,8 @@ setModifiers getCustomModifierName -public static String getCustomModifierName(String pluginName, - String modifierName) +public static String getCustomModifierName(String pluginName, + String modifierName) Constructs the internal name of a custom droprate modifier, provided the name of the plugin and modifier. @@ -758,7 +772,7 @@ getCustomModifierName setCustomModifier public void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. Note: this value does not impact calculations unless applyModifiers+applyDropRate or recalculateSuccess is called. @@ -779,7 +793,7 @@ setCustomModifier setCustomModifier public void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. @@ -802,7 +816,7 @@ setCustomModifier getCustomModifier public DropRateModifier getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. Note: the name of the modifier @@ -821,8 +835,8 @@ getCustomModifier getCustomModifier -public DropRateModifier getCustomModifier(String yourPluginName, - String modifierName) +public DropRateModifier getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. Note: the name of the modifier @@ -858,7 +872,7 @@ getChargedCreeperModifier 5.2.0-SNAPSHOT See Also: - + getModifier(java.lang.String) @@ -882,7 +896,7 @@ getSlimeModifier 5.1.0-SNAPSHOT See Also: - + getModifier(java.lang.String) @@ -906,7 +920,7 @@ getLootingModifier the looting modifier See Also: - + getModifier(java.lang.String) @@ -1009,7 +1023,7 @@ getEffectiveDropRoll the effective drop roll. See Also: - + getOriginalDropRoll() @@ -1076,7 +1090,7 @@ succeeded the success of the drop roll See Also: - + getDropSuccess() @@ -1116,7 +1130,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html index bc333872..7f08394b 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html @@ -1,25 +1,20 @@ - -LivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +LivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class LivingEntityDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -194,8 +208,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -342,7 +356,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html index f951c9c3..0dfad112 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html @@ -1,17 +1,16 @@ - -MobDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +MobDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -68,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class MobDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -152,8 +170,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -207,7 +225,7 @@ MobDropHeadEvent diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html index 95eb7c5d..5882dc45 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html @@ -1,25 +1,20 @@ - -PlayerDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class PlayerDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -171,8 +185,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -247,7 +261,7 @@ getEntity diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html index d047601f..5ede17e2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html @@ -1,25 +1,20 @@ - -VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class VanillaLivingEntityDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent @@ -128,7 +142,7 @@ Constructor Summary VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops) + List<ItemStack> drops) Creates the event @@ -151,7 +165,7 @@ Method Summary The event which inevitably triggered the beheading event (usually EntityDeathEvent) -List<ItemStack> +List<ItemStack> getDrops() Gets the items that will drop from the beheading. @@ -196,8 +210,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -215,7 +229,7 @@ VanillaLivingEntityDropHeadEvent public VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops) + List<ItemStack> drops) Creates the event Parameters: @@ -277,7 +291,7 @@ getCause getDrops -public List<ItemStack> getDrops() +public List<ItemStack> getDrops() Gets the items that will drop from the beheading. Note: changing this list will not impact dropped items, you must interact with the event through getCause(). @@ -350,7 +364,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html index 8666fc4a..4dfaf4ef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.BlockDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.BlockDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html index d79650f6..ab0c8ed9 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Interface org.shininet.bukkit.playerheads.events.DropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface org.shininet.bukkit.playerheads.events.DropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -99,7 +99,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html index 0b0784d0..ec146c83 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html index a756d997..a43c2f8a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.HeadRollEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.HeadRollEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html index 45c34c78..dd6947b0 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -88,7 +88,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html index d1842218..2ae24f79 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.MobDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.MobDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html index 6a4a2194..97887736 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.PlayerDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.PlayerDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html index 9cf3586b..a59af898 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html index deee05bf..c236e191 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html @@ -1,25 +1,20 @@ - -DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,13 +86,13 @@ Package org.shininet.bukkit.playerheads.events.modifiers Class DropRateModifier -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier public class DropRateModifier -extends Object +extends Object A modifier for the droprate including type and value information Since: @@ -97,12 +111,12 @@ Constructor Summary Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -128,7 +142,7 @@ Method Summary Apply the droprate modifier to the droprate value -Double +Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where @@ -139,12 +153,12 @@ Method Summary Gets the effectiveness level of the modifier. -Double +Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. -DropRateModifierType +DropRateModifierType getType() Gets the type of modifier @@ -158,8 +172,8 @@ Method Summary -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -174,7 +188,7 @@ Constructor Details DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value, int level) Constructs a modifier with a value that is multiplied by a level of @@ -190,7 +204,7 @@ DropRateModifier DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value @@ -224,7 +238,7 @@ getLevel getType -public DropRateModifierType getType() +public DropRateModifierType getType() Gets the type of modifier Returns: @@ -246,7 +260,7 @@ getValue getAdditiveMultiplierValue -public Double getAdditiveMultiplierValue() +public Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where droprate*(1+newvalue) is equivalent to the current modifier effect. Note: only other multipliers can be converted. @@ -259,7 +273,7 @@ getAdditiveMultiplierValue getMultiplierValue -public Double getMultiplierValue() +public Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. Note: only additive multipliers can be converted to multipliers. @@ -291,7 +305,7 @@ apply diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html index 6c56f247..ba1f97e1 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html @@ -1,25 +1,20 @@ - -DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Enum Constants +Field +Method + + + +Detail: + +Enum Constants +Field +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -70,21 +84,21 @@ Package org.shininet.bukkit.playerheads.events.modifiers -Enum DropRateModifierType +Enum Class DropRateModifierType -java.lang.Object -java.lang.Enum<DropRateModifierType> +java.lang.Object +java.lang.Enum<DropRateModifierType> org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType All Implemented Interfaces: -Serializable, Comparable<DropRateModifierType>, java.lang.constant.Constable +Serializable, Comparable<DropRateModifierType>, Constable public enum DropRateModifierType -extends Enum<DropRateModifierType> +extends Enum<DropRateModifierType> Indicates the type of modifier to the effective droprate. Since: @@ -100,8 +114,8 @@ Enum DropRateModifierType Nested Class Summary -Nested classes/interfaces inherited from class java.lang.Enum -Enum.EnumDesc<E extends Enum<E>> +Nested classes/interfaces inherited from class java.lang.Enum +Enum.EnumDesc<E extends Enum<E>> @@ -150,26 +164,26 @@ Method Summary Modifier and Type Method Description -static DropRateModifierType -valueOf(String name) +static DropRateModifierType +valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Methods inherited from class java.lang.Enum -clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf +Methods inherited from class java.lang.Enum +clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf -Methods inherited from class java.lang.Object -getClass, notify, notifyAll, wait, wait, wait +Methods inherited from class java.lang.Object +getClass, notify, notifyAll, wait, wait, wait @@ -184,14 +198,14 @@ Enum Constant Details ADD_CONSTANT -public static final DropRateModifierType ADD_CONSTANT +public static final DropRateModifierType ADD_CONSTANT adds a constant value to the droprate ADD_MULTIPLE -public static final DropRateModifierType ADD_MULTIPLE +public static final DropRateModifierType ADD_MULTIPLE adds a VALUE*droprate to the droprate. This is equivalent to a multiplier of 1+VALUE. Positive values increase droprate by a fraction, negative values will reduuce the droprate by a fraction. In this way, additive multipliers can be thought of as a delta value. @@ -199,21 +213,21 @@ ADD_MULTIPLE ADD_MULTIPLE_PER_LEVEL -public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL +public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL adds a value to the droprate where the value is a multiple of a provided effectiveness level. this is equivalent to a multiplier of (1+VALUE*LEVEL) MULTIPLY -public static final DropRateModifierType MULTIPLY +public static final DropRateModifierType MULTIPLY Multiplies the droprate against a value. Values under 1 reduce the droprate, values above 1 are equivalent to additive multipliers SET_CONSTANT -public static final DropRateModifierType SET_CONSTANT +public static final DropRateModifierType SET_CONSTANT Sets the droprate to a constant value, erasing changes by modifiers before it. (further modifiers can still be applied after this though) Since: @@ -224,7 +238,7 @@ SET_CONSTANT NO_EFFECT -public static final DropRateModifierType NO_EFFECT +public static final DropRateModifierType NO_EFFECT Performs no change to the droprate. This is a dummy modifier used for a placeholder, plugin-determined logic, or indication to other plugins even when no action is desired. Since: @@ -243,22 +257,22 @@ Method Details values -public static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +public static DropRateModifierType[] values() +Returns an array containing the constants of this enum class, in the order they are declared. Returns: -an array containing the constants of this enum type, in the order they are declared +an array containing the constants of this enum class, in the order they are declared valueOf -public static DropRateModifierType valueOf(String name) -Returns the enum constant of this type with the specified name. +public static DropRateModifierType valueOf(String name) +Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are +enum constant in this class. (Extraneous whitespace characters are not permitted.) Parameters: @@ -266,8 +280,8 @@ valueOf Returns: the enum constant with the specified name Throws: -IllegalArgumentException - if this enum type has no constant with the specified name -NullPointerException - if the argument is null +IllegalArgumentException - if this enum class has no constant with the specified name +NullPointerException - if the argument is null @@ -280,7 +294,7 @@ valueOf diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html index 546eb6b4..2bc1e91a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -71,19 +71,19 @@ Uses of Method Description DropRateModifier -HeadRollEvent.getCustomModifier(String yourPluginName, - String modifierName) +HeadRollEvent.getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier HeadRollEvent.getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier -HeadRollEvent.getModifier(String modifierName) +HeadRollEvent.getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. @@ -93,7 +93,7 @@ Uses of Modifier and Type Method Description -Map<String,DropRateModifier> +Map<String,DropRateModifier> HeadRollEvent.getModifiers() Gets the list of modifiers to the effective droprate. @@ -106,21 +106,21 @@ Uses of Description void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. void -HeadRollEvent.setModifier(String modifierName, +HeadRollEvent.setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -135,7 +135,7 @@ Uses of Method Description void -HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) +HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -150,7 +150,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html index 6c4dd73a..e0b82bd2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html @@ -1,17 +1,16 @@ - -Uses of Enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Enum Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,12 +23,12 @@ - + Skip navigation links Overview Package -Class +Class Use Tree Deprecated @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,9 +49,9 @@ -Uses of Enumorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +Uses of Enum Classorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Packages that use DropRateModifierType +Packages that use DropRateModifierType Package Description @@ -64,42 +64,42 @@ -Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers -Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType +Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers +Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType Modifier and Type Method Description -DropRateModifierType +DropRateModifierType DropRateModifier.getType() Gets the type of modifier -static DropRateModifierType -DropRateModifierType.valueOf(String name) +static DropRateModifierType +DropRateModifierType.valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] DropRateModifierType.values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType +Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType Modifier Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
Summary:
Detail:
boolean
equals(Object h)
String
getDisplayName()
UUID
getOwner()
getTexture()
Enum
toEnum()
equals
Object
h
hashCode
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
ItemStack
getHeadItem(String username, +getHeadItem(String username, int num, boolean forceOwner) @@ -167,7 +181,7 @@ Method Summary Gets an array of all heads defined by PlayerHeads -String +String getVersion() Get the version of the PlayerHeads plugin in use @@ -202,7 +216,7 @@ getPlugin getVersion @Nullable -String getVersion() +String getVersion() Get the version of the PlayerHeads plugin in use Returns: @@ -274,7 +288,7 @@ getHeadOf the type of head, or null if there is no viable head (unsupported mob) See Also: - + getHeadDrop(org.bukkit.entity.Entity) @@ -338,7 +352,7 @@ getBoringPlayerheadItem getHeadItem @NotNull -ItemStack getHeadItem(String username, +ItemStack getHeadItem(String username, int num, boolean forceOwner) Gets the playerhead for the user provided. @@ -381,7 +395,7 @@ getHeadItem getCompatibilityProvider @Nullable -@Deprecated +@Deprecated com.github.crashdemons.playerheads.compatibility.CompatibilityProvider getCompatibilityProvider() Deprecated. You should use Compatibility.getProvider() from PlayerHeads-compatibility-api. Compatibility packages will be removed from PH-API in the future, but you may still access them if you use PlayerHeads-compatibility-api (or lib) as a dependency. @@ -419,7 +433,7 @@ getSupportedHeads diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html index 0143ba92..b9350cf6 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/HeadType.html @@ -1,17 +1,16 @@ - -Uses of Interface com.github.crashdemons.playerheads.api.HeadType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface com.github.crashdemons.playerheads.api.HeadType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -119,7 +119,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html index 932eebb1..1ee9857e 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeads.html @@ -1,17 +1,16 @@ - -Uses of Class com.github.crashdemons.playerheads.api.PlayerHeads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class com.github.crashdemons.playerheads.api.PlayerHeads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html index c0412415..e1faca3b 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/class-use/PlayerHeadsAPI.html @@ -1,17 +1,16 @@ - -Uses of Interface com.github.crashdemons.playerheads.api.PlayerHeadsAPI (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface com.github.crashdemons.playerheads.api.PlayerHeadsAPI (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -96,7 +96,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html index 6ffd9bb4..cd6e02eb 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-summary.html @@ -1,25 +1,20 @@ - -com.github.crashdemons.playerheads.api (PlayerHeads-api 5.20.4-SNAPSHOT API) + +com.github.crashdemons.playerheads.api (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -102,7 +107,7 @@ Package diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html index abd1112a..73ea4c7b 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-tree.html @@ -1,17 +1,16 @@ - -com.github.crashdemons.playerheads.api Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +com.github.crashdemons.playerheads.api Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package com.github.crashdemons.playerheads.api + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object com.github.crashdemons.playerheads.api.PlayerHeads @@ -75,7 +75,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html index 96725053..74cfa4da 100644 --- a/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html +++ b/PlayerHeads-api/docs/com/github/crashdemons/playerheads/api/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package com.github.crashdemons.playerheads.api (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package com.github.crashdemons.playerheads.api (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/copy.svg b/PlayerHeads-api/docs/copy.svg new file mode 100644 index 00000000..d435f6c3 --- /dev/null +++ b/PlayerHeads-api/docs/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/PlayerHeads-api/docs/deprecated-list.html b/PlayerHeads-api/docs/deprecated-list.html index f5edd217..81e7ec0b 100644 --- a/PlayerHeads-api/docs/deprecated-list.html +++ b/PlayerHeads-api/docs/deprecated-list.html @@ -1,17 +1,16 @@ - -Deprecated List (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Deprecated List (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,13 +50,13 @@ Deprecated API + Contents - -Classes -Methods -Constructors + +Classes +Methods +Constructors - @@ -66,7 +66,7 @@ Contents Description org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent -you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may +you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future @@ -82,15 +82,15 @@ Contents Description com.github.crashdemons.playerheads.api.PlayerHeads.setApiInstance(PlayerHeadsAPI) -This method is intended only for internal PlayerHeads use. +This method is intended only for internal PlayerHeads use. com.github.crashdemons.playerheads.api.PlayerHeadsAPI.getCompatibilityProvider() -You should use Compatibility.getProvider() from PlayerHeads-compatibility-api. Compatibility packages will be removed from PH-API in the future, but you may still access them if you use PlayerHeads-compatibility-api (or lib) as a dependency. +You should use Compatibility.getProvider() from PlayerHeads-compatibility-api. Compatibility packages will be removed from PH-API in the future, but you may still access them if you use PlayerHeads-compatibility-api (or lib) as a dependency. com.github.crashdemons.playerheads.api.PlayerHeadsAPI.getHeadOf(EntityType) -this may not do exactly what you want because between MC +this may not do exactly what you want because between MC 1.10-1.13 many entities were separated from variants to their own entity-type. Using this method will introduce version-dependent behavior (For example: this may not be able to tell a stray from a skeleton in @@ -99,28 +99,28 @@ Contents org.shininet.bukkit.playerheads.events.HeadRollEvent.getChargedCreeperModifier() -use getModifier("chargedcreeper") instead +use getModifier("chargedcreeper") instead org.shininet.bukkit.playerheads.events.HeadRollEvent.getLootingModifier() -use getModifier("looting") instead +use getModifier("looting") instead org.shininet.bukkit.playerheads.events.HeadRollEvent.getSlimeModifier() -use getModifier("slime") instead +use getModifier("slime") instead org.shininet.bukkit.playerheads.events.HeadRollEvent.setEffectiveDropRate(double) -this value is very likely to be overwritten by other plugins (or applyModifiers/recalculateSuccess) - use setCustomModifier instead. +this value is very likely to be overwritten by other plugins (or applyModifiers/recalculateSuccess) - use setCustomModifier instead. org.shininet.bukkit.playerheads.events.HeadRollEvent.setModifier(String, DropRateModifier) -using this method to modify existing modifiers should be +using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. org.shininet.bukkit.playerheads.events.HeadRollEvent.setModifiers(Map<String, DropRateModifier>) -using this method to modify existing modifiers should be +using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. @@ -144,10 +144,24 @@ Contents + diff --git a/PlayerHeads-api/docs/help-doc.html b/PlayerHeads-api/docs/help-doc.html index f536206b..7d135460 100644 --- a/PlayerHeads-api/docs/help-doc.html +++ b/PlayerHeads-api/docs/help-doc.html @@ -1,17 +1,16 @@ - -API Help (PlayerHeads-api 5.20.4-SNAPSHOT API) + +API Help (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,18 +35,27 @@ Index Help + + +Help: + +Navigation +Pages + + + - + Help: Navigation | Pages -SEARCH: - - +SEARCH + + @@ -59,7 +67,7 @@ JavaDoc Help Navigation: -Search +Search Kinds of Pages: @@ -81,15 +89,15 @@ JavaDoc Help Navigation Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces - + Search -You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example: +You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples: -j.l.obj will match "java.lang.Object" -InpStr will match "java.io.InputStream" -HM.cK will match "java.util.HashMap.containsKey(Object)" +"j.l.obj" matches "java.lang.Object" +"InpStr" matches "java.io.InputStream" +"math exact long" matches "java.lang.Math.absExact(long)" -Refer to the Javadoc Search Specification for a full description of search features. +Refer to the Javadoc Search Specification for a full description of search features. @@ -106,10 +114,9 @@ Package Interfaces Classes -Enums -Exceptions -Errors -Annotation Types +Enum Classes +Exception Classes +Annotation Interfaces @@ -183,7 +190,7 @@ Index This help file applies to API documentation generated by the standard doclet. diff --git a/PlayerHeads-api/docs/index-all.html b/PlayerHeads-api/docs/index-all.html index dd31ae1d..2db5dce8 100644 --- a/PlayerHeads-api/docs/index-all.html +++ b/PlayerHeads-api/docs/index-all.html @@ -1,17 +1,16 @@ - -Index (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Index (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,15 +54,15 @@ Index A B C D E F G H I L M N O P R S T V All Classes and Interfaces|All Packages A -ADD_CONSTANT - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +ADD_CONSTANT - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType adds a constant value to the droprate -ADD_MULTIPLE - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +ADD_MULTIPLE - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType adds a VALUE*droprate to the droprate. -ADD_MULTIPLE_PER_LEVEL - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +ADD_MULTIPLE_PER_LEVEL - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType adds a value to the droprate where the value is a multiple of a provided effectiveness level. @@ -119,7 +119,7 @@ D Constructs a modifier with a value that is multiplied by a level of effectiveness -DropRateModifierType - Enum in org.shininet.bukkit.playerheads.events.modifiers +DropRateModifierType - Enum Class in org.shininet.bukkit.playerheads.events.modifiers Indicates the type of modifier to the effective droprate. @@ -487,14 +487,14 @@ M Constructs the event -MULTIPLY - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +MULTIPLY - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType Multiplies the droprate against a value. N -NO_EFFECT - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +NO_EFFECT - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType Performs no change to the droprate. @@ -556,7 +556,7 @@ R S -SET_CONSTANT - Enum constant in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +SET_CONSTANT - Enum constant in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType Sets the droprate to a constant value, erasing changes by modifiers before it. @@ -640,13 +640,13 @@ T V -valueOf(String) - Static method in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +valueOf(String) - Static method in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -values() - Static method in enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +values() - Static method in enum class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. VanillaLivingEntityDropHeadEvent - Class in org.shininet.bukkit.playerheads.events @@ -661,7 +661,7 @@ V A B C D E F G H I L M N O P R S T V All Classes and Interfaces|All Packages diff --git a/PlayerHeads-api/docs/index.html b/PlayerHeads-api/docs/index.html index 9be15135..0196206a 100644 --- a/PlayerHeads-api/docs/index.html +++ b/PlayerHeads-api/docs/index.html @@ -1,17 +1,16 @@ - -Overview (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Overview (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,7 +49,7 @@ -PlayerHeads-api 5.20.4-SNAPSHOT API +PlayerHeads-api 5.21.0-SNAPSHOT API Packages @@ -77,7 +77,7 @@ PlayerHeads-api 5.20.4-SNAPSHOT API diff --git a/PlayerHeads-api/docs/jquery-ui.overrides.css b/PlayerHeads-api/docs/jquery-ui.overrides.css deleted file mode 100644 index 1abff952..00000000 --- a/PlayerHeads-api/docs/jquery-ui.overrides.css +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - /* Overrides the color of selection used in jQuery UI */ - background: #F8981D; -} diff --git a/PlayerHeads-api/docs/legal/jquery.md b/PlayerHeads-api/docs/legal/jquery.md index 8054a34c..d468b318 100644 --- a/PlayerHeads-api/docs/legal/jquery.md +++ b/PlayerHeads-api/docs/legal/jquery.md @@ -1,9 +1,9 @@ -## jQuery v3.5.1 +## jQuery v3.6.1 ### jQuery License ``` -jQuery v 3.5.1 -Copyright JS Foundation and other contributors, https://js.foundation/ +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -26,7 +26,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************** -The jQuery JavaScript Library v3.5.1 also includes Sizzle.js +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js Sizzle.js includes the following license: diff --git a/PlayerHeads-api/docs/legal/jqueryUI.md b/PlayerHeads-api/docs/legal/jqueryUI.md index 8031bdb5..8bda9d7a 100644 --- a/PlayerHeads-api/docs/legal/jqueryUI.md +++ b/PlayerHeads-api/docs/legal/jqueryUI.md @@ -1,4 +1,4 @@ -## jQuery UI v1.12.1 +## jQuery UI v1.13.2 ### jQuery UI License ``` diff --git a/PlayerHeads-api/docs/link.svg b/PlayerHeads-api/docs/link.svg new file mode 100644 index 00000000..dadef51c --- /dev/null +++ b/PlayerHeads-api/docs/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html index 5baf2fe3..ee2f176d 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/PlayerHeadsPlugin.html @@ -1,17 +1,16 @@ - -PlayerHeadsPlugin (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerHeadsPlugin (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -107,7 +125,7 @@ Methods in diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html index 4e6b86b1..4e52b070 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/class-use/PlayerHeadsPlugin.html @@ -1,17 +1,16 @@ - -Uses of Interface org.shininet.bukkit.playerheads.PlayerHeadsPlugin (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface org.shininet.bukkit.playerheads.PlayerHeadsPlugin (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html index c63a867d..93659b4f 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/BlockDropHeadEvent.html @@ -1,25 +1,20 @@ - -BlockDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +BlockDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class BlockDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.block.BlockEvent org.shininet.bukkit.playerheads.events.BlockDropHeadEvent @@ -185,8 +199,8 @@ Methods Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -309,7 +323,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html index fd4b547e..225f7c6b 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/DropHeadEvent.html @@ -1,25 +1,20 @@ - -DropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -159,7 +173,7 @@ setDrop diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html index cd9ab90c..3cdcc502 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/FakeBlockBreakEvent.html @@ -1,17 +1,16 @@ - -FakeBlockBreakEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +FakeBlockBreakEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -68,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class FakeBlockBreakEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.block.BlockEvent org.bukkit.event.block.BlockExpEvent @@ -85,7 +103,7 @@ Class FakeBlockBreakEventCancellable -@Deprecated +@Deprecated public class FakeBlockBreakEvent extends BlockBreakEvent Deprecated. @@ -162,8 +180,8 @@ Methods Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -198,7 +216,7 @@ FakeBlockBreakEvent diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html index a7dca867..3fd78cc6 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/HeadRollEvent.html @@ -1,25 +1,20 @@ - -HeadRollEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +HeadRollEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class HeadRollEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.shininet.bukkit.playerheads.events.HeadRollEvent @@ -208,20 +222,20 @@ Method Summary DropRateModifier -getCustomModifier(String yourPluginName, - String modifierName) +getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. -static String -getCustomModifierName(String pluginName, - String modifierName) +static String +getCustomModifierName(String pluginName, + String modifierName) Constructs the internal name of a custom droprate modifier, provided the name of the plugin and modifier. @@ -271,11 +285,11 @@ Method Summary DropRateModifier -getModifier(String modifierName) +getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. -Map<String,DropRateModifier> +Map<String,DropRateModifier> getModifiers() Gets the list of modifiers to the effective droprate. @@ -318,14 +332,14 @@ Method Summary void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) @@ -349,7 +363,7 @@ Method Summary Sets the effective droproll value for the event. void -setModifier(String modifierName, +setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -358,7 +372,7 @@ Method Summary void -setModifiers(Map<String,DropRateModifier> entries) +setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -377,8 +391,8 @@ Method Summary Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -460,7 +474,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -482,17 +496,17 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. +lootingModifier - the fractional probability modifier (greater than + or equal to 1.0) of looting, as applied by PlayerHeads to the effective + droprate. slimeModifier - the fraction of the slime/magmacube drop rate that is applicable at this size, modifuing the effective droprate (0.5 is 50% of the base rate). This should be 1.0 when there is no effect or the entity is not a slime. -lootingModifier - the fractional probability modifier (greater than - or equal to 1.0) of looting, as applied by PlayerHeads to the effective - droprate. chargedCreeperModifier - the multiplier effect that charged creepers have on normal droprates +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -509,7 +523,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -528,15 +542,15 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. +lootingModifier - the fractional probability modifier (greater than + or equal to 1.0) of looting, as applied by PlayerHeads to the effective + droprate. slimeModifier - the fraction of the slime/magmacube drop rate that is applicable at this size, modifuing the effective droprate (0.5 is 50% of the base rate). This should be 1.0 when there is no effect or the entity is not a slime. -lootingModifier - the fractional probability modifier (greater than - or equal to 1.0) of looting, as applied by PlayerHeads to the effective - droprate. +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -553,7 +567,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -571,11 +585,11 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. lootingModifier - the fractional probability modifier (greater than or equal to 1.0) of looting, as applied by PlayerHeads to the effective droprate. +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -599,7 +613,7 @@ Method Details getModifiers @NotNull -public Map<String,DropRateModifier> getModifiers() +public Map<String,DropRateModifier> getModifiers() Gets the list of modifiers to the effective droprate. This map will be in order that the modifiers are applied. @@ -679,7 +693,7 @@ recalculateSuccess getModifier @Nullable -public DropRateModifier getModifier(String modifierName) +public DropRateModifier getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. This method can retrieve both @@ -697,7 +711,7 @@ getModifier setModifier -public void setModifier(String modifierName, +public void setModifier(String modifierName, DropRateModifier value) Deprecated. using this method to modify existing modifiers should be @@ -719,7 +733,7 @@ setModifier setModifiers -public void setModifiers(Map<String,DropRateModifier> entries) +public void setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. @@ -739,8 +753,8 @@ setModifiers getCustomModifierName -public static String getCustomModifierName(String pluginName, - String modifierName) +public static String getCustomModifierName(String pluginName, + String modifierName) Constructs the internal name of a custom droprate modifier, provided the name of the plugin and modifier. @@ -758,7 +772,7 @@ getCustomModifierName setCustomModifier public void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. Note: this value does not impact calculations unless applyModifiers+applyDropRate or recalculateSuccess is called. @@ -779,7 +793,7 @@ setCustomModifier setCustomModifier public void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. @@ -802,7 +816,7 @@ setCustomModifier getCustomModifier public DropRateModifier getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. Note: the name of the modifier @@ -821,8 +835,8 @@ getCustomModifier getCustomModifier -public DropRateModifier getCustomModifier(String yourPluginName, - String modifierName) +public DropRateModifier getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. Note: the name of the modifier @@ -858,7 +872,7 @@ getChargedCreeperModifier 5.2.0-SNAPSHOT See Also: - + getModifier(java.lang.String) @@ -882,7 +896,7 @@ getSlimeModifier 5.1.0-SNAPSHOT See Also: - + getModifier(java.lang.String) @@ -906,7 +920,7 @@ getLootingModifier the looting modifier See Also: - + getModifier(java.lang.String) @@ -1009,7 +1023,7 @@ getEffectiveDropRoll the effective drop roll. See Also: - + getOriginalDropRoll() @@ -1076,7 +1090,7 @@ succeeded the success of the drop roll See Also: - + getDropSuccess() @@ -1116,7 +1130,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html index bc333872..7f08394b 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html @@ -1,25 +1,20 @@ - -LivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +LivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class LivingEntityDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -194,8 +208,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -342,7 +356,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html index f951c9c3..0dfad112 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html @@ -1,17 +1,16 @@ - -MobDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +MobDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -68,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class MobDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -152,8 +170,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -207,7 +225,7 @@ MobDropHeadEvent diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html index 95eb7c5d..5882dc45 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html @@ -1,25 +1,20 @@ - -PlayerDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class PlayerDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -171,8 +185,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -247,7 +261,7 @@ getEntity diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html index d047601f..5ede17e2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html @@ -1,25 +1,20 @@ - -VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class VanillaLivingEntityDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent @@ -128,7 +142,7 @@ Constructor Summary VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops) + List<ItemStack> drops) Creates the event @@ -151,7 +165,7 @@ Method Summary The event which inevitably triggered the beheading event (usually EntityDeathEvent) -List<ItemStack> +List<ItemStack> getDrops() Gets the items that will drop from the beheading. @@ -196,8 +210,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -215,7 +229,7 @@ VanillaLivingEntityDropHeadEvent public VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops) + List<ItemStack> drops) Creates the event Parameters: @@ -277,7 +291,7 @@ getCause getDrops -public List<ItemStack> getDrops() +public List<ItemStack> getDrops() Gets the items that will drop from the beheading. Note: changing this list will not impact dropped items, you must interact with the event through getCause(). @@ -350,7 +364,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html index 8666fc4a..4dfaf4ef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.BlockDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.BlockDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html index d79650f6..ab0c8ed9 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Interface org.shininet.bukkit.playerheads.events.DropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface org.shininet.bukkit.playerheads.events.DropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -99,7 +99,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html index 0b0784d0..ec146c83 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html index a756d997..a43c2f8a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.HeadRollEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.HeadRollEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html index 45c34c78..dd6947b0 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -88,7 +88,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html index d1842218..2ae24f79 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.MobDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.MobDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html index 6a4a2194..97887736 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.PlayerDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.PlayerDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html index 9cf3586b..a59af898 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html index deee05bf..c236e191 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html @@ -1,25 +1,20 @@ - -DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,13 +86,13 @@ Package org.shininet.bukkit.playerheads.events.modifiers Class DropRateModifier -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier public class DropRateModifier -extends Object +extends Object A modifier for the droprate including type and value information Since: @@ -97,12 +111,12 @@ Constructor Summary Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -128,7 +142,7 @@ Method Summary Apply the droprate modifier to the droprate value -Double +Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where @@ -139,12 +153,12 @@ Method Summary Gets the effectiveness level of the modifier. -Double +Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. -DropRateModifierType +DropRateModifierType getType() Gets the type of modifier @@ -158,8 +172,8 @@ Method Summary -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -174,7 +188,7 @@ Constructor Details DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value, int level) Constructs a modifier with a value that is multiplied by a level of @@ -190,7 +204,7 @@ DropRateModifier DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value @@ -224,7 +238,7 @@ getLevel getType -public DropRateModifierType getType() +public DropRateModifierType getType() Gets the type of modifier Returns: @@ -246,7 +260,7 @@ getValue getAdditiveMultiplierValue -public Double getAdditiveMultiplierValue() +public Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where droprate*(1+newvalue) is equivalent to the current modifier effect. Note: only other multipliers can be converted. @@ -259,7 +273,7 @@ getAdditiveMultiplierValue getMultiplierValue -public Double getMultiplierValue() +public Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. Note: only additive multipliers can be converted to multipliers. @@ -291,7 +305,7 @@ apply diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html index 6c56f247..ba1f97e1 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html @@ -1,25 +1,20 @@ - -DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Enum Constants +Field +Method + + + +Detail: + +Enum Constants +Field +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -70,21 +84,21 @@ Package org.shininet.bukkit.playerheads.events.modifiers -Enum DropRateModifierType +Enum Class DropRateModifierType -java.lang.Object -java.lang.Enum<DropRateModifierType> +java.lang.Object +java.lang.Enum<DropRateModifierType> org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType All Implemented Interfaces: -Serializable, Comparable<DropRateModifierType>, java.lang.constant.Constable +Serializable, Comparable<DropRateModifierType>, Constable public enum DropRateModifierType -extends Enum<DropRateModifierType> +extends Enum<DropRateModifierType> Indicates the type of modifier to the effective droprate. Since: @@ -100,8 +114,8 @@ Enum DropRateModifierType Nested Class Summary -Nested classes/interfaces inherited from class java.lang.Enum -Enum.EnumDesc<E extends Enum<E>> +Nested classes/interfaces inherited from class java.lang.Enum +Enum.EnumDesc<E extends Enum<E>> @@ -150,26 +164,26 @@ Method Summary Modifier and Type Method Description -static DropRateModifierType -valueOf(String name) +static DropRateModifierType +valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Methods inherited from class java.lang.Enum -clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf +Methods inherited from class java.lang.Enum +clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf -Methods inherited from class java.lang.Object -getClass, notify, notifyAll, wait, wait, wait +Methods inherited from class java.lang.Object +getClass, notify, notifyAll, wait, wait, wait @@ -184,14 +198,14 @@ Enum Constant Details ADD_CONSTANT -public static final DropRateModifierType ADD_CONSTANT +public static final DropRateModifierType ADD_CONSTANT adds a constant value to the droprate ADD_MULTIPLE -public static final DropRateModifierType ADD_MULTIPLE +public static final DropRateModifierType ADD_MULTIPLE adds a VALUE*droprate to the droprate. This is equivalent to a multiplier of 1+VALUE. Positive values increase droprate by a fraction, negative values will reduuce the droprate by a fraction. In this way, additive multipliers can be thought of as a delta value. @@ -199,21 +213,21 @@ ADD_MULTIPLE ADD_MULTIPLE_PER_LEVEL -public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL +public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL adds a value to the droprate where the value is a multiple of a provided effectiveness level. this is equivalent to a multiplier of (1+VALUE*LEVEL) MULTIPLY -public static final DropRateModifierType MULTIPLY +public static final DropRateModifierType MULTIPLY Multiplies the droprate against a value. Values under 1 reduce the droprate, values above 1 are equivalent to additive multipliers SET_CONSTANT -public static final DropRateModifierType SET_CONSTANT +public static final DropRateModifierType SET_CONSTANT Sets the droprate to a constant value, erasing changes by modifiers before it. (further modifiers can still be applied after this though) Since: @@ -224,7 +238,7 @@ SET_CONSTANT NO_EFFECT -public static final DropRateModifierType NO_EFFECT +public static final DropRateModifierType NO_EFFECT Performs no change to the droprate. This is a dummy modifier used for a placeholder, plugin-determined logic, or indication to other plugins even when no action is desired. Since: @@ -243,22 +257,22 @@ Method Details values -public static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +public static DropRateModifierType[] values() +Returns an array containing the constants of this enum class, in the order they are declared. Returns: -an array containing the constants of this enum type, in the order they are declared +an array containing the constants of this enum class, in the order they are declared valueOf -public static DropRateModifierType valueOf(String name) -Returns the enum constant of this type with the specified name. +public static DropRateModifierType valueOf(String name) +Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are +enum constant in this class. (Extraneous whitespace characters are not permitted.) Parameters: @@ -266,8 +280,8 @@ valueOf Returns: the enum constant with the specified name Throws: -IllegalArgumentException - if this enum type has no constant with the specified name -NullPointerException - if the argument is null +IllegalArgumentException - if this enum class has no constant with the specified name +NullPointerException - if the argument is null @@ -280,7 +294,7 @@ valueOf diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html index 546eb6b4..2bc1e91a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -71,19 +71,19 @@ Uses of Method Description DropRateModifier -HeadRollEvent.getCustomModifier(String yourPluginName, - String modifierName) +HeadRollEvent.getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier HeadRollEvent.getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier -HeadRollEvent.getModifier(String modifierName) +HeadRollEvent.getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. @@ -93,7 +93,7 @@ Uses of Modifier and Type Method Description -Map<String,DropRateModifier> +Map<String,DropRateModifier> HeadRollEvent.getModifiers() Gets the list of modifiers to the effective droprate. @@ -106,21 +106,21 @@ Uses of Description void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. void -HeadRollEvent.setModifier(String modifierName, +HeadRollEvent.setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -135,7 +135,7 @@ Uses of Method Description void -HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) +HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -150,7 +150,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html index 6c4dd73a..e0b82bd2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html @@ -1,17 +1,16 @@ - -Uses of Enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Enum Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,12 +23,12 @@ - + Skip navigation links Overview Package -Class +Class Use Tree Deprecated @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,9 +49,9 @@ -Uses of Enumorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +Uses of Enum Classorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Packages that use DropRateModifierType +Packages that use DropRateModifierType Package Description @@ -64,42 +64,42 @@ -Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers -Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType +Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers +Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType Modifier and Type Method Description -DropRateModifierType +DropRateModifierType DropRateModifier.getType() Gets the type of modifier -static DropRateModifierType -DropRateModifierType.valueOf(String name) +static DropRateModifierType +DropRateModifierType.valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] DropRateModifierType.values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType +Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType Modifier Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
getHeadItem(String username, int num, boolean forceOwner)
getVersion()
getHeadDrop(org.bukkit.entity.Entity)
Copyright © 2023 ShiniNet. All rights reserved.
Copyright © 2024 ShiniNet. All rights reserved.
Package:
Help:
You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camelCase" abbreviations. For example:
You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:
j.l.obj
InpStr
HM.cK
"j.l.obj"
"InpStr"
"math exact long"
Refer to the Javadoc Search Specification for a full description of search features.
getEventName, isAsynchronous
Cancellable
DropRateModifier
getCustomModifier(String yourPluginName, - String modifierName)
getCustomModifier(String yourPluginName, + String modifierName)
getCustomModifier(Plugin yourPlugin, - String modifierName)
static String
getCustomModifierName(String pluginName, - String modifierName)
getCustomModifierName(String pluginName, + String modifierName)
getModifier(String modifierName)
Map<String,DropRateModifier>
getModifiers()
void
setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue)
setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess)
setModifier(String modifierName, +setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -358,7 +372,7 @@ Method Summary void -setModifiers(Map<String,DropRateModifier> entries) +setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -377,8 +391,8 @@ Method Summary Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -460,7 +474,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -482,17 +496,17 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. +lootingModifier - the fractional probability modifier (greater than + or equal to 1.0) of looting, as applied by PlayerHeads to the effective + droprate. slimeModifier - the fraction of the slime/magmacube drop rate that is applicable at this size, modifuing the effective droprate (0.5 is 50% of the base rate). This should be 1.0 when there is no effect or the entity is not a slime. -lootingModifier - the fractional probability modifier (greater than - or equal to 1.0) of looting, as applied by PlayerHeads to the effective - droprate. chargedCreeperModifier - the multiplier effect that charged creepers have on normal droprates +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -509,7 +523,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -528,15 +542,15 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. +lootingModifier - the fractional probability modifier (greater than + or equal to 1.0) of looting, as applied by PlayerHeads to the effective + droprate. slimeModifier - the fraction of the slime/magmacube drop rate that is applicable at this size, modifuing the effective droprate (0.5 is 50% of the base rate). This should be 1.0 when there is no effect or the entity is not a slime. -lootingModifier - the fractional probability modifier (greater than - or equal to 1.0) of looting, as applied by PlayerHeads to the effective - droprate. +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -553,7 +567,7 @@ HeadRollEvent HeadRollEvent -@Deprecated +@Deprecated public HeadRollEvent(Entity killer, Entity target, boolean killerAlwaysBeheads, @@ -571,11 +585,11 @@ HeadRollEvent target - the Entity being beheaded killerAlwaysBeheads - whether the killer has the always-behead permission -originalDropRoll - the randomized PRNG double droproll value - inclusively between 0 to 1. lootingModifier - the fractional probability modifier (greater than or equal to 1.0) of looting, as applied by PlayerHeads to the effective droprate. +originalDropRoll - the randomized PRNG double droproll value + inclusively between 0 to 1. effectiveDropRoll - the modified droproll value after permission logic was applied (alwaysbehead sets to 0) originalDropRate - the configured droprate of the target as a @@ -599,7 +613,7 @@ Method Details getModifiers @NotNull -public Map<String,DropRateModifier> getModifiers() +public Map<String,DropRateModifier> getModifiers() Gets the list of modifiers to the effective droprate. This map will be in order that the modifiers are applied. @@ -679,7 +693,7 @@ recalculateSuccess getModifier @Nullable -public DropRateModifier getModifier(String modifierName) +public DropRateModifier getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. This method can retrieve both @@ -697,7 +711,7 @@ getModifier setModifier -public void setModifier(String modifierName, +public void setModifier(String modifierName, DropRateModifier value) Deprecated. using this method to modify existing modifiers should be @@ -719,7 +733,7 @@ setModifier setModifiers -public void setModifiers(Map<String,DropRateModifier> entries) +public void setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be avoided - use setCustomModifier to note new ones. @@ -739,8 +753,8 @@ setModifiers getCustomModifierName -public static String getCustomModifierName(String pluginName, - String modifierName) +public static String getCustomModifierName(String pluginName, + String modifierName) Constructs the internal name of a custom droprate modifier, provided the name of the plugin and modifier. @@ -758,7 +772,7 @@ getCustomModifierName setCustomModifier public void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. Note: this value does not impact calculations unless applyModifiers+applyDropRate or recalculateSuccess is called. @@ -779,7 +793,7 @@ setCustomModifier setCustomModifier public void setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. @@ -802,7 +816,7 @@ setCustomModifier getCustomModifier public DropRateModifier getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. Note: the name of the modifier @@ -821,8 +835,8 @@ getCustomModifier getCustomModifier -public DropRateModifier getCustomModifier(String yourPluginName, - String modifierName) +public DropRateModifier getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. Note: this value does not impact calculations or success and is for you to use as a courtesy to other plugins at this point. Note: the name of the modifier @@ -858,7 +872,7 @@ getChargedCreeperModifier 5.2.0-SNAPSHOT See Also: - + getModifier(java.lang.String) @@ -882,7 +896,7 @@ getSlimeModifier 5.1.0-SNAPSHOT See Also: - + getModifier(java.lang.String) @@ -906,7 +920,7 @@ getLootingModifier the looting modifier See Also: - + getModifier(java.lang.String) @@ -1009,7 +1023,7 @@ getEffectiveDropRoll the effective drop roll. See Also: - + getOriginalDropRoll() @@ -1076,7 +1090,7 @@ succeeded the success of the drop roll See Also: - + getDropSuccess() @@ -1116,7 +1130,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html index bc333872..7f08394b 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/LivingEntityDropHeadEvent.html @@ -1,25 +1,20 @@ - -LivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +LivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class LivingEntityDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -194,8 +208,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -342,7 +356,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html index f951c9c3..0dfad112 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/MobDropHeadEvent.html @@ -1,17 +1,16 @@ - -MobDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +MobDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -53,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -68,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class MobDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -152,8 +170,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -207,7 +225,7 @@ MobDropHeadEvent diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html index 95eb7c5d..5882dc45 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/PlayerDropHeadEvent.html @@ -1,25 +1,20 @@ - -PlayerDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +PlayerDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class PlayerDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent @@ -171,8 +185,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -247,7 +261,7 @@ getEntity diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html index d047601f..5ede17e2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/VanillaLivingEntityDropHeadEvent.html @@ -1,25 +1,20 @@ - -VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,7 +86,7 @@ Package org.shininet.bukkit.playerheads.events Class VanillaLivingEntityDropHeadEvent -java.lang.Object +java.lang.Object org.bukkit.event.Event org.bukkit.event.entity.EntityEvent org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent @@ -128,7 +142,7 @@ Constructor Summary VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops) + List<ItemStack> drops) Creates the event @@ -151,7 +165,7 @@ Method Summary The event which inevitably triggered the beheading event (usually EntityDeathEvent) -List<ItemStack> +List<ItemStack> getDrops() Gets the items that will drop from the beheading. @@ -196,8 +210,8 @@ Method Methods inherited from class org.bukkit.event.Event getEventName, isAsynchronous -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -215,7 +229,7 @@ VanillaLivingEntityDropHeadEvent public VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops) + List<ItemStack> drops) Creates the event Parameters: @@ -277,7 +291,7 @@ getCause getDrops -public List<ItemStack> getDrops() +public List<ItemStack> getDrops() Gets the items that will drop from the beheading. Note: changing this list will not impact dropped items, you must interact with the event through getCause(). @@ -350,7 +364,7 @@ getHandlerList diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html index 8666fc4a..4dfaf4ef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/BlockDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.BlockDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.BlockDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html index d79650f6..ab0c8ed9 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/DropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Interface org.shininet.bukkit.playerheads.events.DropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Interface org.shininet.bukkit.playerheads.events.DropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -99,7 +99,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html index 0b0784d0..ec146c83 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/FakeBlockBreakEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html index a756d997..a43c2f8a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/HeadRollEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.HeadRollEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.HeadRollEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html index 45c34c78..dd6947b0 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/LivingEntityDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.LivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -88,7 +88,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html index d1842218..2ae24f79 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/MobDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.MobDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.MobDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html index 6a4a2194..97887736 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/PlayerDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.PlayerDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.PlayerDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html index 9cf3586b..a59af898 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/class-use/VanillaLivingEntityDropHeadEvent.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.VanillaLivingEntityDropHeadEvent (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -54,7 +54,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html index deee05bf..c236e191 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifier.html @@ -1,25 +1,20 @@ - -DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Field +Constr +Method + + + +Detail: + +Field +Constr +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -72,13 +86,13 @@ Package org.shininet.bukkit.playerheads.events.modifiers Class DropRateModifier -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier public class DropRateModifier -extends Object +extends Object A modifier for the droprate including type and value information Since: @@ -97,12 +111,12 @@ Constructor Summary Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -128,7 +142,7 @@ Method Summary Apply the droprate modifier to the droprate value -Double +Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where @@ -139,12 +153,12 @@ Method Summary Gets the effectiveness level of the modifier. -Double +Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. -DropRateModifierType +DropRateModifierType getType() Gets the type of modifier @@ -158,8 +172,8 @@ Method Summary -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -174,7 +188,7 @@ Constructor Details DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value, int level) Constructs a modifier with a value that is multiplied by a level of @@ -190,7 +204,7 @@ DropRateModifier DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value @@ -224,7 +238,7 @@ getLevel getType -public DropRateModifierType getType() +public DropRateModifierType getType() Gets the type of modifier Returns: @@ -246,7 +260,7 @@ getValue getAdditiveMultiplierValue -public Double getAdditiveMultiplierValue() +public Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where droprate*(1+newvalue) is equivalent to the current modifier effect. Note: only other multipliers can be converted. @@ -259,7 +273,7 @@ getAdditiveMultiplierValue getMultiplierValue -public Double getMultiplierValue() +public Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. Note: only additive multipliers can be converted to multipliers. @@ -291,7 +305,7 @@ apply diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html index 6c56f247..ba1f97e1 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html @@ -1,25 +1,20 @@ - -DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Enum Constants +Field +Method + + + +Detail: + +Enum Constants +Field +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -70,21 +84,21 @@ Package org.shininet.bukkit.playerheads.events.modifiers -Enum DropRateModifierType +Enum Class DropRateModifierType -java.lang.Object -java.lang.Enum<DropRateModifierType> +java.lang.Object +java.lang.Enum<DropRateModifierType> org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType All Implemented Interfaces: -Serializable, Comparable<DropRateModifierType>, java.lang.constant.Constable +Serializable, Comparable<DropRateModifierType>, Constable public enum DropRateModifierType -extends Enum<DropRateModifierType> +extends Enum<DropRateModifierType> Indicates the type of modifier to the effective droprate. Since: @@ -100,8 +114,8 @@ Enum DropRateModifierType Nested Class Summary -Nested classes/interfaces inherited from class java.lang.Enum -Enum.EnumDesc<E extends Enum<E>> +Nested classes/interfaces inherited from class java.lang.Enum +Enum.EnumDesc<E extends Enum<E>> @@ -150,26 +164,26 @@ Method Summary Modifier and Type Method Description -static DropRateModifierType -valueOf(String name) +static DropRateModifierType +valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Methods inherited from class java.lang.Enum -clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf +Methods inherited from class java.lang.Enum +clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf -Methods inherited from class java.lang.Object -getClass, notify, notifyAll, wait, wait, wait +Methods inherited from class java.lang.Object +getClass, notify, notifyAll, wait, wait, wait @@ -184,14 +198,14 @@ Enum Constant Details ADD_CONSTANT -public static final DropRateModifierType ADD_CONSTANT +public static final DropRateModifierType ADD_CONSTANT adds a constant value to the droprate ADD_MULTIPLE -public static final DropRateModifierType ADD_MULTIPLE +public static final DropRateModifierType ADD_MULTIPLE adds a VALUE*droprate to the droprate. This is equivalent to a multiplier of 1+VALUE. Positive values increase droprate by a fraction, negative values will reduuce the droprate by a fraction. In this way, additive multipliers can be thought of as a delta value. @@ -199,21 +213,21 @@ ADD_MULTIPLE ADD_MULTIPLE_PER_LEVEL -public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL +public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL adds a value to the droprate where the value is a multiple of a provided effectiveness level. this is equivalent to a multiplier of (1+VALUE*LEVEL) MULTIPLY -public static final DropRateModifierType MULTIPLY +public static final DropRateModifierType MULTIPLY Multiplies the droprate against a value. Values under 1 reduce the droprate, values above 1 are equivalent to additive multipliers SET_CONSTANT -public static final DropRateModifierType SET_CONSTANT +public static final DropRateModifierType SET_CONSTANT Sets the droprate to a constant value, erasing changes by modifiers before it. (further modifiers can still be applied after this though) Since: @@ -224,7 +238,7 @@ SET_CONSTANT NO_EFFECT -public static final DropRateModifierType NO_EFFECT +public static final DropRateModifierType NO_EFFECT Performs no change to the droprate. This is a dummy modifier used for a placeholder, plugin-determined logic, or indication to other plugins even when no action is desired. Since: @@ -243,22 +257,22 @@ Method Details values -public static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +public static DropRateModifierType[] values() +Returns an array containing the constants of this enum class, in the order they are declared. Returns: -an array containing the constants of this enum type, in the order they are declared +an array containing the constants of this enum class, in the order they are declared valueOf -public static DropRateModifierType valueOf(String name) -Returns the enum constant of this type with the specified name. +public static DropRateModifierType valueOf(String name) +Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are +enum constant in this class. (Extraneous whitespace characters are not permitted.) Parameters: @@ -266,8 +280,8 @@ valueOf Returns: the enum constant with the specified name Throws: -IllegalArgumentException - if this enum type has no constant with the specified name -NullPointerException - if the argument is null +IllegalArgumentException - if this enum class has no constant with the specified name +NullPointerException - if the argument is null @@ -280,7 +294,7 @@ valueOf diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html index 546eb6b4..2bc1e91a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -71,19 +71,19 @@ Uses of Method Description DropRateModifier -HeadRollEvent.getCustomModifier(String yourPluginName, - String modifierName) +HeadRollEvent.getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier HeadRollEvent.getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier -HeadRollEvent.getModifier(String modifierName) +HeadRollEvent.getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. @@ -93,7 +93,7 @@ Uses of Modifier and Type Method Description -Map<String,DropRateModifier> +Map<String,DropRateModifier> HeadRollEvent.getModifiers() Gets the list of modifiers to the effective droprate. @@ -106,21 +106,21 @@ Uses of Description void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. void -HeadRollEvent.setModifier(String modifierName, +HeadRollEvent.setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -135,7 +135,7 @@ Uses of Method Description void -HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) +HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -150,7 +150,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html index 6c4dd73a..e0b82bd2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html @@ -1,17 +1,16 @@ - -Uses of Enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Enum Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,12 +23,12 @@ - + Skip navigation links Overview Package -Class +Class Use Tree Deprecated @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,9 +49,9 @@ -Uses of Enumorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +Uses of Enum Classorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Packages that use DropRateModifierType +Packages that use DropRateModifierType Package Description @@ -64,42 +64,42 @@ -Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers -Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType +Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers +Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType Modifier and Type Method Description -DropRateModifierType +DropRateModifierType DropRateModifier.getType() Gets the type of modifier -static DropRateModifierType -DropRateModifierType.valueOf(String name) +static DropRateModifierType +DropRateModifierType.valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] DropRateModifierType.values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType +Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType Modifier Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
setModifier(String modifierName, DropRateModifier value)
setModifiers(Map<String,DropRateModifier> entries)
target
killerAlwaysBeheads
originalDropRoll
lootingModifier
slimeModifier
chargedCreeperModifier
effectiveDropRoll
originalDropRate
getModifier(java.lang.String)
getOriginalDropRoll()
getDropSuccess()
VanillaLivingEntityDropHeadEvent(Event cause, LivingEntity entity, LivingEntity killer, - List<ItemStack> drops)
List<ItemStack>
getDrops()
DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -128,7 +142,7 @@ Method Summary Apply the droprate modifier to the droprate value -Double +Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where @@ -139,12 +153,12 @@ Method Summary Gets the effectiveness level of the modifier. -Double +Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. -DropRateModifierType +DropRateModifierType getType() Gets the type of modifier @@ -158,8 +172,8 @@ Method Summary -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -174,7 +188,7 @@ Constructor Details DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value, int level) Constructs a modifier with a value that is multiplied by a level of @@ -190,7 +204,7 @@ DropRateModifier DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value @@ -224,7 +238,7 @@ getLevel getType -public DropRateModifierType getType() +public DropRateModifierType getType() Gets the type of modifier Returns: @@ -246,7 +260,7 @@ getValue getAdditiveMultiplierValue -public Double getAdditiveMultiplierValue() +public Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where droprate*(1+newvalue) is equivalent to the current modifier effect. Note: only other multipliers can be converted. @@ -259,7 +273,7 @@ getAdditiveMultiplierValue getMultiplierValue -public Double getMultiplierValue() +public Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. Note: only additive multipliers can be converted to multipliers. @@ -291,7 +305,7 @@ apply diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html index 6c56f247..ba1f97e1 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html @@ -1,25 +1,20 @@ - -DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Enum Constants +Field +Method + + + +Detail: + +Enum Constants +Field +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -70,21 +84,21 @@ Package org.shininet.bukkit.playerheads.events.modifiers -Enum DropRateModifierType +Enum Class DropRateModifierType -java.lang.Object -java.lang.Enum<DropRateModifierType> +java.lang.Object +java.lang.Enum<DropRateModifierType> org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType All Implemented Interfaces: -Serializable, Comparable<DropRateModifierType>, java.lang.constant.Constable +Serializable, Comparable<DropRateModifierType>, Constable public enum DropRateModifierType -extends Enum<DropRateModifierType> +extends Enum<DropRateModifierType> Indicates the type of modifier to the effective droprate. Since: @@ -100,8 +114,8 @@ Enum DropRateModifierType Nested Class Summary -Nested classes/interfaces inherited from class java.lang.Enum -Enum.EnumDesc<E extends Enum<E>> +Nested classes/interfaces inherited from class java.lang.Enum +Enum.EnumDesc<E extends Enum<E>> @@ -150,26 +164,26 @@ Method Summary Modifier and Type Method Description -static DropRateModifierType -valueOf(String name) +static DropRateModifierType +valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Methods inherited from class java.lang.Enum -clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf +Methods inherited from class java.lang.Enum +clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf -Methods inherited from class java.lang.Object -getClass, notify, notifyAll, wait, wait, wait +Methods inherited from class java.lang.Object +getClass, notify, notifyAll, wait, wait, wait @@ -184,14 +198,14 @@ Enum Constant Details ADD_CONSTANT -public static final DropRateModifierType ADD_CONSTANT +public static final DropRateModifierType ADD_CONSTANT adds a constant value to the droprate ADD_MULTIPLE -public static final DropRateModifierType ADD_MULTIPLE +public static final DropRateModifierType ADD_MULTIPLE adds a VALUE*droprate to the droprate. This is equivalent to a multiplier of 1+VALUE. Positive values increase droprate by a fraction, negative values will reduuce the droprate by a fraction. In this way, additive multipliers can be thought of as a delta value. @@ -199,21 +213,21 @@ ADD_MULTIPLE ADD_MULTIPLE_PER_LEVEL -public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL +public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL adds a value to the droprate where the value is a multiple of a provided effectiveness level. this is equivalent to a multiplier of (1+VALUE*LEVEL) MULTIPLY -public static final DropRateModifierType MULTIPLY +public static final DropRateModifierType MULTIPLY Multiplies the droprate against a value. Values under 1 reduce the droprate, values above 1 are equivalent to additive multipliers SET_CONSTANT -public static final DropRateModifierType SET_CONSTANT +public static final DropRateModifierType SET_CONSTANT Sets the droprate to a constant value, erasing changes by modifiers before it. (further modifiers can still be applied after this though) Since: @@ -224,7 +238,7 @@ SET_CONSTANT NO_EFFECT -public static final DropRateModifierType NO_EFFECT +public static final DropRateModifierType NO_EFFECT Performs no change to the droprate. This is a dummy modifier used for a placeholder, plugin-determined logic, or indication to other plugins even when no action is desired. Since: @@ -243,22 +257,22 @@ Method Details values -public static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +public static DropRateModifierType[] values() +Returns an array containing the constants of this enum class, in the order they are declared. Returns: -an array containing the constants of this enum type, in the order they are declared +an array containing the constants of this enum class, in the order they are declared valueOf -public static DropRateModifierType valueOf(String name) -Returns the enum constant of this type with the specified name. +public static DropRateModifierType valueOf(String name) +Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are +enum constant in this class. (Extraneous whitespace characters are not permitted.) Parameters: @@ -266,8 +280,8 @@ valueOf Returns: the enum constant with the specified name Throws: -IllegalArgumentException - if this enum type has no constant with the specified name -NullPointerException - if the argument is null +IllegalArgumentException - if this enum class has no constant with the specified name +NullPointerException - if the argument is null @@ -280,7 +294,7 @@ valueOf diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html index 546eb6b4..2bc1e91a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -71,19 +71,19 @@ Uses of Method Description DropRateModifier -HeadRollEvent.getCustomModifier(String yourPluginName, - String modifierName) +HeadRollEvent.getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier HeadRollEvent.getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier -HeadRollEvent.getModifier(String modifierName) +HeadRollEvent.getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. @@ -93,7 +93,7 @@ Uses of Modifier and Type Method Description -Map<String,DropRateModifier> +Map<String,DropRateModifier> HeadRollEvent.getModifiers() Gets the list of modifiers to the effective droprate. @@ -106,21 +106,21 @@ Uses of Description void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. void -HeadRollEvent.setModifier(String modifierName, +HeadRollEvent.setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -135,7 +135,7 @@ Uses of Method Description void -HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) +HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -150,7 +150,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html index 6c4dd73a..e0b82bd2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html @@ -1,17 +1,16 @@ - -Uses of Enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Enum Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,12 +23,12 @@ - + Skip navigation links Overview Package -Class +Class Use Tree Deprecated @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,9 +49,9 @@ -Uses of Enumorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +Uses of Enum Classorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Packages that use DropRateModifierType +Packages that use DropRateModifierType Package Description @@ -64,42 +64,42 @@ -Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers -Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType +Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers +Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType Modifier and Type Method Description -DropRateModifierType +DropRateModifierType DropRateModifier.getType() Gets the type of modifier -static DropRateModifierType -DropRateModifierType.valueOf(String name) +static DropRateModifierType +DropRateModifierType.valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] DropRateModifierType.values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType +Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType Modifier Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
DropRateModifier(DropRateModifierType type, double value)
DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -128,7 +142,7 @@ Method Summary Apply the droprate modifier to the droprate value -Double +Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where @@ -139,12 +153,12 @@ Method Summary Gets the effectiveness level of the modifier. -Double +Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. -DropRateModifierType +DropRateModifierType getType() Gets the type of modifier @@ -158,8 +172,8 @@ Method Summary -Methods inherited from class java.lang.Object -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait +Methods inherited from class java.lang.Object +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait @@ -174,7 +188,7 @@ Constructor Details DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value, int level) Constructs a modifier with a value that is multiplied by a level of @@ -190,7 +204,7 @@ DropRateModifier DropRateModifier -public DropRateModifier(DropRateModifierType type, +public DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value @@ -224,7 +238,7 @@ getLevel getType -public DropRateModifierType getType() +public DropRateModifierType getType() Gets the type of modifier Returns: @@ -246,7 +260,7 @@ getValue getAdditiveMultiplierValue -public Double getAdditiveMultiplierValue() +public Double getAdditiveMultiplierValue() Converts the modifier into an equivalent add-multiple value where droprate*(1+newvalue) is equivalent to the current modifier effect. Note: only other multipliers can be converted. @@ -259,7 +273,7 @@ getAdditiveMultiplierValue getMultiplierValue -public Double getMultiplierValue() +public Double getMultiplierValue() Converts the modifier value to a multiplier (1.0=no effect) if possible. Note: only additive multipliers can be converted to multipliers. @@ -291,7 +305,7 @@ apply diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html index 6c56f247..ba1f97e1 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/DropRateModifierType.html @@ -1,25 +1,20 @@ - -DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,28 @@ Index Help + + +Summary: + +Nested +Enum Constants +Field +Method + + + +Detail: + +Enum Constants +Field +Method + + + - + Summary: Nested | @@ -57,9 +71,9 @@ Method -SEARCH: - - +SEARCH + + @@ -70,21 +84,21 @@ Package org.shininet.bukkit.playerheads.events.modifiers -Enum DropRateModifierType +Enum Class DropRateModifierType -java.lang.Object -java.lang.Enum<DropRateModifierType> +java.lang.Object +java.lang.Enum<DropRateModifierType> org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType All Implemented Interfaces: -Serializable, Comparable<DropRateModifierType>, java.lang.constant.Constable +Serializable, Comparable<DropRateModifierType>, Constable public enum DropRateModifierType -extends Enum<DropRateModifierType> +extends Enum<DropRateModifierType> Indicates the type of modifier to the effective droprate. Since: @@ -100,8 +114,8 @@ Enum DropRateModifierType Nested Class Summary -Nested classes/interfaces inherited from class java.lang.Enum -Enum.EnumDesc<E extends Enum<E>> +Nested classes/interfaces inherited from class java.lang.Enum +Enum.EnumDesc<E extends Enum<E>> @@ -150,26 +164,26 @@ Method Summary Modifier and Type Method Description -static DropRateModifierType -valueOf(String name) +static DropRateModifierType +valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Methods inherited from class java.lang.Enum -clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf +Methods inherited from class java.lang.Enum +clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf -Methods inherited from class java.lang.Object -getClass, notify, notifyAll, wait, wait, wait +Methods inherited from class java.lang.Object +getClass, notify, notifyAll, wait, wait, wait @@ -184,14 +198,14 @@ Enum Constant Details ADD_CONSTANT -public static final DropRateModifierType ADD_CONSTANT +public static final DropRateModifierType ADD_CONSTANT adds a constant value to the droprate ADD_MULTIPLE -public static final DropRateModifierType ADD_MULTIPLE +public static final DropRateModifierType ADD_MULTIPLE adds a VALUE*droprate to the droprate. This is equivalent to a multiplier of 1+VALUE. Positive values increase droprate by a fraction, negative values will reduuce the droprate by a fraction. In this way, additive multipliers can be thought of as a delta value. @@ -199,21 +213,21 @@ ADD_MULTIPLE ADD_MULTIPLE_PER_LEVEL -public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL +public static final DropRateModifierType ADD_MULTIPLE_PER_LEVEL adds a value to the droprate where the value is a multiple of a provided effectiveness level. this is equivalent to a multiplier of (1+VALUE*LEVEL) MULTIPLY -public static final DropRateModifierType MULTIPLY +public static final DropRateModifierType MULTIPLY Multiplies the droprate against a value. Values under 1 reduce the droprate, values above 1 are equivalent to additive multipliers SET_CONSTANT -public static final DropRateModifierType SET_CONSTANT +public static final DropRateModifierType SET_CONSTANT Sets the droprate to a constant value, erasing changes by modifiers before it. (further modifiers can still be applied after this though) Since: @@ -224,7 +238,7 @@ SET_CONSTANT NO_EFFECT -public static final DropRateModifierType NO_EFFECT +public static final DropRateModifierType NO_EFFECT Performs no change to the droprate. This is a dummy modifier used for a placeholder, plugin-determined logic, or indication to other plugins even when no action is desired. Since: @@ -243,22 +257,22 @@ Method Details values -public static DropRateModifierType[] values() -Returns an array containing the constants of this enum type, in +public static DropRateModifierType[] values() +Returns an array containing the constants of this enum class, in the order they are declared. Returns: -an array containing the constants of this enum type, in the order they are declared +an array containing the constants of this enum class, in the order they are declared valueOf -public static DropRateModifierType valueOf(String name) -Returns the enum constant of this type with the specified name. +public static DropRateModifierType valueOf(String name) +Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are +enum constant in this class. (Extraneous whitespace characters are not permitted.) Parameters: @@ -266,8 +280,8 @@ valueOf Returns: the enum constant with the specified name Throws: -IllegalArgumentException - if this enum type has no constant with the specified name -NullPointerException - if the argument is null +IllegalArgumentException - if this enum class has no constant with the specified name +NullPointerException - if the argument is null @@ -280,7 +294,7 @@ valueOf diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html index 546eb6b4..2bc1e91a 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifier.html @@ -1,17 +1,16 @@ - -Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -71,19 +71,19 @@ Uses of Method Description DropRateModifier -HeadRollEvent.getCustomModifier(String yourPluginName, - String modifierName) +HeadRollEvent.getCustomModifier(String yourPluginName, + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier HeadRollEvent.getCustomModifier(Plugin yourPlugin, - String modifierName) + String modifierName) Gets a custom (plugin-added) modifier to the head-roll event. DropRateModifier -HeadRollEvent.getModifier(String modifierName) +HeadRollEvent.getModifier(String modifierName) Retrieve the value of a modifier of the effective droprate. @@ -93,7 +93,7 @@ Uses of Modifier and Type Method Description -Map<String,DropRateModifier> +Map<String,DropRateModifier> HeadRollEvent.getModifiers() Gets the list of modifiers to the effective droprate. @@ -106,21 +106,21 @@ Uses of Description void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue) Add or change a note about your custom modifier to the head-roll event. void HeadRollEvent.setCustomModifier(Plugin yourPlugin, - String modifierName, + String modifierName, DropRateModifier modifierValue, boolean recalculateSuccess) Add or change a note about your custom modifier to the head-roll event. void -HeadRollEvent.setModifier(String modifierName, +HeadRollEvent.setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -135,7 +135,7 @@ Uses of Method Description void -HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) +HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -150,7 +150,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html index 6c4dd73a..e0b82bd2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html @@ -1,17 +1,16 @@ - -Uses of Enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Enum Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,12 +23,12 @@ - + Skip navigation links Overview Package -Class +Class Use Tree Deprecated @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,9 +49,9 @@ -Uses of Enumorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +Uses of Enum Classorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Packages that use DropRateModifierType +Packages that use DropRateModifierType Package Description @@ -64,42 +64,42 @@ -Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers -Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType +Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers +Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType Modifier and Type Method Description -DropRateModifierType +DropRateModifierType DropRateModifier.getType() Gets the type of modifier -static DropRateModifierType -DropRateModifierType.valueOf(String name) +static DropRateModifierType +DropRateModifierType.valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] DropRateModifierType.values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType +Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType Modifier Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
DropRateModifier(DropRateModifierType type, double value, int level)
Double
getAdditiveMultiplierValue()
getMultiplierValue()
DropRateModifierType
getType()
Serializable
Comparable<DropRateModifierType>
java.lang.constant.Constable
Constable
Enum.EnumDesc<E extends Enum<E>>
static DropRateModifierType
valueOf(String name)
static DropRateModifierType[]
values()
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
getClass, notify, notifyAll, wait, wait, wait
IllegalArgumentException
NullPointerException
setModifier(String modifierName, +HeadRollEvent.setModifier(String modifierName, DropRateModifier value) Deprecated. @@ -135,7 +135,7 @@ Uses of Method Description void -HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) +HeadRollEvent.setModifiers(Map<String,DropRateModifier> entries) Deprecated. using this method to modify existing modifiers should be @@ -150,7 +150,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html index 6c4dd73a..e0b82bd2 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/class-use/DropRateModifierType.html @@ -1,17 +1,16 @@ - -Uses of Enum org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Enum Class org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,12 +23,12 @@ - + Skip navigation links Overview Package -Class +Class Use Tree Deprecated @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -49,9 +49,9 @@ -Uses of Enumorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +Uses of Enum Classorg.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType -Packages that use DropRateModifierType +Packages that use DropRateModifierType Package Description @@ -64,42 +64,42 @@ -Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers -Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType +Uses of DropRateModifierType in org.shininet.bukkit.playerheads.events.modifiers +Methods in org.shininet.bukkit.playerheads.events.modifiers that return DropRateModifierType Modifier and Type Method Description -DropRateModifierType +DropRateModifierType DropRateModifier.getType() Gets the type of modifier -static DropRateModifierType -DropRateModifierType.valueOf(String name) +static DropRateModifierType +DropRateModifierType.valueOf(String name) -Returns the enum constant of this type with the specified name. +Returns the enum constant of this class with the specified name. -static DropRateModifierType[] +static DropRateModifierType[] DropRateModifierType.values() -Returns an array containing the constants of this enum type, in +Returns an array containing the constants of this enum class, in the order they are declared. -Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType +Constructors in org.shininet.bukkit.playerheads.events.modifiers with parameters of type DropRateModifierType Modifier Constructor Description -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value) Constructs a modifier of a given type and value -DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html index de0bd3d3..a34b6deb 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -91,7 +96,7 @@ -All Classes and InterfacesClassesEnums +All Classes and InterfacesClassesEnum Classes Class @@ -100,7 +105,7 @@ A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -113,7 +118,7 @@ -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved. diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html index 643d8e58..22e893b3 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events.modifiers Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events.modifiers + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier @@ -66,13 +66,13 @@ Class Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -82,7 +82,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html index 29e709a9..bda714fe 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/modifiers/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events.modifiers (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -97,7 +97,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html index 5ea6d822..6394fcdc 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-summary.html @@ -1,25 +1,20 @@ - -org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -40,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -50,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -144,7 +149,7 @@ Package diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html index 6fcb00a6..1ee68249 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads.events Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,15 +50,15 @@ Hierarchy For Package org.shininet.bukkit.playerheads.events + Package Hierarchies: - + All Packages - Class Hierarchy -java.lang.Object +java.lang.Object org.bukkit.event.Event @@ -103,7 +103,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html index 8b1018e4..1c380aef 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/events/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads.events (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -84,7 +84,7 @@ diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html index 6cce9c26..620bbf65 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-summary.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -36,9 +35,19 @@ Index Help + + +Package: + +Description +Related Packages +Classes and Interfaces + + + - + Package: Description | @@ -46,9 +55,9 @@ Classes and Interfaces -SEARCH: - - +SEARCH + + @@ -97,7 +106,7 @@ Package org.sh diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html index d834a5c3..b80adb73 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-tree.html @@ -1,17 +1,16 @@ - -org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +org.shininet.bukkit.playerheads Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,11 +50,11 @@ Hierarchy For Package org.shininet.bukkit.playerheads + Package Hierarchies: - + All Packages - Interface Hierarchy @@ -89,7 +89,7 @@ Interface Hierarchy diff --git a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html index c195d42a..26cf1a27 100644 --- a/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html +++ b/PlayerHeads-api/docs/org/shininet/bukkit/playerheads/package-use.html @@ -1,17 +1,16 @@ - -Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Uses of Package org.shininet.bukkit.playerheads (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -80,7 +80,7 @@ Uses o diff --git a/PlayerHeads-api/docs/overview-summary.html b/PlayerHeads-api/docs/overview-summary.html index 80329353..1b545707 100644 --- a/PlayerHeads-api/docs/overview-summary.html +++ b/PlayerHeads-api/docs/overview-summary.html @@ -1,8 +1,8 @@ - -PlayerHeads-api 5.20.4-SNAPSHOT API + +PlayerHeads-api 5.21.0-SNAPSHOT API diff --git a/PlayerHeads-api/docs/overview-tree.html b/PlayerHeads-api/docs/overview-tree.html index 8eb6e244..7852ab19 100644 --- a/PlayerHeads-api/docs/overview-tree.html +++ b/PlayerHeads-api/docs/overview-tree.html @@ -1,17 +1,16 @@ - -Class Hierarchy (PlayerHeads-api 5.20.4-SNAPSHOT API) + +Class Hierarchy (PlayerHeads-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -50,18 +50,18 @@ Hierarchy For All Packages + Package Hierarchies: - + com.github.crashdemons.playerheads.api, org.shininet.bukkit.playerheads, org.shininet.bukkit.playerheads.events, org.shininet.bukkit.playerheads.events.modifiers - Class Hierarchy -java.lang.Object +java.lang.Object org.shininet.bukkit.playerheads.events.modifiers.DropRateModifier org.bukkit.event.Event @@ -134,13 +134,13 @@ Interface Hierarchy -Enum Hierarchy +Enum Class Hierarchy -java.lang.Object +java.lang.Object -java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) -org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType +org.shininet.bukkit.playerheads.events.modifiers.DropRateModifierType @@ -150,7 +150,7 @@ Enum Hierarchy diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index 34abd18f..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png deleted file mode 100644 index f058a938..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_65_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 2ce04c16..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png deleted file mode 100644 index a90afb8b..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png deleted file mode 100644 index dbe091f6..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 5dc3593e..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png deleted file mode 100644 index e723e17c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 1f5f4975..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png deleted file mode 100644 index 618f5b0c..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_454545_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png deleted file mode 100644 index ee5e33f2..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_888888_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png b/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 7e8ebc18..00000000 Binary files a/PlayerHeads-api/docs/script-dir/images/ui-icons_cd0a0a_256x240.png and /dev/null differ diff --git a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js b/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js deleted file mode 100644 index b0614034..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="x",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(""),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.2";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css b/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css deleted file mode 100644 index e8808927..00000000 --- a/PlayerHeads-api/docs/script-dir/jquery-ui.structure.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2018-12-06 -* http://jqueryui.com -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/PlayerHeads-api/docs/script.js b/PlayerHeads-api/docs/script.js index 0765364e..f1a0f256 100644 --- a/PlayerHeads-api/docs/script.js +++ b/PlayerHeads-api/docs/script.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -28,6 +28,14 @@ var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + function loadScripts(doc, tag) { createElem(doc, tag, 'search.js'); @@ -45,6 +53,93 @@ function createElem(doc, tag, path) { scriptElement.parentNode.insertBefore(script, scriptElement); } +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category function show(tableId, selected, columns) { if (tableId !== selected) { document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') @@ -56,8 +151,7 @@ function show(tableId, selected, columns) { .forEach(function(elem, index) { elem.style.display = ''; var isEvenRow = index % (columns * 2) < columns; - elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); - elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); }); updateTabs(tableId, selected); } @@ -105,7 +199,34 @@ function indexFilesLoaded() { && memberSearchIndex && tagSearchIndex; } - +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} // Workaround for scroll position not being included in browser history (8249133) document.addEventListener("DOMContentLoaded", function(e) { var contentDiv = document.querySelector("div.flex-content"); @@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoaded", function(e) { window.addEventListener("hashchange", function(e) { history.replaceState(contentDiv.scrollTop, document.title); }); + var timeoutId; contentDiv.addEventListener("scroll", function(e) { - var timeoutID; - if (!timeoutID) { - timeoutID = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - timeoutID = null; - }, 100); + if (timeoutId) { + clearTimeout(timeoutId); } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); }); if (!location.hash) { history.replaceState(contentDiv.scrollTop, document.title); diff --git a/PlayerHeads-api/docs/search-page.js b/PlayerHeads-api/docs/search-page.js new file mode 100644 index 00000000..e4da097d --- /dev/null +++ b/PlayerHeads-api/docs/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("" + categories[key] + "" + + " (" + count + ")").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("" + col1 + "").appendTo(table); + if (category !== "modules") { + $("" + col2 + "").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/PlayerHeads-api/docs/search.html b/PlayerHeads-api/docs/search.html new file mode 100644 index 00000000..1819f6c7 --- /dev/null +++ b/PlayerHeads-api/docs/search.html @@ -0,0 +1,77 @@ + + + + +Search (PlayerHeads-api 5.21.0-SNAPSHOT API) + + + + + + + + + + + + + +JavaScript is disabled on your browser. + + + + + + +Skip navigation links + +Overview +Package +Class +Use +Tree +Deprecated +Index +Help + + + + + + + + + + +Search + + + + +Additional resources + + + +The help page provides an introduction to the scope and syntax of JavaDoc search. +You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page. +The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format. +linkCopy + + +Redirect to first result + +Loading search index... + + + + + + + + + + diff --git a/PlayerHeads-api/docs/search.js b/PlayerHeads-api/docs/search.js index df0e6fb7..4ca95577 100644 --- a/PlayerHeads-api/docs/search.js +++ b/PlayerHeads-api/docs/search.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * @@ -22,282 +22,413 @@ * * */ - -var noResult = {l: "No results found"}; -var loading = {l: "Loading search index..."}; -var catModules = "Modules"; -var catPackages = "Packages"; -var catTypes = "Types"; -var catMembers = "Members"; -var catSearchTags = "Search Tags"; -var highlight = "$&"; -var searchPattern = ""; -var fallbackPattern = ""; -var RANKING_THRESHOLD = 2; -var NO_MATCH = 0xffff; -var MIN_RESULTS = 3; -var MAX_RESULTS = 500; -var UNNAMED = ""; +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} function escapeHtml(str) { return str.replace(//g, ">"); } -function getHighlightedText(item, matcher, fallbackMatcher) { - var escapedItem = escapeHtml(item); - var highlighted = escapedItem.replace(matcher, highlight); - if (highlighted === escapedItem) { - highlighted = escapedItem.replace(fallbackMatcher, highlight) +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); } - return highlighted; + text += escapeHtml(str.slice(start, to)); + return text; } -function getURLPrefix(ui) { - var urlPrefix=""; +function getURLPrefix(item, category) { + var urlPrefix = ""; var slash = "/"; - if (ui.item.category === catModules) { - return ui.item.l + slash; - } else if (ui.item.category === catPackages && ui.item.m) { - return ui.item.m + slash; - } else if (ui.item.category === catTypes || ui.item.category === catMembers) { - if (ui.item.m) { - urlPrefix = ui.item.m + slash; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; } else { - $.each(packageSearchIndex, function(index, item) { - if (item.m && ui.item.p === item.l) { - urlPrefix = item.m + slash; + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; } }); } } return urlPrefix; } -function createSearchPattern(term) { - var pattern = ""; - var isWordToken = false; - term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { - if (index > 0) { - // whitespace between identifiers is significant - pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; } - var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); for (var i = 0; i < tokens.length; i++) { var s = tokens[i]; - if (s === "") { - continue; - } - pattern += $.ui.autocomplete.escapeRegex(s); - isWordToken = /\w$/.test(s); + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); if (isWordToken) { - pattern += "([a-z0-9_$<>\\[\\]]*?)"; + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); } } }); - return pattern; + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; } -function createMatcher(pattern, flags) { - var isCamelCase = /[A-Z]/.test(pattern); - return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +function isUpperCase(s) { + return s !== s.toLowerCase(); } -var watermark = 'Search'; -$(function() { - var search = $("#search-input"); - var reset = $("#reset-button"); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - search.val(watermark).addClass('watermark'); - search.blur(function() { - if ($(this).val().length === 0) { - $(this).val(watermark).addClass('watermark'); +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; } - }); - search.on('click keydown paste', function() { - if ($(this).val() === watermark) { - $(this).val('').removeClass('watermark'); + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; } - }); - reset.click(function() { - search.val('').focus(); - }); - search.focus()[0].setSelectionRange(0, 0); -}); + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation $.widget("custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); - this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; }, _renderMenu: function(ul, items) { - var rMenu = this; var currentCategory = ""; - rMenu.menu.bindings = $(); + var widget = this; + widget.menu.bindings = $(); $.each(items, function(index, item) { - var li; if (item.category && item.category !== currentCategory) { - ul.append("" + item.category + ""); + ul.append("" + categories[item.category] + ""); currentCategory = item.category; } - li = rMenu._renderItemData(ul, item); + var li = widget._renderItemData(ul, item); if (item.category) { - li.attr("aria-label", item.category + " : " + item.l); - li.attr("class", "result-item"); + li.attr("aria-label", categories[item.category] + " : " + item.l); } else { li.attr("aria-label", item.l); - li.attr("class", "result-item"); } + li.attr("class", "result-item"); }); + ul.append("Go to search page"); }, _renderItem: function(ul, item) { - var label = ""; - var matcher = createMatcher(escapeHtml(searchPattern), "g"); - var fallbackMatcher = new RegExp(fallbackPattern, "gi") - if (item.category === catModules) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catPackages) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catTypes) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.l, matcher, fallbackMatcher); - } else if (item.category === catMembers) { - label = (item.p && item.p !== UNNAMED) - ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) - : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); - } else if (item.category === catSearchTags) { - label = getHighlightedText(item.l, matcher, fallbackMatcher); - } else { - label = item.l; - } var li = $("").appendTo(ul); var div = $("").appendTo(li); - if (item.category === catSearchTags && item.h) { - if (item.d) { - div.html(label + " (" + item.h + ")" - + item.d + ""); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")" + + idx.d + ""); } else { - div.html(label + " (" + item.h + ")"); + div.html(label + " (" + idx.h + ")"); } } else { - if (item.m) { - div.html(item.m + "/" + label); - } else { - div.html(label); - } + div.html(label); } return li; } }); -function rankMatch(match, category) { - if (!match) { - return NO_MATCH; - } - var index = match.index; - var input = match.input; - var leftBoundaryMatch = 2; - var periferalMatch = 0; - // make sure match is anchored on a left word boundary - if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { - leftBoundaryMatch = 0; - } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { - leftBoundaryMatch = 1; - } - var matchEnd = index + match[0].length; - var leftParen = input.indexOf("("); - var endOfName = leftParen > -1 ? leftParen : input.length; - // exclude peripheral matches - if (category !== catModules && category !== catSearchTags) { - var delim = category === catPackages ? "/" : "."; - if (leftParen > -1 && leftParen < index) { - periferalMatch += 2; - } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { - periferalMatch += 2; - } - } - var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match - for (var i = 1; i < match.length; i++) { - // lower ranking if parts of the name are missing - if (match[i]) - delta += match[i].length; - } - if (category === catTypes) { - // lower ranking if a type name contains unmatched camel-case parts - if (/[A-Z]/.test(input.substring(matchEnd))) - delta += 5; - if (/[A-Z]/.test(input.substring(0, index))) - delta += 5; - } - return leftBoundaryMatch + periferalMatch + (delta / 200); - -} -function doSearch(request, response) { - var result = []; - searchPattern = createSearchPattern(request.term); - fallbackPattern = createSearchPattern(request.term.toLowerCase()); - if (searchPattern === "") { - return this.close(); - } - var camelCaseMatcher = createMatcher(searchPattern, ""); - var fallbackMatcher = new RegExp(fallbackPattern, "i"); - - function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { - if (indexArray) { - var newResults = []; - $.each(indexArray, function (i, item) { - item.category = category; - var ranking = rankMatch(matcher.exec(nameFunc(item)), category); - if (ranking < RANKING_THRESHOLD) { - newResults.push({ranking: ranking, item: item}); - } - return newResults.length <= MAX_RESULTS; - }); - return newResults.sort(function(e1, e2) { - return e1.ranking - e2.ranking; - }).map(function(e) { - return e.item; - }); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; } - return []; } - function searchIndex(indexArray, category, nameFunc) { - var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); - result = result.concat(primaryResults); - if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { - var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); - result = result.concat(secondaryResults.filter(function (item) { - return primaryResults.indexOf(item) === -1; - })); + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; } - } - - searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); - searchIndex(packageSearchIndex, catPackages, function(item) { - return (item.m && request.term.indexOf("/") > -1) - ? (item.m + "/" + item.l) : item.l; }); - searchIndex(typeSearchIndex, catTypes, function(item) { - return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" "); + } }); - searchIndex(memberSearchIndex, catMembers, function(item) { - return request.term.indexOf(".") > -1 - ? item.p + "." + item.c + "." + item.l : item.l; + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); }); - searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); - - if (!indexFilesLoaded()) { - updateSearchResults = function() { - doSearch(request, response); - } - result.unshift(loading); - } else { - updateSearchResults = function() {}; - } - response(result); -} -$(function() { - $("#search-input").catcomplete({ + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ minLength: 1, - delay: 300, + delay: 200, source: doSearch, response: function(event, ui) { if (!ui.content.length) { - ui.content.push(noResult); + ui.content.push({ l: messages.noResult }); } else { $("#search-input").empty(); } @@ -310,45 +441,18 @@ $(function() { collision: "flip" }, select: function(event, ui) { - if (ui.item.category) { - var url = getURLPrefix(ui); - if (ui.item.category === catModules) { - url += "module-summary.html"; - } else if (ui.item.category === catPackages) { - if (ui.item.u) { - url = ui.item.u; - } else { - url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (ui.item.category === catTypes) { - if (ui.item.u) { - url = ui.item.u; - } else if (ui.item.p === UNNAMED) { - url += ui.item.l + ".html"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; - } - } else if (ui.item.category === catMembers) { - if (ui.item.p === UNNAMED) { - url += ui.item.c + ".html" + "#"; - } else { - url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; - } - if (ui.item.u) { - url += ui.item.u; - } else { - url += ui.item.l; - } - } else if (ui.item.category === catSearchTags) { - url += ui.item.u; - } - if (top !== window) { - parent.classFrame.location = pathtoroot + url; - } else { - window.location.href = pathtoroot + url; - } + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; $("#search-input").focus(); } } }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); }); diff --git a/PlayerHeads-api/docs/stylesheet.css b/PlayerHeads-api/docs/stylesheet.css index 836c62da..f71489f8 100644 --- a/PlayerHeads-api/docs/stylesheet.css +++ b/PlayerHeads-api/docs/stylesheet.css @@ -4,18 +4,73 @@ @import url('resources/fonts/dejavu.css'); +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} /* * Styles for individual HTML elements. * * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular * HTML element throughout the page. */ - body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); margin:0; padding:0; height:100%; @@ -31,58 +86,59 @@ iframe { } a:link, a:visited { text-decoration:none; - color:#4A6782; + color:var(--link-color); } a[href]:hover, a[href]:focus { text-decoration:none; - color:#bb7a2a; -} -a[name] { - color:#353833; + color:var(--link-color-active); } pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; } h1 { - font-size:20px; + font-size:1.428em; } h2 { - font-size:18px; + font-size:1.285em; } h3 { - font-size:16px; + font-size:1.14em; } h4 { - font-size:15px; + font-size:1.072em; } h5 { - font-size:14px; + font-size:1.001em; } h6 { - font-size:13px; + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; } ul { list-style-type:disc; } code, tt { - font-family:'DejaVu Sans Mono', monospace; + font-family:var(--code-font-family); } :not(h1, h2, h3, h4, h5, h6) > code, :not(h1, h2, h3, h4, h5, h6) > tt { - font-size:14px; + font-size:var(--code-font-size); padding-top:4px; margin-top:8px; line-height:1.4em; } dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; padding-top:4px; } .summary-table dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; vertical-align:top; padding-top:4px; } @@ -90,8 +146,8 @@ sup { font-size:8px; } button { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size: 14px; + font-family: var(--body-font-family); + font-size: 1em; } /* * Styles for HTML generated by javadoc. @@ -102,74 +158,67 @@ button { /* * Styles for document title and copyright. */ -.clear { - clear:both; - height:0; - overflow:hidden; -} .about-language { float:right; padding:0 21px 8px 8px; - font-size:11px; + font-size:0.915em; margin-top:-9px; height:2.9em; } .legal-copy { margin-left:.5em; } -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} /* * Styles for navigation bar. */ @media screen { - .flex-box { + div.flex-box { position:fixed; display:flex; flex-direction:column; height: 100%; width: 100%; } - .flex-header { + header.flex-header { flex: 0 0 auto; } - .flex-content { + div.flex-content { flex: 1 1 auto; overflow-y: auto; } } .top-nav { - background-color:#4D7A97; - color:#FFFFFF; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); float:left; - padding:0; width:100%; clear:right; min-height:2.8em; - padding-top:10px; + padding:10px 0 0 0; overflow:hidden; - font-size:12px; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; } .sub-nav { - background-color:#dee3e9; + background-color:var(--subnav-background-color); float:left; width:100%; overflow:hidden; - font-size:12px; + font-size:0.857em; } .sub-nav div { clear:left; float:left; - padding:0 0 5px 6px; + padding:6px; text-transform:uppercase; } -.sub-nav .nav-list { - padding-top:5px; +.sub-nav .sub-nav-list { + padding-top:4px; } ul.nav-list { display:block; @@ -189,32 +238,27 @@ ul.nav-list li { } .sub-nav .nav-list-search { float:right; - margin:0 0 0 0; - padding:5px 6px; + margin:0; + padding:6px; clear:none; -} -.nav-list-search label { + text-align:right; position:relative; - right:-16px; } ul.sub-nav-list li { list-style:none; float:left; - padding-top:10px; } .top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:#FFFFFF; + color:var(--navbar-text-color); text-decoration:none; text-transform:uppercase; } .top-nav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; + color:var(--link-color-active); } .nav-bar-cell1-rev { - background-color:#F8981D; - color:#253441; + background-color:var(--selected-background-color); + color:var(--selected-text-color); margin: auto 5px; } .skip-nav { @@ -232,30 +276,30 @@ ul.sub-nav-list li { } } /* - * Styles for page header and footer. + * Styles for page header. */ .title { - color:#2c4557; + color:var(--title-color); margin:10px 0; } .sub-title { margin:5px 0 0 0; } -.header ul { - margin:0 0 15px 0; - padding:0; +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; } -.header ul li, .footer ul li { - list-style:none; - font-size:13px; +ul.contents-list li { + font-size:0.93em; } /* * Styles for headings. */ body.class-declaration-page .summary h2, body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { +body.class-use-page h2, +body.module-declaration-page .block-list h2 { font-style: italic; padding:0; margin:15px 0; @@ -263,8 +307,8 @@ body.module-declaration-page .block-list h2 { body.class-declaration-page .summary h3, body.class-declaration-page .details h3, body.class-declaration-page .summary .inherited-list h2 { - background-color:#dee3e9; - border:1px solid #d0d9e0; + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); margin:0 0 6px -8px; padding:7px 5px; } @@ -277,16 +321,16 @@ main { position:relative; } dl.notes > dt { - font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:12px; + font-family: var(--body-font-family); + font-size:0.856em; font-weight:bold; margin:10px 0 0 0; - color:#4E4E4E; + color:var(--body-text-color); } dl.notes > dd { margin:5px 10px 10px 0; - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family) } dl.name-value > dt { margin-left:1px; @@ -331,121 +375,160 @@ ul.summary-list > li { margin-bottom:15px; line-height:1.4; } +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} .summary-table dl, .summary-table dl dt, .summary-table dl dd { margin-top:0; margin-bottom:1px; } -ul.see-list, ul.see-list-long { +ul.tag-list, ul.tag-list-long { padding-left: 0; list-style: none; } -ul.see-list li { +ul.tag-list li { display: inline; } -ul.see-list li:not(:last-child):after, -ul.see-list-long li:not(:last-child):after { +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ content: ", "; white-space: pre-wrap; } +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} /* * Styles for tables. */ .summary-table, .details-table { width:100%; border-spacing:0; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; + border:1px solid var(--border-color); + border-top:0; padding:0; } .caption { position:relative; text-align:left; background-repeat:no-repeat; - color:#253441; - font-weight:bold; + color:var(--selected-text-color); clear:none; overflow:hidden; - padding:0; - padding-top:10px; - padding-left:1px; + padding: 10px 0 0 1px; margin:0; - white-space:pre; } .caption a:link, .caption a:visited { - color:#1f389c; + color:var(--selected-link-color); } .caption a:hover, .caption a:active { - color:#FFFFFF; + color:var(--navbar-text-color); } .caption span { + font-weight:bold; white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; + padding:5px 12px 7px 12px; display:inline-block; float:left; - background-color:#F8981D; + background-color:var(--selected-background-color); border: none; height:16px; } div.table-tabs { padding:10px 0 0 1px; - margin:0; + margin:10px 0 0 0; } div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; } -div.table-tabs > button.active-table-tab { - background: #F8981D; - color: #253441; +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); } div.table-tabs > button.table-tab { - background: #4D7A97; - color: #FFFFFF; + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; } .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); } .three-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); } .four-column-summary { display: grid; - grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); } -@media screen and (max-width: 600px) { - .two-column-summary { +@media screen and (max-width: 1000px) { + .four-column-summary { display: grid; - grid-template-columns: 1fr; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); } } @media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } .three-column-summary { display: grid; grid-template-columns: minmax(10%, max-content) minmax(25%, auto); } - .three-column-summary .col-last { + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ grid-column-end: span 2; } } -@media screen and (max-width: 1000px) { - .four-column-summary { +@media screen and (max-width: 600px) { + .two-column-summary { display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + grid-template-columns: 1fr; } } .summary-table > div, .details-table > div { text-align:left; padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; } .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { vertical-align:top; @@ -454,14 +537,43 @@ div.table-tabs > button.table-tab { padding-bottom:3px; } .table-header { - background:#dee3e9; + background:var(--subnav-background-color); font-weight: bold; } +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} .col-first, .col-first { - font-size:13px; + font-size:0.93em; } .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:13px; + font-size:0.93em; } .col-first, .col-second, .col-constructor-name { vertical-align:top; @@ -475,31 +587,21 @@ div.table-tabs > button.table-tab { .col-first a:link, .col-first a:visited, .col-second a:link, .col-second a:visited, .col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited, -.constant-values-container a:link, .constant-values-container a:visited, -.all-classes-container a:link, .all-classes-container a:visited, -.all-packages-container a:link, .all-packages-container a:visited { +.col-summary-item-name a:link, .col-summary-item-name a:visited { font-weight:bold; } -.table-sub-heading-color { - background-color:#EEEEFF; -} .even-row-color, .even-row-color .table-header { - background-color:#FFFFFF; + background-color:var(--even-row-color); } .odd-row-color, .odd-row-color .table-header { - background-color:#EEEEEF; + background-color:var(--odd-row-color); } /* * Styles for contents. */ -.deprecated-content { - margin:0; - padding:10px 0; -} div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:var(--body-font-size); + font-family:var(--block-font-family); } .col-last div { padding-top:0; @@ -511,8 +613,8 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; + font-family:var(--code-font-family); + font-size:1em; margin:14px 0; white-space: pre-wrap; } @@ -535,21 +637,17 @@ div.block { * Styles for formatting effect. */ .source-line-no { - color:green; + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); padding:0 30px 0 0; } -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} .block { display:block; margin:0 10px 5px 0; - color:#474747; + color:var(--block-text-color); } -.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { font-weight:bold; } @@ -557,8 +655,8 @@ h1.hidden { font-style:italic; } .deprecation-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -568,8 +666,8 @@ h1.hidden { display:inline-block; } .preview-block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + font-size:1em; + font-family:var(--block-font-family); border-style:solid; border-width:thin; border-radius:10px; @@ -581,6 +679,19 @@ h1.hidden { div.block div.deprecation-comment { font-style:normal; } +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} /* * Styles specific to HTML5 elements. */ @@ -590,62 +701,93 @@ main, nav, header, footer, section { /* * Styles for javadoc search. */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} .ui-autocomplete-category { font-weight:bold; font-size:15px; padding:7px 0 7px 3px; - background-color:#4D7A97; - color:#FFFFFF; -} -.result-item { - font-size:13px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); } .ui-autocomplete { max-height:85%; max-width:65%; - overflow-y:scroll; - overflow-x:scroll; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; white-space:nowrap; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } ul.ui-autocomplete { position:fixed; - z-index:999999; + z-index:1; + background-color: var(--body-background-color); } -ul.ui-autocomplete li { +ul.ui-autocomplete li { float:left; clear:both; - width:100%; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; } -.result-highlight { +.ui-autocomplete .result-highlight { font-weight:bold; } -#search-input { +#search-input, #page-search-input { background-image:url('resources/glass.png'); background-size:13px; background-repeat:no-repeat; background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); padding-left:20px; - position:relative; - right:-18px; - width:400px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; } #reset-button { - background-color: rgb(255,255,255); + background-color: transparent; background-image:url('resources/x.png'); - background-position:center; background-repeat:no-repeat; - background-size:12px; - border:0 none; - width:16px; - height:16px; - position:relative; - left:-4px; - top:-4px; - font-size:0px; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; } -.watermark { - color:#545454; +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; } .search-tag-desc-result { font-style:italic; @@ -656,13 +798,55 @@ ul.ui-autocomplete li { font-size:12px; } .search-tag-result:target { - background-color:yellow; + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; } -.module-graph span { +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { display:none; position:absolute; } -.module-graph:hover span { +.module-graph:hover span, .sealed-graph:hover span { display:block; margin: -100px 0 0 100px; z-index: 1; @@ -675,13 +859,13 @@ section.class-description { } .summary section[class$="-summary"], .details section[class$="-details"], .class-uses .detail, .serialized-class-details { - padding: 0px 20px 5px 10px; - border: 1px solid #ededed; - background-color: #f8f8f8; + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); } .inherited-list, section[class$="-details"] .detail { padding:0 0 5px 8px; - background-color:#ffffff; + background-color:var(--detail-background-color); border:none; } .vertical-separator { @@ -699,7 +883,7 @@ ul.help-subtoc > li::before { content: "\2022" ; padding-right:2px; } -span.help-note { +.help-note { font-style: italic; } /* @@ -727,7 +911,111 @@ main a[href*="://"]:focus::after { 132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\ '); } - +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} /* * Styles for user-provided tables. * @@ -774,67 +1062,146 @@ table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > } table.plain { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { background-color: transparent; } table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped { border-collapse: collapse; - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > thead { - background-color: #E3E3E3; + background-color: var(--subnav-background-color); } table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid black; + border: 1px solid var(--table-border-color); } table.striped > tbody > tr:nth-child(even) { - background-color: #EEE + background-color: var(--odd-row-color) } table.striped > tbody > tr:nth-child(odd) { - background-color: #FFF + background-color: var(--even-row-color) } table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid black; - border-right: 1px solid black; + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); } table.striped > tbody > tr > th { font-weight: normal; } /** - * Tweak font sizes and paddings for small screens. + * Tweak style for small screens. */ -@media screen and (max-width: 1050px) { - #search-input { - width: 300px; +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; } -} -@media screen and (max-width: 800px) { - #search-input { - width: 200px; + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; } - .top-nav, - .bottom-nav { - font-size: 11px; - padding-top: 6px; + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; } - .sub-nav { - font-size: 11px; + ul.sub-nav-list-small ul { + padding-left: 20px; } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { .about-language { padding-right: 16px; } - ul.nav-list li, - .sub-nav .nav-list-search { - padding: 6px; + ul.nav-list li { + margin-left: 5px; } - ul.sub-nav-list li { - padding-top: 5px; + ul.sub-nav-list-small > li { + margin-left: 5px; } main { padding: 10px; @@ -847,19 +1214,59 @@ table.striped > tbody > tr > th { -webkit-text-size-adjust: none; } } -@media screen and (max-width: 500px) { - #search-input { - width: 150px; - } - .top-nav, - .bottom-nav { - font-size: 10px; - } - .sub-nav { - font-size: 10px; - } +@media screen and (max-width: 400px) { .about-language { font-size: 10px; padding-right: 12px; } } +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/PlayerHeads-api/pom.xml b/PlayerHeads-api/pom.xml index 6490ca12..c2193114 100644 --- a/PlayerHeads-api/pom.xml +++ b/PlayerHeads-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-api jar @@ -13,20 +13,21 @@ org.shininet.bukkit PlayerHeads-base-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT org.shininet.bukkit PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT + org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 false true @@ -68,7 +68,7 @@ org.shininet.bukkit:PlayerHeads-base-api - 7 + 21 @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.5.0 package @@ -104,7 +104,7 @@ maven-antrun-plugin - 1.8 + 3.0.0 package @@ -152,8 +152,8 @@ maven-compiler-plugin 2.3.2 - 17 - 17 + 21 + 21 @@ -171,5 +171,5 @@ - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-base-api/pom.xml b/PlayerHeads-base-api/pom.xml index 9482abd4..fc84e38e 100644 --- a/PlayerHeads-base-api/pom.xml +++ b/PlayerHeads-base-api/pom.xml @@ -4,7 +4,7 @@ org.shininet.bukkit PlayerHeads - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT PlayerHeads-base-api jar @@ -14,7 +14,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.0 + 3.3.0 attach-sources @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.5.0 true true @@ -47,7 +47,7 @@ https://hub.spigotmc.org/javadocs/spigot https://javadoc.io/doc/org.jetbrains/annotations-java5/15.0.0/ - 7 + 21 @@ -61,18 +61,18 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 - 17 - 17 + 21 + 21 This module forms the base for classes that should appear in both the Compatibility API and the PlayerHeads plugin API (like events) - 17 - 17 + 21 + 21 - 5.20.4-SNAPSHOT + 5.21.0-SNAPSHOT \ No newline at end of file diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml deleted file mode 100644 index 974cb300..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/nb-configuration.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - JDK_17 - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml b/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml deleted file mode 100644 index d9f8fa45..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.shininet.bukkit - PlayerHeads-compatibility - 5.20.4-SNAPSHOT - - PlayerHeads-common-support - jar - - 17 - 17 - - - - - - - - org.shininet.bukkit - PlayerHeads-compatibility-api - 5.20.4-SNAPSHOT - - - fr.neatmonster - ncpplugin - - - org.spigotmc - spigot-api - - - org.bukkit - bukkit - - - - - - - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT - - - - - - - - - - - maven-jar-plugin - 3.3.0 - - - - Maven - ${project.name} - ${project.version} - ${project.groupId} - ${project.organization.name} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 17 - 17 - - - - - - 5.20.4-SNAPSHOT - - diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java deleted file mode 100644 index d1c972b8..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupport.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import java.util.HashMap; - -//override default compatibilitysupport -public class CompatibilitySupport { - public static final HashMap VERSIONS; - static{ - VERSIONS=new HashMap<>(); - VERSIONS.put("faketestserver", new Integer[][]{//to enable testing - {1,16}, - {1,13}, - {1,0} - }); - } - public static boolean isFinalized(){ return true; } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java deleted file mode 100644 index 12f83414..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilitySupportTest.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.compatibility; - -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibilitySupportTest { - - public CompatibilitySupportTest() { - } - - @Test - public void testIsFinalized() { - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java deleted file mode 100644 index a43c2372..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import com.github.crashdemons.playerheads.compatibility.faketestserver_1_0.Provider; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class CompatibilityTest { - private final TestOutput out=new TestOutput(this); - public CompatibilityTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testInit() { - out.println("init"); - assertEquals(false,Compatibility.init()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testIsProviderAvailable() { - out.println("isProviderAvailable"); - assertEquals(false, Compatibility.isProviderAvailable()); - System.out.println(CompatibilitySupport.isFinalized()); - System.out.println(CompatibilitySupport.VERSIONS.toString()); - Compatibility.init(); - assertEquals(true, Compatibility.isProviderAvailable()); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetProvider() { - out.println("getProvider"); - Compatibility.init(); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testRegisterProvider() { - out.println("registerProvider"); - Provider pro = new Provider(); - Compatibility.registerProvider(pro); - assertEquals("faketestserver",Compatibility.getProvider().getType()); - } - - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderType() { - out.println("getRecommendedProviderType"); - String expResult = "faketestserver"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderType(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Compatibility.class,Bukkit.class}) - public void testGetRecommendedProviderVersion() { - out.println("getRecommendedProviderVersion"); - String expResult = "1.16"; - Compatibility.init(); - String result = Compatibility.getRecommendedProviderVersion(); - assertEquals(expResult, result); - assertEquals("1.0",Compatibility.getProvider().getVersion()); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java deleted file mode 100644 index 997c6a93..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/CompatibleSkullMaterialTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.CompatibleSkullMaterial; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.block.BlockState; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class CompatibleSkullMaterialTest { - private final TestOutput out=new TestOutput(this); - - public CompatibleSkullMaterialTest() { - } - - @Test - public void testEntityNameCompatibility(){ - out.println("EntityNameCompatibility"); - for(CompatibleSkullMaterial csm : CompatibleSkullMaterial.values()){ - EntityType et = EntityType.valueOf( csm.name() ); - out.println(" "+csm.name()+" => "+et.name()); - } - } - @Test - public void testSkullTypeCompatibility(){ - out.println("SkullTypeCompatibility"); - out.println("PHC.SkullType.len "+SkullType.values().length); - out.println("bukkit.SkullType.len "+org.bukkit.SkullType.values().length); - out.println("CompatibleSkullMaterial.len "+CompatibleSkullMaterial.values().length); - for(org.bukkit.SkullType st : org.bukkit.SkullType.values()){ - out.println(" bukkit.Skulltype "+st.name()+" "+st.ordinal()); - } - - - assertEquals( SkullType.values().length, CompatibleSkullMaterial.values().length ); - assertEquals( org.bukkit.SkullType.values().length, CompatibleSkullMaterial.values().length ); - } - - -/* - - @Test - public void testGetDetails() { - out.println("getDetails"); - CompatibleSkullMaterial instance = null; - SkullDetails expResult = null; - SkullDetails result = instance.getDetails(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testIsSupported() { - out.println("isSupported"); - CompatibleSkullMaterial instance = null; - boolean expResult = false; - boolean result = instance.isSupported(); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_SkullType() { - out.println("get"); - SkullType type = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(type); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_ItemStack() { - out.println("get"); - ItemStack stack = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(stack); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - - @Test - public void testGet_BlockState() { - out.println("get"); - BlockState state = null; - CompatibleSkullMaterial expResult = null; - CompatibleSkullMaterial result = CompatibleSkullMaterial.get(state); - assertEquals(expResult, result); - // TODO review the generated test code and remove the default call to fail. - fail("The test case is a prototype."); - } - */ -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java deleted file mode 100644 index d2a069e6..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/RuntimeReferencesTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class RuntimeReferencesTest { - - private final TestOutput out=new TestOutput(this); - public RuntimeReferencesTest() { - } - - @Test - public void testGetCompatibleMaterialByName_invalid() { - out.println("getCompatibleMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getCompatibleMaterialByName("EGG")); - } - @Test - public void testGetCompatibleMaterialByName_valid() { - out.println("getCompatibleMaterialByName valid"); - assertEquals("CREEPER", RuntimeReferences.getCompatibleMaterialByName("CREEPER").name()); - } - - @Test - public void testGetMaterialByName_invalid() { - out.println("getMaterialByName invalid"); - assertEquals(null, RuntimeReferences.getMaterialByName("120usahbbd")); - } - @Test - public void testGetMaterialByName_valid() { - out.println("getMaterialByName valid"); - assertEquals("STONE", RuntimeReferences.getMaterialByName("STONE").name()); - } - - @Test - public void testGetSkullTypeByName_valid() { - out.println("getSkullTypeByName valid"); - assertEquals("PLAYER", RuntimeReferences.getSkullTypeByName("PLAYER").name()); - } - - @Test - public void testGetSkullTypeByName_invalid() { - out.println("getSkullTypeByName invalid"); - assertEquals(null, RuntimeReferences.getSkullTypeByName("3das9d8as")); - } - - @Test - public void testHasClass_invalid() { - out.println("hasClass invalid"); - assertEquals(false,RuntimeReferences.hasClass("s0d0239uds2d.ClassNameHere")); - } - @Test - public void testHasClass_valid() { - out.println("hasClass valid"); - assertEquals(true,RuntimeReferences.hasClass("org.shininet.bukkit.playerheads.events.FakeBlockBreakEvent")); - assertEquals(true,RuntimeReferences.hasClass("com.github.crashdemons.playerheads.compatibility.common.Provider_common")); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java deleted file mode 100644 index 7af2fa50..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/SkullTypeTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Material; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class SkullTypeTest { - private final TestOutput out=new TestOutput(this); - - public SkullTypeTest() { - } - - - @Test - public void dummy_print_skulltypes(){ - for(SkullType st : SkullType.values()){ - out.println(" compat.SkullType."+st.name()+" -> bukkit.SkullType."+st.legacySkullTypeName); - } - } - - @Test - public void test_isSkull_invalid(){ - out.println("isSkull"); - assertEquals(false,SkullType.CREEPER.isSkull); - } - @Test - public void test_isSkull_valid(){ - out.println("isSkull"); - assertEquals(true,SkullType.SKELETON.isSkull); - } - @Test - public void testSkullNameMaterialCorrespondence(){ - out.println("SkullNameMaterialCorrespondence"); - for(SkullType st : SkullType.values()){ - Material mat,matw; - if(st.isSkull){ - mat = RuntimeReferences.getMaterialByName(st.name()+"_SKULL"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_SKULL"); - - }else{ - mat = RuntimeReferences.getMaterialByName(st.name()+"_HEAD"); - matw = RuntimeReferences.getMaterialByName(st.name()+"_WALL_HEAD"); - } - out.println(" "+st.name()+" => "+mat.name()+" "+matw.name()); - } - } - @Test - public void testOrdinalCompatibility(){ - out.println("OrdinalCompatibility"); - for(SkullType st : SkullType.values()){ - org.bukkit.SkullType st_legacy = org.bukkit.SkullType.values()[ st.ordinal() ]; - out.println(" "+st.name()+" => "+st_legacy.name()); - } - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java deleted file mode 100644 index fc0367be..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/VersionTest.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility; - -import com.github.crashdemons.playerheads.compatibility.Version; -import com.github.crashdemons.playerheads.testutils.Mocks; -import com.github.crashdemons.playerheads.testutils.TestOutput; -import org.bukkit.Bukkit; -import org.junit.Test; -import static org.junit.Assert.*; -import org.junit.runner.RunWith; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -@RunWith(PowerMockRunner.class) -public class VersionTest { - - private final TestOutput out=new TestOutput(this); - public VersionTest() { - Mocks.setupFakeServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testInit() { - out.println("init"); - Version.init(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_equal() { - out.println("checkAtLeast"); - int major = 1; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over() { - out.println("checkAtLeast"); - int major = 1; - int minor = 17; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_over2() { - out.println("checkAtLeast"); - int major = 2; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 9; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckAtLeast_under2() { - out.println("checkAtLeast"); - Version.init(); - int major = 0; - int minor = 14; - boolean expResult = true; - boolean result = Version.checkAtLeast(major, minor); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_under2() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 12; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_equal() { - out.println("checkUnder"); - Version.init(); - int major = 0; - int minor = 13; - boolean expResult = false; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over() { - out.println("checkUnder"); - Version.init(); - int major = 1; - int minor = 17; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckUnder_over2() { - out.println("checkUnder"); - Version.init(); - int major = 2; - int minor = 13; - boolean expResult = true; - boolean result = Version.checkUnder(major, minor); - assertEquals(expResult, result); - } - - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 14)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_over2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(2, 13)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_equal() { - out.println("checkEquals"); - Version.init(); - assertEquals(true,Version.checkEquals(1, 16)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(0, 13)); - } - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testCheckEquals_under2() { - out.println("checkEquals"); - Version.init(); - assertEquals(false,Version.checkEquals(1, 12)); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetRawServerVersion() { - out.println("getRawServerVersion"); - Version.init(); - Version.getRawServerVersion(); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetString() { - out.println("getString"); - Version.init(); - String expResult = "1.16"; - String result = Version.getString(); - assertEquals(expResult, result); - } - - @Test - @PrepareForTest({Version.class,Bukkit.class}) - public void testGetType() { - out.println("getType"); - Version.init(); - String expResult = "faketestserver"; - String result = Version.getType(); - assertEquals(expResult, result); - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java deleted file mode 100644 index bf47d0bc..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/Provider.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.CompatibilityProvider; -import com.github.crashdemons.playerheads.compatibility.CompatibleProfile; -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullDetails; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.Provider_common; -import java.util.List; -import java.util.UUID; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.World; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.metadata.Metadatable; -import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; - -/** - * CompatibilityProvider Implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -@SuppressWarnings( "deprecation" ) -public class Provider extends Provider_common implements CompatibilityProvider { - public Provider(){} - @Override public String getType(){ return "faketestserver"; } - @Override public String getVersion(){ return "1.0"; } - @Override public OfflinePlayer getOwningPlayerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwningPlayer(); } - @Override public OfflinePlayer getOwningPlayerDirect(Skull skullBlockState){ return skullBlockState.getOwningPlayer(); } - @Override public String getOwnerDirect(SkullMeta skullItemMeta){ return skullItemMeta.getOwner(); } - @Override public String getOwnerDirect(Skull skullBlockState){ return skullBlockState.getOwner(); } - @Override public boolean setOwningPlayer(SkullMeta skullItemMeta, OfflinePlayer op){ return false; } - @Override public void setOwningPlayer(Skull skullBlockState, OfflinePlayer op){ } - @Override public boolean setOwner(SkullMeta skullItemMeta, String owner){ return false; } - @Override public boolean setOwner(Skull skullBlockState, String owner){ return false; } - @Override public ItemStack getItemInMainHand(Player p){ return null; } - @Override public ItemStack getItemInMainHand(LivingEntity p){ return null; } - @Override public void setItemInMainHand(Player p,ItemStack s){ } - @Override public SkullDetails getSkullDetails(SkullType type){ return new SkullDetails_113(type); } - @Override public boolean getKeepInventory(World world){ return false; } - @Override public SkullType getSkullType(ItemStack s){ return getSkullType(s.getType()); } - @Override public SkullType getSkullType(BlockState s){ return getSkullType(s.getType()); } - @Override public boolean isHead(ItemStack s){ return getSkullType(s)!=null; } - @Override public boolean isHead(BlockState s){ return getSkullType(s)!=null; } - @Override public boolean isPlayerhead(ItemStack s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isPlayerhead(BlockState s){ return getSkullType(s)==SkullType.PLAYER; } - @Override public boolean isMobhead(ItemStack s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public boolean isMobhead(BlockState s){ SkullType t=getSkullType(s); return (t!=null && t!=SkullType.PLAYER);} - @Override public String getCompatibleNameFromEntity(Entity e){ return e.getType().name().toUpperCase(); } - @Override public OfflinePlayer getOfflinePlayerByName(String username){ return null; } - - @Override public EntityType getEntityTypeFromTypename(String typename){ throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - //@Override public boolean setProfile(Skull skull, UUID id, String texture){throw new IllegalStateException("using unsupported method in test"); }//TODO: test properly - - - - @Override public OfflinePlayer getOwningPlayer(SkullMeta skull){ - return getOwningPlayerDirect(skull); - } - @Override public OfflinePlayer getOwningPlayer(Skull skull){ - return getOwningPlayerDirect(skull); - } - - - @Override public String getOwner(SkullMeta skull){ - return getOwnerDirect(skull); - } - @Override public String getOwner(Skull skull){ - return getOwnerDirect(skull); - } - - @Override public boolean setProfile(ItemMeta headMeta, UUID uuid,String username, String texture){ - return false; - } - @Override public boolean setProfile(Skull headBlockState, UUID uuid, String username, String texture){ - return false; - } - - private SkullType getSkullType(Material mat){ - String typeName = mat.name(); - typeName=typeName.replaceFirst("_WALL", "").replaceFirst("_HEAD", "").replaceFirst("_SKULL", ""); - return RuntimeReferences.getSkullTypeByName(typeName); - } - - - //-----------5.2.12 providers-----------// - @Override - public Object getProfile(ItemMeta headMeta) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - @Override - public Object getProfile(Skull headBlockState) throws IllegalStateException{ - throw new IllegalStateException("Not supported by test class"); - } - - - - @Override - public boolean setProfile(ItemMeta headMeta, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - @Override - public boolean setProfile(Skull headBlockState, Object profile) throws IllegalStateException, IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - //-------------5.2.13 providers ----------------// - public boolean setCompatibleProfile(Object skull, CompatibleProfile profile) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - public CompatibleProfile getCompatibleProfile(Object skull) throws IllegalArgumentException{ - throw new IllegalStateException("Not supported by test class"); - } - - - public CompatibleProfile createCompatibleProfile(@Nullable String name, @Nullable UUID id, @Nullable String texture){ - throw new IllegalStateException("Not supported by test class"); - } - - public boolean clearProfile(Object o){ - throw new IllegalStateException("Not supported by test class"); - } - - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java deleted file mode 100644 index 356fa303..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/compatibility/faketestserver_1_0/SkullDetails_113.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.compatibility.faketestserver_1_0; - -import com.github.crashdemons.playerheads.compatibility.RuntimeReferences; -import com.github.crashdemons.playerheads.compatibility.SkullBlockAttachment; -import com.github.crashdemons.playerheads.compatibility.SkullType; -import com.github.crashdemons.playerheads.compatibility.common.SkullDetails_common; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - -/** - * SkullDetails implementation for 1.13+ support - * @author crashdemons (crashenator at gmail.com) - */ -class SkullDetails_113 extends SkullDetails_common{ - Material material; - Material materialWall; - private final SkullType skullType; - public SkullDetails_113(SkullType type){ - if(type==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - - String typeName=type.name(); - String suffix=type.isSkull? "_SKULL" : "_HEAD"; - material=RuntimeReferences.getMaterialByName(typeName+suffix); - materialWall=RuntimeReferences.getMaterialByName(typeName+"_WALL"+suffix); - if(material==null){ - type=SkullType.PLAYER; - material=Material.PLAYER_HEAD; - materialWall=Material.PLAYER_WALL_HEAD; - } - this.skullType=type; - } - @Override public boolean isVariant(){ return false; } - @Override public boolean isBackedByPlayerhead(){ return material==Material.PLAYER_HEAD; } - @Override public boolean isSkinnable(){ return isBackedByPlayerhead(); } - @Override public ItemStack createItemStack(int quantity){ return null; } - @Override public Material getItemMaterial(){ return material; } - @Override public Material getFloorMaterial(){ return material; } - @Override public Material getWallMaterial(){ return materialWall; } - @Override protected void setBlockDetails(Block b,BlockFace r, SkullBlockAttachment a){} - - - @Override - public Material getBlockMaterial(SkullBlockAttachment attachment){ - throw new IllegalStateException("Unsupported in tests"); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java deleted file mode 100644 index 58951b43..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/Mocks.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.github.crashdemons.playerheads.testutils; - -import com.github.crashdemons.playerheads.compatibility.Compatibility; -import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Skull; -import org.bukkit.entity.Player; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import static org.powermock.api.mockito.PowerMockito.when; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -/** - * - * @author crash - */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({Bukkit.class,Compatibility.class}) -abstract public class Mocks { - - public static void setupFakeServerVersion(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - }catch(Exception e){ - e.printStackTrace(); - } - } - - public static void setupFakeServerSupport(){ - try{ - PowerMockito.mockStatic(Bukkit.class); - when(Bukkit.getVersion()).thenReturn("git-SomeWackyServerFork-4454-4ad3bc (MC: 1.16.2 Pre-Release 5)"); - if(!Compatibility.isProviderAvailable()) Compatibility.init(); - }catch(Exception e){ - e.printStackTrace(); - } - } - - - public static Location getMockLocation(double x, double y, double z){ - Location loc = PowerMockito.mock(Location.class); - when(loc.getWorld()).thenReturn(null); - when(loc.getX()).thenReturn(x); - when(loc.getY()).thenReturn(y); - when(loc.getZ()).thenReturn(z); - return loc; - } - - - public static Block getMockBlock(Material mat, double x, double y, double z){ - Block block = PowerMockito.mock(Block.class); - Location loc = getMockLocation(x,y,z); - when(block.getLocation()).thenReturn(loc); - when(block.getType()).thenReturn(mat); - //block.getState() - return block; - } - - public static Player getMockPlayer(String id, String name, double x, double y, double z){ - Location loc = getMockLocation(x,y,z); - Player player = PowerMockito.mock(Player.class); - when(player.getUniqueId()).thenReturn(UUID.fromString(id)); - when(player.getName()).thenReturn(name); - when(player.getLocation()).thenReturn(loc); - return player; - } - public static OfflinePlayer getMockOfflinePlayer(String id, String name){ - OfflinePlayer op = PowerMockito.mock(OfflinePlayer.class); - when(op.getName()).thenReturn(name); - when(op.getUniqueId()).thenReturn(UUID.fromString(id)); - return op; - } - public static BlockState getMockBlockState_Stone(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.STONE); - return state; - } - public static Skull getMockBlockState_PHead(OfflinePlayer owningPlayer){ - String name = null; - if(owningPlayer!=null) name = owningPlayer.getName(); - Skull state = PowerMockito.mock(Skull.class); - when(state.getType()).thenReturn(Material.PLAYER_HEAD); - when(state.getOwningPlayer()).thenReturn(owningPlayer); - when(state.getOwner()).thenReturn(name); - - return state; - } - public static BlockState getMockBlockState_Skull(){ - BlockState state = PowerMockito.mock(BlockState.class); - when(state.getType()).thenReturn(Material.SKELETON_SKULL); - return state; - } - -} diff --git a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java b/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java deleted file mode 100644 index baa7d9f1..00000000 --- a/PlayerHeads-compatibility/PlayerHeads-common-support/src/test/java/com/github/crashdemons/playerheads/testutils/TestOutput.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/ . - */ -package com.github.crashdemons.playerheads.testutils; - -/** - * - * @author crashdemons (crashenator at gmail.com) - */ -public class TestOutput { - private final String prefix; - public TestOutput(Object obj){ - prefix = obj.getClass().getSimpleName(); - } - public void println(String s){ - System.out.println(prefix+": "+s); - } -} diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html index ac25286e..878c508f 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allclasses-index.html @@ -1,25 +1,20 @@ - -All Classes and Interfaces (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Classes and Interfaces (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + - JavaScript is disabled on your browser. @@ -28,7 +23,7 @@ - + Skip navigation links Overview @@ -42,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -56,7 +52,7 @@ All Classes and Interfaces -All Classes and InterfacesInterfacesClassesEnumsExceptions +All Classes and InterfacesInterfacesClassesEnum ClassesException Classes Class @@ -120,7 +116,7 @@ All Classes and Interfaces< Utility class that may be used by compatibility providers to handle head profile information. -CompatibleSkullMaterial +CompatibleSkullMaterial An enumeration of vanilla skull/head materials (items and blocks) that can possibly be supported. @@ -133,7 +129,7 @@ All Classes and Interfaces< A modifier for the droprate including type and value information -DropRateModifierType +DropRateModifierType Indicates the type of modifier to the effective droprate. @@ -146,7 +142,7 @@ All Classes and Interfaces< you should use SimulatedBlockBreakEvent in the Compatibility API instead, this class may be removed in the future -HeadModificationHandling +HeadModificationHandling The Handling (or modifiability) that is recommended for a head from another plugin. @@ -167,55 +163,51 @@ All Classes and Interfaces< Event created by the PlayerHeads plugin when a Mob is beheaded. -NoCheatPlusCompatibility +PlayerDropHeadEvent -Defines required operations performed with the NoCheatPlus plugin for compatibility reasons. - -PlayerDropHeadEvent - Event created by the PlayerHeads plugin when a Player is beheaded. -ProtectionPluginCompatibility - +ProtectionPluginCompatibility + Defines required operations performed for generic block/region protection plugins for compatibility reasons. -RuntimeReferences - +RuntimeReferences + Provides methods to perform runtime lookups of values by name (eg: enums) -SimulatedBlockBreakEvent - +SimulatedBlockBreakEvent + Event used internally by the plugin to detect if a hypothetical BlockBreak would be cancelled by another plugin. -SkullBlockAttachment - +SkullBlockAttachment + Enumeration of the different head-block attachment styles supported. -SkullDetails - +SkullDetails + Defines an interface of implementation-specific details and methods relating to a skull item/block. -SkullType - +SkullType + An enumeration of skulls and heads that are supported in vanilla servers. -UnknownVersionException - +UnknownVersionException + Exception indicating a server version that could not be retrieved or understood. -VanillaLivingEntityDropHeadEvent - +VanillaLivingEntityDropHeadEvent + Event created by PlayerHeads when a [living] entity drops a head from a source outside of PlayerHeads. -Version - +Version + A class providing methods related to the current server's version. -VersionException - +VersionException + Base for all version exceptions @@ -224,7 +216,7 @@ All Classes and Interfaces< diff --git a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html index c27662c6..26ec1202 100644 --- a/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html +++ b/PlayerHeads-compatibility/PlayerHeads-compatibility-api/docs/allpackages-index.html @@ -1,17 +1,16 @@ - -All Packages (PlayerHeads-compatibility-api 5.20.4-SNAPSHOT API) + +All Packages (PlayerHeads-compatibility-api 5.21.0-SNAPSHOT API) - - + @@ -24,7 +23,7 @@ - + Skip navigation links Overview @@ -38,9 +37,10 @@ -SEARCH: - - + +SEARCH + + @@ -83,7 +83,7 @@ All Packages
DropRateModifier(DropRateModifierType type, +DropRateModifier(DropRateModifierType type, double value, int level) @@ -114,7 +114,7 @@ Uses of -Copyright © 2023 ShiniNet. All rights reserved. +Copyright © 2024 ShiniNet. All rights reserved.
The help page provides an introduction to the scope and syntax of JavaDoc search.
You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.
The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.
+ +Redirect to first result
Loading search index...